Go语言技术文章
-
ResizeObserver 回调修改被观察尺寸会形成布局反馈链。本文从循环成因、requestAnimationFrame 调度、期望尺寸守卫和 CSS 容器查询四个方面给出可落地的排查与修复写法。481 收藏 -
Go defer 不能凭空改写普通返回表达式。本文对比命名返回值、指针和闭包的作用范围,说明 return 与 defer 的执行关系,并给出错误包装和资源清理的选择边界。198 收藏 -
Linux xargs 默认按空白解析输入,文件名包含空格、换行或引号时可能被拆错。本文用 find -print0 与 xargs -0 说明 NUL 分隔的原因、正确写法、-- 参数和批量边界。160 收藏 -
给电商美工一套商品背景生成选型测试:用透明、金属和柔软材质样品检查边缘与反射,再以同一商品的九张候选统计透视、光影、可用率和返工时间。377 收藏 -
使用 Go embed.FS.ReadFile 读取内置资源时,不要只比较错误字符串。本文从 io/fs 的路径规则出发,演示如何用 errors.Is 判断资源不存在,再用 errors.As 读取 PathError 的操作名、路径和底层原因。211 收藏 -
dataclasses.field 的 default_factory 接收的是零参数可调用对象,应该写成 list,而不是已经创建好的 []。本文对比三种写法,解释报错位置,并用两个实例的内容和身份检查确认列表隔离。495 收藏 -
讲清 Go embed.FS 读取请求资源时 fs.ValidPath 的斜杠路径规则、反斜杠边界,以及如何区分非法路径和资源不存在。194 收藏 -
Go 1.23 的 range over function 如何停止生产方?本文用 iter.Seq、yield bool 和 iter.Pull 说明 break、return 后的停止合同与 defer stop 收尾方式。210 收藏 -
Java Files.find 和 Files.walk 都能搜索文件树,但过滤条件的落点不同:属性条件优先放进 find,路径流组合和后续转换更适合 walk。本文用可关闭资源的示例说明 maxDepth、BasicFileAttributes、filter 和异常边界。348 收藏 -
Go 测试断言抽成辅助函数后,t.Helper 如何让失败行号回到测试调用点,以及多层断言包装该怎样逐层标记。283 收藏 -
sync.OnceFunc 的 panic 不是一次性失败后自动重试,而是被缓存并在后续调用中用同一个值再次 panic。本文拆解实现状态、栈信息差异和可重试初始化的替代写法。249 收藏 -
MySQL EXPLAIN FORMAT=JSON 的嵌套循环成本要结合 nested_loop、rows_examined_per_scan、rows_produced_per_join 和 cost_info.prefix_cost 阅读。本文用一条 JOIN 示例说明如何找出成本被放大的连接分支,并区分优化器估算与实际耗时。166 收藏 -
软件服务商交付项目时,先按人员、系统、环境和动作核对账号权限,再把需求、配置、部署、培训和运维资料逐项对应到验收结果;临时账号要在交接后及时收回,并保留双方确认记录。333 收藏 -
Redis Iris 里的 Context Retriever 和 Agent Memory 不是两个同义的检索组件:前者回答当前业务数据是什么,后者回答过去对话发生过什么。本文用实际问题拆开两者的边界、组合方式和选型误区。248 收藏 -
讲清 Go sync.Cond 的可靠等待写法:为什么 Wait 返回后必须用 for 重新检查共享条件,如何配合 Locker 实现有界条件队列,以及 Cond、channel、Mutex 的选型边界。328 收藏