91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Tomcat NIO中數據處理類是怎么樣的

發布時間:2021-11-18 09:52:53 來源:億速云 閱讀:147 作者:小新 欄目:大數據

這篇文章主要介紹了Tomcat NIO中數據處理類是怎么樣的,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

在 tomcat NIO 的實現里,會有一系列處理數據讀寫的類。并且 tomcat 也實現了servlet 標準,是 servlet 容器。所以會把處理數據讀寫的類封裝成標準的HttpServletRequest 和HttpServletResponse 實現,從而完成從原始 socket 連接請求到 servlet API 的調用。對于請求 Request 相關的類,展示如下圖:

Tomcat NIO中數據處理類是怎么樣的

  • HttpServletRequest 類,代表標準 servlet API 中對于 Request 的具體的定義,其實現類為org.apache.catalina.connector.Request 。
  • HttpServletResponse ,是HttpServletRequest的實例,代表標準 servlet API 中對于 Response 的具體的定義,其中具體的實現類為org.apache.catalina.connector.Response 。
  • Connector 類,屬于 HttpServletRequest 類的實例,是對上一篇文章中介紹的頂層框架類 Connector 引用。
  • CoyoteRequest ,屬于HttpServletRequest 類的實例,同時也是屬于InputBuffer 類和 Http11InputBuffer 類的實例,是 tomcat 對連接請求的封裝,同時里面也包含 http method ,uri ,querystring ,host ,port 等 items 的封裝。
  • CoyoteInputStream,是 HttpServletRequest 類的實例,是 tomcat 對于輸入流的包裝。
  • InputBuffer 類,屬于 HttpServletRequest 類的實例,也屬于 CoyoteInputStream 類的實例,用來完成請求數據的讀取。其中包含 Bytebuffer 和 CharBuffer 作為字節和字符讀取緩沖區,默認大小為1028*8 bit ,即8KB。
  • CoyoteResponse 類,屬于 CoyoteRequest 類的實例,是 tomcat 對于對連接響應的封裝。
  • Http11InputBuffer 類,主要用于完成請求數據的讀取,其中包含 Bytebuffer 作為字節讀取緩沖區,包含 SocketInputBuffer 輔助類用于完成到 Bytebuffer 字節緩沖區的讀操作。
  • NioSocketWrapper 類,是 Http11InputBuffer 類的實例,封裝了原始的 scoket ,提供封裝的 socket 讀寫操作。
  • NioSelectorPool 類,屬于 NioSocketWrapper 類的實例,當數據需要多次讀寫的時候,監測注冊在原始 scoket 上的讀寫事件是否發生。
  • CountDownLatch 類,這里有 readLatch 實例和 writeLatch 兩個實例,而這兩個均是屬于 NioSocketWrapper 類的實例。用于當數據不可讀,或者不可寫的時候對 tomcat io 線程的阻塞,即如果數據不可讀寫,tomcat io 線程會分別在 readLatch 實例和 writeLatch 實例上等待。
  • Poller 類,是屬于 NioSocketWrapper 類的實例,主要監測 epoll 模型里注冊原始 scoket 上的讀寫事件是否發生。里面包含事件隊列SynchronizedQueue ,java NIO 事件輪詢對象 selector,同時還包含了并發事件計數器 weakupCounter。
  • NioChannel 類,是屬于 NioSocketWrapper 類的實例,對原始 java NIO 對象 ScoketChannel 的封裝,同時它的內部也引用了其所從屬的NioSocketWrapper 類的實例。
  • SocketBufferHandler 類,屬于 NioChannel 類的實例,主要是用于進行封裝原始 java NIO ScoketChannel 對象的讀寫 buffer 。其內部有 DirectBuffer 類型的讀緩沖與寫緩存,這里的 DirectBuffer 是堆外內存,而不是 jvm 內存,從而提高了讀寫效率。


對于請求 Reponse 相關的類,展示如下圖:

Tomcat NIO中數據處理類是怎么樣的

  • HttpServletReponse 類,代表標準 servlet API中對于Reponse 的定義,其具體實現類為 org.apache.catalina.connector.Reponse。
  • HttpServletRequest,是HttpServletReponse的實例,代表標準 servlet API 中對于 Request 的具體的定義,其中的具體的實現類為org.apache.catalina.connector.Request 。

  • CoyoteOutputStream,是 HttpServletReponse 類的實例,是 tomcat 對于輸出流的包裝。
  • OutputBuffer 類,是屬于 CoyoteOutputStream 類的實例,也屬于 HttpServletReponse 類的實例,用來完成響應數據的寫操作。其中包含Bytebuffer 和 CharBuffer 作為字節和字符寫操作緩沖區,默認大小為1024*8 bit,即8KB。
  • CoyoteResponse 類,即是屬于 CoyoteRequest 類的實例,也屬于 OutputBuffer 類的實例,是 tomcat 對于對連接響應的封裝。
  • Http11OutputBuffer 類,主要用于完成響應數據的寫操作,其中包含 Bytebuffer 作為 header 字節寫緩沖區,包含 SocketOutputBuffer 輔助類完寫操作。
  • NioSocketWrapper,屬于Http11OutputBuffer類的實例,封裝了原始的 scoket ,提供封裝的 socket 讀寫操作。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Tomcat NIO中數據處理類是怎么樣的”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

灌南县| 天峨县| 稻城县| 阳山县| 会理县| 乐山市| 惠州市| 北辰区| 哈尔滨市| 朝阳区| 阿克陶县| 聂荣县| 龙游县| 谢通门县| 东明县| 西充县| 巴马| 永济市| 鄂伦春自治旗| 永丰县| 珲春市| 拉孜县| 宣武区| 和平区| 丹东市| 壤塘县| 美姑县| 万源市| 文山县| 安化县| 那曲县| 习水县| 邮箱| 巴中市| 洛南县| 四子王旗| 漯河市| 隆回县| 澄江县| 迁西县| 缙云县|