Liwen's Notes

记录编程学习过程中的思考与总结,不追求大而全,只记真正理解的东西。

127
篇笔记
12.8k
总字数
365+
连续天数

🕐 最近更新

2026-08-08 AI Python
最近在优化公司的 RAG pipeline,发现 chunk 策略对召回率影响巨大。用 Recall@10 做了对比实验,语义切分在技术文档场景下比固定长度提升了 23%,但在 FAQ 场景下反而不如固定长度。记录了完整的实验数据和结论。
# 语义切分核心逻辑 from langchain.text_splitter import RecursiveCharacterTextSplitter splitter = RecursiveCharacterTextSplitter( chunk_size=512, chunk_overlap=64, separators=["\n\n", "\n", "。", " "] ) chunks = splitter.split_documents(docs)
2026-08-03 Go
Go 1.23 引入了 range-over-func,1.24 进一步完善了迭代器生态。用实际项目中的分页查询场景测试了新写法,对比了 for-range + channel 和迭代器两种方案的性能差异。结论是迭代器在大多数场景下略优,但对 GC 压力的影响需要关注。
// 迭代器写法 - 比 channel 方式更清晰 func PaginateQuery[T any](db *sql.DB, pageSize int) func(func(T) bool) { return func(yield func(T) bool) { page := 0 for { rows := queryPage(db, page, pageSize) for _, item := range rows { if !yield(item) { return } } page++ } } }
2026-07-28 Linux MySQL
想在不开启 slow_query_log 的情况下监控 MySQL 慢查询,调研后发现 eBPF 是最轻量的方案。通过 trace MySQL 的 network read 函数,可以无侵入地捕获每条 SQL 的执行时间。部署脚本和 Grafana dashboard 配置都放在这篇笔记里了。

🏗️ 系统设计

查看全部 →
2026-07-22 Go Redis
对比了 Redis RedLock、etcd lease、ZooKeeper 三种方案在实际业务中的选型思路,附带压测数据。结论:单机 Redis 够用时别上 RedLock,etcd 在 K8s 环境下是最佳选择。
2026-06-15 分布式
读了 Raft 论文后用自己的话重新梳理了一遍 Leader Election 和 Log Replication 的流程,画了不少图。附带了一个 Go 实现的简化版 Raft,可以单步调试。
2026-05-08 架构
团队要选消息队列,调研了一周。更新了 RedPanda 的对比(C++ 实现的 Kafka 兼容方案),总结了存储模型、运维复杂度、生态几个维度的差异。
2026-04-12 Docker K8s
记录了团队从 Nginx 反向代理迁移到 Envoy 的完整过程,包括 xDS 配置、服务发现集成、灰度发布策略。踩了不少坑,尤其是连接池配置。

🧮 算法与数据结构

查看全部 →
2026-08-01 算法 Python
刷了 30 道滑动窗口后总结的模板,核心就是维护窗口边界和收缩条件。按难度和类型分了三类,附带每类的代表题目。
# 滑动窗口模板 def sliding_window(s): window = {} left = 0 result = 0 for right in range(len(s)): # 扩大窗口 c = s[right] window[c] = window.get(c, 0) + 1 # 收缩窗口(根据题意调整条件) while window_needs_shrink: d = s[left] window[d] -= 1 left += 1 result = max(result, right - left + 1) return result
2026-07-10 MySQL
结合 MySQL InnoDB 的实际实现,画了 B+ 树的插入、分裂、合并过程。重点讲了页分裂为什么会导致索引碎片,以及 OPTIMIZE TABLE 的原理。
2026-04-20 算法
0-1 背包、完全背包、多重背包的状态转移方程推导,以及空间优化技巧。画了一张表格对比三种背包的区别,面试前翻一翻很有用。
2026-03-15 Go 算法
从 container/list 开始,到手写双向链表 + HashMap 实现 LRU。对比了三种实现的 benchmark 数据,手写版本在高并发场景下性能提升约 40%。
// LRU Cache 核心结构 type LRUCache struct { capacity int cache map[int]*list.Element list *list.List } type entry struct { key int value any }

🤖 AI & 工程化

查看全部 →
2026-08-05 AI Python
Embedding 模型选型、chunk 切分策略、向量库检索效果对比,实际落地后发现的几个坑。最大的坑是中文文档用英文 Embedding 效果差很多。
2026-07-18 AI
跟着官方教程走了一遍,记录 Tool Calling、Memory、Chain 编排的核心概念。顺便吐槽了一下 LangChain 的文档更新速度跟不上 API 变化。
2026-06-25 AI Rust
在 M2 MacBook Pro 上测试了 GPTQ、AWQ、GGUF 三种量化方案。GGUF Q5_K_M 是性价比最高的选择,推理速度约 30 tokens/s,显存占用 6GB。
2026-05-20 AI
总结了在生产环境中验证过的 prompt 技巧:Few-shot 的数量选择、Chain-of-Thought 的触发方式、如何让模型输出结构化数据。每条都附带了实际效果对比。

🛠️ 日常工具

查看全部 →
2026-06-30 Vim
基于 LazyVim 的个人配置,主要加了 LSP、Treesitter、Telescope 的定制。附带了几个自定义 plugin 的配置,比如 Git blame inline 显示。
2026-05-15 Docker
整理了常用的 docker-compose.yml 模板:MySQL + Redis + Nginx + MinIO,直接复制就能用。每个服务都加了健康检查和日志配置。
2026-04-05 终端
分享了我日常开发的终端布局:左边代码、右边终端、上方 Git 状态。附带 tmux.conf 配置和常用快捷键速查表。