Netty中的ByteBuf原理分析
来源:互联网 发布:农业普查数据 编辑:程序博客网 时间:2024/06/05 00:19
我们在进行数据传输的时候往往是需要缓冲区的,如在jdk1.7中提供了Buffer系列类库。这个类库中针对java的七种基本类型都有自己的换成去实现。但是在NIO编程中,我们用的最多的还是ByteBuffer,它基本可以满足我们的要求。但是在复杂的NIO编程中还有有很多局限性。下面我们就来看看ByteBuffer的缺点:
*(1)ByteBuffer的长度是固定的,一但创建了ByteBuffer,它就不能进行动态的扩容和收缩,当需要编码大的对象的时候,就会出现索引出界。
(2)ByteBuffer只有一个标志位置position,在进行读写切换的时候必须调用flip()或者rewind()等函数,所以必须小心的处理这些API,否则就很容易出错。
(3)ByteBuffer的API功能是有限的,一些高级的特性是不支持的,需要自己编程来实现。*
为了弥补以上的不足,Netty就提供了自己的ByteBuffer实现。
Netty中的ByteBuf和JDK中的ByteBuffer实现原理基本是一致的,提供了一下几类基本功能:
设置网络字节序
构造缓冲区实例
操作位置指针
缓冲区自身的copy和slice等
其次就是增加了额外的功能来弥补JDK中ByteBuffer的缺点。
如针对第二个缺点:增加了readIndex和writeIndex两个标志位来实现读写分离。
针对无法动态扩容的缺点:通常在进行put操作的时候先检查剩余空间,如果空间不足,就重新创建一个新的,并将旧的内容拷贝到新的空间去,然后释放老的空间。
具体详细的内容请参考Netty权威指南第十五章ByteBuf及其辅助类的分析
- Netty中的ByteBuf原理分析
- Netty ByteBuf原理及其源码分析
- Netty ByteBuf分析
- Netty中的ByteBuf
- Netty in action—Netty中的ByteBuf
- netty中ByteBuf部分的分析
- netty源码分析 之十一 ByteBuf
- Netty 4.0 源码分析(四):ByteBuf
- netty(十)源码分析之ByteBuf
- Netty ByteBuf
- Netty ByteBuf
- Netty源码分析(五)—ByteBuf源码分析
- 自顶向下深入分析Netty(九)--ByteBuf
- 【Netty4.X】Netty源码分析之ByteBuf(七)
- netty(十一)源码分析之ByteBuf 二
- netty(十一)源码分析之ByteBuf 三
- netty(十二)源码分析之ByteBuf 四
- netty 学习之bytebuf
- Android清除本地数据缓存代码
- linux
- java : 包装类 缓冲机制的使用
- [notes]chap14 Iterator Generator-expression 生成器表达式
- 博弈论小结
- Netty中的ByteBuf原理分析
- [DP 容斥原理] BZOJ3622 已经没有什么好害怕的了 && BZOJ 2024 [SHOI2009] 舞会
- 项目1:个人所得税计算器
- uvalive3667 ruler
- linux搭建jenkins
- Linux下创建Oracle的OEM
- 第3周项目3(1) 输出星号图
- Leetcode:290. Word Pattern(JAVA)
- Android GirdView/Listview 最后一行显示不完整