bytebuf池_Netty java从ByteBuf获取数据
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获取数据相关推荐
- bytebuf池_netty中的ByteBuf
网络数据的基本单位总是字节.Java NIO 提供了 ByteBuffer 作为它 的字节容器,但是这个类使用起来过于复杂,而且也有些繁琐. Netty 的 ByteBuffer 替代品是 ByteB ...
- bytebuf池_Netty默认的Bytebuf是堆内还是堆外?池化or非池化?
开篇 Netty的ByteBuf有从不同角度有如下2个分类,4种组合! 堆外内存和堆内内存 池化和非池化 我们在利用Netty做底层通信框架的时候,会默认给我们的到底是哪一种组合了? 分析 池化分析 ...
- bytebuf池_Netty篇:ByteBuf之内存池源码分析
Netty的内存池的实现有些复杂,使用了大量的位运算,晦涩难懂,不过万能的博客上好多大神已经介绍的非常详细,推荐四篇很详细很棒的源码分析的文章链接,本文根据自己的理解顺一下思路,内容主要也是出自以下四 ...
- bytebuf池_Netty ByteBuf
ByteBuf ByteBuf需要提供JDK ByteBuffer的功能(包含且不限于),主要有以下几类基本功能: 7种Java基础类型.byte[].ByteBuffer(ByteBuf)的等的读写 ...
- bytebuf池_Netty ByteBuf原理剖析
缓冲区在计算机世界中随处可见,内存中的多级缓冲区,io设备的缓冲区等等,还有我们经常用的内存队列,分布式队列等等.缓冲区,平衡了数据产生方和数据消费方的处理效率差异,提高了数据处理性能. JDK为了解 ...
- bytebuf池_图文分析ByteBuf是什么
ByteBuf是什么 ByteBuf是Netty中非常重要的一个组件,他就像物流公司的运输工具:卡车,火车,甚至是飞机.而物流公司靠什么盈利,就是靠运输货物,可想而知ByteBuf在Netty中是多么 ...
- Java使用JDBC获取数据并打印出来
JDBC代表Java数据库连接,这对Java编程语言和广泛的数据库之间独立于数据库的连接标准的Java API. JDBC API提供了以下接口和类: Tables Cool DriverManage ...
- java snmp协议 获取数据
最近工作内容涉及到snmp协议相关内容,由于第一次接触,又没有实际的环境测试,写出来的东西自己都不确定能不能用,直到最近有环境后,花了一段时间才搞定. 写下这篇文章,只是给和我之前一样的小白指点一波, ...
- java从键盘获取数据_java实现从键盘获取数据的方法
java实现从键盘获取数据的方法 发布时间:2020-06-25 15:42:06 来源:亿速云 阅读:83 作者:Leah 这期内容当中小编将会给大家带来有关java实现从键盘获取数据的方法,文章内 ...
最新文章
- 远程访问,文件的压缩,ip地址的设置(9,11,12unit)
- 怎么让jsp中的按钮置灰不能使用_UI设计中的按钮设计规范
- 100小时学会sap-财务篇fico总结介绍篇
- Angualr中通过原生js和ViewChild的方式获取dom
- spring boot原理_SpringBoot-02-原理初探之主启动类
- 【机器学习】使用集成学习回归器改善预测模型的得分
- 关于jrebel碰到的一次问题记录
- 系统服务管理与控制程序(Init System/初始化系统)-- Systemd 的 Unit 配置文件详解
- linux 复制指定目录下的全部文件到另一个目录中,linux cp 文件夹
- 计算机英语讲课笔记05
- 获取当前scn号scn1_Checkpoint和SCN的解析
- Bootstrap 表单
- Ubuntu环境下读取罗技G29方向盘信息
- 超全地牢场景unity3d模型素材网站整理
- matlab精确重心法选址,重心法选址问题资料.ppt
- APP开通支付宝支付 转账功能
- matlab模拟滤波器频率响应,怎样求FIR滤波器在任意频率上的频率响应?
- 亲爱的面试官,这个我可没看过!(Android部分)
- MySQL中添加新字段
- Apache POI读合并单元格