Netty 数据传输载体 —— ByteBuf

本文探讨了 Netty 中的 ByteBuf 数据容器,它解决了 JDK NIO ByteBuffer 的一些缺陷,如固定容量和复杂的读写模式。ByteBuf 提供了动态扩容、独立的读写指针、引用计数等特性。文章详细介绍了 ByteBuf 的内部结构、引用计数、分类、核心 API,并通过实战演练展示其使用方法,强调了在使用 ByteBuf API 时应注意的要点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在学习编解码的过程中,我们看到 Netty 大量使用了自己实现的 ByteBuf 工具类,ByteBuf 是 Netty 的数据容器,所有网络通信中字节流的传输都是通过 ByteBuf 完成的。然而 JDK NIO 包中已经提供了类似的 ByteBuffer 类,为什么 Netty 还要去重复造轮子呢?那就要好好说说 ByteBuf。

为什么是 ByteBuf

我们首先介绍下 JDK NIO 的 ByteBuffer,才能知道 ByteBuffer 有哪些缺陷和痛点。下图展示了 ByteBuffer 的内部结构:

在这里插入图片描述

从图中可知,ByteBuffer 包含以下四个基本属性:

  • mark:为某个读取过的关键位置做标记,方便回退到该位置;

  • position:当前读取的位置;

  • limit:buffer 中有效的数据长度大小;

  • capacity:初始化时的空间容量。

    </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Think_Higher

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值