软件设计综合知识

software-design

  软考中级-软件设计师-综合知识:计算机系统基础、操作系统、计算机网络与信息安全、程序语言基础、数据库基础、数据结构与算法、软件工程基础知识、标准与知识产权等。


—— 2025 年 3 月 5 日 甲辰年二月初六 惊蛰

目录

    • software-design
    • 1、计算机基础
      • 1.1、计算机系统基础
      • 1.2、操作系统
      • 1.3、计算机网络与信息安全
      • 1.4、程序语言基础
      • 1.5、数据库基础
    • 2、数据结构与算法
      • 2.1 数据结构
    • 3、系统开发
      • 3.1、软件工程基础知识
    • 4、标准与知识产权
      • 4.1 知识产权

1、计算机基础

1.1、计算机系统基础

  • 海明码计算公式 2^k >= m + k + 1。海明码利用奇偶性来检错和纠错,码距最小为 2n + 1,至少大于 2。

  • 虚拟存储由 主存 - 辅存 构成,CPU 地址总线为 m 位,则物理地址空间大小用 2^m 表示。

  • 浮点数能够表示的数的范围由 阶码 的位数决定,精度由 尾数 的位数决定。8 位阶码的最大值为 127。

  • 浮点数相加,小阶向大阶对齐,尾数右移 n 位。

  • 补码最适合进行加减运算,移码最适合表示浮点数阶码。

  • 计算机系统中采用 补码 表示有符号的数值,且可以将减法转化为加法,从而简化运算器的设计。

  • 正负 0 的补码和移码相同。

  • 当机器采用原码表示时,0 有两种编码方式,即 +0 和 -0。

  • CISC:复杂指令系统计算机;RISC:精简指令系统计算机;VLSI:超大规模集成电路;VLIW:超长指令字。

    • RISC 精简指令系统计算机中 CPU 的通用寄存器数量多,一般在 32 个以上,有的可达上千个。
    • RISC 使用等长指令,典型长度为 4 字节。
    • 寻址方式少且简单,一般为 2 ~ 3 种,绝不出现存储器间接寻址方式。
    • 只有取数指令、存数指令访问存储器。
    • 指令集中的指令数目一般少于 100,指令格式一般少于 4 种。
    • 指令功能简单,控制器多采用硬布线方式,以期更快的执行速度。
    • 所有指令的平均执行时间为一个处理时钟周期。
    • 比 CISC 更好的支持高级语言。
  • 20Hz - 20KHz,低于为次声波,高于为超声波。

  • 若每个像素具有 8 位 的颜色深度,则可表示 2^8 = 256 种不同的颜色。

  • 编译器处理过程:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。中间代码生成、代码优化是非必需的。

  • 解释器解释过程:词法分析、语法分析、语义分析。

    • 解释器 参与运行控制,执行速度慢。编译器执行速度快。
    • 死循环属于典型的语义错误,静态语义错误可被编译器发现,但动态语义错误只能在运行时被发现。
    • 词法分析:识别单词,即识别源码中的记号。
    • 语法分析:识别语句形式,判断程序逻辑结构是否正确,如表达式、循环、赋值;移进-规约:越发分析方法。(移进-归约:自底向上)。
    • 语义分析:检查是否存在语义错误,如类型不匹配、除数是否为 0 等。分为静态语义分析、动态语义分析。静态语义分析使用语法制导翻译。编译阶段只能发现静态语义错误。
    • 常见的中间代码表达形式有:三元式、四元式、逆波兰式(后缀式)、三地址码、树(抽象语法树)、图(有向无环图)。
  • FM 中,改变数字载波频率,可以改变乐音的音调;改变信号幅度,可以改变乐音的音高。

  • 文法分析分为四种类型,大多采用 上下文无关文法,及 2 型文法。

  • 若机器字长为 n,最高位为符号位,则其定点整数最大值为 2^(n-1) - 1。

  • 感觉媒体:器官感觉到的,如音、影、图像、文字等。

    • 表现媒体:感觉媒体的输入输出,如鼠标、键盘、显示器等。
    • 表示媒体:感觉媒体的传输中介,如图像编码、文本编码、声音编码等。
    • 传输媒体:表示媒体的传输物理介质,如电缆、光缆、电磁波等。
    • 存储媒体:表示媒体的存储物理介质,如硬盘、光盘等。
  • 水平分辨率、垂直分辨率,像素点数目。905215 - 675840。

  • Flynn 分类法:SISD、SIMD、MISD、MIMD。其中 MISD(多指令单数据流)为理论模型。

  • 嵌入式系统初始化,自底向上、从硬件到软件:片级、板级、系统级。系统级初始化主要任务是初始化操作系统。

  • 尼奎斯特取样定理:取样速率 大于 模拟信号最高频率的 2 倍。

  • DPI 为 像素/英寸,300 DPI 扫描 3 * 4 英寸图像时,可以得到 300 * 3 x 300 *4 像素的数字图像。

  • 常见的命名对象有 变量、函数、数据类型。

  • linux 中只有一个根目录,用 / 表示。

  • 移位指令操作中的 算数左移 相当于对操作数进行乘 2 操作。

  • WAV:声音文件格式;BMP:图像文件格式;MP3:音频文件格式;MOV:视频文件格式。

  • 24 位真彩图,及颜色深度为 24,扫描后的数据量是 DPI 值 * 3 *DPI 值 * 4 * 24。

  • 矢量图的基本组成单位是 图元。

  • 真彩色、伪彩色、直接色、矢量:

    • 真彩色:即每个像素分成 R、G、B 三基色分量。
    • 伪彩色:实际上是一个索引值或代码,需要通过查找表 CLUT 查找其 R、G、B 值。
    • 直接色:像素值为 红、绿、蓝。
    • 矢量:矢量图可无限放大永不变形。
  • 脚本语言主要采用解释方式实现。

  • 当双击文件名时,windows 系统回自动通过建立的文件关联来决定使用什么软件打开该文件。

  • MPG 为 MPEG 编码标准的视频文件扩展名,MPEG-1、MPEG-2、MPEG-4 音视频编码标准,MPEG-7 多媒体内容描述接口标准,MPEG-21 多媒体应用框架标准。

    • MPEG-1:音视频编码,VCD。
    • MPEG-2:音视频编码,DVD。
  • AVS 是中国数字音频压缩编码国家标准。

  • H.264 是视频压缩编码技术的标准。

  • DVD 光盘格式:

    • DVD-RAM、DVD-RW:多次擦除重写。
  • CD 光盘格式:

    • CD-R:一次性刻写。
    • CD-RW:多次擦除重写。
  • 计算机系统性能评估指标:可靠性或可用性、处理能力或效率。

    • 处理能力或效率:吞吐率、响应时间、资源利用率。
  • 计算机网络系统性能评估指标:信道传输速率、信道吞吐量和容量、信道利用率、传输演出、响应时间、负载能力。

  • CPU 中的运算单元、控制单元、寄存器 通过系统总线连接起来。

  • 字长是计算机进行运算和数据处理的基本信息单位。

  • 主要程序语言:

    • Fortran:第一个高级程序设计语言,科学计算,执行效率高。
    • Pascal:结构化程序设计语言,表达能力强。
    • C:通用、结构化程序设计语言,指针操作能力强,高效。
    • Lisp:函数式程序设计语言,符号处理,人工智能。
    • C++:高级语言,面向对象。
    • Java:高级语言,面向对象,通用,跨平台,中间代码。
    • Python:面向对象、解释型、通用脚本语言。
    • PHP:服务端脚本语言,制作动态网页。
    • Ruby:面向对象,简单快捷,脚本语言。
    • Delphi:快速应用程序开发工具,可视化编程环境。
    • COBOL:高级语言,数据处理领域。
    • PROLOG:逻辑式语言,建造专家系统,自然语言理解,智能知识库。
  • BIOS(基本输入输出系统)保存在主板上的 ROM 中。

  • 主存与 Cache 地址映射:

    • 全关联:主存的任意一块可以映射到 Cache 中的任意一块。映射冲突概率最低。
    • 直接映射:主存中的一块只能映射到 Cache 中特定的一块。映射冲突概率最高。
    • 组相联:组对组,主存组与同 Cache 组内可以任意映射。
  • 相联存储器是一种按存储内容来存储和访问的存储器,不属于按寻址方式划分的存储器。

  • 程序执行过程中,主存与 Cache 的地址映射由硬件自动完成。

  • 累加寄存器 AC:通用寄存器,为 ALU 提供一个工作区,用来暂存数据。

  • Cache 是一种介于主存和 CPU 之间的高速存储器,用于二者之间的缓冲存储。其命中率一般要达到 90% ~ 95% 以上。Cache 中的数据必须与主存中数据时刻保持一致。常用淘汰法有:随机法、先进先出法(FIFO)、近期最少使用法(LRU)。

  • 指令寄存器的位数取决于 指令字长。其内容为正在执行的指令。

  • 流水线的吞吐率是指计算机中的流水线在特定时间内可以处理的任务数量或输出数据的结果数量。可进一步分为最大吞吐率可实际吞吐率。

  • 后缀式(逆波兰式),是一种表示表达式的方法,其特点是将运算符号写在运算对象的后面。如表达式 a * (b - c) + d 的后缀式为 abc-*d+。

  • IO 五种工作方式:

    • 程序控制方式:分为无条件查询和程序查询。
      • 无条件查询:IO 端口总是准备好接受主机的输出数据,或总是准备好向主机输入数据。优点是软硬件结构简单;缺点是对时序性要求高,只适合简单 IO 控制。
      • 程序查询:也称程序轮询方式,该方式由用户程序直接控制主机与外部设备之间的输入输出操作。轮询 IO 设备端口状态。CPU 与 IO 设备之间是串行工作的。占用 CPU 时间最多。
    • 中断方式:当 IO 设备结束时,就会向 CPU 发出中断指令。CPU 与 IO 之间并行工作。
    • DMA(直接内存存取)方式:其思想是允许主存和 IO 设备之间通过 DMAC(DMA 控制器)直接进行批量数据交换,除了启动和结束外,整个过程无需 CPU 干预。
    • 通道控制方式:在一定硬件基础上,利用软件手段实现对 IO 的控制和传送,更多的免去了 CPU 的介入,提高了主机和外设的并行工作度。
    • IO 处理机:专门负责 IO 输入输出的处理机,可以有专门的存储器、运算部件和指令控制部件。
  • 链表中的节点空间需要程序员根据需要申请和释放,因此数据空间应采用 堆存储分配策略。

  • 循环冗余校验码(CRC)计算:

    • 将信息码 1100 低位补 0,这里需要补 3 个 0(技巧是多项式的最高次方是几就补几个 0),变成 1100000。
    • 1100000 与 1011(多项式结果)做模 2 除法运算(不向上借位的算术除法运算),所得余数为三位校验位,即 010,因此 CRC 编码为 1100010。
  • CPU:

    • 强调通用性,需要处理各种数据类型,又要进行逻辑判断和大量的分支跳转和中断处理,因此 CPU 内部结构异常复杂。
    • 利用较高的主频和高速缓存来提高指令的速度。
  • GPU:

    • 面对的是类型高度统一、相互无依赖的大规模数据和不需要被打断的纯净计算环境。
    • SIMD,单指令多数据流。
  • 计算机系统是软硬件综合体,可以把它按功能划分为多级层次结构:

    • 硬联逻辑级
    • 微程序级
    • 传统机器级
    • 操作系统级
    • 汇编语言级
    • 高级语言级
    • 应用语言级
  • 地址线与主存容量,若地址线(主存地址的位数)为 n,主存容量(可表示的地址个数)为 m,则 2^n = m。

  • CPU 寻址:寻址单元数(地址范围) = 存储器容量 / 机器字长(全字寻址)。

  • 固态硬盘的存储介质是闪存芯片,比机械硬盘功耗低。

  • 串联系统可靠度:R1 * R2 * R3 … Rn。

  • 并联系统可靠度:1 - (1 - R1) * (1 - R2) * (1 - R3) … (1 - Rn)。

  • 虚拟存储管理系统的基础程序是 局部性的,

  • 寻址方式速度:立即寻址 > 寄存器寻址 > 直接寻址。

  • PCI 是并行内总线,SCSI 并行外总线。

  • DRAM 是一种需要通过周期性刷新来保持数据的存储器件。

  • 一个数的负次方等于这个数的正次方的倒数。如 10^-9 = 1 / 10^9。1ns = 10^-9s。

  • 总线带宽 = 总线数据传输频率 * 总线位数 / 8。

  • 地址总线宽度:决定了 CPU 可以访问的物理地址空间。

  • 数据总线宽度:决定了 CPU 与存储器之间数据传输的信息量。

  • 操作系统的性能指标有:可靠性、吞吐率、响应时间、资源利用率、可移植性。

  • 流水线的吞吐率是指 单位时间流水线处理的任务数。

  • 闪存(Flash Memory):

    • 掉电后信息不会丢失,属于非易失性存储器。
    • 以块为单位进行删除操作。
    • 采用随机访问方式。
    • 在嵌入式系统中可以使用 Flash Memory 来代替 ROM 存储器。
  • 并列争球法使用迭代方法。

  • 如果 2x 的补码为 90H,那么 x 的真值为多少。

  • 海明码校验计算。

