Go语言技术文章
-
解释 Go 循环中 defer 为什么会让资源和内存峰值随迭代数增长,并用小函数边界改写为每轮及时清理。129 收藏 -
在MySQL中,INSERT IGNORE堪称处理冲突的最简方案,它能在面对主键或唯一索引冲突时,悄无声息地忽略,既不报错,也不更新,更不会加锁;而在PostgreSQL里,对应的是ON CONFLICT (列) DO NOTHING,但它需要明确指定冲突目标,语法要求更为严格;SQL Server128 收藏 -
文章 · 前端 | 3星期前 | 前端 · javascript · 前端动画 document.startViewTransition View Transitions API startViewTransition SPA页面切换
单页应用切换列表与详情时,可以用 document.startViewTransition 包住 DOM 更新,让浏览器接管新旧视图的过渡;同时保留 prefers-reduced-motion 和 API 能力检测,确保不支持时仍能正常切换。128 收藏 -
原生 HTML dialog 关闭后,焦点恢复、Esc 取消和按钮结果经常被混在一起。本文用一个可复现的确认框拆开 showModal、returnValue、cancel/close 事件和焦点恢复的边界。128 收藏 -
PHP stream_select 适合把多个非阻塞流放进同一等待循环。本文用 socket_pair 演示读写集合、超时返回值、EOF 与部分写入的判断,解释为什么每轮必须重建数组,避免 CPU 空转。128 收藏 -
污水处理厂进入污水池、提升井等有限空间前,不能只看一张作业票。本文按现场顺序核对辨识、审批、隔离、通风、气体检测、监护和应急装备,并说明哪些状态不满足时必须停止进入。128 收藏 -
用 PHP DOMDocument 解析不可信 XML 时,关键不是简单关闭一个开关,而是控制加载选项、保留解析错误并验证输入边界。本文对比 LIBXML_NONET、LIBXML_NO_XXE 与外部实体加载器的适用场景。128 收藏 -
PHP 8.6 将 Git 源码构建所需的最低 Autoconf 版本提高到 2.71。本文比较官方发布包、容器化构建和直接拉取源码三种路径,说明哪些环境需要升级以及上线前怎样检查。128 收藏 -
Go 1.24 引入的 os.Root 可以把文件操作固定在指定目录树内。本文用一个 HTTP 文件服务示例说明 filepath.Localize、Root.Open、目录判断、错误响应和平台限制。128 收藏 -
用 bytes.Buffer 解析批量协议时,Reset 可以复用已分配容量,但不会替你维护消息边界。本文用固定长度前缀示例说明读取推进、半包判断、Bytes 切片生命周期和复用检查清单。128 收藏 -
Go 的 Rows.ColumnTypes 不直接返回 nil 长度,ColumnType.Length 返回 int64 与 ok。本文区分固定长度、无界类型、驱动不支持和业务包装层 nil,并说明如何把长度元数据与 SQL NULL 分开处理。128 收藏 -
Go 的 nil channel 不会就绪,因此放进 select 的收发分支永远不会被选中。本文用最小示例解释它与未就绪、已关闭通道的区别,并给出初始化、动态禁用和退出处理方案。128 收藏 -
解释 Redis SET NX EX 在键不存在、已有 TTL 和条件更新场景下的真实行为,区分 NX 条件写入、EX 重置租期与 KEEPTTL 保留剩余 TTL,并给出锁初始化、更新和排查命令。128 收藏 -
Java sealed interface 扩展失败时,先检查 permits 中的类型是否可访问且确实直接 implements 或 extends 该接口,再核对 final、sealed、non-sealed 续封修饰符,最后区分 named module 与 unnamed module 的包边界。本文用最小编译矩阵逐项定位这些错误。128 收藏 -
go test 在包列表模式下会复用成功的测试结果,看到 (cached) 时不一定代表测试二进制被重新运行。本文说明 go test -count=1 的适用场景、GODEBUG=gocachetest=1 的排查方法,以及测试缓存和构建缓存的区别。128 收藏