风起于青萍之末(上):感知机如何学会画一条线

Posted on 二 14 7月 2026 in Tech • Tagged with AI, perceptron, machine-learning, activation-function, linear-classifier

今天的 LLM 动辄数十亿参数,其思想源头之一却是十几行代码就能实现的感知机。本文用垃圾邮件打分、门卫和画线的类比,讲清输入、权重、偏置、激活函数、学习规则与收敛边界,并给出一个可运行的 NumPy 最简实现。


Continue reading

详解 AEAD 与 AES-GCM:不只加密,还要防篡改

Posted on 一 13 7月 2026 in Tech • Tagged with security, cryptography, aead, aes-gcm

加密只能隐藏内容,不能证明数据与业务上下文没有被调包。本文用加密信封的类比讲清 AEAD、AAD、nonce、CTR 与 GHASH,并给出可运行的 Python 示例和上线检查清单。


Continue reading

服务治理是工程问题,不是纪律问题

Posted on 五 10 7月 2026 in Tech • Tagged with journal, SRE, reliability, service-governance

2017 年 AWS 一个工程师敲错一条命令,让小半个互联网黑屏四小时;Knight Capital 一次没同步好的部署,45 分钟烧掉 4.4 亿美元。服务治理的本质是工程问题:能自动化的规则、约束、检查、测试,就别指望人半夜手动去跑。清单革命固然好,但清单要人看、人执行,而人从来不是百分百可靠的。这篇聊聊业界的标准、最佳实践、成功案例和典型事故。


Continue reading

struct 到底实现了哪些接口?让 Go 的隐式接口更友好一点

Posted on 五 10 7月 2026 in Tech • Tagged with Go, interface, gopls, golangci-lint, uml, plantuml, mermaid, best-practice, backend

Go 的隐式接口(duck typing)写起来很爽,但代价是"看不见"——一个 struct 到底实现了哪些接口,光看代码根本一眼看不出来。这篇不改语言、不等官方,从编译期断言、gopls 双向跳转、golangci-lint、go generate 到自己写工具生成 UML 类图(附开源项目 gouml),一层层把可发现性补回来,附可跑的例子和一份可落地清单。


Continue reading

Channel 还是锁?聊聊 Go 里那些好用的并发模式

Posted on 二 07 7月 2026 in Tech • Tagged with Go, concurrency, channel, mutex, goroutine, pattern, backend

做后端的,跟高并发、大流量打交道是家常便饭。分而治之是基本思想,多进程、多线程、多路复用、异步是基本手段。到了 Go 这里,最常被问的一个问题是:面对资源竞争,到底该用 Channel 还是互斥锁?这篇给一个能记住的判断口诀,再把 Go 里几种真正好用的并发模式一个个拆开讲——附可跑的代码和一张选型清单。


Continue reading

脑裂:脑子裂成两半,谁也不认谁

Posted on 一 06 7月 2026 in Tech • Tagged with distributed systems, split-brain, network partition, consensus, quorum, raft, high availability

分区(partition)是网络把集群切成了几块,谁也看不见谁;脑裂(split-brain)是切开之后,每一块都以为"就剩我了,我来当家"。于是两个主节点同时写数据,等网络恢复,数据对不上,谁都不认谁。这篇讲清楚脑裂的根因(网络分区 + 各自选主),以及业界公认的解法:多数派仲裁(quorum)、fencing、见证节点,配一份可抄的排查与设计清单。


Continue reading

一个字符串引发的血案:从 C 到 Go 的 rune,字符串是怎么一步步进化的

Posted on 一 06 7月 2026 in Tech • Tagged with string, unicode, c, cpp, java, python, go, rune, encoding

字符串看着最简单,坑却最深。从 C 的一根 char 指针,到 C++ 的 std::string,到 Java/Python 的对象化,再到 Go 的 rune,这一路演进本质上就在解决三个问题:谁管内存、长度怎么算、一个"字"到底是什么。这篇按时间线把它们串起来,讲清楚每一步为什么这么设计、又留下了什么坑。


Continue reading

限流这件事,从来不是"每秒放几个"这么简单

Posted on 一 06 7月 2026 in Tech • Tagged with microservices, rate limiting, backend, stability, architecture

很多人以为限流就是"每秒放 100 个请求",配个数字完事。真上了规模才发现,限流是分层的、分策略的、还得跟业务谈判的。这篇把限流拆成"在哪一层限、按什么维度限、用什么算法、放行还是拒绝、拒了怎么告诉客户端"几件事,配上可抄的配置和一张决策清单。


Continue reading

Streamlit 深入浅出:用写脚本的方式做数据应用

Posted on 日 05 7月 2026 in Tech • Tagged with journal, python, streamlit, data-app

Streamlit 让你用写 Python 脚本的方式,几十行就做出一个能交互的数据应用——不碰 HTML/CSS/JS,不起前端工程。这篇讲清楚它背后"脚本从上到下重跑一遍"的设计理念,常用控件与状态管理,一个能跑的完整实例,以及我踩过坑之后总结的最佳实践。


Continue reading

给你的服务养一个"数字替身":AI 时代为什么要写 Sample App

Posted on 日 05 7月 2026 in Tech • Tagged with journal, testing, architecture, WebRTC

