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


  • 相关阅读:
    JQuery.Ajax 错误调试帮助信息
    获取当前时间差
    选中复选框
    生成一个连接对象 生成静态页
    64位系统IIS开启32位兼容模式命令
    分割table获取数据
    JS 获取倒计时
    SqlServer 日期时间格式转换
    js 获得光标所在的文本框(text/textarea)中的位置
    .net 数据库链接的字符串
  • 原文地址:https://www.cnblogs.com/ffaiss/p/9913806.html
Copyright © 2011-2022 走看看