码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2018-07-13 11:04:31      阅读:1225      评论:0      收藏:0      [点我收藏+]

标签:unp   pac   过程   今天   ati   避免   字节   数据   bytes   

我们知道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读写过程图解

标签:unp   pac   过程   今天   ati   避免   字节   数据   bytes   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!