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 microservices, rate limiting, backend, stability, architecture

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


Continue reading

Python 动态语言里的安全带:Pydantic 用法与最佳实践

Posted on 五 05 6月 2026 in Tech • Tagged with python, pydantic, validation, backend, best-practices

Python 没有静态编译这道关口,很多错误会拖到运行时才露头。Pydantic 不是银弹,它和 mypy、pyright、ruff 这类静态检查工具也不是一回事。它真正擅长的是把 API、配置、消息、LLM 输出这些不可信数据变成有边界、有约束、可测试的对象。本文以 Pydantic v2 为主,总结常用写法、工程实践和容易踩的坑。


Continue reading