Go语言技术文章
-
Go文件同步工具应基于fsnotify跨平台监听,结合单向主从策略、原子写入、延迟删除及配置化CLI;需过滤临时文件、处理符号链接、大文件空间检查与优雅退出。351 收藏 -
Go不需要智能指针,因其基于GC自动管理内存,而defer+Close()可实现确定性资源释放;强行模拟会导致竞态、泄漏或提前释放。351 收藏 -
合理使用Go的channel需选择合适的类型,无缓冲用于同步,有缓冲提升异步性能;发送方应及时关闭channel避免泄漏;利用select实现非阻塞操作与超时控制;减少频繁创建channel和goroutine,采用workerpool复用资源;通过fan-in/fan-out优化负载均衡,提升并发效率。351 收藏 -
配置 http.Client 和 Transport 超时,避免下游慢响应占满资源。351 收藏 -
Go 服务调用不稳定依赖时,重试循环里反复使用 time.After 容易留下不可控的定时器分配,固定退避也会让请求集中重试。本文用可取消的 timer.Reset 写一个带上限、抖动和结果核对的重试器。351 收藏 -
Go 模块下载并不只是从代理拿一个 zip。本文从一次依赖校验异常出发,拆开 GOPROXY、go.sum、GOSUMDB、GOPRIVATE 的信任边界,给出公有依赖校验、私有模块配置和替换后复核的实战检查清单。351 收藏 -
跨模块错误管理需统一用%w包装、在边界添加上下文、解包后断言第三方错误、仅最外层记录日志,否则errors.Is/As失效、上下文丢失、判断失败、日志冗余。350 收藏 -
panic不会跨goroutine传播,每个可能panic的goroutine都需自行defer+recover并执行资源清理,否则将导致静默泄漏;recover后不可继续业务逻辑,仅用于记录、降级与清理。350 收藏 -
Golang · Go教程 | 2个月前 | singleflight · 并发编程 · Go教程 · 后端工程 · Golang实战 · 缓存治理 · golang Go 并发控制 缓存击穿 请求合并 后端工程 生产实践 singleflight
从热点 Key 缓存失效导致并发回源的线上场景出发,讲清 Go singleflight 的 Do、DoChan、shared、Forget、错误传播、超时边界和上线观测。350 收藏 -
Go标准库不支持ISO9660解析,须用github.com/knqyf263/go-isofs;需显式启用Joliet支持才能正确读取中文/长文件名;读取文件内容必须调用entry.Open()而非os.Open。349 收藏 -
不能直接用net/smtp封装通用发送函数,因不同邮件后端(如SendGrid、Postfix)认证方式、API路径、请求格式、错误结构互不兼容;net/smtp仅支持SMTP协议,对HTTP类API无效;强行统一会导致参数爆炸、类型难收敛、调用方需预知后端类型。349 收藏 -
新手写单机博客后端选gin更省事;练手HTTP本质或极简环境用net/http更透明;两者在I/O密集型场景性能差异可忽略。349 收藏 -
Go模糊测试必须用testing.F参数,因它封装语料加载、变异调度等能力;若误用testing.T则函数被静默忽略;f.Add()与f.Fuzz()类型须严格对齐,仅支持string、[]byte、基础数值及布尔型,不支持struct等复合类型。349 收藏 -
Golang · Go问答 | 1个月前 | pprof · trace · 性能排查 · Go问答 · 服务安全 · Go pprof 生产环境 trace 安全入口 net/http/pprof 性能排障
Go 服务不建议把 /debug/pprof/ 直接暴露到公网。pprof 和 trace 能帮助排障,也可能暴露运行时细节;更稳的做法是本机或内网采集、加鉴权、短时开启并留下操作记录。349 收藏 -
浏览器会在请求中带上 Sec-Fetch-Site 等 Fetch Metadata。用一层 Go 中间件先区分 same-origin、cross-site 和缺失请求头,再与 CSRF、Origin 校验配合,可以为敏感接口补上一道跨站访问边界。349 收藏