首页 > Web开发 > 详细

Netty(一):ByteBuf读写过程图解

时间:2018-07-13 10:49:04      阅读:199      评论:0      收藏:0      [点我收藏+]

我们知道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;//因此得到的字节长度为10
12         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 }

 

然后是测试打印结果:

技术分享图片

 

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

技术分享图片

Netty(一):ByteBuf读写过程图解

原文:https://www.cnblogs.com/insaneXs/p/9303652.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!