Go语言技术文章
-
Golang · Go问答 | 2个月前 | 并发 · map · RWMutex · sync.Map · Go问答 · 数据竞争 RWMutex sync.Map map并发读写 Go问答 concurrent map read and map write
Go 原生 map 不是并发安全容器,只要一个 goroutine 写 map,同时另一个 goroutine 读或写同一个 map,就可能触发 concurrent map read and map write。生产代码要按访问模式选择 RWMutex、单协程归口或 sync.Map。291 收藏 -
Golang · Go问答 | 2个月前 | 并发 · channel · range · Go问答 · 并发退出 Channel关闭 Go问答 close channel range退出 发送方关闭
Go channel 关闭后仍然可以把缓冲区里的值读完,再继续读取会得到元素类型的零值和 ok=false;但关闭后的 channel 不能再写入,也不能重复关闭。真正安全的关键是让发送方统一负责关闭,并让接收方用 range 或 ok 值退出。427 收藏 -
Go 的 sync.Once 适合做只读配置、规则表和重量级客户端的懒加载。它解决的不是语法问题,而是并发场景下只初始化一次、结果复用和失败边界怎么处理的问题。331 收藏 -
Golang · Go问答 | 2个月前 | goroutine · HTTP · Context · 超时控制 · Go问答 · WithTimeout Go问答 context取消 QueryContext HTTP请求取消 goroutine退出
Go HTTP 请求断开后,r.Context() 会收到取消信号,但服务端慢任务不会凭空停止。只有把 context 继续传给数据库、下游 HTTP 调用、消息消费和 goroutine,取消与超时才会真正变成资源释放动作。120 收藏 -
Go 里遇到批量校验、批量关闭资源、批量处理任务时,不必只返回第一个错误。errors.Join 可以把多个 error 合成一个 error,同时保留 errors.Is、errors.As 的匹配能力,并且对 nil 有明确兼容规则。352 收藏 -
Golang · Go问答 | 2个月前 | goroutine · pprof · Go问答 · 线上排查 · pprof goroutine泄漏 服务告警 Go问答 context取消 Go线上排查
Go 服务里 goroutine 数上涨不一定就是泄漏,关键要看是否持续不回落、相同栈是否反复堆积、请求结束后资源是否仍被占用。用 pprof 连续快照、堆栈对比和小流量验证,可以把判断和处理做得更稳。374 收藏 -
Golang · Go教程 | 2个月前 | Context · 超时控制 · Go教程 · Go context 请求超时 Transport http.Client Client.Timeout ResponseHeaderTimeout
Go HTTP 客户端超时不要只靠一个 context 或一个 Client.Timeout。更稳的做法是把总预算、连接、TLS 握手、响应头和读取阶段分开设置,再用错误判断和日志字段确认到底卡在哪一段。218 收藏 -
科技周边 · 业界新闻 | 2个月前 | 开发工具 · vs code · AI编程 · 业界新闻 · VS Code AI编程 Autopilot GitHub Copilot 模型选择 并行会话 成本可见
GitHub 7 月 8 日发布的 Copilot in VS Code 更新覆盖 v1.123 到 v1.127,重点不是单个按钮变化,而是把浏览器验证、并行会话、成本可见、模型选择和团队管控连成更完整的代理开发工作流。187 收藏 -
Linux 服务内存偶发上涨时,可以用 cgroup v2 配合 MemoryMax 给单个服务设边界。落地时不要只写一个上限值,还要观察 MemoryCurrent、内存事件、OOM 记录和业务错误率,并准备可回退的配置路径。139 收藏 -
Vite 或 React 前端发布后突然白屏,常见原因是 index.html 与带 hash 的 JS/CSS 产物不一致,CDN 或浏览器还命中了旧缓存。处理时先确认控制台和 Network 里的 JS 404,再回滚 HTML、清理 CDN、保留最近构建产物,并补上发布前后的检测与告警。342 收藏 -
文章 · php教程 | 2个月前 | nginx · php-fpm · php教程 · 故障复盘 · Nginx php-fpm 性能排查 PHP教程 502 Bad Gateway pm.max_children 慢日志
PHP-FPM 子进程打满时,502 往往不是单纯把 pm.max_children 调大就能解决。更稳的排查顺序是先看 Nginx upstream 错误和 FPM 状态页,再用慢日志找到长时间占用子进程的请求,最后把容量、慢查询、限流和告警一起补齐。407 收藏 -
Go 文件下载接口不能只把用户传入的 path 直接 Join 后打开。安全做法是固定下载根路径,先做 Clean,再确认最终路径没有越界,同时配合扩展名白名单、大小限制、只读打开和审计记录。362 收藏 -
Golang · Go问答 | 2个月前 | goroutine · Context · 超时控制 · Go问答 · Go Goroutine 超时控制 context.WithTimeout 取消信号 协程泄漏 ctx.Done
context.WithTimeout 只会在到期后关闭 Done 通道并返回取消原因,不会直接停掉 goroutine。Go 代码要把 ctx 传进阻塞调用,并在 select、循环和清理逻辑里主动响应取消信号。147 收藏 -
Go 接口签名不只是把参数算个 HMAC,还要把 timestamp、nonce、密钥保管、权限收窄和审计日志连起来。文章用一个可落地的中间件示例讲清防重放校验链路和常见坑。273 收藏 -
Golang · Go教程 | 2个月前 | CI/CD · gitHub actions · Go教程 · 持续集成 · Go 持续集成 CI Go test GitHub Actions self-hosted runner 自托管 runner
GitHub Actions 自托管 runner 开始恢复最低版本要求,Go 项目不要只盯着能不能跑 go test,而要盘点 runner 版本、镜像来源、负载分层和升级节奏,避免测试、构建、发布流水线在强制执行窗口里排队或失败。340 收藏