1. 程式人生 > >netty學習02-幾個核心類以及其介紹

netty學習02-幾個核心類以及其介紹

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()方法,以及為何可以實現記憶體零拷貝?

文章轉自:http://ryanflyer.iteye.com/blog/1670593