这个类的学习其实我感觉看ChannelBuffer的javadoc就能明白大概,也就是网上说的有readerIndex和writerIndex,以及和这两个相关的
markedReaderIndex和markedWriterIndex,我这里重点看一下discardReadBytes
这个函数的实现吧:
public void discardReadBytes() {
if (readerIndex == 0) {
return;
}
setBytes(0, this, readerIndex, writerIndex - readerIndex);
writerIndex -= readerIndex;
markedReaderIndex = Math.max(markedReaderIndex - readerIndex, 0);
markedWriterIndex = Math.max(markedWriterIndex - readerIndex, 0);
readerIndex = 0;
}
其实就是将readIndex到writerIndex之间length为writerIndex减去readerIndex的byte拷贝到从0去,这样数据就拷贝过去了。然后变更写指针,因为readerIndex到writerIndex直接的空间就被腾出来了,变更写指针到之前的读指针的位置上。然后解决markedReaderIndex和markedWriterIndex这两个指针的位置,最后将readerIndex设置为0.其他的方法理解起来都比较好理解一些。
ChannelBufferIndexFinder这个接口比较特殊,感觉就是查找是否已经到了某些特殊字符了,比如\r和\n等等,这个对消息的截取等比较有帮助。
ChannelBufferOutputStream类是将对BufferChannel封装成一个OutputStream,同样的
也有ChannelBufferInputStream类。
分享到:
相关推荐
### Netty实现原理浅析 #### 一、总体结构 Netty是一款由JBoss推出的高效且功能丰富的Java NIO框架,旨在简化网络...无论是对于初学者还是经验丰富的开发者而言,Netty都是一款值得深入学习和使用的网络编程框架。
- **1.8 使用POJO代替`ChannelBuffer`**:学习如何使用普通的Java对象(POJOs)代替`ChannelBuffer`进行数据处理。 - **1.9 应用程序关闭**:了解如何优雅地关闭Netty应用程序。 - **1.10 总结**:回顾本章所学的...
该手册由张立明翻译,Princy 进行了二次整理,对于学习和使用 Netty 框架的初学者,特别是学生来说,是一份宝贵的资源。 在手册的前言部分,作者提出了网络通信中常见的问题:通用的协议和库在特定场景下可能存在...
7. **Codec**:Netty 提供了一系列编解码器,用于将各种协议数据转换为 ChannelBuffer 和反向操作,如 HTTP、TCP、UDP 等。 通过对“Netty 权威指南第二版源码”的学习,你可以: - 理解 Netty 的事件模型和线程...
### Netty 3.2.5 终极手册:关键知识点概述 #### 一、Netty 3.2.5 终极手册...通过学习《Netty-3.2.5终极手册》,读者不仅可以掌握Netty的核心技术,还能学会如何利用Netty来解决实际问题,开发出高效可靠的网络应用。
Netty 是一个专门为快速开发高性能、高可靠性网络应用而设计的 Java 框架。它提供了异步事件驱动的网络应用程序框架,...随着深入学习和实践,开发者将能更好地利用 Netty 的优势,构建出高效、可靠的网络应用程序。
通过学习Netty 3.1中文用户手册,开发者可以深入了解Netty的架构,掌握其设计原则,以及如何利用Netty构建高性能的网络应用程序。无论是对于新手还是有经验的开发者,Netty都能提供一个高效、稳定且易于扩展的网络...
6. **零拷贝**:Netty通过直接内存和ChannelBuffer的组合,实现了操作系统级别的零拷贝技术,有效降低了CPU的负载,提升了网络传输效率。 7. **安全性**:ByteBuf还提供了安全的边界检查,防止越界访问导致的运行时...
### Netty新NIO框架知识点概述 #### 一、Netty框架简介 Netty是一款高性能的网络应用开发框架,它采用事件驱动...无论是构建高性能的服务端应用还是处理复杂的网络协议,Netty都是一个值得深入学习和使用的强大工具。
- **使用POJO代替`ChannelBuffer`**:Netty允许开发者使用普通的Java对象(POJOs)来表示数据,而不是使用`ChannelBuffer`。这种做法有助于提高代码的可读性和可维护性。 #### 四、总结 通过本篇文档,我们可以...
- **1.8 使用 POJO 而不是 ChannelBuffer**:这里介绍了如何使用普通的 Java 对象 (POJO) 来代替 ChannelBuffer 进行数据处理。 - **1.9 关闭你的应用程序**:讲解如何优雅地关闭 Netty 应用程序。 - **1.10 总结**...
通过对 Netty 的深入学习与实践,开发者不仅可以提高自身的技术水平,还能更好地应对各种复杂网络应用的需求。无论是对于初学者还是有经验的开发人员来说,掌握 Netty 都是一项非常有价值的技能。
Netty 是一个高性能、异步事件驱动的...总的来说,Netty 4.0 的这些变化提升了框架的性能,简化了 API,降低了学习曲线,并提供了更强大的功能。对于开发者来说,理解这些变化是成功迁移和利用 Netty 4.0 功能的关键。