这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
《MMO 服务器开发》7.3 网关的职责边界
网关是玩家看到的第一层,也是最容易被塞进玩法逻辑的一层:一旦它开始解析 payload、缓存血量、计算伤害,就再也拆不掉了。本节给 aegis 写一个只做四件事的 Gateway——准入、鉴权前置、限流、按命令号路由——并用一个「路由函数拿不到 payload」的签名,把边界从纪律变成机械约束。
posts
这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
网关是玩家看到的第一层,也是最容易被塞进玩法逻辑的一层:一旦它开始解析 payload、缓存血量、计算伤害,就再也拆不掉了。本节给 aegis 写一个只做四件事的 Gateway——准入、鉴权前置、限流、按命令号路由——并用一个「路由函数拿不到 payload」的签名,把边界从纪律变成机械约束。
同账号第二次登录,该不该踢掉旧连接?踢了之后,旧连接迟到的断开事件又会不会把新会话一起删掉?本节给 aegis 写 Registrar,把「先摘旧、后关旧、再通知」的顺序钉死,用 go test -race 复现那个最经典的顶号竞态,并讲清「踢人」与「迁移」两种语义的区别。
一个账号、一条连接、一份会话,三者一旦不同步就会出顶号误删、幽灵在线这类经典事故。本节给 aegis 写一张连接与账号的双向索引表:单锁版本、64 分片版本,以及顶号时「先摘旧、后关旧」的原子替换顺序,全部用 go test -race 真跑验证,并给出本机并发的实测数字。
用纯标准库 asyncio 写一个极简压测器(固定并发、固定请求数,统计 QPS/P50/P95/错误率),对第 8 章的并发受限服务跑 4 档并发。真跑显示 QPS 在并发 8 附近见顶(110→176 后不再涨),延迟却从 45ms 涨到 224ms,拐点清晰;再加请求超时后 QPS 会虚高而错误率飙到 87%,并给出容量规划余量。
成本优化三招:缓存命中即零模型成本、按难度路由分流、上下文瘦身。本节给路由写判定规则并真跑对比「全用强模型」与「按路由分流」:100 条请求(简单/复杂各半)总成本从 1.200 降到 0.738 美元、降到 0.61 倍,平均得分只掉 0.012,并强调任何降本改动都必须过第 12 章的评测兜底。
Agent 的延迟结构跟普通 Web 服务完全不同,大头在模型调用而非 CPU。本节给一次 run 的模型、检索、工具、序列化四个阶段分别计时,真跑打印各阶段耗时与占比表,再实测「同步阻塞拖垮异步服务」:在 async 路由里调同步 IO 会让并发 5 个请求的墙钟从 201ms 涨到 1029ms。
本文系统讲解目标检测与 YOLO 系列的工程落地,回答 anchor 与 anchor-free 怎么选、NMS 与置信度阈值怎么调、mAP 指标怎么读等实战问题。覆盖两阶段与单阶段范式、IoU 与 CIoU 损失、NMS 与 Soft-NMS、PR 曲线与 mAP@0.5:0.95,并给出 YOLOv8 推理与手写 NMS 两段可运行代码,附模型对比表、权衡与常见坑。
说明 echo-client-lab 为什么把可运行性分成 L1 纯逻辑、L2 进程内端到端、L3 本地服务三级,给出可运行的 TypeScript 分级器、本机 Node 26 的真实测试输出、代码块抽取与逐字节校验流程,并明确真机性能与真实浏览器渲染不在承诺范围内,避免把示例当成实测。
本文梳理卷积网络的核心概念与经典骨干架构,回答卷积核与感受野怎么算、参数量与 FLOPs 如何评估、ResNet 到 ConvNeXt 该怎么选等工程问题。覆盖输出尺寸公式、深度可分离卷积、残差连接、复合缩放、归一化与激活,并给出加载骨干统计参数量与手算 FLOPs 两段可运行 PyTorch 代码,附各骨干参数量与 ImageNet 指标对比表及权衡与常见坑。
从 ADR-003 到 ADR-007 给出 arch-lab 卷一的五份具体决策:存储选型、下单同步与履约异步的边界、模块间端口通信、outbox 事件持久化、单部署单元与模块开关灰度;每份都有状态、约束、备选否决理由、正负后果和重评触发条件,并把登记表编码成可校验的 Go 包与表驱动测试。
本文系统讲解传统特征提取与图像匹配,回答 SIFT、ORB、AKAZE 该怎么选、BFMatcher 与 FLANN 怎么配、ratio test 与 RANSAC 如何剔除误匹配等实战问题。覆盖 Harris 角点、ORB 二进制描述子、KNN 匹配与 Lowe 比值检验、单应矩阵与图像拼接,并给出 ORB 与 SIFT 两段可运行匹配代码,最后对比深度学习特征方案并总结权衡与常见坑。
把「回声」客户端收敛成页面栈、请求去重与有上限缓存三个最小部件,先回答「状态放在哪」而不是「用哪个状态库」,给出可运行的 TypeScript 模型、快照恢复与真实测试输出,并附一份状态归属决策记录,说明第一个决定如何约束后面所有架构选择。
滚动更新最容易丢请求的三个时间差:SIGTERM 与 endpoint 摘除不同步、排空期太短、SIGKILL 提前到场。本节用 preStop 钩子与 terminationGracePeriodSeconds 补齐时间预算,实测在途请求在收到 SIGTERM 后仍完整跑完并返回 200。
把 TaskHub 的配置与镜像解耦:用 ConfigMap 注入非敏感配置、用 Secret 管密钥(并说清 base64 不等于加密),用 HPA 让副本数跟着 CPU 与自定义指标自动伸缩;实测环境变量与文件挂载两种注入方式都能被进程读到。
把 TaskHub 的镜像部署进 Kubernetes:用 Deployment 管副本、Service 做稳定入口、Ingress 接外部流量,并逐个字段解释三类探针的语义与取舍,实测探针端点在正常与排空两种状态下分别返回 200 与 503。
本文系统讲解 OpenCV 4.x 的图像基础与预处理,回答图像在内存中怎么表示、色彩空间怎么选、几何变换用哪种插值、直方图与 CLAHE 如何提升对比度等实战问题。覆盖 BGR/RGB 陷阱、resize 插值方法、仿射与透视变换、滤波去噪、Canny 边缘与形态学,并给出完整预处理管线、直方图可视化与 PyTorch 张量衔接三个可运行示例,最后总结权衡与常见坑。
本节把不可信输入单独拎出来讲。先定义信任边界划在哪里,再讲透「解析而非校验」这条原则与品牌类型如何把 unknown 变成领域类型,然后逐一过 HTTP 请求、环境变量、第三方 API、数据库四条真实边界,最后深入原型污染与深合并的攻击面、禁止 as 跨边界的 lint 配置。读完你能为自己的服务画出信任边界图,并在每条边界上写出可测试、可穷尽的解析代码。
本节讲数据写出再读回这条边界上类型如何失真。先说清 JSON.stringify 与 JSON.parse 在类型上的不对称,再列出 Date、BigInt、undefined、NaN、Map、循环引用的失真清单与报错,然后用编解码器 Codec 把线上格式与内存类型显式分开,讲透版本迁移、replacer/reviver 的用法与二进制格式取舍。读完你能为持久化与消息协议设计出类型安全的边界。
本节讲运行时校验的第一道防线:类型守卫与验证库。先说清 is 守卫的声明本质与它并不能真正校验的事实,再拆解手写守卫在嵌套对象、数组、穷尽性检查上的漏判与误判,然后从零实现一个以 schema 为唯一事实来源的验证器,讲透 parse 与 safeParse 的分工和 InferOutput 类型推导的原理。读完你能为项目选对守卫写法,并看懂主流验证库的类型推导机制。
本节把「部署完成」之后的那段时间当成发布本身的一部分:先给出冒烟、合成监控、真实用户指标、业务指标四层验证的具体做法,讲清指标为什么必须带版本标签才能对比新旧;再把回滚拆成镜像、流量、开关、配置、数据五类对象,给出各自的耗时与代价,并说明数据库不可回滚时该向前修复还是恢复备份;最后落到自动回退门禁与无责复盘。读完后你能给发布配上一套可验证、可止损的收尾流程。