ByteBuf buf = ...

byte[] bytes = new byte[buf.readableBytes()];

buf.readBytes(bytes);

如果您不希望readerIndex更改:

ByteBuf buf = ...

byte[] bytes = new byte[buf.readableBytes()];

int readerIndex = buf.readerIndex();

buf.getBytes(readerIndex, bytes);

如果要最小化内存副本,可以使用ByteBuf的后备数组(如果可用):

ByteBuf buf = ...

byte[] bytes;

int offset;

int length = buf.readableBytes();

if (buf.hasArray()) {

bytes = buf.array();

offset = buf.arrayOffset();

} else {

bytes = new byte[length];

buf.getBytes(buf.readerIndex(), bytes);

offset = 0;

}

请注意,您不能简单地使用buf.array(),因为:

>并不是所有的ByteBufs都有后备数组.一些是堆栈内缓冲器(即直接存储器)

>即使一个ByteBuf有一个后备数组(即buf.hasArray()返回true),以下不一定是真的,因为缓冲区可能是其他缓冲区或池缓冲区的一个切片:

> buf.array()[0] == buf.getByte(0)> buf.array().length == buf.capacity()

bytebuf池_Netty java从ByteBuf获取数据相关推荐

  1. bytebuf池_netty中的ByteBuf

    网络数据的基本单位总是字节.Java NIO 提供了 ByteBuffer 作为它 的字节容器,但是这个类使用起来过于复杂,而且也有些繁琐. Netty 的 ByteBuffer 替代品是 ByteB ...

  2. bytebuf池_Netty默认的Bytebuf是堆内还是堆外?池化or非池化?

    开篇 Netty的ByteBuf有从不同角度有如下2个分类,4种组合! 堆外内存和堆内内存 池化和非池化 我们在利用Netty做底层通信框架的时候,会默认给我们的到底是哪一种组合了? 分析 池化分析 ...

  3. bytebuf池_Netty篇:ByteBuf之内存池源码分析

    Netty的内存池的实现有些复杂,使用了大量的位运算,晦涩难懂,不过万能的博客上好多大神已经介绍的非常详细,推荐四篇很详细很棒的源码分析的文章链接,本文根据自己的理解顺一下思路,内容主要也是出自以下四 ...

  4. bytebuf池_Netty ByteBuf

    ByteBuf ByteBuf需要提供JDK ByteBuffer的功能(包含且不限于),主要有以下几类基本功能: 7种Java基础类型.byte[].ByteBuffer(ByteBuf)的等的读写 ...

  5. bytebuf池_Netty ByteBuf原理剖析

    缓冲区在计算机世界中随处可见,内存中的多级缓冲区,io设备的缓冲区等等,还有我们经常用的内存队列,分布式队列等等.缓冲区,平衡了数据产生方和数据消费方的处理效率差异,提高了数据处理性能. JDK为了解 ...

  6. bytebuf池_图文分析ByteBuf是什么

    ByteBuf是什么 ByteBuf是Netty中非常重要的一个组件,他就像物流公司的运输工具:卡车,火车,甚至是飞机.而物流公司靠什么盈利,就是靠运输货物,可想而知ByteBuf在Netty中是多么 ...

  7. Java使用JDBC获取数据并打印出来

    JDBC代表Java数据库连接,这对Java编程语言和广泛的数据库之间独立于数据库的连接标准的Java API. JDBC API提供了以下接口和类: Tables Cool DriverManage ...

  8. java snmp协议 获取数据

    最近工作内容涉及到snmp协议相关内容,由于第一次接触,又没有实际的环境测试,写出来的东西自己都不确定能不能用,直到最近有环境后,花了一段时间才搞定. 写下这篇文章,只是给和我之前一样的小白指点一波, ...

  9. java从键盘获取数据_java实现从键盘获取数据的方法

    java实现从键盘获取数据的方法 发布时间:2020-06-25 15:42:06 来源:亿速云 阅读:83 作者:Leah 这期内容当中小编将会给大家带来有关java实现从键盘获取数据的方法,文章内 ...

最新文章

  1. 远程访问,文件的压缩,ip地址的设置(9,11,12unit)
  2. 怎么让jsp中的按钮置灰不能使用_UI设计中的按钮设计规范
  3. 100小时学会sap-财务篇fico总结介绍篇
  4. Angualr中通过原生js和ViewChild的方式获取dom
  5. spring boot原理_SpringBoot-02-原理初探之主启动类
  6. 【机器学习】使用集成学习回归器改善预测模型的得分
  7. 关于jrebel碰到的一次问题记录
  8. 系统服务管理与控制程序(Init System/初始化系统)-- Systemd 的 Unit 配置文件详解
  9. linux 复制指定目录下的全部文件到另一个目录中,linux cp 文件夹
  10. 计算机英语讲课笔记05
  11. 获取当前scn号scn1_Checkpoint和SCN的解析
  12. Bootstrap 表单
  13. Ubuntu环境下读取罗技G29方向盘信息
  14. 超全地牢场景unity3d模型素材网站整理
  15. matlab精确重心法选址,重心法选址问题资料.ppt
  16. APP开通支付宝支付 转账功能
  17. matlab模拟滤波器频率响应,怎样求FIR滤波器在任意频率上的频率响应?
  18. 亲爱的面试官,这个我可没看过!(Android部分)
  19. MySQL中添加新字段
  20. Apache POI读合并单元格

热门文章

  1. 基于 SpringMvc kisso 的 sso 演示 demo
  2. 出版学术研究论文的一些小技巧
  3. 系统重温Pandas笔记:(七)缺失数据
  4. 2018普通本科专业目录计算机类,教育部公布新版本科专业目录专业少了100多个...
  5. 副高职称论文发表要求
  6. RecyclerView的极尽升华:BaseRecyclerViewFragment(修改)
  7. js获取当前URL、参数、端口、IP等信息
  8. 怎么用迅捷视频转换器将MP4格式视频转成AVI格式
  9. IDEA设置类和方法的注释模板
  10. 软件售后拜访记录模板