本笔记旨在提炼操作系统、计算机网络与数据库课程中,关于数据库系统与计算机网络服务两大核心模块的关键概念、常见题型及解题思路。
第一部分:数据库系统核心
- 关系模型与SQL
- 关键点:实体完整性、参照完整性、用户定义完整性。SQL语句的精确编写,特别是多表连接(INNER/LEFT/RIGHT JOIN)、子查询(相关/不相关)、分组聚合(GROUP BY, HAVING)与集合操作(UNION, INTERSECT)。
- 常见题型:给定场景,编写查询语句;分析给定SQL语句的执行结果;优化查询性能(如避免SELECT *,合理使用索引)。
- 笔记要点:牢记SQL执行顺序(FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY)。理解事务的ACID属性是后续所有高级概念的基础。
- 数据库设计与规范化
- 关键点:函数依赖、范式(1NF, 2NF, 3NF, BCNF)。判断范式级别及分解到更高范式的方法。
- 常见题型:判断关系模式属于第几范式;将关系模式分解为指定范式并保持无损连接和函数依赖。
- 笔记要点:范式是递进的。分解的最终目标是消除数据冗余和操作异常,但需权衡查询效率。
- 事务管理与并发控制
- 关键点:事务ACID特性。并发问题:丢失修改、脏读、不可重复读、幻读。封锁协议(共享锁S、排他锁X)、两段锁协议(2PL)。
- 常见题型:给定调度序列,判断是否冲突可串行化;分析锁协议下可能发生的死锁及预防/检测方法。
- 笔记要点:可串行化是并发正确的标准。两段锁协议是保证可串行化的充分条件,但可能引发死锁。
- 数据库恢复技术
- 关键点:日志(Redo, Undo)、检查点。
- 常见题型:系统故障后,如何利用日志和检查点进行恢复(Redo/Undo的具体流程)。
- 笔记要点:先写日志原则(WAL)。恢复的基本思想是利用日志重做已提交事务,撤销未完成事务。
第二部分:计算机网络服务
- 应用层核心服务与协议
- 关键点:客户端-服务器(C/S)与对等(P2P)模型。
- DNS(域名系统):层次命名结构、递归/迭代查询、资源记录类型(A, AAAA, CNAME, MX, NS)。
- HTTP/HTTPS:无状态协议、请求/响应报文结构、方法(GET/POST等)、状态码、Cookie/Session机制、HTTPS的SSL/TLS加密流程。
- 电子邮件:SMTP(发)、POP3/IMAP(收)协议流程与区别。
- FTP:控制连接与数据连接(主动/被动模式)。
- 常见题型:描述特定服务(如访问网页、发送邮件)的完整协议交互过程;分析协议报文字段;比较协议特点。
- 网络编程与Socket
- 关键点:Socket(套接字)是应用进程与网络协议的接口。TCP Socket(面向连接,可靠)与UDP Socket(无连接,尽力而为)编程模型的关键步骤。
- 常见题型:给定简单需求,描述Socket API调用顺序(如socket(), bind(), listen(), accept(), connect(), send(), recv(), close());分析TCP三握四挥在Socket编程中的体现。
- 笔记要点:TCP服务端必须调用listen()和accept();客户端调用connect()。UDP则无需连接建立过程。
- Web服务与CDN
- 关键点:Web服务器(如Nginx, Apache)的基本角色。CDN(内容分发网络)的工作原理:通过缓存、负载均衡等技术,将内容分发到靠近用户的边缘节点,以降低延迟、减轻源站压力。
- 常见题型:解释CDN如何加速用户访问;描述一个HTTP请求在涉及CDN时的可能路径。
综合刷题策略
- 理论与实践结合:在理解协议原理(如TCP三次握手)的基础上,结合WireShark等工具观察真实报文,或阅读简单的Socket代码,能极大加深理解。
- 对比记忆:将相似概念对比学习,如:TCP vs UDP;HTTP vs HTTPS;GET vs POST;POP3 vs IMAP;各类锁的区别;各类范式的区别。
- 流程化思维:对于“描述XXX过程”类题目(如一次网页访问、一次事务提交与恢复),建立清晰的流程图或时序图在心中,按步骤作答不易遗漏。
- 错题整理:记录经典题型和易错点,特别是涉及复杂SQL、并发调度判断、协议交互细节的题目,定期回顾。
通过系统性地梳理上述知识点,并辅以针对性练习,可以有效提升在数据库与计算机网络服务领域的解题能力与理解深度。