
Netty
文章平均质量分 96
movYou521
这个作者很懒,什么都没留下…
展开
-
【Netty 核心技术及源码剖析】05 TCP 粘包和拆包 及解决方案
文章目录1 TCP 粘包和拆包2 TCP 粘包和拆包现象实例3 TCP 粘包和拆包解决方案1 TCP 粘包和拆包TCP是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的 socket,因此,发送端为了将多个发给接收端的包,更有效的发给对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样做虽然提高了效率,但是接收端就难于分辨出完整的数据包了,因为面向流的通信是无消息保护边界的。由于TCP无消息保护边界, 需原创 2021-06-27 22:19:09 · 207 阅读 · 1 评论 -
【Netty 核心技术及源码剖析】04 Netty 编解码器和 Handler 的调用机制
文章目录1 基本说明2 编码解码器3 解码器-ByteToMessageDecoder4 Netty的handler链的调用机制5 解码器-ReplayingDecoder6 其它编解码器7 Log4j 整合到Netty1 基本说明netty的组件设计:Netty的主要组件有 Channel、EventLoop、ChannelFuture、ChannelHandler、ChannelPipe等。ChannelHandler 充当了处理入站和出站数据的应用程序逻辑的容器。例如,实现Channel原创 2021-06-27 16:32:21 · 138 阅读 · 0 评论 -
【Netty 核心技术及源码剖析】02 Netty 核心模块组件
文章目录1 Bootstrap、ServerBootstrap2 Future、ChannelFuture1 Bootstrap、ServerBootstrapBootstrap 意思是引导,一个 Netty 应用通常由一个 Bootstrap 开始,主要作用是配置整个 Netty 程序,串联各个组件,Netty 中 Bootstrap 类是客户端程序的启动引导类,ServerBootstrap 是服务端启动引导类。常见的方法: /** * 该方法用于客户端,用来设置一个 EventLoop原创 2021-06-27 12:52:21 · 160 阅读 · 0 评论 -
【Netty 核心技术及源码剖析】02 Netty 概述与架构设计
文章目录1. 原生NIO存在的问题2. Netty官网说明3. Netty的优点4. Netty版本说明1. 原生NIO存在的问题NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer 等。需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的 NIO 程序。开发工作量和难度都非常大:例如客户原创 2021-06-23 21:54:59 · 272 阅读 · 0 评论 -
【Netty 核心技术及源码剖析】01 Java I/O
文章目录1. Java NIO 三件套1.1 缓冲区1.2 选择器1. Java NIO 三件套在 NIO 中有三个核心对象:缓冲区(Buffer)、选择器(Selector)、通道(Channel)。1.1 缓冲区缓冲区内部基于一个数组实现。在 NIO 中,所有的缓冲区类型都继承于抽象类 Buffer,对于 Java 中的基本类型,基本都有一个具体 Buffer 类型与之对应,其继承关系入下图所示。Buffer 的基础使用如下述例子。package bin.nio.buffer;impo原创 2021-06-17 23:02:38 · 195 阅读 · 0 评论