一、计算机的体系结构和主要部件

1.数据的表示(★★★★)

R进制转十进制使用按权展开法,其具体操作方式为:

R进制数的每一位数值用RkR^kRk形式表示,即幂的底数是R,指数为k, k该位和小数点之间的距离有关。当该位位于小数点左边, k值是该位和小数点之间数码的个数,而当该位位于小数点右边,k值是负值,其绝对值是该s位和小数点之间数码的个数加1。
$$

  • 例如十进制数: 1234.56=1×103+2×102+3×101+4×100+5×10−1+6x10−21234.56=1\times10^3+2\times10^2+3\times10^1+4\times10^0+5\times10^{-1}+6x10^{-2}1234.56=1×103+2×102+3×101+4×100+5×10−1+6x10−2
  • 例如二进制数 : $10100.01=1×24+1×22+1×2−210100.01=1\times2^4+1\times2^2+1\times2^{-2}10100.01=1×24+1×22+1×2−2
  • 例如七进制数 :604.01=6×72+4×70+1×7−2604.01=6\times7^2+4\times7^0+1\times7^{-2}604.01=6×72+4×70+1×7−2
十进制转R进制使用短除法
  • 例如将94转换为二进制数:
  • 二进制转八进制与十六进制数。
原码:将最高位用做符号位(0表示正数, 1表示负数) ,其余各位代表数值本身的绝对值的表示形式。
反码正数的反码与原码相同。负数的反码符号位为1,其余各位为该数绝对值的原码按位取反。这个取反的过程使得这种编码称为"反码”。
补码正数的补码与原码相同负数的补码是该数的反码加1,这个加1就是"补"。
移码正数和负数都是都是补码符号位取反用于(浮点数解码)
数值1 数值-1 1-1
原码 0000 0001 1000 0001 1000 0010
反码 0000 0001 1111 1110 1111 1111 负数符号位不变,数据位取反
补码 0000 0001 1111 1111 0000 0000 补码进行数值计算,负数,反码+1
移码 1000 0001 0111 1111 1000 0000 都是补码符号位取反

数值的表示范围

二进制最值表示,以8位为例,第一位符号位
{最值0111111111111111最值+1=28−10000000110000001Min∼Max−(28−1−1)=−12728−1−1=+127N位时−(2n−1−1)+(2n−1−1)}\begin{Bmatrix} 最值 & 01111111& 11111111 \\ 最值 +1=2^{8-1} & 00000001&10000001 \\ Min\sim Max&-(2^{8-1} - 1 )= -127 &2^{8-1} - 1=+127&\\ N位时&-(2^{n-1} - 1)&+(2^{n-1} - 1) \end{Bmatrix} ⎩⎪⎪⎨⎪⎪⎧​最值最值+1=28−1Min∼MaxN位时​0111111100000001−(28−1−1)=−127−(2n−1−1)​111111111000000128−1−1=+127+(2n−1−1)​​⎭⎪⎪⎬⎪⎪⎫​

码制 定点整数 定点小数 表示数字数
原码 −(2n−1−1)∼+(2n−1−1)-(2^{n-1} - 1)\sim +(2^{n-1}-1)−(2n−1−1)∼+(2n−1−1) −(1−2)−(n−1)∼+(1−2)−(n−1)-(1-2)^{-(n-1)}\sim+(1-2)^{-(n-1)}−(1−2)−(n−1)∼+(1−2)−(n−1) 2n−12^n-12n−1
反码 −(2n−1−1)∼+(2n−1−1)-(2^{n-1} - 1)\sim +(2^{n-1}-1)−(2n−1−1)∼+(2n−1−1) −(1−2)−(n−1)∼+(1−2)−(n−1)-(1-2)^{-(n-1)}\sim+(1-2)^{-(n-1)}−(1−2)−(n−1)∼+(1−2)−(n−1) 2n−12^n-12n−1
补码 −2n−1∼+(2n−1−1)-2^{n-1}\sim+(2^{n-1}-1)−2n−1∼+(2n−1−1) −1∼+(1−2−(n−1))-1 \sim +(1-2^{-(n-1)})−1∼+(1−2−(n−1)) 2n2^n2n
移码 −2n−1∼+(2n−1−1)-2^{n-1}\sim+(2^{n-1}-1)−2n−1∼+(2n−1−1) −1∼+(1−2−(n−1))-1 \sim +(1-2^{-(n-1)})−1∼+(1−2−(n−1)) 2n2^n2n

二进制原码反码能够表示的数字个数
2n−1×2−1=2n−1{−010000000+000000000}2^{n -1}\times2 - 1=2^n-1 \begin{Bmatrix} -0 & 1000&0000 \\ +0 & 0000&0000 \end{Bmatrix} 2n−1×2−1=2n−1{−0+0​10000000​00000000​}
乘二的原因,正负值,减一的原因,0有两种表现方式,正0和负0
二进制补码移码能够表示的数字个数:
2n−1×2=2n{−128(补码人为规定)10000000定点整数−1(补码人为规定)10000000定点小数}2^{n -1}\times2 =2^n \begin{Bmatrix} -128(补码人为规定) &1000 & 0000 & 定点整数\\ -1(补码人为规定) & 1000&0000 & 定点小数 \end{Bmatrix} 2n−1×2=2n{−128(补码人为规定)−1(补码人为规定)​10001000​00000000​定点整数定点小数​}

