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里面的内容其实是同一块内存区域,


  • 相关阅读:
    sfs2x 连接 mongodb
    java websocket
    webstorm 4.0 注册码
    解决 sfs2 admin tool 找不到扩展
    window 注册表五大类
    opengl 学习第二日
    java google Protobuf
    扩展 java sencha touch PhonegapPlugin
    sencha touch2 kryonet socket phonegap 通信 作者:围城
    sencha touch2 layout 笔记
  • 原文地址:https://www.cnblogs.com/ffaiss/p/9913806.html
Copyright © 2011-2022 走看看