zoukankan      html  css  js  c++  java
  • Netty派生缓冲区

    参考https://blog.csdn.net/wangjinnan16/article/details/77972113

    派生缓冲区

      派生缓冲区,也就是创建一个已经存在的缓冲区的视图,可以调用duplicate(),slice(),slice(int, int),

    readOnly()和order(ByteOrder)等方法实现。派生缓冲区会产生自己的读写索引和其他标记索引,但是他们共享内部的数据。因为它们共享内部的数据,所以创建派生缓冲是没有什么性能损耗的,而且是比较好的方式,例如你想拥有一个缓冲区的切片。

      如果需要复制一个缓冲区,可以使用copy()或copy(int, int)方法。下面的代码展示了怎么获取一个ByteBuf的切片。

    Charset utf8 = Charset.forName(“UTF-8“);
    //根据给定的字符串内容创建一个ByteBuf
    ByteBuf buf = Unpooled.copiedBuffer(“Netty in Action rocks!“, utf8);
    //创建ByteBuf的切片,起始位置是0,截止位置是14
    ByteBuf sliced = buf.slice(0, 14);
    //打印切片内容,正常应该是"Netty in Action"
    System.out.println(sliced.toString(utf8);
    //修改索引0内容
    buf.setByte(0, (byte) ’J’);
    //断言会成功,因为他们共享内部的数据,其实修改的就是他们内部指向的共同数据块
    assert buf.get(0) == sliced.get(0)
     可以发现,切片和原始ByteBuf里面的内容其实是同一块内存区域,


  • 相关阅读:
    暑假第一周进度总结
    学习记录(Python字典)
    学习记录(Python元组)
    学习记录(完成实验一二安装Scala)
    学习记录(安装Sbt)
    学习记录(安装spark)
    学习记录(Python列表)
    学习记录(Python循环结构)
    学习记录(Python选择结构)
    学习记录(Python算数运算符与if语句)
  • 原文地址:https://www.cnblogs.com/ffaiss/p/9913806.html
Copyright © 2011-2022 走看看