1.2、操作系统

  • 周期:一个指令周期由若干个总线周期组成,而一个总线周期由若干个时钟周期组成,一个总线周期包含一个(取指令)或多个机器周期。
    • 指令周期:取出并执行一条指令的时间。
      • 机器周期:一个指令的执行被分为若个个阶段,如取指令、存储器读、写等。每一个阶段为一个机器周期。
    • 总线周期:一个访存储器或IO端口操作所占用的时间。
    • 时钟周期:又称震荡周期,是处理器操作的基本单位。
  • PV 操作:结合信号量 S 来实现进程同步与互斥。
    • P:调用 P 操作测试消息释放到达。0 为未到达,非 0 为已到达。
    • V:调用 V 操作发送消息。
  • 信号量 S 的物理意义:
    • S = 0:表示资源的可用数。
    • S < 0:其绝对值表示等待资源的进程数。
  • CPU 进行算术运算或逻辑运算时,常将原操作数和结果暂存在 累加器 中。
  • 并行总线适合近距离高速传输数据。
  • 串行总线适合长距离数据传输。
  • IO 请求过程:用户进程 -> 设备无关软件 -> 设备驱动程序 -> 中断处理程序 -> 硬件。
  • 进程控制块(PCB)的组织方式:
    • 线性表方式:不论进程的状态如何,将所有 PCB 连续地存放在内存的系统区。适用于系统中进程数目不多的情况。
    • 索引表方式:线性表的改进,系统按照进程的状态分别建立就绪索引、阻塞索引等。
    • 链接表方式:系统按照进程的状态将 PCB 组成队列,从而形成就绪队列、阻塞队列、运行队列等。
  • 物理页大小 = 逻辑页大小。
  • IO 设备提出的中断请求是可屏蔽中断,电源掉电是不可屏蔽中断。
  • 总线复用:即一条总线实现多种功能。常见的有 总线分时 复用,其指在不同时段利用总线上同一个信号线传送不同信号。可减少总线数量,提高总线利用率。
  • 若对 目录 文件修改的结果写回磁盘时发生奔溃,则对系统的影响较大。解决方案是采用文件系统的一致性检查,包括 块的一致性检查 和 文件的一致性检查。
  • Cache 的设计思想是在合理的成本下提高命中率。
  • 总线:各部件只能 分时 向总线发送数据,但可同时接受总线数据,若改数据不是传给自己的,则数据包将被丢弃。
  • 嵌入式程序设计中,高速缓存(Cache)对程序员是透明的。
  • 在操作系统文件管理中,通常采用 文件目录 组织和管理外存中的信息。
  • 有效地址(逻辑地址)/ 页面大小:
    • 结果取整为 页号 n。结果取余为 页内地址 m。
    • 物理地址 = 物理块号 * 页面大小 + m。
  • 虚拟存储技术是指 补充内存逻辑空间 的技术。
  • 虚拟存储器有 CPU 寻址范围决定,且只能基于非连续分配技术(目的是提高资源利用率)。
  • (物理块号 + 1)/ 字长位数:
    • 取整为位示图编号。字号。向上取整为物理块在字中的描述。
    • 取余 - 1 为字号编号。位号。
  • 磁盘容量 / 物理块大小 = 物理块数量。
  • 物理块数量 / 系统字长 = 位示图大小。
  • 磁盘存取时间 = 寻道时间 + 旋转起达时间 + 传输时间。
    • 寻道时间:磁头从当前磁道移动到目标磁道所需时间。
    • 旋转起达时间:磁头移动到目的磁道后,待访问的记录块旋转到磁头下方的时间。
    • 传输时间:读写操作时间。
  • 文件系统中,打开文件系统功能调用的操作是 把文件的控制管理信息从辅存读到内存。
  • 从减少成本和缩短研发周期考虑,要求操作系统能针对硬件变化改变进行结构与功能上的配置,以满足不同微处理器平台的要求。是指嵌入式操作系统的可定制性。
  • 磁盘调度:
    • 移臂调度:
      • 单向扫描算法:即磁头只能做单向移动。
      • 电梯调度算法:磁道的移动规律颇似电梯的运行。
      • 先来先服务算法:即按照请求访问的先后顺序。可能随时改变移动臂的运动方向。
      • 最短寻道时间优先算法:即寻道时间最短。可能随时改变移动臂的运动方向。
    • 旋转调度:

