zoukankan      html  css  js  c++  java
  • Netty(一):ByteBuf读写过程图解

    我们知道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 }

    然后是测试打印结果:

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

  • 相关阅读:
    Install OpenCV 3.0 and Python 2.7+ on OSX
    Install OpenCV 3.0 and Python 2.7+ on Ubuntu
    完美商业计划书全攻略
    No module named zope.interface error的解决
    nginx flv点播服务器搭建
    关于Apple开发者的D-U-N-S Number
    小而美的Promise库——promiz源码浅析
    为什么JavaScript里面0.1+0.2 === 0.3是false
    JavaScript取出字符串中括号里的内容
    js数据结构与算法--递归
  • 原文地址:https://www.cnblogs.com/insaneXs/p/9303652.html
Copyright © 2011-2022 走看看