Netty的ByteBuf基本结构
前面的章节中,我们了解到了 NIO 中的 Buffer。它其实就是一个数组,然后封装了一些方法来对这个数组进行操作。其实对于 NIO 编程而言,JDK NIO 中的 Buffer 已经可以满足编程的需要了,但是对该 Buffer 操作比较复杂,它的容量不能够动态的扩展和收缩。
Netty的ByteBuf重要API
Netty 自己定义 ByteBuf 是因为 Nio 自带的 ByteBuffer 不是很好用,提供的 API 不是很完善,所以 Netty 就自定义了 ByteBuf。当然它会提供一些很好用的 API 供用户使用,来很方便的让用户对其进行操作。
AbstractReferenceCountedByteBuf源码解析
从前面的类继承关系上面我们知道,它是继承 AbstractByteBuf 的类。它的主要功能是计数,类似于 JVM 内存回收的对象引用计数器,用于跟踪对象的分配和销毁,做自动内存回收使用。
UnpooledHeapByte源码解析
UnpooledHeapByteBuf 是基于堆内存进行内存分配的字节缓冲区,它没有基于对象池技术实现。在每次 I/O 的读写都会创建一个新的 UnpooledHeapByteBuf
Netty的Channel
在了解 NIO 的 Channel 的时候,我们知道,它是用于非阻塞 I/O 的操作。类似于 NIO 的 Channel,Netty 提供了自己的 Channel 和其子类实现,用于异步 I/O 操作和其他相关的操作
Netty的AbstractNioChannel源码解析
从前面章节的类关系图上面我们可以了解到 AbstractNioChannel 继承 AbstractChannel。AbstractChannel 里面的变量 AbstractNioChannel 都拥有,并且它会实现部分 AbstractChannel 的抽象方法
Netty的AbstractNioByteChannel源码解析
AbstractNioByteChannel 是 AbstractNioChannel 的子类,它的大部分功能和 AbstractNioChannel 类似,只不过单独的实现了部分功能。
Netty的NioServerSocketChannel源码解析
NioServerSocketChannel 它是服务端连接请求 Channel。它的功能和 JDK 里面的 ServerSocketChannel 相似。
Netty的UnSafe
Unsafe 和名字一样,是不安全的,它是聚合在 Channel 中协助进行网络读写相关操作的,只能给 Channel 内部使用,不应该被 Netty 的上层使用者使用,所以定义为 Unsafe
Netty的ChannelPipeline和ChannelHndler
Netty 的 ChannelPipeline 我们可以简单的理解为一个 Channel 数据管道,消息在 ChannelPipeline 中流动和传递。ChannelPipeline 持有 I/O 事件的连接器 ChannelHandler 的链表
Netty的EventLoop和EventLoopGroup
在前面的章节中,我们了解了 Reactor 模型的特点,以及大体讲了一下,Netty 对 Reactor 模型的支持,Netty 推荐使用主从多线程模型,有一个专门的线程用来接收 TCP 连接,
Netty的Future和Promise
Future 是 Java 的原生的 API 中提供的接口,用来记录异步执行状态,Future 的 get() 方法会判断任务是否执行完成,如果完成就会立刻返回执行结果,如果没有完成则一直阻塞,