TextEncoder.encodeInto 的容量边界:还剩三个字节,为什么表情一个字节也没写入 把字符串写进固定容量的Uint8Array时,缓冲区还剩空间,并不表示编码器会把下一个字符切开塞进去。encodeInto要为一个码点写入完整UTF-8序列;如果剩余容量不足,就在该码点之前停止,并报告本次读了多少输... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
JavaScript Set.intersection 的顺序:只加一个无关成员,交集为什么倒过来了 筛选可选标签时,左侧Set按页面希望的顺序保存blue、red,右侧保存允许出现的red、blue。调用intersection后,看起来保住了左侧顺序。后来只向左侧加入一个右侧根本没有的green,交集仍是那两种颜... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Python slice.indices:反向切片已经标准化,为什么重新组成切片却变成空列表 实现自定义序列时,slice.indices能把省略值与越界边界整理成三个整数。顺手把结果重新塞回slice,看似得到了等价切片,反向遍历却变成空列表。原因是这三个整数已经进入标准化索引空间,再当作原始切片参数解释,... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Python sqlite3 executescript:脚本后来报错,为什么 with 前面写入的记录仍然留下 导入程序先执行一条INSERT,再把几条SQL交给executescript。外面已经套with db,脚本最后也报错,查询却发现前两条记录都在。不能只看缩进判断事务范围:执行入口本身可能先提交已有事务。本例在Lin... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Python 特殊方法查找:实例的 __len__ 已改成九十九,为什么 len 仍然返回三 测试里给一个对象临时补上__len__,直接调用能返回九十九,业务代码里的len却仍得到三。两次调用看似只是写法不同,实际上没有沿同一条属性查找路径。给实例打补丁前,要先确认调用方使用的是普通点号访问,还是语言协议。... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Python __set_name__ 的调用时机:字段后来挂上类,为什么仍然不知道自己的名字 给表单字段或模型字段做自动注册时,常用__set_name__接收所属类和字段名。把字段写在类体里可以正常保存数据,改成类创建后赋值却报没有名字,问题通常出在通知时机:普通属性赋值不会重新运行类创建过程。下面在Lin... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
JavaScript Object.groupBy 的键转换:两个不同对象,为什么被分进同一组 按owner对象给任务分组,回调返回了两个不同的owner,Object.groupBy却只产出一组。原因是回调返回值会转换成对象属性键:两个普通对象在本例都变成同一个字符串[object Object],区别在分组... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Node.js 异常断言:async 函数写了 throw,为什么 assert.throws 仍说没有异常 给一个async函数写测试,函数第一句就throw,assert.throws却报告缺少预期异常。关键不在错误出现得够不够早,而在调用接口:async函数把失败表达为返回Promise的拒绝,同步异常断言不会替你等待... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Bash mapfile 的分隔参数:写了两个冒号,为什么仍按每一个冒号切开 输入A::B::C,希望按双冒号分成三项,把-d参数写成两个冒号以后,却读到五项,其中还有空字符串。Bash的mapfile只用delim参数的第一个字符决定记录终点,不会把整段参数解释成多字符分隔串。下面使用带-d... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Bash return 的八位状态:明明返回 256,为什么 if 却进入成功分支 把函数里算出的数量写成return 256,调用后if却认为成功,问号参数也只剩零。Bash的return传递的是命令退出状态,不是任意范围的数值结果。给它一个整数以后,调用者看到的是最低八位,原来的完整数字已经不能... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读