JavaScript map(parseInt):同样是三个数字字符串,为什么后两项变成 NaN 把字符串数组转成整数,看起来只需 values.map(parseInt)。输入一、二、三个普通十进制字符串,结果却是一个正确数字加两个 NaN。parseInt 本身并没有随机失败,而是 map 会给回调传入元素、... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
JavaScript 属性定义的默认开关:值能读到,为什么遍历、改写和删除都失败 把配置对象从普通赋值改成 Object.defineProperty,只写 value,读取值一切正常。随后 Object.keys 看不到这个字段,赋新值或删除又抛出异常。问题不在对象丢失,而在新建属性时没有填写的... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Python 日志级别已关闭:debug 没有输出,昂贵函数为什么仍然被调用 服务把日志级别设为 WARNING,调试输出已经消失,生成大型诊断摘要的函数却仍然运行。代码写的是 logger.debug("summary=%s", build_summary()),看起来采用了延迟格式化。问题... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
SQLite UPDATE OF 触发器:列名拼错了,为什么创建成功却一直不响 给库存表增加一个数量变化日志,迁移脚本显示 CREATE TRIGGER 成功,更新后却始终没有日志。反复检查提交和连接仍找不到原因,最后发现 UPDATE OF 后面的 quantity 少了一个字母。SQLite... yunqueblog/ 技术教程/ 2026-10-02/ 4 阅读
SQLite 空值排序:改成降序后,缺失记录为什么换到了另一端 一个清单按预计耗时从小到大显示,未填写耗时的项目突然出现在最前面。改成降序后,它们又跑到最后。开发者原本只想翻转已有数字的顺序,却同时改变了缺失记录的位置。SQLite 默认在升序时把 NULL 排在前面,降序时放在... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
SQLite LIMIT 两种写法:只是把 OFFSET 换成逗号,为什么取回了另一页 维护分页查询时,把 LIMIT ? OFFSET ? 改成 LIMIT ?, ?,占位符数量仍然是两个,程序也没有报错,却把“取三条、跳过两条”变成“跳过三条、只取两条”。SQLite 支持这两种语法,但它们的参数顺... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Python dataclasses.replace:只改数量,为什么手动改过的派生字段又被重算 一条数据类记录里,单价和数量用于构造对象,总额在初始化后计算。调试时手动修正过总额,随后用 dataclasses.replace 修改数量,却发现新对象没有保留那份手动值。这不是 replace 漏拷贝,而是它通过... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Python 正则搜索起点:pos 已经移到中间,为什么 ^ 仍不匹配那里 从日志中找到正文起点后,把这个位置传给编译后正则的 search,以为表达式里的 ^ 就会把那里当开头。结果普通文字能找到,加了行首锚点却返回 None。pos 限制从哪里开始尝试匹配,没有把原字符串切成一段新字符串... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Python str.translate 字符映射:一次替换成两个字,为什么不会继续套下一条规则 整理外部导出的标签时,常需要把全角冒号换成半角,把某个装饰符删除,再把一个缩写符号展开成两个字符。连续调用 replace 很快能写出来,但规则一多,前一步产生的新字符可能又被后一步改掉。若需求是“按原字符各处理一次... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Python enumerate 的起始编号:标签从十开始,为什么第一条数据仍没有跳过 导入一份带表头的名单,想让第一条数据标成第二行,于是写 enumerate(rows, start=2)。结果表头仍然被处理,只是贴上了编号二。另一个常见问题是把分页起始编号设成十一,随后拿这个编号访问只有三项的当前... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读