冬天来了,万物凋零。又到了坏人们泛滥的季节,城市的乌烟瘴气中蕴含着难以形容的善意与陷阱。对于游泳爱好者而言,冬天的去处是一个值得研究的课题。很多普通健身房的泳池因为维护成本与客流不成比例,纷纷选择关闭;剩下那些苦苦支撑的,往往基础设施糟糕——从更衣室出来到下水的那段路,足以让你冻得发抖。于是,目光自然转向了酒店泳池。设施完备、水温恒定、体验极佳。唯一的缺点是:贵。这里存在一个有趣的年卡悖论:高端酒店泳池年卡价格动辄近五位数,按 8,000 元计算。若每周去一次,一年约 52
社会工程学之身份欺诈
2024-12-31•约 1.5 千字
换行符 CRLF 的历史与演变
我们每天都在使用文本文件。它的换行看似简单,背后却隐藏着一段跨越百年的通信和计算机历史。从早期的电报机到现代的网络协议,一个看似微不足道的字符组合 CRLF(回车和换行)是如何塑造我们数字世界的?本文将深入探讨换行符的起源、不同操作系统的选择,以及为什么一个简单的文本文件在不同系统间打开会变乱。字符基础:ASCII 与换行符的身份要理解换行,首先要从 ASCII(美国标准信息交换码)字符集说起。ASCII 是基于拉丁字母的编码标准,最初为电报码设计,共定义了 128 个字符。
2024-12-11•约 1.9 千字
HTTP/3 与 QUIC:换掉 TCP 之后,网络真的更快了吗?
HTTP/3 最容易被说成一句话:「HTTP 改用 UDP,所以更快。」这句话不能说完全错,毕竟 HTTP/3 的确运行在基于 UDP 的 QUIC 之上;可它省略的部分,恰好比留下来的更多。UDP 没有可靠传输、拥塞控制、连接状态和加密。倘若只把 TCP 删掉,再把 HTTP 报文扔进 UDP 数据报,得到的不会是下一代 Web,而是一台更快丢数据的机器。真正承担工作的,是 QUIC。它在用户空间重新提供可靠传输、流量控制、拥塞控制、丢包恢复和连接管理,把 TLS 1.3
2024-05-01•约 5.4 千字
Go 的 Goroutine 与协程
很多文章把协程解释成「比线程轻的东西」,把 async/await 解释成「暂停一下再继续」,再把 go func() 解释成「启动一个异步任务」。这些说法不能算错,但它们没有回答最关键的问题:到底保存了什么上下文,谁负责保存,谁决定什么时候恢复?如果不回答这个问题,进程、线程、协程、goroutine、异步函数就会变成一串互相替换的术语。更麻烦的是,go func() 和 await 看起来都像是在控制执行权,却其实做着完全不同的事情。本文的主线只有一句话:go func(
2024-02-04•约 5.5 千字