1.3、计算机网络与信息安全

  • 服务器攻击:
    • 主动攻击:拒绝服务、分布式拒绝服务、信息篡改、资源使用、欺骗、伪装、重放。
    • 被动攻击:系统干涉、嗅探。
  • 防火墙功能:
    • 访问控制、管理控制、双向 nat、ip 地址转换、端口映射、记录访问过程、包过滤、代理。
    • 基于状态检测技术的 ip 地址、端口、用户和时间的管理控制。
  • netstat -n:显示所有连接的 ip 地址、端口号及连接状态。
    • LISTEN:监听来自远方的 TCP 端口的连接请求。
    • SYN-SENT:在发送连接请求后等待匹配的连接请求。
    • SYN-RECEIVED:在收到和发送一个连接请求后等待对确认。
    • ESTABLISHED:连接已建立。
    • FIN-WAIT-1:等待远程 TCP 连接中断请求,或先前连接中断请求的确认。
    • FIN-WAIT-2:从远程 TCP 等待连接中端请求。
    • CLOSE-WAIT:等待从本地用户发来的中断请求。
    • CLOSING:等待远程 TCP 对连接中断的确认。
    • LAST-ACK:等待原来的发向远程 TCP 的连接中断请求的确认。
    • TIME-WAIT:等待足够的时间,以确保远程 TCP 收到连接中断请求的确认。
    • CLOSED:没有任何连接状态。
  • 网络七层模型(OSI):
    • 7、应用层:实现具体的应用功能。
    • 6、表示层:数据的格式与表达、加密、压缩。
    • 5、会话层:建立、管理和终止回话。POP3、FTP、HTTP、Telnet、SMTP、DHCP、TFTP、SNMP、DNS。
    • 4、传输层:端到端的连接。TCP、UDP。
    • 3、网络层:分组传输和路由选择。三层交换机、路由器;ARP、RARP、IP、ICMP、IGMP。
    • 2、数据链路层:传输以帧为单位的信息。网桥、交换机、网卡;PPTP、L2TP、SLIP、PPP、HDLC。
    • 1、物理层:二进制传输。中继器、集线器。
    • 注:自下而上第一个提供端到端服务的是传输层。
    • 注:域隔离:
      • 网络层设备 路由器 既可以隔离冲突域,又可以隔离广播域。
      • 数据链路层设备 网桥、交换机 可以隔离冲突域,不能隔离广播域。
      • 物理层设备 中继器、集线器 都不能隔离。
    • VLANtag:即虚拟局域网,属于数据链路层的实现。
    • 包过滤处在传输层和网络层。ACL 即访问控制列表,是一种基于包过滤的访问控制技术。
  • POP3 协议:
    • Post Office Protocol-Version 3,即邮局协议版本 3,是 TCP/IP 协议族的一员,由 RFC1939 定义。主要用于支持使用客户端远程管理在服务器上的电子邮件。提供了 SSL 加密的 POP3 协议称为 POP3S。
    • 默认端口:110。
    • 默认传输协议 TCP。
    • 适用的架构模式:C/S。
    • 访问模式:离线模式。
  • SMTP:邮件传输协议,默认端口 25。发送邮件通常使用 SMTP。接收邮件通常使用 POP3。
    • PGP 软件可以用来实现安全电子邮件协议。
    • S/MIME:可提供安全电子邮件服务。
  • SNMP:属于应用层协议,该协议的报文封装在 UDP 协议中。即对通信线路进行管理。UDP 的 161 端口。
  • ICMP:属于网络层协议,该协议的数据单元封装在 IP 数据段中。用来进行组播组成员信息的交互。报告 IP 数据报传送中的差错。
    • ping 发出的是 ICMP 请求与响应。
  • TCMP:属于网络层协议,该协议数据单元封装在 IP 数据报中传送。
  • DHCP:自动分配 ip 地址。UDP 的 67 端口。
  • TCP、UDP 是基于 IP 协议的,SMTP 是基于 TCP 协议的。
    • TCP/IP 协议族主要包括:TCP、IP、ICMP、IGMP、ARP、RARP、UDP、DNS、FTP、HTTP 等。
    • UDP:开销小、易实现、时间性能好。缺点是不可靠,所以不适合远程登录。
    • TCP 使用的流量控制协议:可变大小的滑动窗口协议。使用 3 次握手建立连接,4 次握手终止连接。
  • ARP:地址解析协议,实现 IP 地址与 MAC 地址之间的变换。RARP 是逆地址解析协议,将 MAC 解析成 IP。
    • request:广播。
    • response:单播。
  • FTP 使用的传输层协议位 TCP。
    • 两个标准端口号是 20 和 21,分别是 数据口 和 控制口。
    • 利用漏洞扫描可获取某 FTP 服务器是否存在可写目录的信息。
    • TFTP:简单文件传输协议,用来在客户机与服务器之间进行简单文件的传输,提供不复杂、开销不大的传输服务。
  • Telnet:端口号 23。
  • DNS:端口号 UDP 53。可使用传输层无连接服务。
  • 主机路由的子网掩码地址:255.255.255.255。
  • 层次化网络设计:
    • 接入层:用户接入、计费管理、MAC 地址认证、收集用户信息。
    • 汇聚层:网络访问策略控制、数据包处理、过滤、寻址。
    • 核心层:高速数据交换、常用冗余机制。
  • 加密算法:
    • IDEA、RC4:对称加密算法,只能用来进行数据加密。
    • MD5、SHA-l:消息摘要算法,只能用来生成消息摘要。MD5 生成结果为 128 位。SHA-l 生成160 位固定长度算法。
    • RSA:非对称加密算法,主要用于数字签名和验签。但效率低,不适用大数据量。
    • RC5:对称加密算法,效率高,适用大数据量。
    • DES:密钥长度为 56 位,三重 DES 的密钥长度为 112 位。
    • AES:高级加密标准,对称分组加密算法,替代了 DES。
    • X.509 标准推荐使用的加密算法是 RSA,而国密 SM2 采用的公钥算法是 ECC。
  • 对于多种不同路由协议到一个目的地的路由信息,路由器首先根据管理距离决定相信哪一个协议。
  • 防火墙工作层次越高,则工作效率越低,同时安全性越高。
    • 层次越高,实现过程复杂;层次越低,实现过程简单。所以高层次效率低,低层次效率高。
    • 层次越高,对数据包的理解力越好,对非法包的判断力越强,所以安全性高。
  • IP 地址:192.168.1.1/27
    • IPv4 地址由 4 部分组成,每部分 8 位,共 32 位。其中前三部分为网络部分,第四部分为主机部分。前三部分相同则说明属于同一个网段。
    • /27:表示该机器所处的网络的子网掩码为 27 位。
    • IPv6 为 16B 即 128bit。地址空间是 v4 的 2^96 倍。
    • IP 规定每个 C 类网络最多可以有 254 台主机或路由器。
  • 中国自主研发的 3G 通信标准是 TD-SCDMA。
  • 安全需求划分:物理线路安全、网络安全、系统安全、应用安全。
  • 域名解析:即根据域名找到其对应 ip 地址。从客户端到 DNS 服务器属于递归查询,而 DNS 服务器之间属于迭代查询。
    • 1、查询本地 host 文件。
    • 2、查询本地 DNS 缓存。
    • 3、递归查询 DNS 服务器。
    • 4、根 DNS 服务器。
    • 5、顶级域名服务器。
    • 注:主域名服务器先查 本地缓存。
    • 本地域名服务器、根域名服务器、中介域名服务器、授权域名服务器。
      • 本地和中介采用递归查询。根采用迭代。授权不确定。
  • 路由策略:
    • 静态路由:即手工配置路由信息。当网络拓扑图或链路状态发生变化时需要手动修改。
    • 动态路由:即自适应路由,路由器自动建立路由信息,且可根据实际变化实时调整。
    • 随机路由:路由器收集当前节点到其源节点的旅行时间,以此来更新节点的旅行时间表。
    • 洪泛路由:简单路由算法,将收到的封包往所有可能连结路径上发送,直到封包到达为止。
  • 127.0.0.1:是回送地址,指本地机,一般用来测试使用。一旦使用回送地址发送数据,协议软件立即返回,不进行任何网络传输。
  • 4G 技术包括 TD-LTE 和 FDD-LTE 两种制式,理论下载速度可达 100 Mbps。5G 试运行阶段传输速率为 1Gbps,预计未来可达 10Gbps。
  • ipconfig/renew:更新所有适配的 DHCP 配置。该命令仅在具有配置为自动获取 ip 地址的适配器的计算机上可用。
  • ipconfig/flushdns:刷新并重设 DNS 解析器缓存。
  • nsetstat - r:用于显示核心路由表。即查看路由状态信息。控制台命令,监控 TCP/IP 信息。
  • arp -a:查看 arp(地址解析协议)高速缓存中的内容。
  • 包过滤技术是一种基于网络层、传输层的安全技术,优点是简单实用,实现成本低,且对应用和用户是透明的。
  • SSH:即 secure shell。使用 SSH 可有效防止远程管理过程中的信息泄漏问题。
  • 网络系统中通常把 Web 服务器 置于 DMZ(非军事化区)区。
  • 实现 VPN 的关键技术:隧道技术、加解密技术、密钥管理技术、身份认证技术。
  • 数字签名是对 真实性 的保护。
  • 防范网络监听最有效的方法是 数据加密。
  • IEEE 802:规范定义了网卡如何访问传输介质,以及如何在传输介质上传输数据。
    • IEEE 802.1:协议概论。
    • IEEE 802.3:局域网协议。
    • IEEE 802.6:城域网协议。
    • IEEE 802.11:无线局域网协议。
  • 报文交换不适用于实时通信环境,如音、视频等。
  • 当描述一个物理层接口引脚在处于高电平时的含义时,该描述属于 功能特性。
  • 绑定:
    • 静态绑定:在编译期,将函数调用与响应调用所需要的代码结合的过程。
    • 动态绑定:在运行期,判断所引用对象的实际类型,根据其实际类型调用相应的方法。
  • 生成摘要的目的是 防止篡改,对摘要进行加密的目的 防止抵赖。
  • 震网(Stuxnet)是一种蠕虫病毒,破坏工业系统。
  • 网络的可用性是指用户可利用网络时间的百分比。
  • 安全服务:
    • 认证、数据完整性、访问控制、数据保密性、抗抵赖性。
  • 安全机制:
    • 认证、数据完整性、访问控制、加密机制、数字签名、通信业务填充、路由控制、公证。
  • HTTP 加密方式是 会话密钥 + 对称加密。

