Go 并发利器:singleflight 如何防止缓存击穿

在高并发系统里,缓存一旦失效,热点请求会同时打到数据库,典型后果就是缓存击穿。本文围绕 Go 的 singleflight 展开,说明它如何用“同 key 请求合并”减少重复查询,并结合示例、方法说明与使用边界,帮助你判断它适不适合放进现有缓存链路。

Go 并发利器:singleflight 如何防止缓存击穿

Go 语言中结构体和结构体指针调用有什么区别?

Go 里“结构体值”和“结构体指针”最容易混淆的,不是能不能调用方法,而是调用后到底改没改原对象、方法集是否一致、性能成本落在哪。本文用值接收器与指针接收器的实际例子拆开讲,并给出日常开发中更稳妥的选择规则。

Go 语言中结构体和结构体指针调用有什么区别?

Go 的 build tag 与条件编译:跨平台代码隔离的最佳实践

在 Go 里做跨平台系统编程,靠 `runtime.GOOS` 写运行期分支并不能解决编译期符号冲突。本文以文件锁封装为例,梳理 build tag、文件命名规则、Unix 与 Windows 差异,以及实现时最容易踩到的类型和语义问题。 跨平台 Go 代码一旦碰到系统调用,真正难点往往不是运行时分支,而是怎样避免编译期就被平台符号拖垮。

Go 的 build tag 与条件编译:跨平台代码隔离的最佳实践

Golang 在 CentOS 上如何搭建调试环境

这篇文章把 CentOS 上搭建 Go 调试环境的流程压缩成一条清晰路径:先装好 Go,再安装 Delve,接着编译可调试二进制,最后分别说明本地调试、VS Code 接入和远程调试。文中也补充了 Delve 安装失败、无法单步进函数、IDE 找不到工具等常见问题的处理办法。

Golang 在 CentOS 上如何搭建调试环境

Go Modules 时代,GOPATH 还有哪些不可替代的作用?

Go Modules 已经取代 GOPATH 成为 Go 项目的默认依赖管理方式,但这并不意味着 GOPATH 失去意义。本文从工作区历史、Modules 带来的变化、GOPATH 在工具安装与模块缓存中的现职,以及多 GOPATH 与环境配置建议几个角度,梳理它在现代 Go 开发中仍然保留的实际价值。

Go Modules 时代,GOPATH 还有哪些不可替代的作用?