← 完整学习路线

UNIT 75 / 78 · W12-2

系统设计题从四个状态量开始

本单元预计 4 核心小时。可以分成多个学习时段,按完整小节推进;停下来时留下输入、命令、结果和下一步。

时间包含阅读、编码与检查,是学习预算而非期限。打开此页只保存阅读位置,不代表通过验收。

01 / READ

先知道自己在观察什么

TCP 字节流、分包、超时与背压 →

重新画发送偏移、分帧状态、总deadline与下游容量,按这些量审查系统设计答案。

先备不清楚时,沿章节入口补读;不要依赖翻过页数判断进度。

02 / PREDICT & RUN

先留下自己的预测或独立尝试

把完整loopback代码分成建立/连接完成/发送/读取四段,运行并记录只测了本机TCP行为。

TCP loopback:非阻塞连接与截止时间读取 →
源码下载与编译入口

下载到自己的练习目录。按本节给出的完整命令编译;多文件与driver要求见原任务。需要时查阅文件保存与编译操作 →

24-b.cpp

先保存预测,再核对正文标明的预期或诊断。完整构建、多文件与设备实验按原任务命令执行。

03 / CHANGE ONE THING

通过一个变动看清原因

在副本把读取窗口改为1,输入仍abcdef,保持同一绝对deadline和部分I/O处理。

修改后应观察到什么

累计仍为abcdef,正常EOF结束;读取分块变化不改应用消息语义。

04 / DO IT YOURSELF

换一组条件,独立解决

独立回答‘接收长度前缀读数并交给有界求和队列’:只写协议、状态机和接口,不扩成新的网络服务项目。

用这些条件检查自己的实现

  • 覆盖零长度、超长、截断、关闭及慢速对端;每次重试不重置总预算。
  • 队列到高水位暂停读,处理完成后恢复;资源结束先保证访问者退出。
05 / EXPLAIN & CHECK

用证据决定是否进入下一单元

  1. poll显示可写为什么不等于非阻塞connect已经成功?
  2. 关闭、取消与排空的业务语义有什么差别?

本单元的验收依据

用具体字节例子解释每个状态与错误处理,并能指出当前loopback未覆盖的远端网络行为。

留下自己的代码或推演、测试输入、真实输出和仍不确定的问题。未达到要求时,下一次继续本单元。