程序员知识库
用 Obsidian 搭建程序员专属的知识管理系统——不只是笔记,更是你的技术第二大脑。
知识库结构
text
dev-kb/
├── til/ # Today I Learned (每日学到的技巧)
├── snippets/ # 代码片段
├── cheatsheets/ # 速查表(自建)
├── architecture/ # 技术方案与架构决策
├── troubleshooting/ # 问题排查记录
├── books/ # 读书笔记(技术书)
├── projects/ # 项目相关笔记
├── interviews/ # 面试准备
├── daily/ # 工作日志
└── templates/ # 模板代码片段管理
使用 ```代码块 + Front Matter 管理可复用的代码片段:
markdown
---
type: snippet
language: typescript
tags: [React, Hook, 代码片段]
source: "React 官方文档"
created: {{date}}
---
# useDebounce — 防抖 Hook
```ts
import { useState, useEffect } from 'react';
export function useDebounce<T>(value: T, delay: number): T {
const [debouncedValue, setDebouncedValue] = useState(value);
useEffect(() => {
const timer = setTimeout(() => setDebouncedValue(value), delay);
return () => clearTimeout(timer);
}, [value, delay]);
return debouncedValue;
}使用场景
搜索输入防抖,避免频繁请求。
### 按语言/标签检索
```dataview
TABLE language as "语言", tags as "标签"
FROM "snippets/"
WHERE type = "snippet"
SORT language ASCTIL 工作流
每天记录一个小知识点——坚持 3 个月效果惊人。
TIL 模板
markdown
---
type: til
date: {{date}}
tags: [TIL, 前端]
source: ""
---
# {{title}}
## 一句话总结
> 一句话说清楚这个知识点
## 详细说明
## 代码示例 / 实战演示
## 参考资料TIL 仪表板
dataview
TABLE tags as "标签"
FROM "til/"
WHERE type = "til"
SORT date DESC
LIMIT 7技术方案记录
ADR(架构决策记录)
markdown
---
type: adr
id: ADR-001
project: "用户系统重构"
status: accepted
date: {{date}}
tags: [架构, 后端]
---
# ADR-001: 选用 PostgreSQL 替代 MySQL
## 背景
当前系统使用 MySQL 5.7,遇到以下问题:
1. JSON 查询性能差
2. 全文搜索支持不足
3. 扩展性受限
## 方案
| 方案 | 优点 | 缺点 |
|------|------|------|
| PostgreSQL | JSONB、全文搜索、扩展丰富 | 团队需学习 |
| MySQL 8.0 | 团队熟悉、迁移成本低 | JSON 仍不如 PG |
| MongoDB | 文档模型灵活 | 事务支持弱 |
## 决策
选择 PostgreSQL。
## 后果
- 需要编写数据迁移脚本
- 团队培训 PostgreSQL 特性
- 预计迁移工期 2 周
## 参考
- [[MySQL 性能优化记录]]问题排查记录
排查模板
markdown
---
type: troubleshooting
date: {{date}}
severity: P2
system: "订单服务"
solved: true
tags: [排查, 后端]
---
# {{title}}
## 现象
> 用户下单后订单状态不更新
## 影响范围
- 影响用户:约 50 人
- 持续时间:30 分钟
## 排查过程
1. 检查订单服务日志 → 发现大量超时
2. 检查数据库连接池 → 连接数耗尽
3. 检查上游调用 → 支付回调接口慢查询
## 根因
支付回调接口的 SQL 未走索引,全表扫描导致连接池耗尽。
## 解决方案
1. 紧急:增加 `idx_payment_order_id` 索引
2. 长期:增加慢查询监控告警
## 预防措施
- [ ] 上线前检查 SQL 执行计划
- [ ] 连接池监控接入 Prometheus排查知识库索引
dataview
TABLE severity as "严重级别", system as "系统", solved as "已解决"
FROM "troubleshooting/"
WHERE type = "troubleshooting"
SORT date DESC技术书阅读笔记
与普通读书笔记不同,技术书笔记强调可操作性:
markdown
---
type: book
title: "《 Designing Data-Intensive Applications 》"
author: Martin Kleppmann
tags: [分布式, 数据库, 系统设计]
status: reading
rating: 5
---
# Designing Data-Intensive Applications
## 核心概念
每章 3 个核心概念 + 1 个行动项:
### Ch1: 可靠性、可扩展性、可维护性
- **可靠性**:容忍硬件/软件/人为错误
- **可扩展性**:描述负载 → 定义性能指标
- **可维护性**:可运维、简单、可演化
**行动项**:梳理当前系统的故障模式清单
## 实际应用
这本书的知识如何应用到我的项目中:
- 第 5 章 复制策略 → 优化订单服务的读写分离
- 第 7 章 事务 → 重构支付流程的事务边界工作日志
日报模板
markdown
---
type: daily-report
date: {{date}}
project: ""
---
# {{date}}
## 今日完成
- [x]
- [x]
## 遇到的问题
## 明日计划
- [ ]
## 学到的新东西
-周报自动汇总
dataview
TABLE
file.tasks.text as "本周完成"
FROM "daily/"
WHERE type = "daily-report"
AND date >= date(today) - dur(7 days)
AND contains(file.tasks.checked, true)快速输入利器
QuickAdd 配置
配置一键创建各类笔记:
yaml
QuickAdd 宏:
⌘+T → 新建 TIL
⌘+S → 新建代码片段
⌘+D → 新建日报
⌘+B → 新建排查记录Shell 命令集成
绑定终端到 Obsidian:
bash
# 安装 Shell Commands 插件后
# 在终端执行 → 自动创建笔记
obsidian://new?vault=dev-kb&file=til/{{date}}-{{title}}面试准备
markdown
---
type: interview-prep
company: ""
position: ""
date: {{date}}
tags: [面试]
---
# {{company}} 面试准备
## 公司调研
## 岗位要求分析
## 常见问题准备
| 问题 | 我的回答要点 |
|------|-------------|
## 系统设计练习
## 算法练习
- [ ] LeetCode Hot 100
- [ ] 手写 Promise
- [ ] 实现 LRU Cache
## 反问清单
1.
2.
3.相关资源
- 程序员工作流 — 更多开发场景
- 代码助手 — AI 辅助代码笔记
- QuickAdd 插件指南 — 一键操作配置
- Templater 高级教程 — 智能模板