终端复用器如何欺骗进程:从伪终端到会话持久化的技术实现
1940年代,电传打字机(Teletype)作为远程通信设备被广泛使用。当计算机开始需要实时交互时,这些设备被重新利用——键盘输入直接变成计算机输入,打印纸成为输出介质。Unix系统诞生时,这种"终端即电传打字机"的假设被深深嵌入设计之中。 ...
1940年代,电传打字机(Teletype)作为远程通信设备被广泛使用。当计算机开始需要实时交互时,这些设备被重新利用——键盘输入直接变成计算机输入,打印纸成为输出介质。Unix系统诞生时,这种"终端即电传打字机"的假设被深深嵌入设计之中。 ...
1972年3月,Communications of the ACM发表了一篇题为《TENEX, a Paged Time Sharing System for the PDP-10》的论文。论文作者是BBN公司的Daniel G. Bobrow及其同事。在描述内存管理机制时,论文提到了一个当时并不显眼的设计:当一个进程需要访问另一个进程的数据时,系统不会立即复制内存页,而是让两个进程共享同一物理页,直到其中一个进程尝试修改它。 ...
title: “哈希碰撞攻击:为何一条HTTP请求能让服务器CPU飙升到100%” date: “2026-03-05T16:55:02+08:00” description: “深入解析哈希碰撞DoS攻击的技术原理:从2003年Crosby和Wallach的开创性论文到2011年横扫主流语言的安全危机,揭示确定性哈希函数如何将O(1)操作变成O(n²)灾难,以及SipHash如何成为现代语言的标准防线。” draft: false categories: [“安全漏洞”, “数据结构”, “Web安全”] tags: [“哈希碰撞”, “HashDoS”, “算法复杂度攻击”, “SipHash”, “哈希表”, “拒绝服务攻击”, “Web安全”] 2003年8月,莱斯大学的Scott Crosby和Dan Wallach在第12届USENIX安全会议上发表了一篇题为《Denial of Service via Algorithmic Complexity Attacks》的论文。他们在演讲中展示了如何用不到拨号调制解调器的带宽,让一台专用入侵检测系统服务器在六分钟内开始丢弃71%的流量。 ...
2001年,Linus Torvalds在Linux内核邮件列表中写下了这样一句话:“你要意识到,很少有东西能像调度器那样经受住时间的考验。这恰好证明了调度是简单的。” ...
title: “内存泄漏:为什么即使有垃圾回收,你的程序仍在悄悄泄漏内存” date: “2026-03-05T16:36:29+08:00” description: “从2012年AWS宕机事件到Chrome DevTools堆快照分析,深入剖析内存泄漏的本质——不是技术缺陷,而是资源管理的系统性失误。本文涵盖手动内存管理语言(C/C++)与垃圾回收语言(Java、Go、JavaScript)的不同泄漏模式,对比Valgrind与AddressSanitizer的检测策略,揭示RAII、智能指针、弱引用等防御机制的设计哲学。” draft: false categories: [“系统架构”, “编程语言”, “技术原理”] tags: [“内存泄漏”, “垃圾回收”, “内存管理”, “RAII”, “Valgrind”, “AddressSanitizer”, “智能指针”, “性能优化”] 2012年10月22日,Amazon Web Services遭遇了一次看似普通的故障。一台数据收集服务器被更换后,DNS地址没有正确传播,导致部分服务器持续尝试连接这台已下线的机器。这个持续的重试行为触发了内存泄漏。更致命的是,负责监控内存的内部警报系统同时失效——所有仪表盘显示绿色,而系统正在走向崩溃。 ...
2025年6月,Go团队在官方博客发表了一篇题为"[On | No] syntactic support for error handling"的文章,宣布了一个意味深长的决定:停止追求错误处理的语法级改进,关闭所有相关的开放提案。这不是一次普通的功能延期,而是Go语言诞生十六年来,在错误处理这个核心议题上的彻底认输。 ...
2006年的一天,Graydon Hoare回到公寓,发现电梯又坏了。他住在21楼。 爬楼梯的时候,这位Mozilla的程序员越想越气。“我们这些搞计算机的,连个电梯软件都写不好?“他后来回忆道,“这太荒谬了。” ...