这次考试过程中发现有些知识点不太熟悉,例如邻接表
邻接表:所谓邻接表(adjacency list),就是把从同一个顶点发出的边链接在同一个称为边链表的单链表中。边链表的每个结点代表一条边,称为边结点。每个边结点有2 个域:该边终点的序号,以及指向下一个边结点的指针。在邻接表中,还需要一个用于存储顶点信息的顶点数组。例如,图1.19(a)所示的有向图对应的邻接表如图(b)所示。在顶点数组中,每个元素有两个成员:一个成员用来存储顶点信息;另一个成员为该顶点的边链表的表头指针,指向该顶点的边链表。如果没有从某个顶点发出的边,则该顶点没有边链表,因此表头指针为空,如图1.19(b)中的顶点G。在该图中,如果指针为空,则用符号“∧”表示。
耦合
数据耦合:一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的。
公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。
外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
标记耦合:一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。
输入输出
输入/输出技术 | 描述 | 优点 | 缺点 |
直接控制查询 | CPU通过轮询的方式查询I/O设备状态 | 实现简单,适用于小系统 | 效率低,CPU需不断查询 |
中断方式 | 当I/O设备完成任务时,主机会发起中断请求,CPU中断处理程序响应 | 系统资源利用率高,适用于多设备系统 | 中断响应和处理开销大 |
DMA | 直接存储器访问技术,I/O设备直接与存储器交换数据,无需CPU介入 | 效率高,解放CPU | 硬件和软件实现都比较复杂 |
软件开发模型
模型 | 描述 | 优点 | 缺点 |
瀑布模型 | 开发过程按照线性顺序依次执行,每个阶段的输出作为下一个阶段的输入 | 简单清晰,适用于稳定需求 | 难以适应变化需求,风险高 |
原型模型 | 迭代开发,通过构建原型进行需求验证和改进 | 提高需求理解和用户满意度 | 可能导致过度重视原型而忽视实际开发 |
增量模型 | 逐步增加功能,每个增量都是可交付的软件 | 早期交付部分功能,快速反馈 | 可能出现集成问题,需求变化可能导致重构 |
螺旋模型 | 迭代开发,结合风险评估和控制 | 风险管理,适应需求变化 | 开发周期较长,开销较大 |
敏捷模型 | 迭代开发,强调自组织团队、快速交付和持续改进 | 快速响应需求变化,高度适应性 | 需要良好的团队协作和沟通 |
DevOps模型 | 结合开发和运维,强调自动化、持续集成和交付 | 加速软件交付,提高质量和稳定性 | 需要跨职能团队和自动化工具的支持 |