Go语言技术文章
-
用 OpenAI Agents SDK 的 RunState、session_state 和 snapshot 区分三种恢复边界,再用工作区检查点把沙箱任务拆成可重试、可回滚的阶段。441 收藏 -
用 Go 的 multipart.Reader 逐个接收多个上传文件,配合 MaxBytesReader 和 LimitReader 控制请求总量、单文件大小,并正确处理 EOF、超限和临时文件清理。441 收藏 -
asyncio.wait_for 超时后,底层任务看起来还在运行,通常不是超时失效,而是任务正在响应取消并执行 finally 清理,或者被 asyncio.shield 有意保护。本文用最小实验区分取消、清理、保护和 TaskGroup 的边界。441 收藏 -
iter.Seq2 的 K、V 是按值传给 yield 的,不能靠取 range 变量地址消除复制。本文对比指针返回、ID 句柄和保留值返回,给出生命周期、并发与提前停止的实用边界。441 收藏 -
复用 bytes.Buffer 时,旧数据残留通常是因为写入会追加而不是覆盖。本文用 Len、Cap、Reset 和 Grow 拆开逻辑长度、底层容量与切片别名,给出循环复用、容量阈值和返回值复制的处理方式。441 收藏 -
Redis Stream 使用 XTRIM MAXLEN ~ 时,阈值是近似目标而不是硬上限,宏节点边界和 LIMIT 都可能让裁剪后保留少量额外消息。本文用 XLEN、XRANGE 解释结果,并给出精确裁剪与 MINID 的选择方法。441 收藏 -
Golang · Go问答 | 1个月前 | Context · 并发控制 · Go问答 · Go 资源清理 sync.Once context.WithCancel context.CancelFunc
Go 的 CancelFunc 可以被多个 goroutine 重复调用,但这不代表文件、连接和事务清理也天然幂等。本文用统一停止入口、等待工作退出和 sync.Once 设计多入口收尾,说明取消信号与资源释放的边界。441 收藏 -
讲清 Go sync.WaitGroup 的计数快照、Add 与 Wait 的竞态边界,以及动态派生任务和 WaitGroup.Go 的安全用法。441 收藏 -
农产品追溯记录应先按同品种、同控制措施和同一时间收获划分批次,再关联投入品、防治、采收、检测、合格证与销售去向。本文提供可落地的建档字段和保存方法。441 收藏 -
讲解 MySQL 列直方图随数据分布变化失真后如何检查 COLUMN_STATISTICS,并用 ANALYZE TABLE UPDATE HISTOGRAM 重新采样,兼顾桶数、MySQL 8.4 自动更新和 EXPLAIN 验收。441 收藏 -
PHP SplPriorityQueue 不保证相同优先级元素的出队顺序。本文用业务优先级和递增序号构造复合优先级,重写 compare() 实现同级 FIFO,并说明提取标志、类型和替代方案。441 收藏 -
Golang · Go教程 | 2星期前 | goroutine · Context · Go教程 · 批处理 · 批处理 Timer WithTimeout Go context WithCancelCause 父子取消链
本文用 root、batch、job 三层 Context 组织批处理生命周期,演示系统信号、整批失败和单任务超时的传播边界,并说明如何及时调用 CancelFunc、停止重试 Timer 与 Ticker。441 收藏 -
本文从零实现一个 Go 归档展开小工具:用 os.Root 限制落盘范围,只接受目录和普通文件,并通过路径白名单、文件数量、单文件大小与总展开量控制用户上传风险。441 收藏 -
PHP 上传文件没有进入 upload_tmp_dir 时,先读取当前 SAPI 的有效配置,再检查目录权限和 open_basedir,最后从 $_FILES[tmp_name] 记录实际落点。本文给出一套不改永久保存逻辑的排查方法。441 收藏 -
go vet 的 copylocks 检查会提醒你:包含互斥锁、Once 或 WaitGroup 的值不应沿着参数、返回值、赋值和 range 路径被复制。本文用最小结构体说明告警边界,并给出指针接收者、指针集合和 CI 检查的修复方式。441 收藏