Go语言技术文章
-
Go 1.23 后无引用 ticker 可被 GC 回收,但后台 goroutine 仍持有 ticker 或没有退出条件时,任务依旧会长期存活。本文用生命周期、Stop 和退出信号拆开排查。417 收藏 -
Python 3.12 起可以用 type 语句或 typing.TypeAliasType 显式声明可复用类型别名。本文从简单别名、泛型参数和运行时元数据出发,说明 TypeAliasType 与普通赋值、TypeAlias、NewType 的区别及版本边界。417 收藏 -
介绍 Go 1.22+ net/http ServeMux 的路径参数提取方式,说明 PathValue、参数校验以及 400、404、405 状态码的边界,并给出适配外部路由的 handler 契约。417 收藏 -
调整 GOGC 或 runtime/debug.SetGCPercent 后,延迟不会按固定方向变化。本文用固定工作负载、隔离的基准样本和延迟分位数,对照分析 GC 频率、堆空间、吞吐与 p95/p99 的关系。416 收藏 -
本文围绕 Badger v4 的 WriteBatch 批量写入,说明 Set 与 Flush 错误的区别、Cancel 的异常兜底作用、MaxPendingTxns 的设置方式,以及如何用稳定业务键和外部批次游标设计可恢复的导入边界。416 收藏 -
Java CompletableFuture 的 cancel() 只能表达取消状态,无法携带业务原因。本文比较 cancel、带原因的异常完成和显式结果对象,给出跨 thenCompose 阶段传递取消码的写法。415 收藏 -
用 Go httptest.ResponseRecorder 测试 Handler 时,区分 Code、Result 和 WriteHeader 的读取时机,准确断言最终状态码。415 收藏 -
Java Apache Commons IO 的 Tailer 用 end 参数或 Builder 的 setTailFromEnd 控制起始位置:false 会从文件开头读取,true 会跳到当前末尾等待新增内容。本文结合日志补读、实时监听和文件轮转说明两者区别。415 收藏 -
使用 Go 标准库 net/mail 解析带显示名的单个邮箱、地址列表和 RFC 2047 编码显示名,区分 Name 与 Address,并说明语法解析和投递校验的边界。415 收藏 -
Golang · Go问答 | 2天前 | 标准库 · HTTP · go · Cookie · cookie Go net/http Secure SameSite CHIPS Partitioned
Go 的 http.Cookie 增加 Partitioned 后,真正容易出错的是属性组合:Partitioned 必须和 Secure 一起使用,SameSite 则负责跨站发送策略。本文用标准库字段、Valid 检查和 Set-Cookie 序列化拆开这三个边界。415 收藏 -
journalctl 可通过启动列表取得 boot ID,并用 -b 固定查询指定启动。本文说明相对偏移、消息时间范围、脚本输入与历史日志留存边界,避免把编号或空结果误判。415 收藏 -
Go 原生 fuzz 测试发现 panic 后,先固定失败语料并用 -run 稳定重放,再定位最小输入边界、修复校验逻辑,最后保留 corpus 作为回归测试资产。414 收藏 -
Java 模块化插件不应只把多个 JAR 扔进同一个类路径。本文把共享 SPI 放在父 ModuleLayer,为每个插件目录建立独立 Configuration 与 ClassLoader,再用 ServiceLoader 按层发现实现,并补齐失败回滚、资源释放和卸载边界。414 收藏 -
用 PHP mb_encode_mimeheader 正确处理中文邮件标题的字符集、B/Q 编码、折行与 Subject 前缀长度,避免乱码、手工截断和把正文问题误判为标题问题。414 收藏 -
Golang · Go教程 | 6天前 | 单元测试 · Context · Go教程 · HTTP客户端 · Go 上下文取消 HTTP测试 testing.T.Context http.NewRequestWithContext
Go 1.24 起,testing.T.Context 能把测试生命周期直接传给 HTTP 客户端请求。本文给出最小代码、超时收紧、子测试边界,并解释它与 httptest.NewRequestWithContext 的区别。413 收藏