1.4、程序语言基础

  • 常见语法分析技术:算符优先法、LR 分析法、递归下降法(自上而下)。
    • LR 分析法主要有 SLR(1)、LR(0)、LR(1)、LALR(1),LR(1) 分析能力最强,LR(0) 分析能力最弱。
  • 正规式与正规集:
    • a -> {a}
    • a|b -> {a, b}
    • ab -> {ab}
    • (a|b)(a|b) -> {aa, ab, ba, bb}。
    • a* -> {a, aa, aaa, …} 即任意个 a 组成的串。
    • (a|b)* -> {a, b, aa, bb, ab, ba, …} 即所有 a, b 组成的串。
    • (a|b)* (aa|bb)(a|b)* -> 伊普西隆上所有含有两个相继的 a 或两个相继的 b 组成的串。
    • 注:+ 表示一个或多个。
  • python 中 matplotlib 是绘图库。
    • python 不支持 char、byte 数据类型。
    • 不可变类型:Number 数字、String 字符串、Tuple 元组。
    • 可变类型:List 列表、Dictionary 字典、Set 集合。
    • python 没有内置的 switch case 语句。
  • 中间代码生成所依据的是 语义规则。
  • McCabe:程序控制流环路复杂度。V(G) = m - n + 2,m 为边,n 为节点。典型的程序环路复杂度为 10。
  • 高级程序设计语言中用于描述程序中的运算步骤、控制结构、数据传输的是 语句。
  • 程序设计语言中大多数操作符是 过载 多态。

1.5、数据库基础

  • 三范式:

    • 1NF:确保表中每个字段的值是原子的,不可再分。
      • 不满足:“地址” 字段值为 “陕西省西安市未央区”。
      • 满足:将 “地址” 拆分为 “省”、“市”、“区” 三个字段。
    • 2NF:在满足 1NF 的基础上,所有非主键字段必须完全依赖于整个主键(单列注解或联合主键)。
      • 不满足:订单详情表(订单 id、商品 id、商品名称),其中 “商品名称” 仅依赖 “商品 id”。
      • 满足:应拆分为订单详情表(订单 id、商品 id、商品数量)和商品表(商品 id、商品名称)。
    • 3NF:在满足 2NF 的基础上,消除传递依赖,即非主键字段之间不能存在依赖。
      • 不满足:学生表(学号、姓名、学院名称、学院电话),其中 “学院电话” 依赖于 “学院名称”。
      • 满足:应该拆分为学生表(学号、姓名、学院 id)和学院表(学院 id、学院名称、学院电话)。
  • 三级结构/两级映像:视图-外模式、基本表-模式(概念模式)、存储文件-内模式。两级映像的作用是提高数据和程序的独立性。

  • 数据模型:概念数据模型、基本数据模型。

    • 概念数据模型:实体-联系模型,即 E-R。E-R 模型常用于 概念设计 阶段。
    • 基本数据模型:结构数据模型。
  • 数据模型三要素:数据结构、数据操作、完整性约束。

  • 分布式数据库:分片透明、复制透明、位置透明、逻辑透明。

    • 分片透明:最高层次透明,指用户不必关心数据是如何分片的,它们对数据的操作在全局关系上进行,即关系如何分片对用户是透明的。因此当分片改变时应用程序可以不变。
    • 复制透明:用户不必关心数据库在网络中各个节点的复制情况,被复制的数据的更新由系统自动完成。
    • 位置透明:用户不必知道所操作的数据放在何处,即数据分配到哪个或哪些站点对用户是透明的。因此,数据分片模式的改变(如把数据从一个站点转移到另一个站点)不会影响应用程序。
    • 逻辑透明(局部映像透明):最低层次的透明,提供数据到局部数据库的映像,即用户不必关心局部 DBMS 支持那种数据模型、使用哪种数据操纵语言,数据模型和操纵语言的转换是由系统完成的。因此逻辑透明对异构型和同构异质的分布式数据库系统是非常重要的。
  • 数据独立性:物理独立性、逻辑独立性。

    • 物理独立性:内模式的变化,只需调整模式与内模式之间的映像,不用修改程序。指用户的应用程序与存储在数据库中的数据是相互独立的。
    • 逻辑独立性:模式的变化,只需调整外模式与模式之间的映像,不用修改程序。
  • 耦合类型:数据耦合、标记耦合、控制耦合、内容耦合。

    • 数据耦合:即一个模块访问另一个模块时通过数据参数来交换输入、输出信息。
    • 标记耦合:即一组模块通过参数表传递记录信息。
    • 控制耦合:即一个模块通过传送开关、标志、名字等控制信息,明显地控制另一个模块的功能。
    • 内容耦合:
      • 一个模块直接访问另一个模块的内部数据;
      • 一个模块不通过正常入口转到另一个模块内部;
      • 两个模块有一部分代码重叠(只可能出现在汇编语言中);
      • 一个模块有多个入口;
  • 数据库事务特性:原子性、一致性、隔离性、持久性。

  • 完整性约束:实体完整性约束、参照完整性约束、用户自定义完整性约束。

    • 实体完整性约束:要求主键中的任一属性不能为空,且不能有重复值。
    • 参照完整性约束:要求外键的值要么为空,要么为对应关系的主键值。
    • 用户自定义完整性约束:针对某一具体数据库的约束,反映某一具体应用所涉及的数据库必须满足的语义。一般用于限制字段值的取值范围,此范围不涉及其它数据表的值。
  • 数据库的安全机制中,通过提供 存储过程 来供第三方开发人员调用进行数据更新。

  • 数据依赖公理系统:律与规则

    • 律:
      • 自反律:若 Y ⊆ X ⊆ U,则 X -> Y 为 F 所蕴含。
      • 增广律:若 X -> Y 为 F 所蕴含,且 Z ⊆ U,则 XZ -> YZ 为 F 所蕴含。
      • 传递律:若 X -> Y 与 Y -> Z 为 F 所蕴含,则 X -> Z 为 F 所蕴含。
    • 规则:
      • 合并规则:由 X -> Y,X -> Z,有 X -> YZ。
      • 伪传递规则:由 X -> Y,WY -> Z,有 XW -> Z。
      • 分解规则:由 X -> Y,Z ⊆ Y,有 X -> Z。
  • 数据库故障:

    • 事务内部故障:有的可以通过事务程序本身发现。有的是非预期的,不能由事务程序处理,如运算溢出、并发事务死锁等。
    • 系统故障:通常称为软故障,是指造成系统停止的任何事件,使得系统需要重新启动。
    • 介质故障:通常称为硬故障,如磁盘损坏等。
    • 计算机病毒:计算机病毒。
  • SQL 语言:

    • 授权语句:grant <权限> on table 表名 [(列名)] to 用户名 [with grant option]

      #eg with grant option 意为允许向别人赋予同样的权限
      grant update (name) on table test to momo with grant option
      
    • 创建视图语句:create view 试图名 as select 列名1、列名2… from 表名 where 条件

      # eg with check option 意为对视图进行增删改查操作时要满足定义视图时的谓词条件 即 age < 25
      create view test_view as select id, name, age from test where age < 25 with check option
      

