# 一、选择题

总结:

  1. 排除部分后当选择某个选项时:
    1. 分析其是否过于具体,或者是否过于泛
    2. 分析其流程是否匹配,通常不同的定义会划分成不同的过程,但是其高层流程是一致的, 可以通过其进行辅助分析
  2. 完全不知道如何选择时:根据上下文,直接匹配相同字最多的那个

# 数据库

  1. 派生属性:指的是可以由其他属性计算得来的属性,属于冗余存储,而且可能导致数据不一致,一般不会存储
  2. *给出关系R(U,F),求属性闭包的登时成立的是?候选关键字是?

问题:给出关系R(U,F), U= {A,B,C,D,E), F={A→B,D→C,BC→E,AC→B),求属性闭包的等式成立的是( )。R的候选关键字为( )。

  • 属性集:U
  • 依赖函数:F
  • 候选键:求得的闭包包含所有的U,则会候选键

答案:求闭包就是指把所有符合的元素都纳入,如果包含了U的所有元素,则说明等式成立

  1. 安全机制:在数据库的安全机制中,通过提高存储过程供第三方开发人员调用进行数据更新,从而保证数据库的关系模式不给第三方获取。本质上就是预先封装好SQL语句,并供调用,避免直接操作数据库或者表结构的暴露。

  2. 关系型R计算

    • *参考 (opens new window)

    • 无损连接:下面等式成立则说明是无损连接。ABC ^ BDE = B;ABC - BDE = ACDE,即B -> ACDE则成立

    image-20221025234212796

    • 函数依赖:对于F如果分解成了F1和F2,如果F1 U F2能够推出F的所有依赖关系,则说明分解p保持函数依赖
  3. 分布式数据库:分布式数据库在各结点上独立,在全局上统一。因此需要定义全局的逻辑结构,称之为全局概念模式,全局外模式是全局概念模式的子集,分片模式和分布模式分别描述数据在逻辑上的分片方式和在物理上各结点的分布形式。

# 操作系统

  1. 微内核功能代码相互之间不能直接调用,导致服务的效率低

  2. 调度算法:

    1. 优先级调度算法:严格按照优先级调度
    2. 抢占式优先级调度算法:在优先级调度的基础上,允许高优先级任务抢占低优先级任务
    3. 最晚截止期调度算法:先调度最接近(最晚)截止期的任务,就是先调用任务快到期的任务
    4. 最早截止期调度算法:先调用任务最晚到期的任务
  3. 内存管理:计算机内存管理主要有:固定分区、非固定分区、页式、段式、和段页式。目前流行的是段页式内存管理。

    1. 段页式内存管理:程序按逻辑分为多段,每一段内又进行分页,使用段页表来进行管理。
    2. *分页内存管理:虚拟地址到物理地址的映射
  4. 嵌入式系统:

    1. 混成系统:混成系统一般由离散分离组件和连续组件并行或串行组成,组件之间的行为由计算模型进行控制

题目:

image-20221021001302742

分页管理指的是将虚拟内存空间和物理内存空间皆划分为大小相同的页面(Page),如4KB(32位)、8KB(64位)或16KB等,并以页面作为内存空间的最小分配单位,一个程序的一个页面可以存放在任意一个物理页面里。其缺点是需要维护页表,而页表会占用较大内存,其优点是:

  • 解决空间浪费碎片化问题:维护页表,由虚拟内存页映射到物理内存页,这样物理内存的存储可以利用碎片存储,而不需要连续。
  • 解决程序大小受限问题:程序增长有限是因为一个程序需要全部加载到内存才能运行,因此解决的办法就是使得一个程序无须全部加载就可以运行。而分页则可以解决这个问题,只需要将当前需要的页面存放在内存中,其他的可以存放在磁盘上。

分页管理过程:

  • MMU:分页管理单元,负责查页表

img

  • 缺页中断:如果CPU发出的虚拟地址对应的页面不在物理内存,就将产生一个缺页中断,而缺页中断服务程序负责将需要的虚拟页面找到并加载到内存。

img

  1. Linux中的DNS配置文件地址:/etc/resolv.conf
  2. Bitmap记录磁盘使用情况,本质上记录的是物理块的使用情况

