Node.js 十六进制入口校验:Buffer.from没有报错,为什么尾部字节已经不见了 接口接收一个十六进制标识,代码用Buffer.from转换成字节,没有抛出异常,于是继续查询。问题是,转换函数可能只保留有效前缀;提交的标识与实际使用的字节已经不同。对需要完整输入的场景,必须先定义允许的文本,再执行... yunqueblog/ 技术教程/ 2026-10-03/ 2 阅读
Python urlsplit 的端口属性:地址已经拆分成功,为什么读取 port 才抛出异常 把urlsplit放进try里没有报错,就记录“网址校验成功”,后续代码访问parts.port却突然出现ValueError。这不矛盾:拆出URL的几个文本组件,与把端口转换成受范围约束的整数,不一定在同一个时点发... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Python -O 会移除 assert:本地能拦住的非法输入,为什么换个启动选项就通过了 把 assert quantity > 0 放在入口,看起来可以拒绝负数;但用 python -O 启动时,这项断言会被移除,原本非法的值可能继续进入后面的计算。需要始终成立的外部输入检查,应该显式判断并抛出约定的异... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Python 数字字符判断:isdigit 已经通过,为什么 int 仍然不接受上标二 数量输入先通过 isdigit,再交给 int,上标二却在第二步报错。原因是“字符属于数字类别”和“整个字符串符合整数语法”回答不同问题。Unicode 还收录了分数、上标以及多种文字系统里的数字,三个常见判断方法的... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Python match 的裸名称:常量已经定义,为什么 case 仍把任意输入都接住 把状态路由从 if 改成 match 时,程序员常把 READY = "ready" 放在函数里,然后写 case READY。看起来是在引用已有常量,实际却会把收到的值绑定给 READY。就算输入是 "broken... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Python literal_eval 解析边界:能读出列表,为什么算不出一加二 先确定你需要读取哪种文本一份内部小配置写着括号、列表和 None,看起来像 Python 对象。把它读回数据时,ast.literal_eval 可以识别一定范围的字面量与容器结构,但它不是一个通用表达式计算器。名字... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Python re.fullmatch 校验:末尾多一个换行,为什么锚点仍然通过 一条看起来完整的校验漏掉了尾巴假设仓库标签要求两个大写英文字母、一条短横线和三位数字。你给模式两端加上起止锚点,测试普通标签一切正常,直到从剪贴板粘贴的标签末尾带上一个换行,仍然通过检查。这时不能只看返回对象是否存在... yunqueblog/ 技术教程/ 2026-10-01/ 2 阅读
Python Base64 严格解码:字符合法之后,还要约定字母表与填充 上传接口收到一段编码字符串,解码成功并不一定说明输入格式符合协议。Python 的 Base64 默认解码会先丢弃不属于字母表的字符,再检查填充。因此,把异常捕获当作唯一的输入验收,有时会放过原本应该拒绝的标点与空白... yunqueblog/ 技术教程/ 2026-10-01/ 2 阅读
Bash 的 08 为什么不能直接算:先验证十进制,再处理前导零 补零展示和算术语法不是一回事脚本从表单或文件拿到月份、重试次数等文本时,常遇到前面补零的数字。显示为零八不代表 Bash 会按十进制八处理:在算术表达式中,以零开头的整数常量按八进制解释,因此零一零得到八,包含八或九... yunqueblog/ 技术教程/ 2026-10-01/ 4 阅读
JavaScript Object.hasOwn 与 in:字段属于对象,还是来自原型链 读取得到一个值,不代表调用者填写了字段某个配置对象把默认重试次数放在原型上,调用者自己没有提交重试字段。读取属性仍能拿到默认值,in 也返回真。如果接口要求“只接受调用者明确提供的字段”,这两个结果都不足以证明字段属... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读