写了十年代码,再不输出点东西脑子要溢出了。这里没有正确的废话,只有踩过的坑、读过的源码、用过的工具——每一个结论背后都有一段不想回忆的 debug 经历。
-
技术笔记 — 框架、工具
- AI 编程工具链 — 27 篇
- jcode:Rust 写的终端 AI 编程助手 — 2026-07-20
- Claude Code — 4 篇
- Claude Code 最佳实践:从 vibe coding 到 agentic engineering — 2026-06-26
- 开发工具 — 26 篇
- Kafka 系列 — 2026-07-21(10 篇)
- autossh SSH 隧道:内网安全访问远程 PostgreSQL — 2026-07-21
- 终端文本处理九把刀:awk、sed、grep... — 2026-07-21
- Atuin:把 Shell 历史变成可搜索的数据库 — 2026-07-21
- superfile:Go 写的终端文件管理器 — 2026-07-21
- git-cliff:用 Git 提交历史自动生成 CHANGELOG — 2026-07-21
- Tailscale:WireGuard 的正确打开方式 — 2026-07-04
- watchexec:文件变了就自动跑命令 — 2026-07-03
- bacon:Rust 开发者最该开着不关的终端窗口 — 2026-07-03
- 容器化系列 — 5 篇
- Robot Framework — 1 篇
- 逆向工具链 — 6 篇
- AI Agent 系列 — 13 篇
- NewsNow — 1 篇
- 向量数据库系列 — 4 篇
- Neo4j — 1 篇
- HTTP 协议系列 — 9 篇
- RESTful API 设计 — 2026-06-22
- GraphQL — 2026-06-22
- gRPC — 2026-06-22
- AI 编程工具链 — 27 篇
-
编程语言 — 语法、特性
- Python
- Python exec 与 eval:危险的动态代码执行 — 2026-06-19
- Python 描述器:
obj.x背后究竟发生了什么 — 2026-06-16 - Python functools:标准库里最被低估的模块 — 2026-06-15
- Python 并发编程:threading、multiprocessing、asyncio 怎么选 — 2026-06-11
- Python 类型提示:从 Any 到 Protocol 的渐进类型之路 — 2026-06-04
- Python 面向对象系列 — 2026-06-04(5 篇)
- Python 闭包:函数为什么能“记住”外部变量 — 2026-05-31
- Python 装饰器:从函数到可调用对象的完整理解 — 2026-05-30
- Python 模块系统:每一个 import 背后发生了什么 — 2026-05-30
- Python 异步编程:从回调地狱到 async/await — 2026-05-30
- with 语句:上下文管理器的正确打开方式 — 2026-05-17
- yield 与生成器:惰性求值的艺术 — 2026-05-17
- Go
- Go Context:一根贯穿所有 goroutine 的线 — 2026-07-03
- Go 面向对象系列 — 2026-06-07(5 篇)
- Go Channel 系列 — 2026-06-04(4 篇)
- Go Goroutine 系列 — 2026-06-04(4 篇)
- Go 单元测试:标准库就够了 — 2026-05-30
- Java
- Java 单元测试:JUnit 5 不是唯一解 — 2026-05-30
- Node.js
- Node.js 模块系统:ESM 和 CommonJS 到底哪里不一样 — 2026-07-04
- Node.js 错误处理:别让一个未捕获的异常崩了你的服务 — 2026-07-03
- Node.js V8 内存管理:你的内存去哪了 — 2026-07-03
- Node.js Buffer:二进制数据处理 — 2026-06-15
- Node.js 进程与线程:cluster、worker_threads 与 child_process — 2026-06-11
- Node.js Stream:数据不是一次性搬完的 — 2026-06-08
- Node.js 事件循环:理解了它才算真会用 — 2026-05-30
- Node.js 最新版本实用特性盘点 — 2026-05-27
- React
- React 入门到精通教程 — 2026-06-10(5 篇)
- React 心智模型:声明式 UI 到底改变了什么 — 2026-06-10
- React Hooks 不完全设计史:闭包陷阱与依赖数组 — 2026-06-10
- React 渲染机制:Virtual DOM、Fiber 与批量更新 — 2026-06-10
- React 19:Server Components 是对 Web 架构的重新分层 — 2026-06-10
- React 19 新 API 全景:Actions 与状态管理新范式 — 2026-06-10
- Rust
- Rust async/await:异步编程不是多线程 — 2026-07-29
- Rust LazyLock:延迟初始化的标准答案 — 2026-06-29
- Unsafe Rust:编译器让开,我自己保证安全 — 2026-07-03
- Rust 闭包:FnOnce、FnMut、Fn 的区别 — 2026-06-15
- Rust 生命周期:'a 不是魔法,是编译器在检查指针有效期 — 2026-06-04
- Rust Box<dyn>:trait 对象与动态分发完全理解 — 2026-06-07
- Rust Arc:多线程共享所有权的正确姿势 — 2026-06-07
- Rust 模块系统:一个文件不是天然模块 — 2026-05-30
- Rust Trait 与泛型:多态不只是继承 — 2026-05-30
- Rust 单元测试:编译器帮你测 — 2026-05-27
- Rust 错误处理:Result、Option 和 ? 运算符 — 2026-05-27
- Rust 所有权:三张图看懂最核心的概念 — 2026-05-24
- Solidity
- Solidity 系列 — 2026-06-15(7 篇)
- Python
-
项目复盘 — 项目回顾与总结
- 当你的 event loop 死了,回调也就死了:ib_insync 持久后台线程调试记 — 2026-07-24
-
架构设计 — 系统设计、技术方案
- 设计模式:Rust 视角 — 2026-07-21(12/23)
- Builder 模式:Rust 里最自然的构造方式 — 2026-06-16
- Observer 模式:channel 就是最好的观察者 — 2026-07-29
- State 模式:enum + match 天然就是状态机 — 2026-07-29
- 基金溢价数据设计 — 2026-05-24
- 设计模式:Rust 视角 — 2026-07-21(12/23)
-
阅读笔记 — 书、文章、视频的读后记录
-
源码阅读 — 开源项目的源码分析
- Kun 源码阅读系列 — 2026-07-21(10 篇)
- Impeccable 源码阅读系列 — 2026-07-21(3 篇)
- World Monitor 源码阅读系列 — 2026-07-21(3 篇)
- AI Hedge Fund 源码阅读系列 — 2026-07-20(3 篇)
- MetaGPT 源码阅读系列 — 2026-07-17(6 篇)
- Horizon 源码阅读系列 — 2026-07-03(5 篇)
- DBX 源码阅读系列 — 2026-07-03(7 篇)
- nanobot 源码阅读系列 — 2026-06-16(6 篇)
- TrendRadar 源码阅读系列 — 2026-06-11(6 篇)
- QuantDinger 源码阅读系列 — 2026-05-30(7 篇)
- Sequoia-X 源码阅读系列 — 2026-05-17(5 篇)
-
随想 — 非技术类的日常思考
- 跨服务约定:一套我自己维护的工程纪律 — 2026-06-10
-
运动打卡 — 每天动一下,不让身体生锈
./scripts/setup.sh 个人当前使用环境,一键安装。