静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言
在 Go 服务里用 context.WithCancel 控制子 goroutine 生命周期时,如果只创建了 ctx 却忘了调用 cancel,父 gorou...
上线一个批量查询用户积分并调用第三方接口的场景时,给每个请求都套了 context.WithTimeout,接口响应确实在超时后返回了 context dead...
写 Go 服务时经常需要把任务分发给一组 worker 并发处理。典型的做法是用一个带缓冲 channel 收集任务,再起若干 goroutine 消费,等所有...
线上一个用 Go 写的定时任务服务运行几天后内存缓慢上涨,goroutine 数量从启动时的几十个涨到上万,pprof 显示大量 time.Ticker 相关的...
线上一个 Go 编写的网关服务在流量高峰期频繁出现 dial tcp: lookup xxx: no such host 和 context deadline ...
线上一个用 Go 写的定时任务服务跑了两天之后 RSS 从 40MB 涨到了 300MB 多,pprof 的 heap 里能看到大量 runtime.timer...
在一个用 Go 写的 TCP 网关服务里,需要把客户端发送的每一行命令打印到日志。最开始直接用 bufio.Scanner 读连接,测试环境正常,线上却偶尔少几...
线上服务运行几天后内存缓慢上涨,goroutine 数量只增不减,最后 OOM。用 pprof 抓取 heap 和 goroutine 快照,发现大量 goro...
线上一个基于 Gin 的 API 服务在滚动重启时偶尔会出现旧进程不退出的情况,systemd 要等到超时才发 SIGKILL。查看日志发现进程收到了 SIGT...
在 Go 后端服务里用 context.WithTimeout 控制下游调用超时很常见,但最近遇到一个线上接口偶尔卡住十几秒才返回的情况。排查后发现,问题不是超...
在 Go 服务里用 time.Ticker 做定时任务很常见,比如定期刷新缓存、上报指标或清理过期数据。但 Ticker 内部持有一个 goroutine 和 ...
在高并发服务里频繁创建和销毁临时对象会明显增加 GC 压力,尤其是处理 HTTP 请求、序列化数据、拼接 buffer 这类场景。很多 Go 开发者知道 syn...
Microsoft | Senior Software Engineer (已认证)
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来...
在唯览空间的文件安全分享场景中,访客可以针对受限文件发起访问申请,分享者审批通过后,访客获得相应的查看资格。
在开发唯览空间的文件安全分享功能时,我们遇到过一个值得深入讨论的权限设计问题:访客申请查看一份 PDF,文件拥有者审批通过后,是否应该允许访客一直使用这次审批结...