首页课程小红花墙

计算机基础 · 小纸条

选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。

第 1 章30第 2 章30第 3 章30第 4 章30第 5 章30第 6 章30第 7 章30第 8 章30第 9 章30第 10 章30第 11 章30第 12 章30第 13 章30第 14 章30第 15 章30第 16 章30第 17 章30第 18 章30第 19 章30第 20 章30第 21 章30第 22 章30第 23 章30第 24 章30第 25 章10
只印题目
第 1 页 · 正面(题目)
1项目:语义检查

这一步为什么必要?

2项目:生成执行计划

什么条件下选索引?

3项目:实现执行器

这种设计的好处是什么?

4项目:写日志

日志里为什么要记改前的值?

5项目:实现事务提交

提交记录没写就崩了怎么办?

6项目:实现回滚

动手实现。

7项目:实现崩溃恢复

动手实现并测试。

8项目:故意制造崩溃

至少测五个不同的崩溃点。

9项目:加简单的并发控制

这样做的代价是什么?

10项目:写测试

列出你要测的十个场景。

第 1 页 · 背面(答案)

参考答案(家长):条件用到了索引列、且预计筛掉大部分数据时。

参考答案(家长):语法对但语义错的语句必须提前拦住并给出清晰报错。

参考答案(家长):回滚时要靠它还原。

参考答案(家长):不用把中间结果全部物化在内存里。

参考答案(家长):倒序遍历,用改前值覆盖。

参考答案(家长):恢复时视为未提交,回滚掉。

参考答案(家长):能全部恢复正确,说明日志机制真的对了。

参考答案(家长):可以在程序里故意中途退出,验证重启后数据一致。

参考答案(家长):要包含空表、单条、大量数据、边界值、异常输入。

参考答案(家长):并发能力很差,但正确性有保证,先对再快。

第 2 页 · 正面(题目)
11项目:性能测试

找出你的瓶颈。

12项目:优化一处

记录优化前后的数据。

13项目:写文档

动手写。

14项目:复盘

写下三条经验。

15项目:它用到了哪些课

给每门课举出项目里的一个具体位置。

16第二个项目:说明

想想它需要哪些部分。

17项目二:先定范围

为什么范围又要砍这么小?

18项目二:监听与接受连接

动手实现。

19项目二:解析请求行

动手实现。

20项目二:读取请求体

为什么不能一直读到没数据为止?

第 2 页 · 背面(答案)

参考答案(家长):没测量的优化不算优化,可能还变慢了。

参考答案(家长):常见瓶颈是页的读写和序列化。

参考答案(家长):多数人的第一条是"存储格式应该早点定死"。

参考答案(家长):三个月后的自己能照着跑起来,才算合格。

参考答案(家长):网络监听、协议解析、请求路由、并发处理、日志监控。

参考答案(家长):能一一对应,说明知识真的串起来了。

参考答案(家长):四步调用完成,先做单线程版本。

参考答案(家长):同样的道理,先跑通再扩展。

参考答案(家长):连接可能复用,读过头就吃掉了下一个请求。

参考答案(家长):注意行结束符是回车加换行两个字符。

第 3 页 · 正面(题目)
21项目二:路由

支持路径参数该怎么做?

22项目二:返回响应

长度写错会怎样?

23项目二:加并发

这种模型的上限在哪?

24项目二:线程池

线程数设多少合适?

25项目二:实现线程池

动手实现。

26项目二:事件驱动模型

它的代价是什么?

27项目二:加超时

不加超时会有什么攻击?

28项目二:加限流

怎么实现最简单的限流?

29项目二:加日志

日志写文件要注意什么?

30项目二:加指标

为什么要看分位而不只看平均?

第 3 页 · 背面(答案)

参考答案(家长):客户端会一直等或者提前截断,都是难查的问题。

参考答案(家长):按段拆分,遇到参数段就记录下来继续匹配。

参考答案(家长):计算密集接近核心数,等待多的可以更大些。

参考答案(家长):线程占内存、切换有开销,几千个就吃力了。

参考答案(家长):代码复杂得多,且一处阻塞会拖住全部。

参考答案(家长):注意队列的加锁,以及关闭时怎么让线程退出。

参考答案(家长):记录每个来源的计数和时间窗,超阈值就拒绝。

参考答案(家长):攻击者开大量连接却不发数据,把资源占满。

参考答案(家长):平均会掩盖少数极慢的请求,用户体验取决于尾部。

参考答案(家长):多线程要加锁或用专门的写日志线程,还要考虑轮转。

op599 课程