2、数据结构与算法

2.1 数据结构

  • 逆波兰表达式(后缀式):
    • 从左至右将数字入栈,当遇到运算符时,将运算符所需要的数据出栈,然后再将结果入栈,以此类推。
  • 存储方式:
    • 行式存储:一行中的数据在存储介质中是连续存储的。
    • 列式存储:一列中的数据在存储介质中是连续存储的。
  • 图:无向图、有向图、网。
    • 在具有 n 个顶点的简单无向图中,最多含有 n * (n - 1) / 2 条边。
    • 连通图:任意两个顶点之间都有路径。具有 n 个顶点的无向连通图至少有 n - 1 条边。
    • 有向完全图:n 个顶点的有向完全图中最多含有 n * (n - 1) 条边。
    • 图的深度优先遍历类似于二叉树的前序遍历。
    • 存储:顺序存储、链式存储。邻接矩阵表示唯一,邻接表表示不唯一。
      • 顺序存储:邻接矩阵、边集数组。
        • 邻接矩阵:邻接矩阵通常采用一个一维数组存储图中的节点信息,采用一个二维数组存储图中节点间的邻接信息。其深度优先遍历时间复杂度为 O(n^2)。
          • 无向图的邻接矩阵:若从节点 ni 到 nj 有边,则邻接矩阵 m [i] [j] = m [j] [i] = 1,否则为 0。
            • 1、对称矩阵,对角线对称,并且是唯一的。
            • 2、第 i 行或第 i 列的非零元素的个数正好是第 i 节点的度。
          • 有向图的邻接矩阵:若从节点 ni 到 nj 有边,则邻接矩阵 m [i] [j] = 1,否则为 0。
            • 1、不一定是对称的。
            • 2、第 i 行非零元素的个数正好是第 i 个节点的出度,第 i 列非零元素的个数正好是第 i 个节点的入度。
          • 网的邻接矩阵:若从节点 a 到节点 b 有边,且边的权值为 2,节点 a、b 在一维数组中的位置分别为 0、1,则 m [0] [1] = 2;若无边则 m[0] [1] = 其它。
      • 链式存储:邻接表、链式前向星、十字链表、邻接多重表。
  • 树:
    • 定义:
      • 树:树中的每一个节点可以有 n 个字节点,但每一个节点只有一个父节点。
      • 二叉树:除了叶子结点外,每个节点最多只有两个字节点,分别为左节点和右节点。
      • 满二叉树:除了叶子结点外,每个节点都有左右字节点。
      • 完全二叉树:最下面两层节点的度 <= 2,且度小于 2 的节点的字节点都为左节点。故满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树。
      • 平衡二叉树:数的左右子树的高度差不超过 1。
      • 哈夫曼树:带权路径长度达到最小的二叉树,也称最优二叉树。节点的度只能是 0 或者 2。
      • 二叉排序树:对于某个节点,其左节点小于它,右节点大于它。
    • 叶子节点数 = 总节点数 - 每个度数所占有的节点数。如某个树中有 5 个度为 1 的节点,4 个度为 2 的节点,2 个度为 3 的节点,则其叶子节点数 = (5 * 1 + 4 * 2 + 2 * 3 = 20) - 5 - 4 - 2 = 20 - 11 = 9。
      n0 = 1 + 1 * n2 + 2 * n3 + 3 * n4 + … + (m - 1)nm。
    • 二叉树:
      • 顺序存储:若树的高度为 n,且采用三叉链表的方式存储时,则所需数组长度为 2^n - 1,第 i 节点的左子树、右子树下标分别为 2i、2i + 1。三叉链表格式为:左子树、节点数据、父节点、右子树。
      • 若二叉树高度为 h,则其最多有 2^h - 1 个节点,最少有有 2^(h - 1) 个节点。
      • n 个节点的二叉树有 (n + 1) / 2 个叶子结点。
    • 哈夫曼树:基于贪心算法策略产生。
      • 1、频率从小到大排列。
      • 2、频率最小的两个在最下层,且左节点小于右节点,左右节点频率相加为二者父节点。
      • 3、将父节点与第三个频率比较,若存在两个频率都小于父节点,则重新构建一个分支,若没有则只与父节点比较。
      • 4、若第三个频率小于父节点,则父节点为右子树,否则为左子树。重复该过程,直至构成一棵树。
      • 5、左子树编码为 0,右子树编码为 1。
  • 若某算法的时间复杂度递归式为 T(n) = T(n - 1) + n,则其时间复杂度为 O(n^2),若问题规模增加 16 倍,则运行时间增加了 16^2 = 256 倍。
  • 队列:
    • 循环队列:
      • 若头节点位置为 head,尾节点后一个位置为 tail,队列容量为 M,则其长度为 (tail - head + M) % M。循环队列一定要取模。
    • 双端队列:结合了栈与队列的特点。
    • 优先队列:带权值,通常采用堆实现,插入元素的时间复杂度为 O(logn),删除元素的时间复杂度为 O(1)。
  • 排序算法:选择、希尔、快排、堆 不稳定。
    • 快速排序:
      • 求第 i 小的数:最坏情况下时间复杂度为 O(nlog2n)。
    • 堆排序:
      • 堆排序是一种选择排序。其时间复杂度为 O(nlog2n)。
  • 贪心算法:在对问题求解时,总是做出在当前看来是最好的选择,也就是,不从整体最优上考虑,它所做出是在某种意义上的最优解。其时间复杂度为 O(n^2)。
  • 回溯:以深度优先的方法是搜索解空间,应采用 回溯算法。
  • 迪杰斯特拉算法:本质上为贪心策略。按照路径长度递增次序产生最短路径。
  • prim 算法:本质上为贪心策略。可在加权连通图里搜索最小生成树。策略是每次以选取距离一生成的部分权值最小的边作为贪心选择的标准。
  • 字符串:
    • 若一个字符串 s 是由 n 各不相同的字符构成,则与其互异的非平凡子串的个数是 (n + 1)(n - 1) / 2。
  • 散列表:
    • 解决冲突方法:线性探测法、链地址法(拉链法)。

