SQLite 整数除法:算完再转小数,为什么已经丢掉了半个 一张完成率表把一半算成了零统计任务完成率时,完成数是一,计划数是二。查询能运行,得到的比率却是零,给结果乘一百之后仍然是零。问题通常出在两项都是整数,除法已经执行了整数运算;显示层多保留几位小数,只会把零写得更长,不... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Python re.fullmatch 校验:末尾多一个换行,为什么锚点仍然通过 一条看起来完整的校验漏掉了尾巴假设仓库标签要求两个大写英文字母、一条短横线和三位数字。你给模式两端加上起止锚点,测试普通标签一切正常,直到从剪贴板粘贴的标签末尾带上一个换行,仍然通过检查。这时不能只看返回对象是否存在... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Python JSON 严格读取:重复字段被覆盖之前,先把歧义拦下来 解析成功,未必代表输入没有歧义一份任务配置先写了重试次数二,后面又写了一次五。程序没有报错,最终只读到五,审核者却可能只注意到前面的二。此时问题不在字典查询,而在原始文本转换成字典时,重复字段的信息已经丢失,后续校验... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
SQLite LIKE 字面搜索:参数绑定之后,百分号和下划线仍然需要转义 用户输入文件名片段“报告_终稿”,搜索结果却出现“报告甲终稿”。即使查询使用了问号占位符,这个结果仍可能完全符合数据库规则:参数绑定确保输入作为数据传递,而 LIKE 会继续把数据里的下划线解释成单字符通配符。搜索框... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
SQLite UNIQUE 遇到 NULL:用部分唯一索引限制每个用户只有一个默认项 地址簿里每个用户可以保存多条地址,但最多只能有一个默认地址。有人会增加一个可空标记,再建立联合唯一索引,期待数据库自动理解“默认只能有一个”。问题在于,唯一约束比较的是被索引的值,它不会替应用推断哪类记录需要竞争同一... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Python urlencode 展开列表参数:doseq、空列表与字符串化要一起设计 为搜索服务生成请求时,一个筛选项可能选中多个标签。Python 字典里放一个列表很方便,但把字典直接交给 urlencode,并不会自动得到多个同名参数。是否展开由 doseq 控制;没有明确选择时,接收端可能读到列... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Python Base64 严格解码:字符合法之后,还要约定字母表与填充 上传接口收到一段编码字符串,解码成功并不一定说明输入格式符合协议。Python 的 Base64 默认解码会先丢弃不属于字母表的字符,再检查填充。因此,把异常捕获当作唯一的输入验收,有时会放过原本应该拒绝的标点与空白... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
JavaScript every 与 some:空数组通过了“全部合格”,业务真的允许吗 提交一张必须至少包含一条明细的表单,校验写成每条数量都大于零,空表单却顺利通过了。问题并不是 every 漏做了某次回调,而是“每个已有元素都满足条件”与“至少存在一个元素,并且全部满足条件”本来就是两个不同要求。e... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
JavaScript Date 按年月日创建:本地零点与 UTC 零点为什么不是同一刻 页面选择十月一日,保存成 ISO 字符串后却显示九月三十日,这不一定意味着数据丢了一天。一个年月日可以表达当地日历中的日期,而 Date 需要表示时间轴上的一个时刻。把当地零点换成 UTC 表示,日期部分完全可能落在... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Bash 双中括号的引号:同一个星号,为什么有时匹配整串有时只认自己 过滤名称时,把匹配模式存进变量是常见做法,但给变量补上双引号后,原本能匹配的文件名突然不通过了。这不一定是脚本写错引号,而是双中括号里的比较运算符允许右侧表达式承担不同职责:有时它是模式,有时它是字面文本。先写出问题... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读