博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Netty(一):ByteBuf读写过程图解
阅读量:6254 次
发布时间:2019-06-22

本文共 1455 字,大约阅读时间需要 4 分钟。

我们知道ByteBuf通过读写两个索引分离,避免了NIO中ByteBuffer中读写模式切换时,需要flip等繁琐的操作。

今天就通过一段测试代码以及图例来直观的了解下ByteBuf中的readIndex, writeIndex以及capacity的概念。

先贴出测试代码:

1 public class ByteBuffTest { 2  3     public static void main(String[] args){ 4         /*******************初始阶段**********************/ 5         ByteBuf buf = Unpooled.buffer(100, 200); 6         System.out.println("writable bytes " + buf.writableBytes()); 7         System.out.println("readable bytes " + buf.readableBytes()); 8  9         /*******************写入数据**********************/10         String str = "write test";//UTF-8 英文字符占一个字节11         int length = str.getBytes().length;//因此得到的字节长度为1012         buf.writeBytes(str.getBytes());13         System.out.println("writable bytes " + buf.writableBytes());14         System.out.println("readable bytes " + buf.readableBytes());15 16         /*******************读取数据*********************/17         char c = (char)buf.readByte();//读取第一个字节,并转换成字符打印18         System.out.println("c:" + c);19         System.out.println("writable bytes " + buf.writableBytes());20         System.out.println("readable bytes " + buf.readableBytes());21 22         /*******************丢弃已读*********************/23         buf.discardReadBytes();24         System.out.println("writable bytes " + buf.writableBytes());25         System.out.println("readable bytes " + buf.readableBytes());26 27     }28 }

 

然后是测试打印结果:

 

对上述过程用图例直观表示:

转载于:https://www.cnblogs.com/insaneXs/p/9303652.html

你可能感兴趣的文章
No1_Web的工作机制
查看>>
php class中public,private,protected的区别,以及实例
查看>>
谈云计算(仿出师表)
查看>>
excel导入导出组件设计
查看>>
余额宝技术架构及演进
查看>>
iOS开发之UIPickerView
查看>>
LinuxC下获取UDP包中的路由目的IP地址和头标识目的地址
查看>>
【原创】使用 VS 编译遇到的一些 error 和 warning(持续更新)
查看>>
Windows快捷键高手用法
查看>>
Cocos2d-x3.2 EditBox的使用
查看>>
使用StrutsSpringTestCase测试框架报错
查看>>
深入理解计算机系统-之-数值存储(三)-- 原码、反码、补码和移码详解
查看>>
Linux应用笔记:Linux下设置和查看环境变量
查看>>
SQL挑战——如何高效生成编码
查看>>
集群调度技术研究综述
查看>>
云架构和openstack的思考
查看>>
ORACLE清理、截断监听日志文件(listener.log)
查看>>
设计模式[21]-Factory Method
查看>>
改善系统的通知中心
查看>>
物理引擎中velocity的单位是个什么鬼?
查看>>