Alice 想通过互联网给 Bob 付一笔钱,但两个人都不想经过银行——不希望任何一家机构拥有冻结账户、修改记录或者随意增发货币的权力。于是他们拉上了爱抬杠的 Carol 和懂点密码学的 Dave,四个人打算自己设计一种没有中央管理者的数字现金。
如果你写过后端,可以把他们要造的东西想成一个没有主库、没有 DBA、没有管理员的分布式数据库——而且还要在部分节点随时可能作恶的前提下,让所有副本对“谁有多少钱”达成一致。这篇文章沿着四个人踩坑的顺序,把比特币重新“发明”一遍:每引入一种机制,都先看它解决了前面哪个麻烦,又暴露了什么更深的问题。
汉诺塔是算法课上最经典的递归问题:三根柱子、若干个大小不同的圆盘,圆盘最初从小到大叠在一根柱子上,每次只能移动一个,任何时候都不能把大盘压在小盘上,目标是把整摞盘完整搬到另一根柱子。
大多数人第一次接触汉诺塔,很快就能理解它的分治解法:先挪走上面的小盘,再移最大的盘,最后把小盘叠回去。但能解决问题只说明算法正确,不能说明它最优——理论上完全可能存在某种更巧妙的方案,用更少的步数完成。
要证明分治算法最优,得同时回答两个问题:分治算法到底需要移动多少次(上界),以及任何合法方案最少必须移动多少次(下界)。两个数恰好相等时,最优性才真正成立。
配置服务器免密登录、给 GitHub 添加 SSH 公钥、给 Git 提交配置签名时,都会遇到这条命令:
ssh-keygen -t ed25519
ed25519 到底代表什么?它和 SSH 的数据加密是什么关系?公钥与私钥是怎样生成和验证的?弄清这些问题,才算真正理解了 SSH 公钥认证的工作方式,而不只是停留在复制命令、上传公钥的层面。
刚接触 Linux 的人,多半会觉得 ls、cp、mv、rm、cat、chmod、date 这些命令天然就属于 Linux——装好系统,终端里就该有它们,而且在所有 Linux 上的行为都应该一样。
这种理解很自然,因为平时接触最多的 Ubuntu、Debian、Fedora、RHEL、Arch 确实提供了非常相似的命令行环境。但如果去看看 Alpine Linux、OpenWrt、Android、路由器固件或者容器基础镜像,就会发现同样叫 ls、date、stat 的命令,支持的参数可能不一样,甚至背后的程序都完全不同。
要理解这种差异,得先弄清一个经常被忽略的问题:我们平时说的“Linux”,到底包含哪些东西。
软件开发里有一个看起来挺矛盾的做法:UUID 在数学上并不能保证永不重复,但大量系统照样拿它当数据库主键、请求标识、文件标识、消息编号甚至订单记录的唯一 ID。
既然重复的可能性确实存在,按墨菲定律的说法——只要一件事有可能出错,它迟早会出错——工程师凭什么还敢这么用?
这个问题背后藏着软件工程里一个很重要的思想:工程系统追求的从来不是绝对安全,而是在成本、复杂度和收益之间,把风险压到可以接受的程度。
最近“蒸馏”这个词出现的频率高得有点离谱。把大模型蒸馏成小模型,把某项能力蒸馏成一个 Skill,甚至把某位专家蒸馏成一个智能体——听起来就像只要把一个人多年的经验倒进某种技术装置,就能像化学实验一样,收获一瓶高度浓缩的“智慧精华”。
一个技术词汇一旦进了大众传播和产品营销的语境,含义就会不断膨胀,最后变成一个什么都能往里装的口袋。要判断这些说法靠不靠谱,得先回到“蒸馏”在机器学习里的本义。
很多人第一次接触远程开发,都会遇到一个烦人的问题:代码在本地写着舒服,但服务偏偏要跑在远程服务器或 Docker 容器里。最朴素的做法是每次改完 rsync 一下,刚开始能忍,几天下来就受不了——不是忘了同步,就是远程环境里跑着的代码和编辑器里的对不上。
Mutagen 解决的就是这个问题。它不是 Git,也不是备份工具,而是面向开发场景的实时文件同步 + 网络端口转发工具。你继续用本地的编辑器和终端,Mutagen 在后台把文件变化实时推到远程。
我们这次不讲大神,不讲传奇。只讲两个很普通的人:一个在公司写代码,一个在家庭和工作之间奔忙。AGI 真的到来时,最先被改变的也许不是他们的职位,而是他们每天承受的混乱、疲惫,以及那种“我还被需要吗”的隐秘不安。
你可能见过这样的情况:同一个软件,在美国一个月要十几二十美元,但切到尼日利亚、印度、土耳其、阿根廷等地区,价格一下子低了很多。
很多人的第一反应是:这是平台定价漏洞吗?
其实不是。
这背后是一套非常成熟的商业策略,叫做:区域定价。
简单说就是:同一个产品,在不同国家卖不同价格。美国用户按美国价格买,尼日利亚用户按尼日利亚价格买,印度用户按印度价格买。
这不是平台糊涂,而是平台太清楚了:如果全球都按美国价格收费,很多国家的用户根本不会买。
某天 git push 的时候,突然看到这样一条警告:
** WARNING: connection is not using a post-quantum key exchange algorithm.
** This session may be vulnerable to "store now, decrypt later" attacks.
** The server may need to be upgraded. See https://openssh.com/pq.html
第一次看到这条警告时,我猜大多数人的反应都是:这是什么?要紧吗?要处理吗?
如果你顺着这条警告往下挖,会发现它是密码学界几十年演进、几次重大科学突破,以及一场正在进行的全球基础设施迁移在你屏幕上留下的一小块涟漪。这篇文章把整个故事串起来讲清楚。
从宗教的定义到道德的根基,从邪教与异端到科学与信仰的张力——我们试图理解人类最古老的精神现象
人类是唯一会问"为什么存在"的物种。面对死亡、苦难、宇宙的浩瀚与自身的渺小,我们建构了神话、哲学与宗教——试图为这些无法回避的问题找到答案。本文是一次系统性的梳理,试图厘清宗教究竟是什么,它与神话、科学、哲学、伦理之间的关系是什么,以及它在人类文明中扮演了怎样的角色。
在日常开发中,许多开发者可能会遇到以下问题:
通过本文介绍的方法,可以有效解决这些问题: