posts

文章归档

PlumePHP 全站文章的归档入口,按时间倒序汇总各专题的技术文章,并提供按主题浏览的专题分类入口。

这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。

全部文章

全部文章 Golang Game Minigame Saas Rust Python Java 游戏开发 客户端开发 GameDev
scala

Scala CLI 与工具链现代化:指令声明、打包发布与 CI 集成

Scala CLI 把「单文件脚本、依赖声明、编译运行打包」压进一条命令,用指令注释替代构建文件,让脚本、原型与小型工具不再需要完整的项目结构与繁琐的构建配置。本文讲清指令声明与依赖解析机制、与 sbt 的职责边界、测试与多文件项目的目录布局、打包与发布方式,以及持续集成与工具链迁移的实际路径、常见坑与规避手段。

9 分钟阅读
Scala Scala CLI 构建工具
scala

持久化与事件溯源:journal、快照与 CQRS 读模型

事件溯源把系统状态定义为事件序列的折叠结果:写模型只追加不可变事件,读模型由投影派生,命令查询职责分离因此成为它的自然搭档。本文讲清持久化 actor 的命令与事件处理模型、日志与快照如何协作、投影与读模型的构建方式、事件版本演进与兼容策略,并给出恢复性能调优与日常运维的实践要点。

10 分钟阅读
Scala 事件溯源 CQRS
scala

JSON 编解码与性能:circe 派生、jsoniter-scala 代码生成与选型

JSON 编解码是服务边界上最频繁的一次数据转换,它的性能与健壮性直接决定接口的吞吐和容错能力。circe 用代数数据类型把解析、派生与错误路径都建模成纯函数,jsoniter-scala 则用编译期宏生成无反射的编解码器换取吞吐。本文对比两者的模型与代价,给出派生与自定义的写法、性能实测方法,以及版本演进与向后兼容的实践路径。

10 分钟阅读
Scala circe JSON
scala

fs2 流处理实战:Stream、Pipe 与背压模型

流处理的难点从来不在「怎么读数据」,而在背压、并发、错误恢复与资源释放这几件相互牵制的事。fs2 把流建模成惰性的拉取式值:下游不拉取,上游就停,背压因此不是需要调参的配置项,而是模型本身的性质。本文讲清 Stream 与 Pipe 的语义、构造与组合子、并发原语的取舍、错误处理与重试策略、与文件与消息队列的集成,以及有状态聚合与窗口的实现方式。

10 分钟阅读
Scala fs2 流处理
scala

Cats Effect 资源管理与生命周期:Resource 组合、释放顺序与连接池落地

资源管理是函数式程序里最容易被忽视的一环:文件句柄、数据库连接、线程池、后台任务都有明确的获取与释放时机,手工写在 finally 里一旦遇上取消、异常或嵌套组合就会漏。本文讲清 Cats Effect 的 Resource 抽象如何把获取与释放绑定成可组合的值,覆盖嵌套组合时的释放顺序、作用域与延迟分配、与手工清理的取舍边界,并给出连接池、后台任务与优雅停机的完整落地代码和常见陷阱。

9 分钟阅读
Scala Cats Effect Resource
scala

Akka 到 Apache Pekko 迁移:许可证、包名与生态替换的完整路径

Lightbend 从 Akka 2.7 起把许可证换成商业源码许可,生产环境需要付费,Apache Pekko 因此成为 Apache 协议下的事实续作。本文讲清许可证变更的真实影响,逐项给出依赖坐标与包名替换、配置前缀与序列化绑定改写、生态模块对应关系,并讨论按通信边界切分的渐进迁移、集群跨版本不兼容的硬边界,以及灰度发布与回滚方案。补充了迁移验证清单。

11 分钟阅读
Scala Akka Pekko
mmo

《MMO 服务器开发》18.3 进入玩法卷

卷一交出的七个零件——会话表、路由表、Actor 邮箱、定时器、幂等窗口、同步模型、权威校验——到了卷二《单服架构与玩法系统》手里会长成什么。本节给出「零件 → 卷二章节 → 用途」的交接映射表,讲清为什么玩法必须先有这套地基,把卷二不写的跨服、压测、运营划给卷三与卷四,最后把整张契约编码成可测试的 Go 类型。

12 分钟阅读
MMO 游戏服务端 网络编程
mmo

《MMO 服务器开发》18.1 卷一回顾:我们造出了什么

卷一 17 章各造了一件零件,却从没按一条主线串起来看过。本节把帧格式、会话表、路由、时间轮、Actor 邮箱、幂等窗口、同步模型与权威校验按依赖顺序排成一张「零件 → 文件 → 验收方式 → 实测结论」总账,逐章交代它解决了什么问题、留下了什么接口、下一章为什么需要它,并用五条贯穿全卷的伏笔说明这些零件如何拼成一个可裁决的世界。

11 分钟阅读
MMO 游戏服务端 网络编程
mmo

《MMO 服务器开发》16.1 协议 fuzz 与畸形包

长度字段来自网络,是不可信输入:一个声明「长度 = 4 GiB」的畸形包就能让服务端按声明预分配巨量内存。本节用 Go 原生 testing.F 给 internal/proto 的帧解析写一个 fuzzer,覆盖长度越界、截断、超长与 flags 组合,讲清「解析器必须对任意字节序列都不 panic、不无限分配」,并给出本机 5 秒百万级执行的实测。

6 分钟阅读
MMO 游戏服务端 网络编程
cocos

《Cocos 游戏开发高级编程》8.3 多线程与 Worker

主线程为什么是瓶颈、哪些活能挪出去、挪出去要付什么代价。本节讲清 Worker 的数据边界——结构化克隆的复制成本与 Transferable 的零拷贝,用可跑的纯 TS 代码量化两者差异;说明 cc.d.ts 并不导出 Worker,必须走平台全局对象并做特性检测;最后给出分片计算任务与并行化的工程判断。

8 分钟阅读
Cocos Cocos 游戏开发高级编程 TypeScript
cocos

《Cocos 游戏开发高级编程》8.2 原生插件与三方 SDK 接入

把《方块冲刺》接一个三方 SDK 的完整链路走一遍:先看 Android/iOS 原生工程里插件该落在哪,再分别写 Java 与 Objective-C 桥接类,然后用 TypeScript 门面包一层平台适配,让业务代码只见接口不见平台;重点讲清原生结果回传给 JS 时的线程约束、回调注册与生命周期坑,最后算一笔插件维护成本的账。

7 分钟阅读
Cocos Cocos 游戏开发高级编程 TypeScript
cocos

《Cocos 游戏开发高级编程》8.1 原生平台与 JSB

从原生构建产物入手,讲清 Cocos Creator 3.8 在 Android/iOS 上如何把 JS 引擎嵌进 C++ 宿主,JSB 绑定怎样把 cc 的类暴露给脚本层;用 cc.d.ts 实测划出「平台无关 API」与「原生运行时注入对象」的边界,讲对 sys.isNative 与 sys.platform 的用法,量化反射式原生调用的成本,给出下沉原生的工程判断。

8 分钟阅读
Cocos Cocos 游戏开发高级编程 TypeScript