Buffer(缓冲)

正如我们先前所指出的,网络数据的基本单位永远是 byte(字节)。Java NIO 提供 ByteBuffer 作为字节的容器,但它的作用太有限,也没有进行优化。使用ByteBuffer通常是一件繁琐而又复杂的事。

幸运的是,Netty提供了一个强大的缓冲实现类用来表示字节序列以及帮助你操作字节和自定义的POJO。这个新的缓冲类,ByteBuf,效率与JDK的ByteBuffer相当。设计ByteBuf是为了在Netty的pipeline中传输数据。它是为了解决ByteBuffer存在的一些问题以及满足网络程序开发者的需求,以提高他们的生产效率而被设计出来的。

请注意,在本书剩下的章节中,为了帮助区分,我将使用数据容器指代Netty的缓冲接口及实现,同时仍然使用Java的缓冲API指代JDK的缓冲实现。

在本章中,你将会学习Netty的缓冲API,为什么它能够超过JDK的实现,它是如何做到这一点,以及为什么它会比JDK的实现更加灵活。你将会深入了解到如何在Netty框架中访问被交换数据以及你能对它做些什么。这一章是之后章节的基础,因为几乎Netty框架的每一个地方都用到了缓冲。

因为数据需要经过ChannelPipeline和ChannelHandler进行传输,而这又离不开缓冲,所以缓冲在Netty应用程序中是十分普遍的。我们将在第6章学习ChannelHandler和ChannelPipeline。

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「方志朋」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程

JS中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。欢迎热爱技术的你一起加入交流与学习,JS中文网的使命是帮助开发者用代码改变世界

results matching ""

    No results matching ""