这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
《MMO 服务器开发》7.1 会话表与连接管理
一个账号、一条连接、一份会话,三者一旦不同步就会出顶号误删、幽灵在线这类经典事故。本节给 aegis 写一张连接与账号的双向索引表:单锁版本、64 分片版本,以及顶号时「先摘旧、后关旧」的原子替换顺序,全部用 go test -race 真跑验证,并给出本机并发的实测数字。
posts
这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
一个账号、一条连接、一份会话,三者一旦不同步就会出顶号误删、幽灵在线这类经典事故。本节给 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 两段可运行代码,附模型对比表、权衡与常见坑。
本文梳理卷积网络的核心概念与经典骨干架构,回答卷积核与感受野怎么算、参数量与 FLOPs 如何评估、ResNet 到 ConvNeXt 该怎么选等工程问题。覆盖输出尺寸公式、深度可分离卷积、残差连接、复合缩放、归一化与激活,并给出加载骨干统计参数量与手算 FLOPs 两段可运行 PyTorch 代码,附各骨干参数量与 ImageNet 指标对比表及权衡与常见坑。
本文系统讲解传统特征提取与图像匹配,回答 SIFT、ORB、AKAZE 该怎么选、BFMatcher 与 FLANN 怎么配、ratio test 与 RANSAC 如何剔除误匹配等实战问题。覆盖 Harris 角点、ORB 二进制描述子、KNN 匹配与 Lowe 比值检验、单应矩阵与图像拼接,并给出 ORB 与 SIFT 两段可运行匹配代码,最后对比深度学习特征方案并总结权衡与常见坑。
滚动更新最容易丢请求的三个时间差: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 类型推导的原理。读完你能为项目选对守卫写法,并看懂主流验证库的类型推导机制。
本节把「部署完成」之后的那段时间当成发布本身的一部分:先给出冒烟、合成监控、真实用户指标、业务指标四层验证的具体做法,讲清指标为什么必须带版本标签才能对比新旧;再把回滚拆成镜像、流量、开关、配置、数据五类对象,给出各自的耗时与代价,并说明数据库不可回滚时该向前修复还是恢复备份;最后落到自动回退门禁与无责复盘。读完后你能给发布配上一套可验证、可止损的收尾流程。
本节讲清「代码能随时回滚、数据库不能」这个不对称性带来的全部约束:先用 expand-contract 把破坏性结构变更拆成向前兼容的多步,再给出大表回填的分批限速写法与迁移在流水线中的正确位置,最后系统对比蓝绿、金丝雀、滚动与功能开关四种灰度形态,并给出灰度期的指标判定与契约兼容要求。读完后你能设计一条可灰度、可回滚的发布路径。
本节把 TypeScript 服务从「本地能跑」推进到「可重复交付」:先用多阶段 Dockerfile 拆开依赖层、构建层与运行层,讲清镜像为何能从 1.2GB 降到 180MB;再给出分层清晰的 CI/CD 流水线,覆盖类型检查、测试、镜像构建、签名与制品晋级;最后落到缓存、非 root 运行、健康检查与供应链加固这些易踩的坑。读完后你能独立写出从提交到上线的自动化流水线。
拆开 process-aot 构建期的 AOT 处理:从 ProcessAotMojo 到 SpringApplicationAotProcessor、ApplicationContextAotGenerator 的调用链,讲清 target/spring-aot 下生成的源码与 native-image 配置,以及 AotDetector 如何让启动跳过反射,并给出可核实的扩展点清单。
性能优化最大的浪费是优化了不是瓶颈的地方。本节建立「先测量再优化」的方法论:如何采集吞吐、P95/P99、错误率、GC 与 CPU 基线,用 JFR、async-profiler、jstack 与 EXPLAIN ANALYZE 定位瓶颈,并给出一份症状到下一步的排查表。
本节讲透 Flyway 脚本本身:V{版本}__{描述}.sql 命名规范里那个常被写错的双下划线、整数与时间戳两类版本号怎么选、版本化迁移与 R__ 可重复迁移的适用场景,以及「脚本一旦执行就不能改」背后的 checksum 校验机制与真实报错。针对社区版没有 undo 的现实,给出前滚修复与备份的应对方式,并完整演示 V1 建表、V2 加字段、R__ 建视图。