2团日志

Netty中LoggingHandler输出日志展示

1. 前言 Netty中提供了LoggingHandler,便于开发者快速定位网络事件。此处简单记录下一次PING-PONG的日志输出。 2. 服务端/客户端实现 2.1 服务端 public class TestServer { public static void main(Strin

2团 2团 Published on 2025-04-09

Netty中NioEventLoop#run()中wakeUp竟态问题解析

1. 前言 最近在看NioEventLoop#run()实现时,对如下注释产生了兴趣。 switch (selectStrategy.calculateStrategy(selectNowSupplier, hasTasks())) {

2团 2团 Published on 2025-04-08

Netty中SingleThreadEventLoop执行wakeUp的优化

看io.netty.util.concurrent.SingleThreadEventExecutor 代码时,发现执行execute() 方法时,会使用addTaskWakesUp标志判断是否需要唤醒线程。具体代码如下所示: @Override public void execut

2团 2团 Published on 2025-04-07

Netty执行Flush操作的写入优化

1. 前言 在近期研读芋道源码对Netty代码的解析过程中,其中提及Netty在执行写入操作时进行了优化处理。通常情况下,SocketChannel能够直接完成数据写入,但如果写入的数据量过大(如写入大文本文件)或者客户端读取能力较弱,就容易导致写入缓冲区溢出,进而造成数据丢失。 2. 优化方案 2

2团 2团 Published on 2025-04-03

HTTP的keepalive与TCP的keepalive区别

1. 前言 最近在浏览知乎的时候发现了这个问题,觉得很有趣,在此处记录一下。 借用小林coding的回答: HTTP 的 Keep-Alive,是由应用层(用户态) 实现的,称为 HTTP 长连接; TCP 的 Keepalive,是由 TCP 层(内核态) 实现的,称为 TCP 保活机制。 2.

2团 2团 Published on 2024-08-15