问题:假设某计算机的字长为32位,该计算机文件管理系统磁盘空间管理采用位示图(bitmap)记录磁盘的使用情况。若磁盘的容量为300GB,物理块的大小为4MB,那么位示图的大小为( )个字。

答案:若磁盘的容量为300GB,物理块的大小为4MB,则该磁盘的物理块数为300X1024/4=76800个,位示图的大小为76800/32=2400个字。

# 软件开发

  1. 软件脆弱性,嵌入式的分层式架构有两个问题:

    • 底层出错导致整个系统出错
    • 层于层间引入通信机制,导致性能降低
  2. 软件文档可以分为两类:

    • 用户文档:描述功能和使用方法,不考虑具体内容

    • 系统文档:

  3. *需求开发过程:需求文档 -> 评审 -> 需求基线(避免重大改动导致系统架构问题,构建了客户和开发者间的产品功能需求和肺功能需求的需求约定)

  4. *软件活动

    在这里插入图片描述

    • 生命周期:

      • 软件描述(需求分析,定义功能及范围)

        视图模型:软件系统需从不同的角度进行描述,最著名的是4+1视角架构模型,4+1视角架构模型的五个主要的视角为逻辑视图、开发视图、处理视图、物理视图和场暈。用于不同的角色(最终用户、开发人员、系统工程师、项目经理等)从不同的角度去查看系统的功能性和非功能性需求。

        • 系统规划:
          • 关键成功因素法:通过对关键成功因素对识别,找出实现目标所需的关键信息集合,从而确定系统开发的优先次序。(明确目标 - 目标分解 - 关键成功因素识别 - 性能识别 - 数据字典产生)
        • 需求分析:
          • 安全性需求:软件安全性需求是指通过约束软件的行为,使其不会出现 不可接受的违反系统安全的行为。软件安全需求是根据已知的系统信息,如软件危害条件等,完成通用软件安全性需求的裁剪和特定软件安全性需求的获取工作。
          • 需求变更管理:问题分析和变更描述 -> 变更分析和成本计算 -> 变更实现
      • 软件设计与实现(软件设计,功能开发实现)

        软件设计过程又分为概要设计和详细设计

        • 概要设计:(结构层面的设计)将软件需求转化为数据结构和软件的系统结构。主要包括下面的数据库设计和软件总体结构设计、模块划分、用户界面(原型)设计等,输出数据库表结构、架构图(服务功能、服务间的通信、服务与外部的通信)。
        • 详细设计:(算法流程层面的设计)对结构图(架构图)进行细化,得到详细的数据结构和算法。主要包括下面的过程设计,画UML图。

        模块化设计:模块化设计的重要原则是高内聚、低耦合,可以应用在各个阶段,在高层阶段可以划分为大模块(服务),在具体阶段可以再划分为小模块(程序模块包)。通常将模块的结构和功能定义为其外部特性,将局部的数据和实现的程序代码称为内部特性。

        • 数据设计(数据库表结构)
        • 软件结构设计(架构图,设计子系统及系统间的关系)

        软件体系结构风格:

        • 数据流体系结构:批处理、管道-过滤器
        • 虚拟机体系结构:解释器、规则系统
        • 层次性体系结构
        • 过程设计(类/包/构件图,活动图设计)
        • 人机界面交互设计(原型设计)
      • 软件有效性验证(测试验证)

        • 评价程序:通常用户采用评价程序来评价系统的性能,评测准确度最高的评价程序是真实程序。通常将评价程序中用得最多、最频繁的核心程序作为评价计算机性能的标准程序,称其为基准测试程序。
        • *软件测试
          • 测试方法
            • 强度测试:测试在限定的系统下考查软件系统极限运行的情况
            • 容量测试:测试系统同时处理的在线最大用户数
            • 负载测试:测试超负荷环境中程序是否能够承担
            • 基准测试:测量和评估软件性能指标。通过在变化前测量性能作为基准,在改动后再测试,校验前后的性能变化。评价程序一般有专门的测量程序、仿真程序等,而评测准确度最高的评价程序是真实程序。在计算机性能评估中,通常将评价程序中用得最多、最频繁的那部分核心程序作为评价计算机性能的标准程序,称其为基准测试程序。
      • 软件演化(迭代更新)

    • 系统集成

      • !!EAI的基本原则就是集成多个系统并保证系统互不干扰,也就是独立性。 EAI提供4个层次的服务,从下至上依次为通讯服务、信息传递与转化服务、应用连接服务、流程控制服务。(想象成在service中调用两个服务的借口)
    • 软件开发工具:

      • 需求分析工具:基于自然语言或图形描述的工具和基于形式化需求定义语言的工具
      • 建模工具:
      • 设计工具
        • 编码和排错工具
      • 测试工具
  5. 软件系统的构件(原子性)

    1. 构件类别

      1. 有限制的构件:提供了接口,指出使用条件和前提
      2. 适应性构件:适配封装,接近不兼容性、资源冲突等问题
      3. 装配的构件:已经装配在操作系统、数据库管理等不通层次上,可连续使用
      4. 可修改的构件:可以进行构建的错误修改、功能新增和替换
    2. 构件分类方法

      1. 关键字分类法:根据领域分析的结果将应用领域的概念按照从抽象到具体的顺序逐次分解为树形或有向无回路图结构。
      2. 刻面分类法:利用Facet(刻面)描述构件执行的功能、被操作的数据、构件应用的语境或任意其他特征。
      3. 超文本方法:基于全文检索技术,使得检索者在阅读文档过程中可以按照人类的联想思维方式任意跳转到包含相关概念或构件的文档。
    3. 构件的组装:指的是指将库中的构件经适当修改后相互连接构成新的目标软件。构件组装技术大致可分为基于功能的组装技术、基于数据的组装技术和面向对象的组装技术。

  6. *开发模型

    • 瀑布模型:分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动
    • 演化模型
    • 原型模型
    • 螺旋模型:由风险驱动开发
      • 开发流程:分为【目标设定、风险分析、开发和有效性验证、评审】四个部分
    • 喷泉模型
    • 构件模型:通过重用来提高软件的可靠性和易维护性,程序修改时产生较少的副作用
  7. 自动化测试

    • 脚本基本结构:
      • 线性脚本:录制手工测试的测试用例时得到的脚本
      • 共享脚本:一个脚本可以被多个测试用例使用
      • 结构化脚本:具有各种逻辑结构和函数调用功能
      • 数据驱动脚本:将测试输入存储在独立的数据文件中,而不是在脚本中
  8. **软件体系结构风格 (opens new window)

    1. 层次型结构:如SpringBoot开发的三层架构
    2. 虚拟机体系结构(解释器体系结构):规则引擎
    3. 数据流体系结构:批处理体系、管道-过滤器体系