3、系统开发

3.1、软件工程基础知识

  • 用户需求不清晰且经常发生变化,最适宜采用原型化开发方法。

  • 对于数据处理领域的问题,最适宜采用结构化开发方法。

  • 软件项目活动图中的最少时间 = 关键路径:耗时最长的路径,其决定了项目的最短工期。

  • 软件过程模型:瀑布、V、增量、演化、喷泉、统一过程UP、敏捷。

    • 大型软件系统的需求往往难以在前期确定,故最不适宜采用 瀑布 模型。
    • 极限编程中的结对编程:为解决代码质量低的问题,是一种代码审查过程。
    • 螺旋模型:计划指定、风险分析、工程实施、客户评估。
    软件过程模型1 软件过程模型1 软件过程模型1
  • 敏捷模型:

    • FDD 功用驱动方法:开发人员分类,分为首席程序员、类程序员。
    • 开放式源码:虚拟团队,开发成员分布各地。
  • RAD 模型:需要用户参与,模块化要求高,不适用新技术。

  • 软件过程活动:软件描述、软件开发、软件有效性验证、软件进化。

  • ISO/IEC 软件质量模型:

    • 外部和内部质量:6 个质量特性,27 个质量子特性。
      • 功能性:适合性、准确性、互操作性、安全保密性、功能性的依从性。
      • 可靠性:成熟性、容错性、易恢复性、可靠性的依从性。
      • 易用性:易理解性、易学性、易操作性、吸引性、易用性的依从性。
      • 效率:时间特性、资源利用性、效率的依从性。
      • 维护性:易分析性、易改变性、稳定性、易测试性、维护性的依从性。
      • 可移植性:适应性、易安装性、共存性、易替换性、可移植性的依从性。
  • 结构化分析:

    • 数据流图:对软件功能建模,即软件的逻辑模型,可依据软件的逻辑模型来考虑软件的物理实现。
      • 数据加工方式:流程图、NS 盒图、决策树、决策表等。
        • 决策树、决策表:适用于表示加工中涉及多个逻辑条件的情况。
    • 结构化分析工具:数据流图、数据字典、结构化语言、判定树、判定表。
    • 软件结构图:
      • 传入模块:从下属取数据,经过处理传给上级。
      • 传出模块:从上级取数据,经过处理传给下属。
      • 变换模块:即加工模块,从上级取数据,加工后再传回上级。变换数据流。
      • 协调模块:对所有下属模块进行协调和管理。在系统的输入输出部门或数据加工部分可以找到这样的模块。协调模块应该在较高层出现。
  • 软件开发成本估算:

    • 专家估算:即经验估算。
    • Wolverton:也叫 loc 方法,通过执行的源代码行数来进行成本估算,准确性低。
    • COCOMO:构造性成本模型,是一种参数化的成本估算方法。例如通过软件的难度、规模作为参数进行估算。
      • 基本模型:静态单变量模型。用一个以已经估算出来的源代码行数为自变量的函数来计算。
      • 中级模型:在基本模型的基础上,加上产品、硬件、人员等。
      • 详细模型:在终极模型的基础上,再考虑软件分析、设计等方面的影响。
    • COCOMOⅡ:是 COCOMO 的改进版,把最新软件开发方法考虑在内。由三个不同的计算模型组成。对象点、功能点、代码行数。
      • 应用组合模型:适用于使用现代 GUI 开发工具开发的项目。
      • 早期开发模型:适用于在软件架构确定之前,包含了一系列新的成本和估算方法,基于功能点和代码行数。
      • 结构化后期模型:是 COCOMOⅡ 最详细的模型,适用于软件架构确定之后,包括最新的成本估算、代码行计算方法。
  • 软件内聚类型:

    • 偶然内聚:模块中的代码无法定义其不同功能的调用,但它使该模块能执行不同的功能,称为巧合强度模块。
    • 逻辑内聚:把几种相关的功能组合在一起,每次调用时由传递的参数决定提供那种功能。
    • 时间内聚:把需要同时执行的动作组合在一起。
    • 过程内聚:构件或者操作的组合方式是,允许在调用前面的构件或操作之后,马上调用后面的构件或操作,即使两者之间没有数据进行传递。
    • 通信内聚:即模块内所有处理元素都在同一个数据结构上。
    • 顺序内聚:即模块内所有处理元素都顺序执行。
    • 功能内聚:即模块内所有元素共同完成同一个功能,联系紧密,缺一不可。
    软件过程模型1
  • 模块之间的联系程度:耦合度从低到高

    • 非直接耦合:模块之间无直接联系,联系完全通过主模块的控制和调用。
    • 数据耦合:借助参数表传递简单数据。
    • 标记耦合:通过参数表传递记录信息。
    • 控制耦合:传递的信息中包含控制模块内部逻辑的信息。
    • 外部耦合:访问统一全局变量(非全局数据结构),不是通过参数表传递。
    • 公共耦合:访问统一个公共数据环境(如全局数据结构、共享通信区、公共内存)。
    • 内容耦合:不通过正常入口,直接访问另一模块的内部数据,代码重叠,模块有多个入口。
  • 数据库设计阶段:

    • 1、需求分析:分析用户需求,包括数据、功能和性能等。
    • 2、概念结构设计:依据需求分析结果,采用 E- R 模型进行设计。
    • 3、逻辑结构设计:通过将 E-R 转换成表,来实现从 E-R 模型到关系模型的转换。
    • 4、数据库物理设计:为所设计的数据库选择合适的存储结构和存储路径。
    • 5、数据库实施:编程、测试、运行。
    • 6、数据库运行和维护:系统的运行和数据库的日常维护。
  • 软件设计:包括四个即独立又相互联系的活动,分别为 体系结构设计、接口设计、数据设计、过程设计。

  • 软件开发方法:

    • 结构化开发方法:自顶向下逐步分解,开发过程强调整体和全局,适合数据处理领域,不适合规模较大较复杂的项目,当一个环节变动时,改动耗费时间。
    • 面向对象开发方法:面向对象进行分析、设计、程序设计。是以系统要处理的问题域为对象,是分析和解决问题的核心。
    • 原型开发方法:适合需求不明确,经常变动的项目,可逐步进行优化和改进。
  • 软件开发过程:

    • 需求分析:确定软件要完成的功能及非功能需求。
    • 概要设计:要需求分析转化为软件的模块划分,确定模块之间的调用关系。
    • 详细设计:将模块进行细化,得到详细的数据结构和算法。
    • 编码:根据详细设计进行代码的编写,得到可运行的软件并测试。
  • 软件配置管理:版本控制、变更控制、过程支持。

  • 配置项:

    • 产品组:需求文档、设计文档、源代码、测试用例等。
    • 项目组:工作计划、项目质量报告等。
    • 环境类:指软件开发环境或软件维护环境,如编译器、操作系统、编辑器、数据库管理系统、开发工具、项目管理工具、文档编制工具等。
    • 定义累:是需求分析与定义阶段结束后得到的产品,如需求规格说明书、项目开发计划、设计标准或设计原则、验收测试计划等。
    • 设计类:设计阶段结束后得到的产品,如系统设计规格说明、程序规格说明、数据库设计、编码标准、用户界面标准、测试标准、系统测试计划、用户手册等。
    • 测试类:系统测试完成后的产品,如系统测试数据、系统测试结果、操作手册、安装手册等。
    • 维护类:进入维护阶段以后产生的工作产品。
  • 集成测试:在单元测试的基础上进行,集成测试计划在概要设计阶段制定。

    • 非渐增式集成测试:先单测每个模块,在将所有模块组装成一个系统进行测试。
    • 渐增式集成测试:
      • 自顶向下集成:先测试上层模块,再测试下层模块,不需要编写驱动模块。
      • 自底向上集成:先测试下层模块,再测试上层模块,不需要编写桩模块。
  • 白盒测试:结构测试/逻辑驱动测试。

    • 静态测试:静态结构分析法、静态质量度量法、代码走查。
    • 动态测试:
  • 管道/过滤器体系结构的优点:

    • 1、良好的隐蔽性、高内聚、低耦合。
    • 2、允许设计者将整个系统的输入/输出行为看成是多个过滤器行为的简单合成。
    • 3、支持软件重用。
    • 4、系统维护和增强系统性能简单。
    • 5、允许对一些如吞吐量、死锁等属性的分析。
    • 6、支持并行执行。
  • 软件维护:

    • 1、改正性维护:修复 bug。
    • 2、适应性维护:软件适应信息技术变化和管理需求变化。
    • 3、改善性维护:新需求。
    • 4、预防性维护:改进软件的可靠性和可维护性。
  • 软件工程:

    • 需求开发活动:需求获取、需求分析、需求定义。
    • 概要设计:系统架构、模块划分、系统接口、数据设计。
  • 软件原型:

    • 从原型是否实现功能划分:

      • 水平原型:即行为原型,主要用来主界面上,通常只为功能的导航。
      • 垂直原型:主要用来复杂的算法实现上。
    • 从原型的最终结果划分:

      • 抛弃式原型:即探索式原型,是指达到预期目的后,原型本身被抛弃,主要用在需求不确定性、二义性、不完整性、含糊性等。
      • 演化式原型:为开发增量式产品提供基础,主要用在必须易于升级和优化的场合,适合于 Web 项目。
  • 软件能力成熟度集成模型:

    • 0、未完成级:表明过程域的一个或多个特定目标没有被满足。
    • 1、已执行级:过程通过转化可识别的输入工作产品,产生可识别的输出工作产品,关注于过程域的特定目标的完成。
    • 2、已管理级:过程作为已管理的过程制度化,针对单个过程实例的能力。
    • 3、已定义级:过程作为一定义的过程制度化,关注过程的组织级标准化和部署。
    • 4、量化管理级:过程作为定量管理的过程制度化。
    • 5、优化级:过程作为优化的过程制度化,表名过程得到很好的执行且持续得到改进。
  • 业务用例和参与者一起描述组织支持的业务过程。

  • 业务对象模型描述业务结构及结构元素如何完成业务用例。

  • 软件维护工具:

    • 版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具。
  • 项目管理工具:成本估算工具。

  • OLAP:针对特定问题的联机数据访问与分析。他通过多维的方式对数据进行分析、查找和报表。

  • 变更控制过程:问题分析与变更描述、变更分析与成本计算、变更实现。

  • 项目范围管理:

    • 项目章程、项目范围管理计划、组织过程资产、批准的变更申请。
  • 项目时间管理:

    • 活动定义、活动排序、活动资源估算、活动历时估算、制定计划、进度控制。
  • 软件质量保证:

    • 质量审计:包括软件评审。
    • 过程分析。
  • UML 图:

    • 用例图:从用户角度描述系统功能。描述角色及角色与用例之间的连接关系。一个用例图包含了多个模型元素,如系统、参与者和用例。并显示了这些元素之间的各种关系,如泛化、关联和依赖等。侧重描述用户需求。
    • 类图:描述系统中类的静态结构。表示类、接口和它们之间的协作关系。侧重描述系统具体实现和系统结构。描述系统的模块结构,抽象层次一般。
    • 对象图:系统中的多个对象在某一时刻的状态。类图的实例,描述对象之间的关系。描述具体的模块实现,抽象层次最低。
    • 状态图:描述状态到状态的控制流,常用于动态性建模。描述类的对象所有可能的状态,以及事件发生时状态的转移条件。是对类图的补充。主要描述行为的结果。
    • 活动图:描述业务实现用例的工作流程。描述用例要求所要进行的活动,是一种特殊的状态图。主要描述行为的动作。
    • 顺序图(序列图):对象之间的动态合作关系,强调对象发消息的顺序,同时显示对象之间的交互。侧重描述系统行为。
    • 协作图:描述对象之间的协作关系。和顺序图极为相似,显示对象间的动态合作关系。
    • 构件图(组件图):描述系统的静态现视图,一种特殊的 UML 图。描述代码构建的物理结构以及各种构建之间的依赖关系。描述系统的模块结构,抽象层次较高。
    • 部署图(配置图):定义系统中软硬件的物理体系结构。
    • 包图:对构成系统的模型元素进行分组整理。
    • 组合结构图:表示类或者构建内部结构的图。描述结构化类的内部结构。
    • 交互概览图:用活动图来表示多个交互之间的控制关系。
    软件过程模型1
  • UML 图:

    • 结构图:类图、对象图、组件图、部署图。
    • 行为图:用例图、顺序图、活动图、状态图、通信图。
  • UML 事务:

    • 结构事务:类、接口、协作、用例、主动类、组件、节点。
    • 行为事务:交互、状态机。
    • 分组事务:包。
    • 注释事务:注解。
  • 类图关系:

    • 泛化:继承,三角实线箭头,箭头指向父类。一般化和特殊化关系。
    • 实现:实现,三角虚线箭头,箭头指向接口。语义关系。
    • 关联:拥有,即成员变量,普通实线箭头,箭头指向成员变量类型。结构关系。
    • 聚合:整体与部分,且部分离开整体可单独存在。即成员变量,关联关系的一种,且为强关联。空心菱形实线,菱形指向整体。
    • 组合:整体与部分,且部分离开整体不能单独存在,即成员变量,关联关系的一种,且比聚合关系更强。实心菱形实线,菱形指向整体。
    • 依赖:使用,即形参,普通虚线箭头,箭头指向被依赖者。语义关系。
  • 用例关系:

    • 包含:当可以从两个或两个以上的用例中提取公共行为时,应该使用包含关系来表示它们,而原始用例称为基本或基础用例。
    • 扩展:如果一个用例明显的混合了两种或两种以上的不同场景,则使用扩展。
    • 泛化:当多个用例共同拥有一种类似的结构或行为时。
  • 结构化方法:结构化分析、结构化设计、结构化程序设计。与瀑布型相对应。

  • 面向对象:

    • 面向对象分析(OOA):一种分析方法,利用从问题域的词汇表中找到的类和对象来分析需求,重点是找到和描述问题领域的对象或者概念,然后构建真实世界的模型,利用面向对象的观点来看世界。建模系统功能、发现并确定业务对象、组织对象并确定对象间的关系。
    • 面向对象设计(OOD):一种设计方法,包括面向对象分解的过程和一种表示法,这种表示法用于展现被设计系统的逻辑模型(类和对象结构)和物理模型(模块和处理架构)、静态模型和动态模型。
    • 面向对象程序设计(OOP):一种实现方法,在这种方法中,程序被组织成许多相互协作的对象,每个对象代表某个类的一个实例,而类则属于一个通过继承关系的层次结构。
  • 面向对象类:

    • 实体类:映射需求中的每个实体,保存需要存储在永久存储介质中的信息。

    • 控制类:用于控制用例工作的类,用于对一个或几个用例所持有的控制行为进行建模。

    • 边界类:用于封装在用例内、外流动的信息或数据流。

  • 模型分析:模型的合理性分析、模型的误差分析、参数的灵敏性分析。

  • 多态:

    • 参数多态:应用广泛,最纯的多态。
    • 包含多态:同样的操作可用于一个类型及其子类型。
    • 过载多态:同一个名(操作符、函数名)在不同的上下文中有不同的类型。
    • 强制多态:编译程序通过语义操作,把操作对象的类型进行强制转换,以符合函数或操作符的要求。

