Go语言技术文章
-
Java Files.walk 返回的是惰性 Stream,它可能持有目录遍历资源,不能像普通集合一样长期放着不管。本文说明如何用 try-with-resources 包住完整消费范围,区分空结果、遍历异常和关闭边界,并整理一个可复用的安全封装。 180 收藏 -
园区抄表值与账单不一致时,先统一计量点、账期、单位和倍率,再对照现场记录、平台采集值与供能方账单,按时间、器具和结算口径分类处理。179 收藏 -
文章 · php教程 | 2天前 | JSON · 枚举 · php教程 · 语言特性 · php enum json_encode JsonSerializable backed enum JSON API
PHP backed enum 用 json_encode 时默认输出它的 string 或 int backed value;pure enum 不能直接编码为 JSON。本文说明默认序列化、JsonSerializable 覆盖、数组与 DTO 组合、错误处理和接口兼容演进。177 收藏 -
Go 依赖升级后出现接口不兼容,先不要盲目回退。本文用 go.mod、go list -m、go mod graph 和编译错误把问题分成导入路径变化、公开 API 断裂与间接依赖切换三类,再给出回退、迁移和兼容适配的选择方法。176 收藏 -
文章 · php教程 | 2天前 | 工程实践 · php教程 · php redis Symfony Cache 缓存标签 TagAwareCacheInterface invalidateTags
Symfony Cache 的标签失效适合处理一个业务对象对应多个缓存键的场景。本文从直接删除、标签失效与 TTL 的边界出发,说明怎样设计标签、配置 TagAwareCacheInterface,并把失效动作放到稳定的写路径中。175 收藏 -
用 Web Streams 组装生产、转换和消费管道时,关键不是手工堆积缓存,而是让下游需求通过队列和 pipe 链路传回 source,并用 AbortController 统一处理取消、超时和资源释放。175 收藏 -
sync.Once 适合只允许成功初始化一次的场景,但初始化函数一旦返回或 panic,后续 Do 不会重试。本文用显式状态机实现并发等待、失败退避、context 取消与成功缓存,并给出方案选择边界。172 收藏 -
Go 的 os/user.Current 用于获取当前进程用户,首次调用后会缓存结果;os/user.Lookup 用于按用户名查询,并在找不到用户时返回 UnknownUserError。本文结合 cgo、osusergo 和跨平台字段差异说明怎样选择。171 收藏 -
Go Timer Reset 的安全写法取决于 Go 版本和计时器状态。本文围绕 Stop、Drain 与 Reset 的先后关系,说明 Go 1.22 及更早版本的兼容处理、Go 1.23 之后的语义变化,以及通道型 Timer 与 AfterFunc 的不同边界。170 收藏 -
Go 自定义 MarshalJSON 时直接再次编码原类型会无限递归。本文说明 json.Marshaler 的触发原因,并用新的定义类型复用默认字段编码、追加自定义字段,同时保留错误处理边界。169 收藏 -
Go context 的 Done 只能通知退出,Err 只能说明取消类别。本文用 WithCancelCause 和 Cause 区分超时、主动取消与业务失败,并解释父子 Context 首次取消的传播边界。169 收藏 -
Go 1.22 的 slices.Concat 可以把多个同类型切片按传入顺序合并成新切片。本文用最小示例说明顺序、空切片、nil 结果、自定义切片类型,以及它与 append 的选择边界。168 收藏 -
PHP Fiber::throw() 的关键不是从外部直接改写协程代码,而是在 Fiber 已挂起时,把 Throwable 重新交给当前 Fiber::suspend() 调用点。本文用一个可取消的协程调度场景说明挂起门槛、异常捕获、FiberError 和终止状态之间的关系。166 收藏 -
Fetch 可用 AbortSignal.timeout 为每次请求设置等待预算。本文给出覆盖响应体读取的原创封装,说明 TimeoutError 的归属、其他异常和活动时间边界,并提供兼容判断。166 收藏 -
两张原创墨云月面9:16手机壁纸:主图用下移的象牙月面和顶部暗色留白保持锁屏清晰,变体用左上弦月与对角云带给主屏留出更大的右下图标区,并附完整中英文提示词和调整方法。166 收藏