Netty-UnPooled剖析
Netty中重要的一个组件就是Unpooled,他就是来代替NIO中的ByteBuffer,因为它就是一个缓冲数据区的工具类,它就是得到一个Netty自己写的操作缓冲区数据的ByteBuf来,让我们更加方便的来操作缓冲区数据的读和写.
在ByteBuf下有三个重要的属性,writeIndex,readIndex,capacity
writeIndex:就是当前操作写的下标
readIndex:就是当前操纵读的下标
capacity:当前ByteBuf的容量
ByteBuf实际就是将数据存储在了一个array[]数组中,里面来存储实际的数据,readIndex,writeIndex就是在操作这个数据,capacity就是这个数组的长度
ByteBuf byteBuf = Unpooled.buffer(10); //给这个数组附上一个初始值initCapacity 默认的值是256
for(int i = 0; i < 10; i++){ //每操作一个writeIndex就+1
byteBuf.writeByte(i);
}
for(int i = 0; i < byteBuf.capacity();i++){ //每操作一个readIndex就是+1
byteBuf.readByte();
}
ByteBuf相比于NIO的ByteBuffer 它不用flip进行翻转,在NIO中操作ByteBuffer每次之后都需要读写进行翻转之后才能进行相反的操作,比如现在在操作读的操作,只有当flip之后,才能进行写的操作,可在Netty中并不用使用flip,即可进行直接的读写切换,非常的方便.
根据ByteBuf维护的三个变量,readIndex,writeIndex,capacity,则可将arr[]数组分为三个区
0--readIndex --->已经读取过数据的区域
readIndex--writeIndex --->未读取过数据的区域
writeIndex--capacity --->可写数据的区域

浙公网安备 33010602011771号