4、标准与知识产权

4.1 知识产权

  • 保护期不受时间限制:署名权、修改权、保护作品完整权。
  • 保护期受时间限制:发表权、使用权、获得报酬权。期限为作者终身及死后五十年。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/81862.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

海思 35XX MIPI读取YUV422

1.项目背景&#xff1a; 使用海思芯片&#xff0c;接收FPGA发送的MIPI数据&#xff0c;不需要ISP处理&#xff0c;YUV图像格式为YUV422。 2.移植MIPI驱动 修改IMX347的驱动远吗&#xff0c;将I2C读写的部分注释&#xff0c;其他的不用再做修改。 int imx347_slave_i2c_init(ot…

算力租赁革命:弹性模式如何重构数字时代的创新门槛​

一、算力革命&#xff1a;第四次工业革命的核心驱动力​ 在科技飞速发展的当下&#xff0c;我们正悄然迎来第四次工业革命。华为创始人任正非在一场程序设计竞赛中曾深刻指出&#xff0c;这场革命的基础便是大算力。随着 5G、人工智能、大数据、物联网等信息技术的迅猛发展&am…

改写自己的浏览器插件工具 myChromeTools

1. 起因&#xff0c; 目的: 前面我写过&#xff0c; 自己的一个浏览器插件小工具 最近又增加一个小功能&#xff0c;可以自动滚动页面&#xff0c;尤其是对于那些瀑布流加载的网页。最新的代码都在这里 2. 先看效果 3. 过程: 代码 1, 模拟鼠标自然滚动 // 处理滚动控制逻辑…

