Go语言技术文章
-
说明 reflect.TypeFor[T]() 只负责取得泛型类型元数据,如何把它作为类型计划缓存键,再由调用方通过 dst[:0] 复用已有 []byte 容量,并处理异步消费与超大容量边界。501 收藏 -
reflect.TypeFor[T]() 适合固定泛型目标类型,但它不会替你判断运行时值。本文从 nil、Kind、AssignableTo、Implements 和 ConvertibleTo 五个角度,写出可复用的 Go 反射类型边界判断。501 收藏 -
netip.ParseAddr 只解析 IP 地址,因此会拒绝带端口的完整端点。需要处理 host:port 时应改用 ParseAddrPort;IPv6 端点要写成 [地址]:端口,端口必须是数字。本文还说明 AddrPortFrom、区域标识、端口 0 和 MustParse 的适用边界。501 收藏 -
Go 反射读取指针指向的结构体字段时,需要先解引用并处理 nil、无效 Value、字段不存在和未导出字段。本文用一个通用读取器说明 ValueOf、Indirect、FieldByName 与 CanInterface 的协作顺序。501 收藏 -
Go generate 未执行预期指令时,区分注释未识别、包未选中、工具失败和输出目录偏移。通过包内生成器示例说明指令格式、工作目录、参数解析与产物责任。501 收藏 -
Go 的 sync.RWMutex 允许多个读者并发,但写锁一旦排队,新读者也会等待。本文通过原创实验和指标拆分,分析写锁等待过久的常见竞争来源,并给出可落地的缩短临界区方法。501 收藏 -
Python xml.dom.minidom 解析大 XML 后,应在最后一次访问 DOM 之后调用 Document.unlink,或用 with 自动清理。本文说明整树与子树的作用范围、try/finally 写法、结果复制和清理后的访问边界。501 收藏 -
解释 Go os.File.ReadAt 到文件末尾返回部分数据和 io.EOF 的原因,梳理 n、len(b)、off 的判断边界与定长读取处理方式。501 收藏 -
PHP 8.4 起 fgetcsv 依赖 escape 默认值会触发弃用提示。本文说明如何显式传入空字符串兼容 RFC 4180,如何处理双引号与反斜杠字段,以及旧格式迁移时的边界。501 收藏 -
以临时文件辅助函数和并行子测试说明testing.TB.Cleanup的资源归属、后登记先清理规则及与defer、TempDir的区别,避免提前关闭与重复释放。501 收藏 -
Python typing.TypeIs 可以把可复用的布尔判断接入类型收窄,并在 True 与 False 两个分支提供更精确的类型信息。本文从联合类型示例出发,说明安全写法、Python 版本导入、TypeGuard 对比和错误实现边界。501 收藏 -
Go bufio.Reader 读取协议行时,ReadString 和 ReadBytes 会保留分隔符,ReadLine 会去掉行尾,ReadSlice 还涉及缓冲区生命周期。本文从排查现象出发,给出保留 LF、CRLF 和自定义分隔符的写法。501 收藏 -
Go 使用 encoding/json 解码时,JSON null 会把指针设为 nil,而字段缺失可能保留结构体原值。本文拆开 null、缺失、非 null 和三态字段建模的边界。501 收藏 -
Java 接口同时收到日期、带 T 的时间和带空格的时间时,可以用 DateTimeFormatterBuilder 组织可选秒数,再用多个候选格式器处理真正不同的分隔符。本文给出严格解析、parseBest 和落地边界。501 收藏 -
本地部署量化模型时,显存不只由模型参数量决定。本文用权重位宽、上下文长度、KV cache 和运行时余量拆出一套可复用的估算方法,帮助判断量化档位与单卡显存是否匹配。501 收藏