这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
《AI Agent 开发入门》17.1 库的对外接口
本节把 minagent 从「一堆模块」整理成「一个库」:用 __init__.py 收敛出稳定的公开 API 面,用 __all__ 与下划线前缀划清公开契约与内部实现的边界,并定下 SemVer 版本策略——破坏性变更何时允许、哪些名字属于契约。最后用 import minagent as ma 真跑一段只碰公开面的稳定性示例。
posts
这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
本节把 minagent 从「一堆模块」整理成「一个库」:用 __init__.py 收敛出稳定的公开 API 面,用 __all__ 与下划线前缀划清公开契约与内部实现的边界,并定下 SemVer 版本策略——破坏性变更何时允许、哪些名字属于契约。最后用 import minagent as ma 真跑一段只碰公开面的稳定性示例。
从「回声」发现页首屏同时发出的十七个请求出发,把并发上限、优先级、取消、总预算与指数退避放进同一张调度表,给出可运行的 TypeScript 调度器与九个注入手动时钟的确定性测试,说明去重键、超时竞速与协作式取消的边界,并复盘一次无上限重试把弱网彻底拖垮的事故。
从 library 项目「换台电脑就跑不起来」的真实问题出发,讲清字节码与 JVM 如何提供跨平台能力,以及这套机制在版本、原生库、编码与时区上的真实边界;再把 Java 的生态、工具链、向后兼容和启动、内存、样板代码的代价放在一起,帮读者判断它是否适合自己的项目。
库存模块的迁移不是把代码搬到新目录,而是让同一份库存始终只有一本账。本篇用 arch-lab 的 SKU 分桶路由、读路径双跑和可执行的退出判据,说明绞杀者模式落到有状态资源上时如何避免双扣、如何回退,以及什么时候才允许删掉旧路径,并给出可运行的 Go 实现与测试。
《Spring Boot 高级》全书导航页:说明本卷面向已经能独立交付服务、想理解框架内部机制的读者,给出三条学习路径与一份八周计划,讲清四个部分之间的依赖关系,并按部分列出 11 章 33 节的完整索引,每一节都配一句话说明,另含面向排查场景的常见问题速查表,方便按需跳读与随时查阅。
把一次重复下单拆到 API 幂等键中间件、领域支付守卫和消息 Inbox 三层,明确每层的去重键、承诺与不负责的部分;给出可重放的 HTTP 中间件、按 ProviderRef 幂等的 MarkPaid、消费者去重实现,以及四组重复请求测试的真实输出。
用订单域的 OrderPlaced、ReserveInventory 和传输信封说明事件、命令、消息三者的语义差异,给出 Kind 校验、单处理者命令与多订阅者事件的 Go 实现,以及七组表驱动与路由测试的真实输出,并列出把事件当命令、把命令当广播的四类误用后果。
把 arch-lab 下单链路拆成库存预留、支付授权、订单落库三段,从 800ms 总预算拆出 200/400/100ms 子预算,说明超时如何逐级收缩、失败如何分类传播;给出可重试与不可重试边界、补偿策略、五组假端口测试的真实输出,以及支付结果不应留在同步响应里的 ADR。
队长掉线了,谁带队进副本?本节把「掉线」与「退队」拆成两件事:掉线只灭在线标志、保留座位等重连,超时未回才回收;队长一掉线立刻按加入顺序把队长位交给下一位在线成员,且重连后不归还。全部用 go test -race 真跑,并讲清它与卷一顶号、重连的衔接。
上一节把入口控制收成了一处判断,但「先 Count 再 Add」这个写法本身在并发下就是错的:两个邀请可能都看到空位,把队伍撑到 5 人。本节把满员判断与写入压进同一个临界区,再把「满员校验 + 匹配锁定」也做成原子操作,用 go test -race 复现并证明修复。
副本、排位、世界 Boss 都要先问一句:这个玩家能不能进这支队伍。本节把队伍建成一个带生命周期状态机的服务端对象,用状态、队长身份、成员集合三道闸把入口控制钉死,并用 Go 标准库写出可直接 go test 的 L1 实现,再把每道门逐一撞开。
好友关系是 MMO 里最容易不一致的共享状态:它是双向的,一次只写一半就会留下「半边关系」。本节把关系图建成有向边、把双向一致写死成不变量、用全局唯一的 opID 幂等窗口挡住重发,并给出半边检测与补偿的实现,呼应卷一的幂等窗口与顺序保证,让关系一致从口头约定变成机器可验证的断言。
敏感词与限速是聊天管线的两级治理:前者挡内容,后者挡频率,两者都必须便宜到能挂在每条消息的同步路径上。本节用 AC 自动机实现一次扫描命中所有敏感词、用每玩家每频道的令牌桶限速,再把禁言、限速、过滤串成一条顺序固定、可 go test 的三级管线,并给出本机实测的匹配开销对照。
聊天是 MMO 里最容易被低估的系统:频道种类多、投递范围各异、发言资格还会随等级、队伍与活动变化。本节把频道建模成数据、把投递范围收敛成一份最小世界视图、把权限判断写成纯函数,用三个能 go test 通过的 L1 实现讲清频道模型与权限的边界。
每日任务几点重置,是整条时间链上最容易被时区坑掉的地方:主机在哪个时区、夏令时怎么切、时钟被 NTP 往回拨一下会不会重置两次。本节把「今天」钉在一个固定时区上,用「日键」而不是时间减法判断跨天,并让重置跟踪器只向前触发,最后用真跑的测试覆盖边界、周界与时钟回拨。
战斗里杀一只怪、背包里捡一件东西,凭什么变成任务进度条上的 +1?本节把玩法事件收敛成一个统一的 Event 结构,让进度服务只认「类型、目标、数量」三元组,再演示计数封顶、就绪转换,以及用请求序号做重传去重,保证同一条上报不会把进度加两次。
任务表里一条前置关系画错,整条任务线就会锁死:玩家接了 A 却发现要先完成 B,而 B 又要求先完成 A。本节把任务配置建成有向图,用 Kahn 算法做拓扑排序,用三色 DFS 把设计者画错的那一圈环精确指出来,再用一组真跑的 Go 测试证明正常表能排出合法顺序、环表能被定位到具体节点。
深链是外部世界进入客户端的唯一入口,也是最容易把用户带到空白页的地方。本节给出一个带版本、时间戳与状态白名单的 TypeScript 深链编解码器,按格式、时效、路由、权限的顺序恢复,并为过期、下线、坏状态与未登录分别设计兜底,最后复盘一次白屏事故。
《游戏引擎实现原理》卷三《子系统与工具》导航页:在卷一《引擎内核》与卷二《渲染引擎》之上,用 TypeScript 从零实现让《微光岛》活起来的资源管线与流式、动画与蒙皮、物理集成、音频、输入、脚本绑定与热重载,以及编辑器四章(数据模型、命令栈、属性面板、视口与资产)。讲清本卷定位、与卷一卷二的关系、L1–L4 可运行性口径,按三个部分列出 33 节索引,另含阅读路径、周计划与常见问题速查。
跳跃输入总被『吃掉』?问题多半不在玩家手速,而在手感逻辑。本节实现跳跃缓冲、土狼时间与输入延迟补偿三件套,三者全部是纯时间逻辑,可在 Node 里逐帧喂入真跑,并说明真正的『手感』数值调参仍需在浏览器中手动验证、命令行不可复现,只有逻辑部分可自动化测试。