Java NIO:Channel 通道的工作原理与数据读写2026-11-01技术/默认分类java/nio一、Channel 是什么? Channel(通道)是 Java NIO 的核心组件之一,主要负责数据的读取和写入。 在传统 BIO 中,数据主要通过 InputStream 和 OutputStream 进行传输;在 NIO 中,数据通常通过 Channel 和 Buffer 配合完成传输。 三个2026-11-01|8|0|0
Netty:Pipeline 消息传播、Handler 选型与 Reactor 模型易错点解析2026-11-012026-11-01技术易混淆概念/NettyNetty 的网络通信涉及多个层次:IO 多路复用负责监听就绪事件,Reactor 负责组织事件分发,Pipeline 负责事件传播,Handler 负责具体业务处理,Future 则用于表示异步操作的执行结果。 如果混淆这些概念,就容易在消息编码、引用计数、线程中断和资源关闭等方面出现错误理解。 2026-11-01|8|0|0
Java NIO:compact() 的正确理解与常见问题2026-11-012026-11-01技术易混淆概念/java一、compact() 是什么? compact() 的作用是:保留 Buffer 中尚未读取的数据,将它们移动到缓冲区开头,并将 position 设置为剩余数据的长度,以便继续写入新数据。 它主要解决一个问题: 当 Buffer 中的数据没有处理完,又需要接收新数据时,如何保留之前未处理的数据?2026-11-01|5|0|0
Netty:核心原理串联与综合场景分析2026-11-012026-11-01技术Netty一、Netty 服务端的整体工作流程 典型 TCP 服务端从客户端连接到消息响应,大致经历: 客户端发起 TCP 连接 │ ▼ Boss EventLoopGroup 接收连接 │ ▼ Worker EventLoopGroup 管理客2026-11-01|6|0|0
Netty:TCP_NODELAY、Nagle 算法与服务端连接管理2026-11-012026-11-01技术Netty一、Nagle 算法与 TCP_NODELAY 1. Nagle 算法解决什么问题? TCP 是字节流协议。应用程序可能频繁写入很少的数据,例如每次只写入几个字节。如果每次小数据写入都立即形成独立 TCP 数据段,可能产生大量小数据段,增加网络协议头开销。 Nagle 算法的目标是减少小 TCP 数2026-11-01|2|0|0
Netty:ByteBuf 引用计数、Handler 消息传播与处理器选型2026-11-012026-11-01技术Netty一、ByteBuf 为什么需要引用计数? 普通 Java 对象通常由 JVM 垃圾回收器管理。Netty 的 ByteBuf 可能使用池化内存或直接内存,因此通过引用计数管理资源生命周期。 ByteBuf buffer = Unpooled.buffer(); buffer.writeBytes("2026-11-01|7|0|0
Netty:EventLoop 线程隔离、业务线程池与背压控制2026-11-01技术Netty一、为什么 EventLoop 不能执行耗时任务? Netty 使用 Reactor 线程模型处理网络事件。一个 EventLoop 通常会负责多个 Channel,并在自己的线程中处理这些 Channel 的 IO 事件和 Pipeline 事件。 例如: EventLoop-1 ├── Ch2026-11-01|7|0|0
Java NIO:compact() 的正确理解与常见问题2026-11-01技术易混淆概念/java一、compact() 是什么? compact() 的作用是:保留 Buffer 中尚未读取的数据,将它们移动到缓冲区开头,并将 position 设置为剩余数据的长度,以便继续写入新数据。 它主要解决一个问题: 当 Buffer 中的数据没有处理完,又需要接收新数据时,如何保留之前未处理的数据?2026-11-01|7|0|0
Netty:LengthFieldBasedFrameDecoder 五个参数与 lengthAdjustment 计算原理2026-11-012026-11-01技术Netty/易混淆概念一、先理解长度字段的三个概念 使用 LengthFieldBasedFrameDecoder 时,最容易混淆的是:长度字段本身占多少字节,以及长度字段里面存储的数值是多少。 例如协议: [Magic 2字节][BodyLength 2字节][Body 10字节]2026-11-01|8|0|0
Netty:Channel 生命周期、连接管理与 ChannelGroup 使用2026-11-01技术Netty/易混淆概念一、Channel 生命周期与状态 Channel 从注册、连接到关闭,会经历一系列生命周期事件。正常建立连接后再关闭,典型顺序如下: channelRegistered() ↓ channelActive() ↓ channelRead() / channelRea2026-11-01|7|0|0