bytebuf使用_java byte类型

bytebuf使用_java byte类型ByteBufAllocator为了减少分配和释放内存的开销,Netty通过支持池类ByteBufAllocator,可用于分配的任何ByteBuf我们已经描述过的类型的实例。是否使用池是由应用程序决定的,表5.8列出了ByteBufAllocator提供的操作。Table5.8ByteBufAllocatormethods名称描述buffer()buffer(int)buf…


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

ByteBufAllocator

为了减少分配和释放内存的开销,Netty 通过支持池类 ByteBufAllocator,可用于分配的任何 ByteBuf 我们已经描述过的类型的实例。是否使用池是由应用程序决定的,表5.8列出了 ByteBufAllocator 提供的操作。

Table 5.8 ByteBufAllocator methods名称描述buffer() buffer(int) buffer(int, int)Return a ByteBuf with heap-based or direct data storage.

heapBuffer() heapBuffer(int) heapBuffer(int, int)Return a ByteBuf with heap-based storage.

directBuffer() directBuffer(int) directBuffer(int, int)Return a ByteBuf with direct storage.

compositeBuffer() compositeBuffer(int) heapCompositeBuffer() heapCompositeBuffer(int) directCompositeBuffer()directCompositeBuffer(int)Return a CompositeByteBuf that can be expanded by adding heapbased or direct buffers.

ioBuffer()Return a ByteBuf that will be used for I/O operations on a socket.

通过一些方法接受整型参数允许用户指定 ByteBuf 的初始和最大容量值。你可能还记得,ByteBuf 存储可以扩大到其最大容量。

得到一个 ByteBufAllocator 的引用很简单。你可以得到从 Channel (在理论上,每 Channel 可具有不同的 ByteBufAllocator ),或通过绑定到的 ChannelHandler 的 ChannelHandlerContext 得到它,用它实现了你数据处理逻辑。

下面的列表说明获得 ByteBufAllocator 的两种方式。

Listing 5.15 Obtain ByteBufAllocator referenceChannel channel = …;

ByteBufAllocator allocator = channel.alloc(); //1

….

ChannelHandlerContext ctx = …;

ByteBufAllocator allocator2 = ctx.alloc(); //2

…

1.从 channel 获得 ByteBufAllocator

2.从 ChannelHandlerContext 获得 ByteBufAllocator

Netty 提供了两种 ByteBufAllocator 的实现,一种是 PooledByteBufAllocator,用ByteBuf 实例池改进性能以及内存使用降到最低,此实现使用一个“jemalloc”内存分配。其他的实现不池化 ByteBuf 情况下,每次返回一个新的实例。

Netty 默认使用 PooledByteBufAllocator,我们可以通过 ChannelConfig 或通过引导设置一个不同的实现来改变。更多细节在后面讲述 ,见 Chapter 9, “Bootstrapping Netty Applications”

Unpooled (非池化)缓存

当未引用 ByteBufAllocator 时,上面的方法无法访问到 ByteBuf。对于这个用例 Netty 提供一个实用工具类称为 Unpooled,,它提供了静态辅助方法来创建非池化的 ByteBuf 实例。表5.9列出了最重要的方法

Table 5.9 Unpooled helper class名称描述buffer() buffer(int) buffer(int, int)Returns an unpooled ByteBuf with heap-based storage

directBuffer() directBuffer(int) directBuffer(int, int)Returns an unpooled ByteBuf with direct storage

wrappedBuffer()Returns a ByteBuf, which wraps the given data.

copiedBuffer()Returns a ByteBuf, which copies the given data

在 非联网项目,该 Unpooled 类也使得它更容易使用的 ByteBuf API,获得一个高性能的可扩展缓冲 API,而不需要 Netty 的其他部分的。

ByteBufUtil

ByteBufUtil 静态辅助方法来操作 ByteBuf,因为这个 API 是通用的,与使用池无关,这些方法已经在外面的分配类实现。