浮点的运算

浮点数表示:
N=尾数×基数指数(阶码)=1.25×105N=尾数\times基数^{指数(阶码)} =1.25\times10^5N=尾数×基数指数(阶码)=1.25×105
运算过程:
对阶>尾数计算>结果格式化
特点:

  • 1、一般尾数用补码,阶码用移码
  • 2、阶码的位数决定数的表示范围,位数越多范围越大
  • 3、尾数的位数决定数的有效精度,位数越多精度越高
  • 4、对阶时,小数向大数看齐
  • 5、对阶是通过较小数的尾数右移实现的

2.计算机结构

运算器控制器(★★★★)
运算器
  • 算术逻辑单元ALU:数据的算术运算和逻辑运算
  • 累加寄存器AC:通用寄存器,为ALU提供一个工作区,用在暂存数据数据
  • 缓冲寄存器DR:写内存时,暂存指令或数据
  • 状态条件寄存器PSW:存状态标志与控制标志(争议:也有将其归为控制器的)
控制器
  • 程序计数器PC:存储下一条要执行指令的地址
  • 指令寄存器IR:存储即将执行的指令
  • 指令译码器ID:对指令中的操作码字段进行分析解释
  • 时序部件:提供时序控制信号

3.Flynn分类法(★★)

I:指令流,D:数据流

体系结构类型 结构 关键特性 代表
单指令流单数据流SISD 控制部分:1、处理器: 1、主存模块:1、 - 单处理器系统
单指令流多数据流SIMD 控制部分:1、处理器:多个、主存模块:多个 各处理器以异步的形式执行同一条指令 ·行并行处理机阵列处理机超级向量处理机
多指令流单数据流MISD 控制部分:多个,处理器:1、主存模块:多个 被证明不可能,至少是不实际 目前没有,有文献称流水线计算机为此类
多指令流多数据流MIMD 控制部分:多个、处理器:多个、主存模块:多个 能够实现作业、任务、指令等各级全面进行 多处理机系统多计算机(主流计算机)

指令的基本概念

··一条指令·就是机器语言的一个语句,它是一组·有意义的二进制代码·,指令的基本格式如下:

  • 操作码部分指出了计算机要执行什么性质的操作,如加法、减法、取数、存数等。
  • 地址码字段需要包含各操作数的地址及操作结果的存放地址等,从其地址结构的角度可以分为
    • 三地址指令、二地址指令、一地址指令和零地址指令。

寻址方式

4.CISCRISC (★★)

指令系统类型 指令 寻址方式 实现方式 其它
CISC (复杂) 数量多,使用频率差别大,可变长格式 支持多种 微程序控制技术(微码) 研制周期长
RISC (精简) 数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器,只有Load/Store操作内存 支持方式少(寄存器) 增加了通用寄存器;硬布线逻辑控制为主适合采用流水 优化编译,有效支持高级语言
CISC:复杂,指令数量多,频率差别大,多寻址
RISC:精筒,指令数量少,操作寄存器,单周期,少寻址,多通用寄存器,流水线,优化编译,有效支持高级语言

5.流水线技术(★★★★)

相关参数计算:流水线执行时间计算、流水线吞吐率、流水线加速比、流水线效率
流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件利用率指令的平均执行速度

流水线-流水线计算


