ByteBuf 是对 JDK 提供的 java.nio.ByteBuffer
的进一步封装,提供了许多更加方便使用的功能,封装了操作 ByteBuffer 的复杂度。本文介绍 ByteBuf 的工作原理以及其部分实现类的源码分析,并对一些 ByteBuf 的辅助类也进行了简要介绍。
Netty Future-Listener机制
由于 Netty 消息通知都采用了异步的方式,因此需要引入 Future-Listener 机制,通过观察者模式将消息返还给结果验证方进行下一步事件的触发。
Netty ChannelPipeline和ChannelHandler
Netty 的 ChannelPipeline 和 ChannelHandler 机制类似于 Servlet 和 Filter 过滤器,这类拦截器实际上是职责链模式的一种变形,主要是为了方便事件的拦截和用户业务逻辑的定制。
Netty C/S创建与初始化
Netty 封装了 JDK NIO 类库复杂而庞大的通信底层细节,使用户不再和 NIO 的 Selector、ServerSocketChannel、SocketChannel、ByteBuffer、SelectionKey 等组件打交道。而对于 Netty 来说,用户可以直接通过 ServerBootstrap(服务端启动辅助类)和 Bootstrap(客户端启动辅助类)来创建一个可通信的 C/S 端。 这无疑大大减轻了工作量、降低了开发难度。
Linux I/O模型与线程模型
网络应用程序框架,高性能之处主要来自于其 I/O 模型和线程处理模型,前者决定如何收发数据,后者决定如何处理数据。根据 UNIX 网络编程的 I/O 模型的分类,UNIX 提供了五种 I/O 模型:阻塞式 I/O 模型(blocking I/O)、非阻塞式 I/O 模型(non-blocking I/O)、I/O 复用模型(I/O multiplexing)、信号驱动式 I/O 模型(signal-driven I/O)、异步 I/O 模型(asynchronous I/O)
HEXO QUICK START
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.