Go语言技术文章
-
Golang · Go问答 | 2个月前 | 并发 · channel · Mutex · 性能优化 · Go问答 · benchmark · Goroutine channel Mutex 并发性能 锁等待 benchmark Go问答
Go 里 Mutex 和 channel 不是谁绝对更快。保护一个共享变量时,Mutex 往往更直接;交接任务、串联 worker、表达所有权转移时,channel 更自然。判断时别只盯 ns/op,要看临界区、队列等待和业务动作。268 收藏 -
RAG 应用答错时,不要只怪模型。更常见的根因在检索层:切片不合适、召回证据偏题、排序没过滤、回答没有引用约束。复盘时要把用户问题、检索结果、证据片段、模型回答和评测样本串起来,才能真正防复发。468 收藏 -
科技周边 · 人工智能 | 2个月前 | 人工智能 · ai agent · AI应用 · 工具调用 · 权限边界 · 审计链路 · 人工智能 权限控制 AI Agent 工具调用 审批链路 审计回放 上线指标
AI Agent 真正接入业务系统时,难点不在能不能调用工具,而在权限闸门、人工审批、参数校验、审计回放和上线观察指标是否齐全。先让 Agent 做低风险查询,再逐步放开写入和自动化动作,会比一次性接管业务流程稳得多。343 收藏 -
Golang · Go教程 | 2个月前 | 并发 · 闭包 · for range · 迁移 · Go教程 · Go 1.22 · Goroutine 闭包 循环变量 Go教程 Go 1.22 for range
Go 1.22 调整了 for 循环变量的作用域,新模块里每轮循环会有自己的变量副本,能减少闭包和 goroutine 误读最后一轮值的问题。升级时要先看 go.mod、跑测试,再处理仍需要旧语义的特殊代码。113 收藏 -
MySQL 查询不走索引,常见原因不是索引不存在,而是 SQL 写法让优化器难以利用索引。函数包列、隐式类型转换、范围过宽和联合索引顺序不匹配,都应该用 EXPLAIN 验证后再改写。189 收藏 -
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 · Close · 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 收藏 -
Golang · Go教程 | 2个月前 | 单元测试 · 错误处理 · Go教程 · errors.Join · errors.Is · errors.Is Go错误处理 Go教程 errors.Join 多错误返回 批量校验
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教程 · http.Client · Transport · Go context 请求超时 Transport http.Client Client.Timeout ResponseHeaderTimeout
Go HTTP 客户端超时不要只靠一个 context 或一个 Client.Timeout。更稳的做法是把总预算、连接、TLS 握手、响应头和读取阶段分开设置,再用错误判断和日志字段确认到底卡在哪一段。218 收藏 -
科技周边 · 业界新闻 | 2个月前 | 开发工具 · github copilot · vs code · AI编程 · 业界新闻 · VS Code AI编程 Autopilot GitHub Copilot 模型选择 并行会话 成本可见
GitHub 7 月 8 日发布的 Copilot in VS Code 更新覆盖 v1.123 到 v1.127,重点不是单个按钮变化,而是把浏览器验证、并行会话、成本可见、模型选择和团队管控连成更完整的代理开发工作流。187 收藏 -
文章 · linux | 2个月前 | Linux · 运维教程 · cgroup v2 · MemoryMax · 内存限制 · 服务运维 · Linux 内存限制 cgroup v2 MemoryMax MemoryCurrent 服务单元 服务运维
Linux 服务内存偶发上涨时,可以用 cgroup v2 配合 MemoryMax 给单个服务设边界。落地时不要只写一个上限值,还要观察 MemoryCurrent、内存事件、OOM 记录和业务错误率,并准备可回退的配置路径。139 收藏 -
文章 · 前端 | 2个月前 | 前端 · vite · 运维手册 · 白屏排查 · CDN缓存 · 发布回滚 · React 前端 白屏 vite CDN缓存 index.html 发布回滚 JS 404
Vite 或 React 前端发布后突然白屏,常见原因是 index.html 与带 hash 的 JS/CSS 产物不一致,CDN 或浏览器还命中了旧缓存。处理时先确认控制台和 Network 里的 JS 404,再回滚 HTML、清理 CDN、保留最近构建产物,并补上发布前后的检测与告警。342 收藏