深度学习篇---OC-SORT简介

OC-SORT&#xff08;Observation-Centric SORT&#xff09;是一种以观测为中心的多目标跟踪算法&#xff0c;旨在解决传统 SORT 算法在目标遮挡、外观变化和复杂交互场景下关联准确性不足的问题。以下是其详细介绍&#xff1a; 核心创新点 以观测为中心的在线平滑&#xff08…

硬件工程师笔记——二极管Multisim电路仿真实验汇总

目录 1 二极管基础知识 1.1 工作原理 1.2 二极管的结构 1.3 PN结的形成 1.4 二极管的工作原理详解 正向偏置 反向偏置 multisim使用说明链接 2 二极管特性实验 2.1 二极管加正向电压 2.2 二极管加反向电压 2.3 二极管两端的电阻 2.4 交流电下二级管工作 2.5 二极…

vscode中让文件夹一直保持展开不折叠

vscode中让文件夹一直保持展开不折叠 问题 很多小伙伴使用vscode发现空文件夹会折叠显示, 让人看起来非常难受, 如下图 解决办法 首先打开设置->setting, 搜索compact Folders, 去掉勾选即可, 如下图所示 效果如下 看起来非常爽 ! ! !

设计模式学习笔记

设计模式 一&#xff1a;分类&#xff1a; 创建型模式 用于描述“怎样创建对象”&#xff0c;它的主要特点是“将对象的创建与使用分离”。GoF&#xff08;四人组&#xff09;书中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。 结构型模式 用于描述如何将…

Kaggle-Predict Calorie Expenditure-(回归+xgb+cat+lgb+模型融合+预测结果)

Predict Calorie Expenditure 题意&#xff1a; 给出每个人的基本信息&#xff0c;预测运动后的卡路里消耗值。 数据处理&#xff1a; 1.构造出人体机能、运动相关的特征值。 2.所有特征值进行从新组合&#xff0c;注意唯独爆炸 3.对连续信息分箱变成离散 建立模型&#x…

第十二篇:MySQL 分布式架构演进与云原生数据库探索

本篇聚焦 MySQL 在互联网架构演进过程中的角色变化&#xff0c;探讨其从单体向分布式、再向云原生架构转型的关键技术路径与实践建议。 一、传统单体架构下的 MySQL 应用模式 在早期项目中&#xff0c;MySQL 多用于中小型应用&#xff1a; 单节点部署&#xff1b; 水平扩展难…

JVM——回顾:JVM的起源、特性与系统构成

引入 在当今数字化时代&#xff0c;Java语言及其运行环境Java虚拟机&#xff08;JVM&#xff09;在软件开发领域占据着举足轻重的地位。从大型企业级应用到各类移动应用&#xff0c;JVM凭借其独特的特性和强大的功能&#xff0c;为开发者提供了高效且稳定的运行环境。 JVM的起…

大疆上云API+流媒体服务器部署实现直播功能

根据官网文档上云API&#xff0c;先将官方提供的Demo部署起来&#xff0c;后端和前端服务环境搭建请参考官方文档。因为官方文档没有对直播这块的环境搭建进行说明&#xff0c;所以下面主要对直播功能环境搭建做一个记录&#xff0c;仅供参考&#xff0c;如有不足之处&#xff…

计算机网络 HTTP篇常见面试题总结

HTTP各版本区别 HTTP 1.0 无状态、无连接&#xff1a;每次请求都需要建立新的 TCP&#xff0c;处理完后立即关闭&#xff0c;导致开销较大。队头阻塞&#xff1a;每个请求必须按照顺序依次处理&#xff0c;前面的请求未完成&#xff0c;后面的请求只能等待&#xff0c;减低了…

目标检测:YOLO 模型详解

目录 一、YOLO&#xff08;You Only Look Once&#xff09;模型讲解 YOLOv1 YOLOv2 (YOLO9000) YOLOv3 YOLOv4 YOLOv5 YOLOv6 YOLOv7 YOLOv8 YOLOv9 YOLOv10 YOLOv11 YOLOv12 其他变体&#xff1a;PP-YOLO 二、YOLO 模型的 Backbone&#xff1a;Focus 结构 三、…

开源 FcDesigner 表单设计器组件事件详解

FcDesigner 是一款基于Vue的开源低代码可视化表单设计器工具&#xff0c;通过数据驱动表单渲染。可以通过拖拽的方式快速创建表单&#xff0c;提高开发者对表单的开发效率&#xff0c;节省开发者的时间。并广泛应用于在政务系统、OA系统、ERP系统、电商系统、流程管理等领域。 …

关于 smali:2. 从 Java 到 Smali 的映射

一、对照 Java 代码与 Smali 代码差异 1.1 方法调用差异&#xff1a;Java vs Smali Java 方法分类&#xff1a; 方法类型Java 示例Smali 指令特点说明静态方法Utils.print("hi")invoke-static没有 this 指针实例方法obj.show()invoke-virtual有 this&#xff0c;虚…

2025年05月29日Github流行趋势

项目名称&#xff1a;agenticSeek 项目地址url&#xff1a;https://github.com/Fosowl/agenticSeek项目语言&#xff1a;Python历史star数&#xff1a;11898今日star数&#xff1a;2379项目维护者&#xff1a;Fosowl, steveh8758, klimentij, ganeshnikhil, apps/copilot-pull-…

Dubbo高频面试题

引言 作为分布式服务框架的标杆&#xff0c;Dubbo凭借其高性能RPC通信、灵活的服务治理能力和丰富的容错机制&#xff0c;成为Java技术栈中微服务领域的核心考点。本文系统梳理Dubbo高频面试核心知识点&#xff0c;涵盖容错策略、负载均衡、注册中心原理、服务上下线感知等关键…

氮气吹扫电磁阀

一、氮气吹扫电磁阀的概述 氮气吹扫电磁阀是一种重要的工业自动控制设备&#xff0c;用于对工业设备中出现的杂质和沉淀物进行清理&#xff0c;以保证生产线的畅通和生产效率的稳定。其作用是在需要吹扫清洗的工业设备中&#xff0c;通过控制气源的气压&#xff0c;打开电磁阀…

网络安全的守护者:iVX 如何构建全方位防护体系

一、安全技术的三大趋势 在数字化时代&#xff0c;网络安全面临着前所未有的挑战。随着企业级应用的普及&#xff0c;安全技术也在不断演进。目前&#xff0c;安全技术架构的发展呈现出三大趋势&#xff1a; 零信任架构的崛起&#xff1a;传统的网络安全依赖于边界防护&#…

微软云如何申请使用

微软云&#xff08;Azure&#xff09;新手“开荒”指南&#xff1a;5步搞定账户&#xff0c;直达云端&#xff01; 还在为云计算的复杂门槛发愁吗&#xff1f;别担心&#xff01;当全球83%的企业都在加速“上云”&#xff0c;微软智能云Azure凭借其在全球34个区域、200服务的庞…