Netty笔记(五)

Netty的数据处理API通过两个组件暴露ByteBuf和ByteBufHolder

ByteBuf API优点如下:

a.他可以被用户自定义的缓冲区类型扩展

b.通过内置的符合缓冲区类型实现了透明的零拷贝

c.容量可以按需增长(类似于StringBuffer)

d.在读和写这两种模式之间的切换不需要调用ByteBuffer的flip()方法

e.读和写使用了不同的索引

f.支持方法的链式调用

g.支持引用计数

h.支持池化

--------------------------

1、ByteBuf维护了两个不同的索引:一个用于读;一个用于写

2、read或者write方法会推进其索引;set和get开头的操作则不会

ByteBuf分三种模式:

    a.支撑数组(backing array):将数据存储在JVM的堆空间。它能在没有使用池化的情况提供快速的分配和释放。

    b.直接缓冲区:直接缓冲区对于网络数据传输是理想的选择。主要缺点,相对于基于堆的缓冲区,它们的分配和释放都较为昂贵。

        c.复合缓冲区:通过ByteBuf的子类CompositeByteBuf实现这个模式,它提供了一个将多个缓冲区表示为单个合并缓冲区的虚拟表示。

3、派生缓冲区为ByteBuf提供视图

duplicate()、slice()等 ps:只是视图,修改视图会改变原ByteBuf

ByteBuf复制通过copy()、copy(int,int)可以复制出独立副本。

猜你喜欢

转载自blog.csdn.net/u012817635/article/details/80375025
今日推荐