Netty學習(2)

1.package org.jboss.netty.bootstrap;

 


 

  • Bootstrap:初始化Channel的輔助類,爲子類提供通用的數據結構。
  • ServerBootstrap:創建新的服務器端Channel的輔助類,接收連接請求。
  • ClientBootstrap:創建新的客戶端Channel的輔助類,發起連接請求。
  • ConnectionlessBootstrap:爲無連接傳輸創建一個新的服務器端Channel的輔助類。
2.package org.jboss.netty.buffer;


 
  • ChannelBuffer:接口,提供隨機和順序訪問0或者多個bytes。推薦使用ChannelBuffers輔助類的靜態工廠方法來創建一個新的ChannelBuffer。
  • AbstractChannelBuffer:抽象類,一個buffer的框架實現。
  • HeapChannelBuffer:抽象類,java heap buffer 的框架實現。
  • BigEndianHeapChannelBuffer:big-endian Java heap buffer,推薦使用ChannelBuffers的buffer(int)方法和wrappedBuffer(byte[])方法來創建。
  • ByteBufferBackedChannelBuffer:基於NIO的buffer。
  • DynamicChannelBuffer:動態容量的buffer,根據容量需要增長。推薦使用ChannelBuffers的dynamicBuffer(int)方法。
ChannelBuffer用以取代java NIO中的ByteBuffer,相比ByteBuffer,不需要調用flip()方法,實現內存零拷貝。

ChannelBuffer提供兩個指針來支持順序讀寫操作,分別是讀指針和寫指針,buffer被這兩個指針分爲三個區域,如下圖所示:


 

 

問題:爲什麼ChannelBuffer和ByteBuffer相比,不需要調用flip()方法,以及爲何可以實現內存零拷貝?

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章