- 简介
- 目录大纲
- 最新文档
- 文集下载
线程模型
1 Reactor 线程模型 Reactor 模式是基于事件驱动开发的,核心组成部分包括Reactor和线程池,其中Reactor 负责监听事件和分配事件,线程池负责处理事件。 根据Reactor 的数量和线程池的数量,又将 Reactor 分为三种模型: 单 Reactor 单线程。 单 Reactor 多线程。 主从 Reactor 多线程。 1.1 单 Reactor 单线程 1.1.1……
ricear - 2022年1月9日 22:03
序列化与反序列化
1 为什么要进行序列化与反序列化 序列化是指将数据结构(如 C++ 中的 struct 就是数据结构类型)或对象(如 Java 中实例化后的类)转换成二进制字节流的过程,反序列化是指把二进制字节流转换成数据结构或者对象的过程。 要将数据进行网络传输就要涉及到序列化,因为网络传输的方式就是 IO,而我们的 IO 支持数据格式就是字节数组,但是我们单方面只把对象转成字节数组还不行,因为没有规则的字节……
ricear - 2021年9月1日 14:43
TCP粘包和拆包
1 为什么有粘包和拆包 TCP 传输协议是面向流的,没有数据包界限,客户端向服务端发送数据时,可能将一个完整的报文拆分成多个小报文进行发送,也可能将多个报文合并成一个大的报文进行发送,因此就有了粘包和拆包。 数据流在 TCP 协议下进行传播,因为协议本身对于流有一些规则的限制,这些规则导致当前对端接收到的数据包不完整,归结原因有下面三种情况: Socket 缓冲区与滑动窗口: 对于 TC……
ricear - 2021年8月27日 15:05
概述
1 Netty 是什么 Netty 是一款异步的事件驱动的网络应用程序框架,支持快速地开发可维护的高性能的面向协议的服务器和客户端。 2 为什么要使用 Netty(原生 NIO 有什么问题) NIO 的类库和 API 复杂,使用麻烦,我们需要熟练掌握 Selector、ServerSockerChannel、SocketChannel、ByteBuffer 等。 需要具备其他的额外技能做铺垫,例……
ricear - 2021年8月26日 14:59
客户端创建过程
1 创建过程 用户线程创建 Bootstrap 实例,通过 API 设置创建客户端相关的参数,异步发起客户端连接。 创建处理客户端连接、I/O 读写的 Reactor 线程组 NioEventLoopGroup,可以通过构造函数指定 I/O 线程的个数,默认为 CPU 内核数的 2 倍。 通过 Bootstrap 的 ChannelFactory 和用户指定的 Channel 类型创建用于客户……
ricear - 2021年8月25日 16:57