posts

文章归档

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

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

全部文章

全部文章 Books game Java Indie golang 客户端开发 Minigame Saas rust Python
books

《Java 并发编程·线程与内存模型》12.3 分治拆分、阈值与异常

阈值同时决定任务数和叶子成本:切太小,任务对象与调度开销吃掉收益;切太大,叶子里的插入排序退化成平方复杂度。本机 100 万元素归并排序实测,阈值 1 是 140ms、16 是 21ms、65536 是 1629ms,顺序版 105ms。文末用实测输出说明异常如何跨线程包装,以及 cancel 为什么停不下正在跑的叶子。

9 分钟阅读
书稿 Java 并发编程
books

《Java 并发编程·线程与内存模型》12.2 并行流的边界与 commonPool 陷阱

parallel() 只多了一个方法调用,却把用哪个池、拆多细、有没有副作用三件事都藏了起来。本机实测:同样 20 个 10ms 任务,commonPool 空闲时 31ms,被阻塞任务占满后 276ms;1000 个元素的并行流比顺序流慢 2.49 倍;36 个阻塞任务在 commonPool 上 1231ms,换成 16 线程的自定义池 916ms。

10 分钟阅读
书稿 Java 并发编程
books

《Java 并发编程·线程与内存模型》11.3 调度漂移、幂等与补偿

固定频率和固定延迟的分母不同:前者对齐计划时刻,后者从执行结束开始算。本机实测同一个 200ms 周期、80ms 耗时的任务,fixedRate 六次的落后量稳定在 1–9ms,fixedDelay 则从 82ms 一路涨到 444ms;单次执行超过周期时,fixedRate 不丢弃欠账而是背靠背补跑。文末给出幂等键与补偿的落地写法。

11 分钟阅读
书稿 Java 并发编程
books

《Java 并发编程·线程与内存模型》11.1 Timer 的缺陷与 ScheduledThreadPoolExecutor

Timer 只有一条线程、一个异常就能让它彻底停摆,还把相对延迟换算成墙上时钟的绝对时刻。三个实验对照:慢任务把后续任务从 50ms 推到 317ms;抛异常后 Timer 线程死亡、700ms 内只跑了 1 次,而 STPE 里健康任务照跑 8 次;字节码显示两者分别取 currentTimeMillis 与 nanoTime。

9 分钟阅读
书稿 Java 并发编程
books

《Java 并发编程·线程与内存模型》10.2 队列与拒绝策略

队列满、线程到顶之后发生什么,取决于拒绝策略。本节实测四种 JDK 拒绝策略在同一场景下的不同结果,解释 CallerRunsPolicy 如何在调用线程上形成反压、它在什么条件下会失效,并用无界队列实验证明 max 参数如何被架空,最后给出有界队列容量的推导方法与可记录指标的自定义拒绝策略。

11 分钟阅读
书稿 Java 并发编程
books

《互联网产品的服务端架构·内容、社交与实时互动》8.1 会话、消息与序号

从两个客户端同时发消息却看到不同顺序的事故写起,说明单聊会话 ID 如何由双方 ID 排序后哈希生成,比较会话内序号与全局序号两种方案,给出消息校验、按发送时间与 ID 分配序号的 Go 实现、连续序号测试和真实运行输出,并列出消息模型设计的常见错误。

8 分钟阅读
书稿 互联网产品 服务端架构
books

《互联网产品的客户端架构·规模化与架构演进》2.3 多品牌与多业务复用

四个品牌共用一套组件库,一次全量合并后,A 品牌的结算主色出现在 B 品牌的收银台,排查发现是品牌包被当成全局配置加载。多品牌复用的难点不是覆盖,而是边界与隔离。本节用 TypeScript 模块演示覆盖顺序、业务包与品牌包的权限边界、同层冲突检测和复用度计算,并给出多品牌接入前的验收判据。

8 分钟阅读
书稿 互联网产品 客户端架构