也许最有价值的是 hexDump() 方法,这个方法返回指定 ByteBuf 中可读字节的十六进制字符串,可以用于调试程序时打印 ByteBuf 的内容。一个典型的用途是记录一个 ByteBuf 的内容进行调试。十六进制字符串相比字节而言对用户更友好。 而且十六进制版本可以很容易地转换回实际字节表示。

另一个有用方法是 使用 boolean equals(ByteBuf, ByteBuf),用来比较 ByteBuf 实例是否相等。在 实现自己 ByteBuf 的子类时经常用到。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191941.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python图像识别与提取_图像分类python

    python图像识别与提取_图像分类python前面一篇文章介绍了图像增强知识,从而改善图像质量,增强图像识别效果,核心内容分为直方图均衡化、局部直方图均衡化和自动色彩均衡三部分。这篇文章将详细讲解图像分类知识,包括常见的图像分类算法,并介绍Python环境下的贝叶斯图像分类算法、基于KNN算法的图像分类和基于神经网络算法的图像分类等案例。万字长文整理,希望对您有所帮助。同时,该部分知识均为作者查阅资料撰写总结,并且开设成了收费专栏,为小宝赚点奶粉钱,感谢您的抬爱。当然如果您是在读学生或经济拮据,可以私聊我给你每篇文章开白名单,或者转发原文给你,更希望

    2022年10月14日
  • c语言平方根求和用sqrt函数,sqrt函数 Excel怎么使用平方根函数SQRT

    c语言平方根求和用sqrt函数,sqrt函数 Excel怎么使用平方根函数SQRT在统计数据的时候,我们可能会要对着一个数据进行开平方,那么在Excel当中sqrt函数就非常重要了,可是这个函数究竟要怎么使用呢?今天我们就一起来了解一下吧。sqrt函数——Excel怎么使用平方根函数SQRT第一步,桌面上打开一个Excel文档第二步,文档打开的主界面第三步,平方根函数SQRT只有1个参数,number第四步,我们举例,来更好地说明,第五步,输入完整的SQRT函数第六步,回车后,…

    2022年6月10日
  • html 怎么让整体居中,html中表格整体居中 详解html里面如何让表格居中[通俗易懂]

    html 怎么让整体居中,html中表格整体居中 详解html里面如何让表格居中[通俗易懂]把表格在页面中间显示。。。分享代码。。。在这个无谓的年华,无论别人多么高高不可攀比,但小编还是选择,做一个适应自己的人。首先打开vscode编辑器,新建一个html文档,里面写入一个外层的div,再加入一行table表格:知道谢每一粒种子,每一缕清风,也知道早起播种和御风而行。然后在上方的style标签中加入css样式,设置table标签的样式,table的元素具有长度自适应性,其长度根据其内…

    2022年9月19日
  • JavaScript给元素添加class属性

    JavaScript给元素添加class属性注意:element.classList.remove()、element.classList.add()—ie9及以下不兼容//移除div的class属性obj.classList.remove(‘active’);//添加class属性值//方式一obj.className+=’newactive’;//方式二//obj.className=…

    2022年6月22日
  • Socket.io.js文件下载

    Socket.io.js文件下载想不通,现在什么文件在CSDN都需要用积分来说话了…麻木了…

    2022年10月26日
  • xp 架设网站服务器软件,xp架设ftp服务器软件

    xp 架设网站服务器软件,xp架设ftp服务器软件xp架设ftp服务器软件内容精选换一换由于智能写Cache是华为自研闭源工具,仅支持华为鲲鹏处理器使用。需在所有云服务器上安装DataProvider软件,SAP技术支持人员通过该软件收集云服务器所在的平台信息,以便在SAP系统故障、性能下降时进行定位和分析。SAPNetWeaver所在的服务器上,在创建服务器的时候需要为其指定名为DataproviderAccess的Agency,同时也需…

    2022年7月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号