# 软件架构建模

  1. 架构师视角:静态视角(功能->质量特性)、动态视角(并发->行为特性)
  2. 架构师视图:
    • 逻辑视图:记录设计元素的功能和概念接口,设计元素的功能定义了它本身在系统中的角色,这些角色包括功能、性能等
    • 进程视图:
    • 实现视图
    • 配置视图
  3. C/S架构模型
    • 三层架构:表示层(接口层)、功能层(业务层)、数据层(数据库操作层)
  4. 设计模式
    • 按目的划分:创建型、行为型、结构性
    • 按作用范围划分:类设计模式和对象设计模式

# 电子政务

电子政务相关的行为主体主要有三类,即政府、企(事)业单位及居民。

  • G2B(政府2企业):发布各种方针、政策,向企业颁发营业执照、许可证、质量认证等。
  • G2G(政府2政府):政府与政府系统间进行互通互动,常见数据源有:人口信息、人脸信息、财务、决策等。
  • B2G(企业2政府):缴纳税款、参与投标、提出建议、申请援助等
  • G2C(政府2居民):包括信息服务和公共部门,有水火灾安全信息、户口证件、学校、医院图书馆等。
  • C2G(居民2政府):缴纳个人税款和罚款,报警等

# 软件知识产权

  • 永久保护:修改权、署名权、保护作品完整权
  • 限期保护:
    • 著作权:死后五十年内
  • 其他
    • 发表权:决定是否将作品开发,为作者享有且只能发表一次
    • 发行权:许可他人向公众提供复制件

# 特殊类型题

  1. 由题目画出下图,可知B+E=9,D+F=7,而两者可以并行处理,所以D最多可以延迟9-7=2天

image-20221022163029158

image-20221022163114413

Last Updated: 2022-10-26 12:59:58 ├F10: AM┤