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. Java成员变量与类变量_Java基础随记2-成员变量和类变量的区别
  2. 高颜值的神经网络可视化工具:3D、彩色、可定制,还能可视化参数重要性
  3. Python基础知识(第一天)
  4. Sql Group by 使用
  5. 2017视频监控行业应用趋势与市场发展分析
  6. mysql分页查询报错,及解决
  7. Exchange邮箱的创建与配置
  8. NB-IoT(7)---开发环境搭建及模组驱动开发
  9. pcb二次钻孔_作为一名合格的PCB设计工程师,了解生产制造很重要
  10. Eclipse中,将jar包导入为User Library
  11. (转)ARM Linux启动过程分析
  12. 如何在spring框架中解决多数据源的问题[转]
  13. 基于CBOW网络手动实现面向中文语料的word2vec
  14. elasticsearch报错:exceeds the [index.highlight.max_analyzed_offset] limit [1000000]
  15. PMP复习整理考点篇【12】--- 激励理论
  16. Mysql orchestrator高可用
  17. iOS高德地图去logo
  18. MySQL Workbench 已停止工作 错误模块名称: KERNELBASE.dll 异常代码: 0xe0434352 程序无法正常启动:( 0xc000007b)
  19. 车主委托过户和电子委托书
  20. WITNESS基础教程

热门文章

  1. 使用NPOI向Excel单元格中插入图片
  2. 如何从宿主机拖动复制文件到虚拟机VM中的解决方法
  3. 【转载】【非常好】MTK 电池流程.c
  4. macOS 修改mysql账号密码
  5. java 多线程开发注意事项
  6. [考研数学]概率论难点总结:样本标准差,样本均值,均值的期望和方差,与t分布、卡方分布和F分布的关系及推导
  7. 数据仓库Kimball维度建模技术精华
  8. python转置矩阵画流程图_python 矩阵转置transpose
  9. 脱口而出的100句英语句子
  10. NYOJ 题目47 过河问题 (贪心)