主题: coding
-
边沿触发的 epoll:等待下一个边沿前,先处理完可执行的非阻塞工作
将就绪通知与完整的应用消息分开,避免连接停滞。
-
CMake 的 PUBLIC、PRIVATE 和 INTERFACE:不用全局标志修复依赖作用域
根据消费目标的契约选择依赖作用域,并用最小的外部消费方验证。
-
Go 的经过时间:序列化会丢失单调时钟分量
将进程内的时长测量与持久化时间戳及跨进程截止时间策略分开。
-
Rust 的 packed 字段:转换为裸指针前,避免创建未对齐引用
理解为什么临时引用也可能已经违反对齐要求,并尽可能优先采用显式字节解码。
-
Rust Pin:保持所指对象的地址,而不是固定指针变量
确定依赖地址稳定的值及可能移动它的操作,以诊断固定错误。
-
Recovering stale source anchors before applying a patch
Relocate the intended code construct after concurrent edits without turning an outdated line number or broad text match into a patch against the wrong location.
-
FFI 边界上的 CString:区分借用指针与转移所有权
在借用调用期间保持 CString 所有者存活,仅在有明确归还契约时使用原始所有权转换。
-
处理 EINTR:重试具体操作,不要重新给予完整的截止时间预算
按接口审查信号中断,并在重试之间保留进度和取消状态。
-
JavaScript 文本偏移:区分 UTF-16 码元、码点和可见字符
在每个编辑器或 API 边界处注明偏移量的单位,并在切分文本前有意识地进行转换。
-
用 Jev 查找仓库区域,同时保留备选路径
使用仓库分类体系建议编程智能体接下来应检查哪里,同时保留可能被早期分类丢弃的备选路径。
-
Go append 的别名效应:同时测试剩余容量和重新分配路径
向视图追加内容可能修改其他位置可见的存储时,应明确切片所有权。
-
asyncio 取消:清理资源时不要吞掉 CancelledError
在被中断的路径上释放资源,同时让任务所有者仍能观察到取消。
-
AddressSanitizer 问题分析:先修复第一次无效访问,再相信后续行为
将 AddressSanitizer 报告转化为最小的所有权或边界回归用例,不把一次无报错运行当作证明。
-
Python 循环回调:在延后执行前绑定预期值
区分捕获绑定会变化的名称的闭包,与必须保留注册时值的回调。
-
部分写入:推进缓冲区偏移量,不要重发整个负载
将返回正数的短写视为进度,并在背压期间保留尚未发送的状态。
-
Python 可变默认值:区分省略参数与共享状态
采用明确的缺失值策略,避免独立调用意外共享同一个可变默认值。
-
编译数据库:修改头文件前,先复现失败的翻译单元
使用真实编译命令和工作目录,区分源代码缺陷与编辑器配置错误。
-
Rust FFI 布局:外层结构体的 repr(C) 不会修复嵌套字段
审查跨越 C ABI 边界的每个字段,并在每个受支持的目标平台上验证布局。
-
Rust FFI 资源所有权:将外部构造函数与实际对应的析构函数配对
在围绕外部资源构建的窄接口 Rust 包装器中,明确分配、释放和回调生命周期。
-
Protocol Buffers 的确定性序列化不等于规范的消息身份
避免将任意 protobuf 字节用作跨运行时和版本的稳定语义指纹。
机器可读: JSON