做后端和 SDK 这些年,我越来越依赖一个东西:给每个服务配一个能把主流程完整跑一遍的 Sample App——Web Service 就配个 Test Web App,音视频应用就配个 Native App。它既是 E2E 测试工具,又是一个"永远在线的模拟用户",还是最诚实的一份活文档。AI 能帮你把它写得飞快,但要不要养、往哪个方向养,得你自己拿主意。


Continue reading

Headroom 和 Ponytail:给 AI 编程的 Token 账单拧上两个阀门

Posted on 五 03 7月 2026 in Tech • Tagged with ai, token, cost, headroom, ponytail, agents, context, productivity

用 AI 写代码,token 烧钱的地方无非三处:模型读进去多少、写出多少代码、回话多啰嗦。Headroom 管"读进去",靠压缩上下文;Ponytail 管"写出来",靠逼着 agent 少写代码。这篇讲清楚这两个开源工具各自怎么做、在你的项目里怎么装怎么用,也把厂商不爱说的坑一并摊开:真实场景省的往往没广告那么多。


Continue reading

什么样的技术书籍才值得一读再读

Posted on 四 02 7月 2026 in Tech • Tagged with books, reading, engineering, career, learning note

框架每年换一茬,但有些技术书十年后翻开还是有用。这篇聊聊我书架上被翻烂、后来又买了第二本的那几本经久耐看的技术书——《数据密集型应用系统设计》《性能之巅》《UNIX 编程艺术》之类——以及为什么它们比追新更值得花时间。


Continue reading

超级个体真有那么神吗

Posted on 二 30 6月 2026 in Tech • Tagged with AI, super-individual, polymath, full-stack, learning, engineering, career

AI 能让一个人像一支小队,但不能让一个人逃掉工程责任。真正的超级个体,不是炫耀百家招式,而是持续交付有价值的产品,满足用户需求,创造真实价值。


Continue reading

生锈的知识,还能不能重新上场?

Posted on 二 30 6月 2026 in Tech • Tagged with AI, C++, audio-video, learning, knowledge-management, engineering

长久不用的知识会不会生锈?会。但真正危险的不是忘了细节,而是把生锈的手感误认为仍在巅峰。以大型 C++ 和 Audio/Video 项目为例,聊聊怎样让知识重新招之即来、来之能战。


Continue reading

人脸识别入门其实不玄:从一张脸到一个名字

Posted on 六 27 6月 2026 in Tech • Tagged with python, opencv, mediapipe, face-recognition, lbph, computer-vision, demo

人脸识别听起来像玄学,其实入门链路可以拆成检测人脸、裁剪样本、训练模型、设定阈值这几步。本文基于一个 OpenCV + MediaPipe 的教学 demo,讲清楚 Haar、Face Mesh、LBPH 各自负责什么,如何用 Poetry 跑通采集、训练和识别链路,以及为什么教学级 demo 不能直接拿去当门禁或支付系统。


Continue reading

为什么需要 KMS 和信封加密

Posted on 六 27 6月 2026 in Tech • Tagged with security, cryptography, kms, envelope-encryption

从数据库泄露、密钥轮换和故障边界说起,解释为什么需要 KMS,以及信封加密如何把密钥管理这件事做得更稳。


Continue reading

Markpad:我给 Markdown 装了一个本地驾驶舱

Posted on 六 27 6月 2026 in Tech • Tagged with markpad, markdown, editor, preview, llm, translation, sharing, local-first, python, fastapi

Markdown 写起来很舒服,但读起来、预览起来、跨中英文翻译起来并不总是舒服。Markpad 是我做的一个本地 Markdown Web 工具,把文件索引、左右分栏编辑预览、主题、图表渲染、实时分享和 LLM 翻译放在一起,解决自己每天写文档时的一个小但扎人的痛点。


Continue reading

AI 时代高级程序员的门槛在哪里?以 WebRTC 为例

Posted on 五 26 6月 2026 in Tech • Tagged with AI, WebRTC, RTC, audio-video, QoS, engineering, career

AI 会写 WebRTC demo,也能解释 SDP、ICE、RTP、RTCP,但 RTC 应用真正难的是把音频、视频、网络、QoS 和用户感知串起来。高级程序员的门槛不在“懂得多”,而在对原理的深刻领悟、对失败模式的判断、以及从事故和教训里长出来的工程直觉。


Continue reading

IT 中间件三岔路:买、用开源,还是自研

Posted on 五 26 6月 2026 in Tech • Tagged with middleware, platform-engineering, build-vs-buy, architecture, engineering-management

最近又被几个内部自研平台教育了一回:东西能跑,但难学、难问、难接手,很多“为什么”只存在某些人的脑子里。本文借这个亲身体会,聊聊企业中间件到底该买、用开源,还是自研;也给一份少踩坑的决策清单。


Continue reading

用 Codex 怎么省 Token:账单别让上下文偷偷烧掉

Posted on 二 23 6月 2026 in Tech • Tagged with codex, ai, token, cost, context, productivity, agents-md

用 Codex 写代码,token 烧得最快的往往不是模型多能干,而是上下文管理不当。这篇文章从 Codex 的 agent loop、项目指令和 prompt 缓存机制讲起,给出一份能直接照做、也能度量效果的省 token 清单:什么时候开新会话、AGENTS.md 怎么瘦身、怎么选模型和推理档位、怎么监控自己的消耗。


Continue reading