MUNDERDIFFLIN / LEARN
CHAPTER 15
第 15 课 · 状态与工作区18 分钟阅读深入

真正的状态设计问题不是“存哪里”,而是“冲突时听谁的”

用 authority、durability、scope 与 recovery 四个维度拆解 localStorage、config、SQLite、Hive 文件和进程内状态。

本课核心问题页面 cache、SQLite 与文件记录不一致时,哪个值覆盖哪个?
学完你能
  • 为状态写出 authority matrix。
  • 设计冷启动与崩溃恢复顺序。
建议先学
01
四维判断

先判断 scope 与 authority,再选择存储

一个字段是否持久化只是第四个问题。更早的问题是它属于组件、窗口、用户还是工作区,谁可以修改,以及需要从何恢复。

像财务账:便签、报表缓存和总账都可能出现同一个数字,但只有总账能裁决。

02
冷启动

启动水合是一场有顺序的 reconciliation

Main 先读取 config/DB/协议文件建立可用事实;Renderer 再加载自己的偏好与 cache;随后通过 IPC snapshot 校正陈旧副本。顺序反过来会闪现或复活旧状态。

  • 01默认值只在‘不存在’时填充,不能覆盖已损坏但可诊断的数据。
  • 02schema migration 在业务读取前完成。
  • 03UI cache 显示后要接受权威 snapshot 校正。
  • 04孤儿 session/进程需要重启时 reconciliation。
03
恢复表

为每个 store 写下:丢了、旧了、坏了分别怎么办

localStorage 可清空重建;config 损坏通常要保留备份并回退;SQLite 需要迁移/完整性策略;Hive 文件需要原子写、版本与协议级恢复。

ARCHITECTURE NOTE

‘可以重新生成’要写出从哪个权威源生成,否则只是愿望。

LESSON CHECKPOINT

能用自己的话回答核心问题了吗?

每个事实要有一个权威 owner,其他副本必须声明是 cache、mirror 或 index。