JavaScript 正则状态:同一个 test 为什么一会儿 true、一会儿 false 先检查正则对象有没有保留游标表单值没有变化,同一个校验函数第二次却返回失败,问题可能藏在正则对象里。带有 g 或 y 标志的正则会用 lastIndex 记录下一次尝试的位置。test 虽然只返回布尔值,内部仍会执行... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Git archive 导出提交快照:工作区改了,压缩包为什么仍是旧内容 先说清交付的是哪个版本把源码发给同事时,直接压缩当前目录容易混进临时文件,也可能带上尚未验证的修改。git archive 可以按指定提交导出文件树。关键在于它读取的是选定版本:即使编辑器里已经改成新内容,只要指定的... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
SQLite LEFT JOIN 计数:没有子记录,为什么 COUNT(*) 仍然是 1 先写下零条记录也要出现的需求项目看板要列出全部项目,并显示各自尚未完成的任务数。甲项目有一条未完成任务,乙项目只有已完成任务,丙项目从来没有任务。正确结果应是甲一条、乙零条、丙零条。这个小例子同时检验两个要求:数字必... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Python bisect 区间计数:重复时间戳遇到开闭边界,怎样一条都不漏 先确定边界上的事件归谁统计某段时间里的请求数时,最容易出错的并非查找速度,而是恰好落在边界上的记录。假设第十秒发生两次请求,第十五秒发生三次请求,同样写“十到十五秒”,包含两端与只包含左端就会相差三条。先把区间约定写... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Python ConfigParser 百分号排错:字面值、插值和读取边界怎么选 配置能读进来,为什么取值时才报错脚本原先只读取目录,后来新增一个带百分号编码的下载地址,配置文件照常加载,真正使用地址时却抛出异常。此时不宜先怀疑网址失效。配置解析器可能在取值阶段解释了百分号,而地址里的百分号本来属... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Bash trap 清理临时目录:保留原始退出码,让失败仍然可见 清理完成,不代表业务成功一个导出脚本先写临时文件,再生成交付结果。中间命令失败后,清理函数顺利删除目录,如果最后却返回成功,调度系统就会把失败任务记成绿色。可靠清理需要同时回答两个问题:工作目录是否收回,以及调用者最... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Python dataclass 默认值:default_factory 怎样避免多个实例共用列表 两个任务,为什么出现了同一条标签批处理程序里,每个任务都有一个标签列表。给任务甲追加“待重试”,任务乙却也出现相同标签,这类问题容易被误判为并发写入。实际上,即使程序只有一个线程,只要两个实例持有同一个列表,也会出现... yunqueblog/ 技术教程/ 2026-10-01/ 4 阅读
Python heapq 稳定优先队列:用序号处理并列,避免比较任务内容 先约定“同样着急”时谁先执行假设一个图片处理脚本收到普通任务甲、紧急任务、普通任务乙和普通任务丙。业务规则是紧急任务先取,三个普通任务按到达次序取。任务本身是字典,包含名称、路径和处理参数;这些字段用于执行任务,不能... yunqueblog/ 技术教程/ 2026-10-01/ 4 阅读
JavaScript Object.hasOwn 与 in:字段属于对象,还是来自原型链 读取得到一个值,不代表调用者填写了字段某个配置对象把默认重试次数放在原型上,调用者自己没有提交重试字段。读取属性仍能拿到默认值,in 也返回真。如果接口要求“只接受调用者明确提供的字段”,这两个结果都不足以证明字段属... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Git log 的 -S 与 -G:查找次数变化,还是查找改过的那一行 变量还叫原来的名字,搜索却漏掉了修改排查配额变更时,你记得变量叫 quota,于是搜索它的历史,却只看到最早加入和后来新增引用的提交,没有看到数值从十改成二十。这未必是历史丢失,更可能是查询问错了问题。同一个词在修改... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读