流水线计算公式:一条指令执行时间+(指令条数−1)×流水线周期={理论公式(t1+t2+t3+...+tk)+(n−1)×Δt实践公式k×Δt+(n−1)×Δt流水线计算公式:一条指令执行时间+ (指令条数-1)\times 流水线周期 =\\ \begin{cases} 理论公式 & (t_1+t_2+t_3+...+t_k)+(n-1) \times \Delta t \\ 实践公式 & k \times \Delta t +(n-1) \times \Delta t \end{cases} 流水线计算公式:一条指令执行时间+(指令条数−1)×流水线周期={理论公式实践公式​(t1​+t2​+t3​+...+tk​)+(n−1)×Δtk×Δt+(n−1)×Δt​
考试中已理论公式为主,理论公式计算没有结果,已实际公式计算。

例题:一条指令的执行过程可以分解为取指、分析和执行三步,在取指时间:t取指=3Δt分析时间:t分析=2Δt执行时间:t执行=4Δt的情况下,若按串行方式执行,则10条指令全部执行完需要(90)Δt;若按流水线的方式执行,流水线周期为(4)Δt,则10条指令全部执行完需要(9+4×(10−1)=45)Δt。例题:一条指令的执行过程可以分解为取指、分析和执行三步,在\\ 取指时间:t_{取指}=3\Delta t\\ 分析时间:t_{分析}=2\Delta t\\ 执行时间:t_{执行}=4\Delta t\\ 的情况下,若按串行方式执行,则10条指令全部执行完需要(90) \Delta t;\\若按流水线的方式执行,流水线周期为(4)\Delta t,\\则10条指令全部执行完需要(9+4\times(10-1)=45)\Delta t 。 例题:一条指令的执行过程可以分解为取指、分析和执行三步,在取指时间:t取指​=3Δt分析时间:t分析​=2Δt执行时间:t执行​=4Δt的情况下,若按串行方式执行,则10条指令全部执行完需要(90)Δt;若按流水线的方式执行,流水线周期为(4)Δt,则10条指令全部执行完需要(9+4×(10−1)=45)Δt。

流水线-流水线吞吐量计算

·流水线的吞吐率(Though Put rate, TP)是指在单位时间内流水线所完成的任务数量输出的结果数量。计算流水线吞吐率的最基本的公式如下:
TP=指令条数流水线执行时间TP=\cfrac{指令条数}{流水线执行时间} TP=流水线执行时间指令条数​
流水线最大吞吐量(实践公式)等于流水线周期的导数
TPmax=lim⁡n⟶∝n(k+n−1)Δt=1ΔtTP_{max} = \lim_{n\longrightarrow \propto} \cfrac{n}{(k+n-1)\Delta t}=\cfrac{1}{\Delta t} TPmax​=n⟶∝lim​(k+n−1)Δtn​=Δt1​

流水线-超标量流水线计算

指令条数n=n/度指令条数n = n/度 指令条数n=n/度

6.存储系统(★★★★)

层次化存储结构


局部性原理是层次化存储结构的支撑

Cache - 概念(★)
  • 在计算机的存储系统体系中, Cache是访问速度最快的层次(若有寄存器,则寄存器最快)。
  • 使用Cache改善系统性能的依据是程序的局部性原理(空间局部性和时间局部性)
    如果以h代表对Cache的访问命中率,t1表示Cache的周期时间,t2表示主存储器周期时间,以读操作为例,使用"Cache+主存储器”的系统的平均周期为t3,,则:t3=h×t1+(1−h)×t2其中,(1−h)又称为失效率(未命中率)如果以h代表对Cache的访问命中率,t_1表示Cache的周期时间, t_2表示主存储器周期时间,\\ 以读操作为例,使用"Cache+主存储器”的系统的平均周期为t_3,,则:\\ t_3= h \times t_1+(1-h) \times t_2 其中, (1-h)又称为失效率(未命中率) 如果以h代表对Cache的访问命中率,t1​表示Cache的周期时间,t2​表示主存储器周期时间,以读操作为例,使用"Cache+主存储器”的系统的平均周期为t3​,,则:t3​=h×t1​+(1−h)×t2​其中,(1−h)又称为失效率(未命中率)
Cache - 映像

Cache与主存的映射都是由硬件实现的·

  • 直接相联映像:硬件电路较简单,但冲突率很高。
  • 全相联映像:电路难于设计和实现,只适用于小容量的cache,冲突率较低。
  • 组相联映像:直接相联与全相联的折中。
  • 地址映像是将主存与Cache的存储空间划分为若干大小相同的页(或称为块)。例如,某机的主存容量为1GB,划分为2048页,每页512KB;Cache容量为8MB,划分为16页,每页512KB.
主存-编址与计算
存储单元
  • 按字编址:存储体的存储单元是字存储单元,即最小寻址单位是一个字
  • 按字节编址:存储体的存储单元是字节存储单元,即最小寻址单位是一个字节。根据存储器所要求的容量和选定的存储芯片的容量,就可以计算出所需芯片的总数,即:总片数=总容量/每片的容量

7.可靠性(★)

串联系统与并联系统(可靠度计算)


可靠度计算·

N 模混合系统

8.总线系统(★)

一条总线同一时刻仅允许一个设备发送,但允许多个设备接收。总线的分类:

  • 数据总线(Data Bus DB) :在CPU与RAM之间来回传送需要处理或是需要储存的数据。
  • 地址总线(Address Bus AB) :用来指定在RAM (Random Access Memory)之中储存的数据的地址
  • 控制总线(Control Bus CB) :将微处理器控制单元(Control Unit)的信号,传送到周边设备,一般常见的为USB Bus和1394 Buso

9.校验码(★★★)

校验码基础知识

码距:任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制位数就称为数据校验码的·玛距
例如,用4位二进制表示16种状态,则有16个不同的码字,此时码距为1如0000与0001。

校验码-奇偶校验

奇偶校验码的编码方法是:由若干位有效信息(如一个字节) ,再加上一个二进制位(校验位)组成校验码。

  • 奇校验:整个校验码(有效信息位和校验位)中"1”的个数为奇数。
  • 偶校验:整个校验码(有效信息位和校验位)中“1"的个数为偶数。
    奇偶校验,可检查1(奇)位的错误,不可纠错。
校验码-循环校验码CRC

CRC校验,可检错,不可纠错。
CRC的编码方法是:在k位信息码之后拼接r位校验码。应用CRC码的关键是如何从k位信息位简便地得到r位校验位(编码) ,以及如何从k+r位信息码判断是否出错。
循环冗余校验码编码规律如下:
把待编码的N位有效信息表示为多项式M(X);把M(X)左移K位,得到M(X)×xk,这样空出了K位,以便拼装K位余数(即校验位);选取一个K+1位的产生多项式G(X),对M(X)×K做模2除;把左移K位以后的有效信息与余数R(X)做模2加减,拼接为CRC码,此时的CRC码共有N+K位。把接收到的CRC码用约定的生成多项式G(X)去除,如果正确,则余数为0;如果某一位出错,则余数不为0。不同的位数出错其余数不同,余数和出错位序号之间有惟一的对应关系。把待编码的N位有效信息表示为多项式M(X);\\ 把M(X)左移K位,得到M(X) \times x^k,这样空出了K位, 以便拼装K位余数(即校验位) ;\\ 选取一个K+1位的产生多项式G(X),对M(X)\times K做模2除;\\ 把左移K位以后的有效信息与余数R(X)做模2加减,拼接为CRC码,此时的CRC码共有N+K位。\\ 把接收到的CRC码用约定的生成多项式G(X)去除,如果正确,则余数为0;如果某一位出错,则余数不为0。\\不同的位数出错其余数不同,余数和出错位序号之间有惟一的对应关系。 把待编码的N位有效信息表示为多项式M(X);把M(X)左移K位,得到M(X)×xk,这样空出了K位,以便拼装K位余数(即校验位);选取一个K+1位的产生多项式G(X),对M(X)×K做模2除;把左移K位以后的有效信息与余数R(X)做模2加减,拼接为CRC码,此时的CRC码共有N+K位。把接收到的CRC码用约定的生成多项式G(X)去除,如果正确,则余数为0;如果某一位出错,则余数不为0。不同的位数出错其余数不同,余数和出错位序号之间有惟一的对应关系。
什么是模2除法,它和普通的除法有何区别?模2除法是指在做除法运算的过程中不计其进位的除法。

校验码-海明校验码

海明校验,可检错,也可纠错。
海明校验码的原理是:在有效信息位加入几个校验位形成海明码,使玛距比较均匀地拉大,并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化,这不但可以发现错误,还能指出错误的位置,为自动纠错提供了依据

(★)校验码的求取:
2r⩾m+r+1(m,有效信息位位数,r,求取的,编码位数)2^r \geqslant m+r+1 (m,有效信息位位数,r,求取的,编码位数) 2r⩾m+r+1(m,有效信息位位数,r,求取的,编码位数)

第二章、操作系统

进程管理

  • 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。它由程序块进程控制块(PCB)数据块三部分组成。

  • 进程与程序的区别:进程是程序的一次执行过程,没有程序就没有进程。程序是完成某个特定功能的一系列程序语句的集合,只要不被破坏,它就永远存在。程序是一个静态的概念,而进程是一个动态的概念,它由创建而产生,完成任务后因撇销而消亡;进程是系统进行资源分配和调度的独立单位,而程序不是。

进程的状态(★★)

进程的同步与互斥

前趋图(★★★)

前驱后继,箭头指向流出的操作是V(S)操作,箭头指向流入操作是P(S)操作

信号量与PV操作(★★★★)
  • 临界资源:诸进程间需要互斥方式对其进行共享的资源,如打印机、磁带机等
  • 临界区:每个进程中访问临界资源的那段代码称为临界区
  • 信号量:是一种特殊的变量(S)
  • P荷兰语的Passeren, V是荷兰语的Verhoogo
    生产者消费者模式 V操作会唤醒阻塞队列进程

S=临界资源的数目P=对资源的锁定P(S)V=对资源的释放V(S)S = 临界资源的数目\\ P = 对资源的锁定 P(S) \\ V= 对资源的释放 V(S) \\ S=临界资源的数目P=对资源的锁定P(S)V=对资源的释放V(S)

PV操作心得:

第一题可以这么理解。理发店里只有3位师傅,有10名顾客,每位师傅同时只能为1名顾客理发。所以, 10人中有3人可以同时理发,剩余7名需要等待。S信号初始值代表的是资源(师傅数量) ,所以S=3,此时没有顾客在理发。第一位顾客接受理发时, s-1=2,还有两名师傅空闲;第二位顾客接受理发时, s-1=1,还有一位师傅空闲;第三位顾客接受理发时, s-1=0,三位师傅都忙了;第四位顾客排队, s-1=-1;第五位顾客排队, s-1=-2;第六位排队, s-1=-3;第七位排队, s-1=-4;第八位排队, s-1=-5;第九位排队, s-1=-6,第十位排队, s-1=-7,所以s取值是3~-7

互斥模型

同步模型

例题:

死锁及银行家算法(★★★★)

进程管理是操作系统的核心,但如果设计不当,就会出现死锁的问题。如果一个进程在等待一件不可能发生的事,则进程就死锁了。而如果一个或多个进程产生死锁,就会造成系统死锁
不发生死锁的最多进程数=∑i=1n(ki−1)(k为每个进程需要的资源数)不发生死锁的最多进程数=\sum^n_{i=1}(k_i -1)(k 为每个进程需要的资源数) 不发生死锁的最多进程数=i=1∑n​(ki​−1)(k为每个进程需要的资源数)

死锁问题

银行家算法

银行家算法:分配资源的原则

  • 当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程。
  • 进程可以分期请求资源,但请求的总数不能超过最大需求量。
  • 当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源。

存储管理

页式存储:将程序与内存均划分为同样大小的块,以页为单位将程序调入内存。10 = 2,110 = 6

内存淘汰机制

  • 访问为0
  • 修改为0

优点:利用率高,碎片小,分配及管理简单
缺点:增加了系统开销;可能产生抖动现象

段页式存储(★★★★)

段式存储:按用户作业中的自然段来划分逻辑空间,然后调入内存,段的长度可以不一样。

  • 优点:多道程序共享内存,各段程序修改互不影响
  • 缺点:内存利用率任,内存碎片浪费大

    段页式存储:段式与页式的综合体。先分段,再分页。1个程序有若干个段,每个段中可以有若干页,每个页的大小相同,但每个段的大小不同。
页面置换算法(★)

文件管理

绝对路径与相对路径(★★★)
索引文件(★★)
位示围(★★)

作业管理

设备管理虚

设备与SPOOLING技术(★)

第四章,计算机网络与信息安全

开放系統互连参考模型(★★)

ТCP/IP协议族(★★★★)

  • POP3: 110端口,邮件收取
  • SMTP: 25端口,邮件发送
  • FTP: 20数据端口/21控制端口,文件传输协议
  • HTTP: 80端口,超文本传输协议,网页传输
  • DHCP: 67端口, IP地址自动分配
  • SNMP: 161端口,简单网络管理协议
  • DNS: 53端口,域名解析协议,记录域名与IP的映射关系
  • TCP:可靠的传输层协议
  • UDP:不可靠的传输层协议
  • ICMP:因特网控制协议, PING命令来自该协议
  • IGMP:组播协议
  • ARP:地址解析协议, IP地址转换为MAC地址
  • RARP;反向地址解析协议, MAC地址转IP地址

IP地址与子网划分(★★★★★★)

  • 1,子网掩码
  • 2,将一个网络划分成多个子网(取部分主机号当子网号)
  • 3,将多个网络合并成一个大的网络(取部分网络号当主机号)

例1,将B类IP地址168.195.0.0划分成27个子网,子网掩码为多少?例2,
将B类IP地址168.195.0.0划分成若干子网,每个子网内有主机700台,则子网掩码为多少?

网络规划与设计(★)


3G与4G标准(★★)

HTML语言(★★)

对称加密与非对称加密(★★★)


信息摘要与数字签名(★★)

数字签名与消息摘要结合使用

使用对称密钥K对明文进行加密:M明文→KC密文使用非对称公钥Pb对对称密钥加密得到Kc:K→PbKcC发送的消息=签名的摘要+Kc+C密文使用对称密钥K对明文进行加密: M_{明文}\xrightarrow{K} C_{密文}\\使用非对称公钥Pb对对称密钥加密得到K_c :K \xrightarrow{Pb} K_c \\ C_{发送的消息}=签名的摘要+K_c+C_{密文}\\ 使用对称密钥K对明文进行加密:M明文​K​C密文​使用非对称公钥Pb对对称密钥加密得到Kc​:KPb​Kc​C发送的消息​=签名的摘要+Kc​+C密文​
解密时,通过私钥Sb对对称密匙解密,Kc→SbK通过对称密钥对密文解密:C密文→KM明文解密时,通过私钥Sb对对称密匙解密,K_c \xrightarrow{Sb}K \\ 通过对称密钥对密文解密: C_{密文}\xrightarrow{K}M_{明文} 解密时,通过私钥Sb对对称密匙解密,Kc​Sb​K通过对称密钥对密文解密:C密文​K​M明文​

  • ·数字摘要:由单向散列函数加密成固定长度的散列值
  • 常用的消息摘要算法有MD5, SHA等,市场上广泛使用的MD5, SHA算法的散列值分别为128160位,由于SHA通常采用的密钥长度较长,因此安全性高于MD5

数字证书(★★)

网络安全协议(★)


SET: 电子商务安全协议

防火墙技术与网络攻击(★)


计算机病毒与木马(★)

第五章、系统开发基础

软件开发模型

瀑布模型:分阶段、V模型:测试、喷泉模型:迭代、原型化模型:需求不明确的情况。

瀑布模型:分阶段每个阶段都有产物,需求明确,出问题推到重来,结构严谨

V模型:测试贯穿始终,强调测试,结合使用

喷泉模型:界限不明确,迭代无间歇,典型面向对象

螺旋模型 = 原型化模型 + 演化模型,引入风险分析

·统一过程:用例驱动,以架构为中心迭代和增量

·敏捷开发:自适应开发,水晶方法,特性驱动开发,极限编程,小步快跑

  • (1) XP (Extreme Programming,极限编程)在所有的敏捷型方法中, XP是最引人瞩目的。它源于Smalitalk圈子,特别是Kent Beck和Ward Cunningham在20世纪80年代末的密切合作。XP在一些对费用控制严格的公司中的使用,已经被证明是非常有效的。
  • (2) Cockburn的水晶系列方法,水晶系列方法是由Alistair Cockburn提出的。它与XP方法一样,都有以人为中心的理念,但在实践上有所不同。Alistair考虑到人们一般很难严格遵循一个纪律的束很强的过程,因此,与XP的高度纪律性不同,Alistair探索了用最少纪律约束而仍能成功的方法,从而在产出效率与易于运作上达到一种平衡。也就是说,虽然水晶系列不如XP那样的产出效率,但会有更多的人能够接受并遵循它。
  • (3)开放式源码,这里提到的开放式源码指的是开放源码界所用的一种运作方式。开放式源码项目有一个特别之处,就是程序开发人员在地域上分布很广,这使得它和其他敏捷方法不同,因为一般的敏捷方法都强调项目组成员在同一地点工作。开放源码的一个突出特点就是查错排障(debug)的高度并行性,任何人发现了错误都可将改正补丁发布
  • (4) ·SCRUM, SCRUM已经出现很久了,像前面所论及的方法一样,该方法强调这样一个事实,即明确定义了的可重复的方法过程只限于在明确定义了的可重复的环境中,为明确定义了的可重复的人员所用,去解决明确定义了的可重复的问题。【并列争球法】
  • (5) Coad的功用驱动开发方法(FDD-Feature Driven Development)FDD是由Jeff De Luca和大师Peter Coad提出来的。像其他方法一样,它致力于短时的迭代阶段和可见可用的功能。在FDD中,一个迭代周期一般是两周。在FDD中,编程开发人员分成两类:首席程序员和“类”程序员(class owner),首席程序员是最富有经验的开发人员,他们是项目的协调者、设计者和指导者,而“类”程序员则主要做源码编写。
  • (6) ASD方法, ASD (Adaptive Software Development)方法由Jim Highsmith提出,其核心是三个非线性的、重叠的开发阶段:猜测、合作与学习。

软件开发方法

·结构化方法

  • 用户至上
  • 嚴格区分工作阶段,每阶段有任务和结果,
  • 强调系统开发过程的整体性和全局性
  • 系统开发过程工程化,文档资料标准化
  • 自顶向下,逐步分解(求精)

原型法
面向对象方法

  • 更好的复用性,
  • 关键在于建立一个全面、合理、统一的模型,
  • 分析、设计、实现三个阶段,界限不明确

面向服务的方法

需求分析

软件设计


软件测试


·判定覆盖和条件覆盖没有必然联系

软件维护

  • 适应性维护 。指使应用软件适应信息技术变化和管理需求变化而进行的修改。企业的外部市场环境和管理需求的不断变化也使得各级管理人员不断提出新的信息需求。
  • 完善性维护 。扩充功能和改善性能而进行的修改。对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征。

软件工程国家标准-软件文档管理指南-按阅读对象分类




项目管理





第六章,面向对象技术







第七章,数据结构


十三章、UML建模

用例图(★★)


  • 包含关系:其中这个提取出来的公共用例称为抽象用例,而把原始用例称为基本用例或基础用例系:当可以从两个或两个以上的用例中提取公共行为时,应该使用包含关系来表示它们。
  • 扩展关系:如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和个或多个扩展用例,这样使描述可能更加清晰。
  • ·泛化关系:当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。在用例的泛化关系中,子用例是父用例的一种特殊形式,子用例继承了父用例所有的结构、行为和关系

类图与对象图(★★)

  • 类图(class diagram) :类图描述一组类、接口、协作和它们之间的关系。在OO系统的建模中,最常见的图就是类图。类图给出了·系统的静态设计视图,活动类的类图给出了系统的静态进程视图
  • 对象图(object diagram):对象图描迷·一组对象及它们之间的关系。对象围描述了在类图中所建立的事物实例的静态快照。和类图一样,这些图给出系统的静态设计视图或静态进程视图,但它们是从真实案例或原型案例的角度建立的。
  • 填类名,方法名,属性名填
多重度关系

1:表示一个集合中的一个对象对应另一个集合中1个对象。
0..*:表示一个集合中的一个对象对应另一个集合中的0个或多个对象。(可以不对应)
1..*:表示一个集合中的一个对象对应另一个集合中的一个或多个对象。(至少对应一个)
*:表示一个集合中的一个对象对应另一个集合中的多个的对象。

类图关系
  • 依赖关系
  • 泛化关系
  • 关联关系
    • 聚合关系
    • 组合关系
  • 实现关系

顺序图(★)

活动图(★)

状态图(★)

通信图(★)

构件图

部署图

十四章、数据结构及算法应用

算法设计概述

算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。一个算法应该具有以下5个重要的特征。

  • (1)有穷性:一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。
  • (2)确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生二义性。在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的输出。
  • (3)输入:一个算法有0个或多个的输入,以刻画运算对象的初始情况。所谓0个输入是指算法本身定出了初始条件。这些输入取自于某个特定的对象的集合。
  • (4)输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的。
  • (5)可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。
    算法设计要求正确性、可读性、健壮性、效率与低存储量。
    效率指的是算法执行时间。对于解决同一问题的多个算法,执行时间短的算法效率高
    存储量需求指算法执行过程中所需要的最大存储空间。两者都与问题的规模有关。

算法的复杂性算法效率的度量,是算法运行所需要的计算机资源的量,是评价算法优劣的重要依据。可以从一个算法的时间复杂度空间复杂度来评价算法的优劣。当我们将一个算法转换成程序并在计算机上执行时,其运行所需要的时间取决于下列因素:

  • (1)硬件的速度。例如使用486机还是使用586机。
  • (2)书写程序的语言。实现语言的级别越高,其执行效率就越低。
  • (3)编译程序所生成目标代码的质量。对于代码优化较好的编译程序其所生成的程序质量较高。
  • (4)问题的规模。例如,求100以内的素数与求1 000以内的素数其执行时间必然是不同的。
    一个特定算法的运行工作量的大小就只依赖于问题的规模(通常用正整数n表示),或者说它是问题规模的函数

分治法

对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决;否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。

  • 分解★该问题的规模缩小到一定的程度就可以容易地解决,
  • 解决★该问题可以分解为若干规模较小的相同问题
  • 合并★利用该问题分解出的子问题的解可以合并为该问题的解,
  • ★该问题所分解出的各个子问题是相互独立的

    时间复杂度
    Θ(log2n)==Θ(lgn)\Theta({log_2}^n) ==\Theta(lg^n) Θ(log2​n)==Θ(lgn)
function Binary_Search(L,a,b,x){// L 数组 a,b 界值 x 要查找的值if(a > b){return -1;}else{let m = (a+b)/2;if(x==L[m]){return m;}else if(x > L[m]){return Binary_Search(L,m+1,b,x)}else{return Binary_Search(L,a,m-1,x)}}
}

回溯法

回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当搜索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择。这种走不通就退回再走的技术就是回溯法迷宫,N皇后。

{试探部分(扩大规模):满足除规模之外的所有条件,则扩大规模。回溯部分(缩小规模){1.当前规模解不是合法解时回溯(不满足约束条件D)2.求完一个解,要求下一个解时,也要回溯\begin{cases} 试探部分(扩大规模) &:满足除规模之外的所有条件,则扩大规模。 \\ 回溯部分 (缩小规模)& \begin{cases} 1.当前规模解不是合法解时回溯(不满足约束条件D) \\ 2.求完一个解,要求下一个解时,也要回溯 \end{cases} \end{cases} ⎩⎪⎨⎪⎧​试探部分(扩大规模)回溯部分(缩小规模)​:满足除规模之外的所有条件,则扩大规模。{1.当前规模解不是合法解时回溯(不满足约束条件D)2.求完一个解,要求下一个解时,也要回溯​​

贪心法

总是做出在当前来说是·最好的选择·,而并不从整体上加以考虑,它所做的每步选择只是当前步骤的局部最优选择,但从整体来说不一定是最优的选择。由于它不必为了寻找最优解而穷 所有可能解,因此其耗费时间少,一般可以快速得到满意的解,但得不到最优解。0-1背包问题,非0-1背包问题

动态规划法(★★★)

在求解问题中,对于每一步决策,列出各种可能的局部解,再依据某种判定条件,舍弃那些肯定不能得到最优解的局部解,在每一步都经过筛选,以·每一步都是最优解来保证全局是最优解。(问题中如果出现"最优子结构这类描述,一般为动态规划法)记录中间解,·已查表的方式获取最优解
时间复杂度
Θ(n)\Theta(n) Θ(n)

function F2( n){let a = [];for(let i = 0; i <= n; i++){if(i==0 || i == 1){a[i] = 1;}if(i >1){a[i] = a[i -1] + a[i -2];}return a[n];}
}

常见算法特征总结:(★★★)

·一、分治法
  • 特征:把一个问题拆分成多个小规模的相同子问题,一般可用递归解决。
    经典问题:斐波那契数列归并排序快速排序矩阵乘法二分搜索、大整敦乘法汉诺塔
二`、动态规划法(用于求最优解)
  • 特征:划分子问题(最优子结构) ,并把子问题结果使用数组存储,利用查询子问题结果构造最终问题结果
  • 经典问题:斐波那契数列矩阵乘法背包问题LCS最长公共子序列
三、回溯法
  • 特征:系统的搜索一个问题的所有解或任一解
  • 经典问题N皇后问题迷宫背包问题
四、贪心法(用于求满意解)
  • 特征:局部最优,但整体不见得最优。每步有明确的,既定的策略。
  • 经典问题:背包问题(如装箱)多机调度找零钱问题
时间复杂度总结

Θ(1)<Θ(log2n)<Θ(n)<Θ(nlog2n)<Θ(n2)<Θ(n3)<Θ(2n)\Theta(1)<\Theta({log_2}^n)<\Theta(n)<\Theta(n{log_2}^n)<\Theta(n^2)<\Theta(n^3)<\Theta(2^n)Θ(1)<Θ(log2​n)<Θ(n)<Θ(nlog2​n)<Θ(n2)<Θ(n3)<Θ(2n)

常数级时间复杂度Θ(1)=整个程序都没有循环语句,或复杂函数的调用时间复杂度Θ(n)=单层循环Θ(log2n)=树型结构Θ(nlog2n)=堆排序,每次重建堆的时间复杂度是Θ(log2n).n个元素基本上就是Θ(nlog2n)常数级时间复杂度\Theta(1)=整个程序都没有循环语句,或复杂函数的调用\\时间复杂度\Theta(n)=单层循环\\ \Theta({log_2}^n)=树型结构\\ \Theta(n{log_2}^n)=堆排序,每次重建堆的时间复杂度是\Theta({log_2}^n).n个元素基本上就是\Theta(n{log_2}^n)常数级时间复杂度Θ(1)=整个程序都没有循环语句,或复杂函数的调用时间复杂度Θ(n)=单层循环Θ(log2​n)=树型结构Θ(nlog2​n)=堆排序,每次重建堆的时间复杂度是Θ(log2​n).n个元素基本上就是Θ(nlog2​n)

第七节例题没看

软考软件设计师证书考试笔记相关推荐

  1. 【软考-软件设计师精华知识点笔记】第八章 算法分析设计

    前言 由于笔记复制到CSDN样式失效,没有精力再重新完整的检查并设置一遍样式,有积分的可以前往下载word.pdf.有道云笔记版本. 需要说明的是,下载的内容与本篇分享内容一致,只有样式的区别[比如重 ...

  2. 【软考-软件设计师精华知识点笔记】第十章 网络与信息安全

    前言 由于笔记复制到CSDN样式失效,没有精力再重新完整的检查并设置一遍样式,有积分的可以前往下载word.pdf.有道云笔记版本. 需要说明的是,下载的内容与本篇分享内容一致,只有样式的区别[比如重 ...

  3. 【软考-软件设计师精华知识点笔记】第六章 系统开发与运行

    前言 由于笔记复制到CSDN样式失效,没有精力再重新完整的检查并设置一遍样式,有积分的可以前往下载word.pdf.有道云笔记版本. 需要说明的是,下载的内容与本篇分享内容一致,只有样式的区别[比如重 ...

  4. 一个月过软考|软件设计师中级考试经验分享

    掌握好学习方法,中级一次必过. 基础情况:软考--计算机技术与软件专业资格(水平)考试.考试分为上午试题和下午试题,上午下午分数均在45分以上为合格.上午试题是75道选择题,一题一分:下午是案例分析题 ...

  5. 【软考-软件设计师】 考试大纲

    一.考试说明   1.考试要求:    (1) 掌握数据表示.算术和逻辑运算:    (2) 掌握相关的应用数学.离散数学的基础知识:    (3) 掌握计算机体系结构以及各主要部件的性能和基本工作原 ...

  6. 软考-软件设计师 笔记一(计算机组成与体系结构)

    本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...

  7. 软考-软件设计师 笔记九(多媒体基础)

    本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...

  8. 软考-软件设计师 笔记十(软件工程)

    本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...

  9. 软考-软件设计师 笔记十二(数据流图)

    本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...

  10. 计算机软件水平考试英语试题,计算机软考软件设计师英语试题及答案解析(3)

    计算机软考软件设计师英语试题及答案解析(3) 分类:软考 | 更新时间:2016-07-08| 来源:转载 ●The Semantic Web is a web of dat a There is l ...

最新文章

  1. 第十五届全国大学生智能车竞赛相关LOGO,文化衫,背板图片
  2. Visual Question Answering概述
  3. mybatis架构流程
  4. 使用OnCtlColor函数消息打造背景
  5. 发力公有云的用友YonSuite,云原生实力到底如何?
  6. Storm精华问答 | 遇到这些错误日志该如何解决?
  7. Oracle密码中含有特殊字符时exp,imp的使用
  8. C语言实现常用排序算法——基数排序
  9. 【报告分享】人工智能在五大行业的成就与挑战-毕马威.pdf(附下载链接)
  10. openlayers5学习笔记-map事件(moveend)
  11. AVOD-代码阅读理解系列(一)
  12. 多个excel工作簿合并_如何使用Excel VBA将多个工作簿的全部工作表合并到一个工作簿中...
  13. poi java 导入excel_Java的poi技术读取和导入Excel
  14. for(int i = 0;i 10;i++)和int i;for(i = 0;i 10;i++)
  15. 射击末世--装饰者模式
  16. 互联网公司面试题以及范围
  17. 1970-01-01是什么?为什么计算机起始时间是1970年1月1日
  18. 全球通讯录转换outl联系人
  19. Tailwind Sidebar
  20. drawInRect 绘制文字

热门文章

  1. java 定时为每月10号_Java定时器的cron设置详解Quartz
  2. 熟悉继承(java)
  3. 浏览器刷新vue为什么不会走beforeDestroy和destroyed生命周期
  4. 艾媒研报 |2019年腾讯控股(0700.HK)业务解读及发展趋势研究报告
  5. oracle 12c 自增序列
  6. simulink仿真之正弦波变方波
  7. 你是否真的明白Duble与double
  8. Redis数据存储类型
  9. 【ESP 保姆级教程】疯狂点灯篇 —— 案例:ESP8266 + LED + 按键 + 阿里云生活物联网平台 + 公有版App + 天猫精灵(项目:我之家)
  10. MCE | 外泌体的检测提取机制