Go语言技术文章
-
比较 Python asyncio.gather 与 TaskGroup 在异常传播、兄弟任务取消、结果收集和资源清理上的差异,给出按业务边界选择异步并发 API 的判断清单。237 收藏 -
用 journalctl 先确认启动批次,再组合 unit、boot 和 since/until 条件定位 Linux 服务日志,并处理空结果、权限和持久化边界。371 收藏 -
用 Go benchmark 公平比较字符串拼接实现,掌握 ReportAllocs、AllocsPerRun、B/op、allocs/op 与 b.Loop 的使用边界。426 收藏 -
解释 Go goroutine 因为没人接收 channel 而长期阻塞的原因,并用 context、select、关闭责任和等待机制设计可退出的发送路径。338 收藏 -
Java record 的字段是 final,但组件对象未必不可变。把带 List 等可变组件的 record 当作 HashMap 键时,组件内容变化会让 hashCode 改变,导致 get 或 containsKey 定位失效。128 收藏 -
用 Go testing.F 为字符串解析器添加少量边界种子,区分预期的解析错误与真正的不变量破坏,并让 fuzz 失败输入沉淀到 testdata/fuzz/FuzzParseRecord,成为可重复执行的回归样本。313 收藏 -
PHP 8.5 的 NoDiscard 属性用于提醒调用方不要悄悄丢弃重要返回值。本文说明如何选择适用函数、添加提示、处理有意忽略的结果,并厘清接口、继承和 trait 的边界。486 收藏 -
CodeQL 2.27.0 已支持 Linux ARM64。本文用 GitHub Actions 矩阵示例说明如何保留 x64 基线、增加 ubuntu-24.04-arm,并从 runner、工具链、容器和缓存四层确认迁移是否真正完成。457 收藏 -
Go select 中的 default 不会等待通信,放进无界消费者循环就会造成 busy loop。本文说明如何改成阻塞式消费,或用 ticker 控制必要的周期检查,并通过 CPU、日志和退出行为验证修复。237 收藏 -
在LiblibAI下载同一模型、同一版本时,本地工具支持就优先选择safetensors;只有旧插件或旧工作流明确依赖ckpt时再保留后者。本文从安全边界、兼容性、生成一致性和迁移步骤给出可执行判断方法。288 收藏 -
Go testing.T Setenv 会在测试结束后恢复环境变量,但修改过程影响整个进程,因此不能与 t.Parallel 或并行祖先组合使用。本文拆解冲突原因,并给出串行边界、显式配置和子进程隔离三种处理方式。475 收藏 -
LLM评测集不要只放正常问答。更稳妥的做法是把样本分成正常任务、明确拒答和可澄清的边界请求,为每条记录期望行为、原因标签和替代方向,再按分片统计完成率、拒答准确率、澄清率与不必要拒答率。177 收藏 -
Go select 同时命中多个 case 时不会按源码顺序固定执行,而是在可通信的 case 中做均匀伪随机选择。本文用最小示例解释规则,并给出优先级、取消和测试的确定性处理方式。349 收藏 -
通过 Go testing.T.Cleanup 的资源夹具示例,说明同一个测试对象为何按后注册先执行,并梳理父子测试、失败路径与并行测试的清理边界。232 收藏 -
讲清 Go errors.Join 在资源清理中的用法:如何合并主错误与 Close 错误、批量保留多个清理错误,并用 errors.Is 与 errors.As 做判断。108 收藏