2026-04-14 | algorithms | #skip-list #concurrent #lock-free #java #sorted-map
Java 的 `java.util.concurrent` 提供了 ConcurrentHashMap,却没有 ConcurrentTreeMap——取而代之的是一个基于跳表的 ConcurrentSkipListMap。为什么 Doug Lea 选择了跳表而不是红黑树?因为平衡树的旋转操作会同时修改多个节点的指针,在并发场景下几乎不可能做到无锁;而跳表天然的分层链表结构使得每次修改只涉及局部指针,为 CAS 操作提供了完美的施展空间。
2026-04-16 | algorithms | #concurrent-hashmap #lock-free #java #striped-lock #cliff-click
Java ConcurrentHashMap 从 16 段分段锁演进到 CAS+TreeBin,再到 Cliff Click 的全无锁方案——并发哈希表的二十年进化史,是一部在吞吐量与正确性之间反复拉扯的工程史诗。
2025-11-30 | garbage-collection | #comparison #java #go #python #rust
多维度对比主流编程语言的内存管理策略,分析吞吐量、延迟与开发效率的权衡。
2025-11-30 | garbage-collection | #java #jvm #gc #g1 #zgc
深入解析 Java 虚拟机 (JVM) 的垃圾回收算法,包括分代收集理论、CMS、G1 以及新一代的 ZGC 和 Shenandoah。