Go语言技术文章
-
Python logging 的 Formatter 不只是拼接字符串,还决定 LogRecord 如何变成稳定的结构化日志。本文用 extra、defaults 和自定义 Formatter 统一业务字段、异常信息与 JSON 输出。185 收藏 -
sync.Cond 出现等待不返回时,先检查共享条件是否由同一把锁保护,再确认 Wait 是否位于 for 循环中。本文用原创 Go 示例拆开 Signal、Broadcast、条件状态与 channel 的适用边界,帮助定位所谓的唤醒丢失。112 收藏 -
ServeMux 的匹配不是简单比较路径字符串,而是综合方法、主机和路径,并按请求集合的具体程度选择模式。本文用请求生命周期拆解通配符、优先级、405、尾斜杠和 Go 1.22 兼容边界。207 收藏 -
Java 模块系统中,uses、provides 和 requires static 负责描述服务边界,ServiceLoader.findFirst() 可以在没有可选实现时回退到默认实现。本文给出模块声明、加载代码与排错边界。363 收藏 -
从 PHP session.sid_length 的默认值、范围和弃用状态出发,构建一个最小会话示例,说明旧 Cookie、存储键、自定义处理器与安全配置之间的兼容边界。403 收藏 -
context.WithValue 出现字段覆盖时,通常不是值被修改,而是相同键在父子 Context 中发生遮蔽。本文用包内私有键类型和类型安全访问器规避跨包冲突。277 收藏 -
DeepSeek 在 2026 年 9 月 30 日公开面向华为 Ascend 的计算、通信与编译工具后,真正值得关注的是分层协作:模型团队开放高性能内核,硬件生态提供 NPU 工具链与验证环境,社区通过兼容接口把能力接入更大的软件栈。本文按公开仓库拆解这套模式及其落地边界。145 收藏 -
围绕 time.Ticker 的动态改周期、永久停止和停止后复用,讲清 Reset、Stop 与 C 通道之间的调用顺序,避免重复创建和并发竞态。208 收藏 -
本地运行 GGUF 模型时,量化格式决定权重占用与精度取舍,上下文长度决定单次请求的提示词和生成空间。本文用一套可执行的判断顺序说明 Q4_K_M、Q5_K_M、Q8_0 与 --ctx-size 的配置方法。273 收藏 -
Go 的 ctx.Err() 只能告诉你已取消或已超时,context.Cause(ctx) 才能携带主动取消的具体原因。本文用原创示例拆开主动取消、超时取消和父子上下文竞争时的判断方式。485 收藏 -
Go 服务不必在每次请求中重复调用 time.LoadLocation。本文用 sync.Once 缓存可共享的 *time.Location,并说明 IANA 时区、UTC、Local、错误处理以及并发首次初始化的边界。195 收藏 -
Redis 客户端缓存要解决的不是如何保存本地副本,而是数据变化后如何可靠地让副本失效。本文对比默认 Tracking 与 BCAST 广播模式,给出 RESP3 单连接、RESP2 REDIRECT 双连接、前缀范围和断线处理的落地选择。323 收藏 -
Go 的 context.AfterFunc 回调是在上下文取消后异步启动的,stop 返回 true 才表示回调被阻止;返回 false 不等于回调已经完成。本文按取消、停止和完成三个时刻拆解排查方法,并给出可等待回调收尾的写法。342 收藏 -
time.Now() 返回的 time.Time 可能同时含墙上时钟与单调时钟读数。本文说明序列化前为什么常用 Round(0) 清理进程私有字段,以及反序列化后如何用 Equal 正确比较时间。413 收藏 -
MySQL 连接属性不会自动把会话送进资源组。本文用 session_connect_attrs 识别连接,再通过 SET RESOURCE GROUP 完成调度,并给出线程核对、权限与连接池复用的配置方法。388 收藏