Go语言技术文章
-
Go errors.Join 会生成实现 Unwrap() []error 的多分支错误树。errors.Is 会检查根错误并深度优先遍历每个子错误,因此可对多个原因逐个匹配;直接等号和 errors.Unwrap 不适用于该结构。309 收藏 -
可访问模态弹窗不只是加 aria-modal。本文优先用原生 dialog 与 showModal 完成焦点限制和同文档背景 inert,再补齐初始焦点、Escape/按钮关闭、触发器恢复、动态触发器兜底,并说明何时才需要手写 Tab 焦点陷阱。309 收藏 -
从数据是否可重建、访问冷热和 TTL 三个维度选择 Redis 内存淘汰策略,并用 INFO 指标验证配置结果。309 收藏 -
Redis 窗口计数限流最容易出错的地方不是 INCR,而是计数键的窗口边界和 TTL 续期方式。本文用 Lua 原子组合 INCR 与首次 EXPIRE,解释固定窗口、滑动窗口和边界突发的取舍。309 收藏 -
Go testing.T.Cleanup 会在测试及其子测试完成后执行已注册回调,并按后注册先执行的顺序收尾。本文用资源依赖和子测试作用域说明怎样安排注册顺序,避免测试夹具提前失效。309 收藏 -
从甲壳虫ADB助手开发者仓库核对产品名、版本标签和安装包来源,说明附件加载异常与提交签名的判断边界。309 收藏 -
用 Go 的 os.ReadFile 读取配置文件时,不要比较错误字符串。本文用 errors.Is 和 errors.As 区分权限不足、路径不存在与其他失败,并通过 %w 保留可追踪的错误链。309 收藏 -
用 ParamSpec 和 Callable[P, R] 为装饰器转发原函数参数与返回值类型;当装饰器注入固定参数时,再用 Concatenate 表达新的调用签名。309 收藏 -
Go modules 的 vendor 模式能把构建所需依赖放进项目目录,但可复现的关键不是简单提交 vendor,而是让 go.mod、vendor/modules.txt 与构建模式保持一致。本文梳理 go mod vendor、-mod=vendor 和团队协作中的固定检查点。309 收藏 -
用 Linux ss 分层确认端口监听、进程归属和 TCP 连接状态,掌握 -l、-p、-n、state established 等参数的排查顺序。308 收藏 -
Diffusers 单文件模型不能靠改后缀变成组件目录。正确做法是用匹配的 Pipeline.from_single_file() 读取权重,再用 save_pretrained() 保存配置、组件子目录和权重文件;配置推断失败时显式提供 config。308 收藏 -
bangumi人物相册用于整理角色或现实人物的不同形象资料,人物页还可查看关联角色、参与作品与图片评论入口;本文按官方公开页面说明功能范围、上传权限和浏览边界。308 收藏 -
Java 记录模式可以在 instanceof 和 switch 中递归拆解嵌套 record。本文从逐级访问器迁移到嵌套模式,说明 var 推断、null、泛型与失败分支,并给出紧凑的回归检查清单。308 收藏 -
富文本预览常见的换行消失、连续空格变成一个空格,可以在展示层用 white-space-collapse: preserve-breaks 保留换行并压缩空白,再用 pre-line 作为兼容回退。308 收藏 -
Go sync.Map.LoadOrStore 返回的 actual 是最终值,loaded 则说明这个值来自已有条目还是本次存入。本文结合空键、已存在键和并发竞争,说明如何用 loaded 判断初始化责任,避免把候选值误当成缓存结果。308 收藏