select、poll、epoll 的区别

用伪代码解释 IO 多路复用三种机制的差别:select 的 1024 上限与无差别轮询、poll 的链表结构、epoll 的事件回调与 O(1) 复杂度。

select、poll、epoll 的区别

newFixedThreadPool 线程池导致线程泄漏

线上线程数每天稳定上涨直到报警。根因是每次调用都在 new 一个线程池,空闲线程永不释放。记录现象、jstack 分析与修复方式。

newFixedThreadPool 线程池导致线程泄漏

服务器 CPU 居高不下:一次 Dump 排查历程

集群扩容也压不下去的 CPU,问题不在优化而在定位。用 Dump + WinDbg 从 CLR 垃圾回收和大对象分配入手,最终找到字符串拼接引发的 GC 风暴。

服务器 CPU 居高不下:一次 Dump 排查历程

字符编码探密:ASCII、UTF-8、GBK 与 Unicode

从 ASCII 只能用 7 位表示字符讲起,串起汉字编码、GBK 的区位码设计、Unicode 的诞生与 UTF-8 变长编码的取舍。

字符编码探密:ASCII、UTF-8、GBK 与 Unicode