赞
踩
适用于软件评测师考试的软件设计基础知识整合
运算器、控制器、寄存器组、内部总线
运算器
执行所有的算数运算和逻辑运算
控制器
控制整个CPU的工作,包括指令控制逻辑、时序控制逻辑、总线控制逻辑和中断控制逻辑等
1.指令寄存器(IR):CPU执行指令时从内存储器→缓冲寄存器→IR,存放当前正在执行指令的操作码表,对程序员透明(系统使用,程序员不可控制)
2.程序计数器(PC):寄存信息和计数。程序执行有顺序执行和转移执行两种情况
程序计数器中存放的是下一条指令的地址。由于多数情况下程序是顺序执行的,所以程序计数器设计成自动加一的装置。当出现转移指令时,就需重填程序计数器 通过根据当前地址移动一个位移量得到,或根据转移指令给出的地址得到
,程序员可用
3.地址寄存器(AR):保存当前CPU所访问的内存单元的地址
4.指令译码器(ID):指令包括操作码和地址码两部分
用于对指令中的操作码字段进行分析解释,向操作控制器发出具体的控制信号,控制各部件工作
寄存器组
1.专用寄存器:运算器和控制器中的寄存器都是专用寄存器,有固定的作用
2.通用寄存器:程序员可自行规定其用途,用途广泛,不同处理器通用寄存器数目不同
前缀均为阿拉伯数字0加上英文大写字母,十进制一般不加前缀
进制 | 英文 | 范围 | 前缀 | 后缀 |
---|---|---|---|---|
二进制 | Binary | 0-1 | 0B | B |
八进制 | Octal | 0-7 | 0O | O |
十进制 | Decimal | 0-9 | 无 | D |
十六进制 | Hexadecimal | 0-9,A-F | 0x | H |
进制转换
十进制转X进制:短除法,用十进制的数除以进制(2、8、16),余数继续除,直到余数小于进制,然后从后往前读取余数
X进制转十进制:按权展开,小数点前位数乘以权,小数点后位数乘以权的倒数
11.11B=1x22+1x21+1x2-1+1x2-2D
定义 | 作用 | |
---|---|---|
原码 | 第一位为符号位,其余表示值 | |
反码 | 正数为原码,负数为原码除符号位外按位取反 | 可进行带符号位运算 |
补码 | 正数为原码,负数为反码+1 | ①解决反码±0的问题,负数表示范围+1 ②计算机内部采用补码表示 |
移码 | 正数为原码除符号位取反后其余不变,负数为原码包括符号位全部取反后+1 | 用于表示浮点数阶码 |
N = n E ∗ F N=n^E*F N=nE∗F
符号表示 | 影响 | |
---|---|---|
阶符 | Es | 决定绝对值大于1还是小于1 |
阶码 | E1E2E3…Em | 决定浮点数的表示范围 |
数符 | Ms | 决定浮点数大于0还是小于0 |
尾数 | M1M2M3…Mm | 决定浮点数的精度 |
位 | bit | b | 1位,只能表示1或0 |
字节 | Byte | B | 1字节=8位 |
字 | word | 由计算机定义,如64bit计算机,1字=8字节=64位 |
计算内存容量:
eg:
内存按字节编制从A5000H到DCFFFH的区域其存储容量为___?
方法:结束地址-起始地址+1,再转化成10进制;按字节编址,则在最后还要乘以字节(B)
记得要+1,因为A5000H到A5000H也有1字节的存储空间
(33条消息) 计算机组成原理学习笔记——校验码_计算机校验码是什么意思_御承扬的博客-CSDN博客
码距:
一个编码系统中任意两个合法编码(码字)之间不同的二进数位(bit)数叫这两个码字的码距,而整个编码系统中任意两个码字的的最小距离就是该编码系统的码距。
比如三位二进制合法只有:111和000,则这两个编码中三位只要有一位改变就能判断是无效编码,则码距为3
如果有效编码为:111、011和000,由于011的存在,第三位如果改变了,无法判断是否为有效编码,而后两位改变了仍可判断,则码距为2
定义 | 特点 | |
---|---|---|
奇偶校验码 | 增加一位校验位,使得数中“1”的个数为奇数(奇校验)或者偶数(偶校验) | 只能检测数奇数数量的错误,且不能确定出错的位置 |
海明码 | 在有效信息位中加入几个校验位形成海明码,并把海明码的每个二进制位分配到几个奇偶校验组中;数据位n与校验k满足:n+k≤2k-1 | 可同时确定出错的位置和数量 |
循环冗余校验码(CRC) | 在数据后加入r位数的0(由CRC多项式最高位次幂决定)得到被除数,被除数与CRC多项式摩尔运算,余数末尾r位即为校验码 | 模2运算(即异或),在磁介质存储器和计算机通信广泛运用 |
https://blog.csdn.net/weixin_42193813/article/details/105732396
(33条消息) 计算机组成原理——9种常用寻址方式_隐含寻址方式_佰落的博客-CSDN博客
操作码字段 | 地址码字段 |
---|
R=寄存器,E=有效地址,S=操作数,默认示例为8086
1) 隐含寻址
含义:操作数隐含的由累加器给出。(即某指令由固定的操作数,不需要给出)
例子:8086汇编语言 CWD;把AX中的内容按符号位拓展成DX,AX双字
2)立即寻址
含义:指令中直接给出相应的操作数。
例子: MOV AX,1234H;——1234H就是采用立即寻址
3)寄存器直接寻址
含义:指令中给出寄存器号R,操作数存放在R中
E=R,S=(E)=( R )
例子:MOV AX,BX——操作数在BX中
4)寄存器间接寻址
含义:指令中给出寄存器号R,R中存放操作数的有效地址
E=( R ),S=(E)=(( R ))
例子:MOV AX,[SI]
5)直接寻址
含义:指令中给出操作数的有效地址
E=A,S=(E)=(A)
例子:MOV AX,[1234H]
6)间接寻址
含义:指令中给出存放有效地址E的存储单元地址。
E=(A),S=(E)=((A))
理论上讲可以多次间接寻址,但大多数计算机只允许一次(由于A的寻址范围不足以覆盖整个存储空间)
7)相对寻址
含义:指令中给出相对于PC的偏移量A
E=(PC)+A,S=(E)=((PC)+A)
注:A是个带符号数,一般用补码表示,若A的位数与PC不一致,需要带符号填充。
8)基址寻址
含义:指令中给出相对于基址寄存器R的偏移量
E=( R )+A,S=(E)=(( R )+A)
注:A是个带符号数,一般用补码表示,若A的位数与R不一致,需要带符号填充。
9)变址寻址
含义:指令中给出相对变址寄存器R的偏移量
E=( R )+A,S=(E)=(( R )+A)
注:A是个带符号数,一般用补码表示,若A的位数与R不一致,需要带符号填充。
CISC(复杂) | RISC(精简) | |
---|---|---|
指令 | 数量多;使用频率差别大;可变长格式 | 数量少;使用频率接近;定长格式;大部分为单周期指令;只有Load/Store操作内存 |
寻址方式 | 支持多种昂 | 支持方式少 |
实现方式 | 微程序控制技术 | 增加通用寄存器;硬布线逻辑控制为主;采用流水线 |
其他 | 优化编译;有效支持高级语言 |
*RISC的编译器的子程序库通常要比CISC大得多——复杂上移
流水线总用时:
T
k
=
∑
i
=
1
m
Δ
t
i
+
(
n
−
1
)
Δ
t
j
T_k=\sum_{i=1}^m{\Delta t_i+(n-1)\Delta t_j}
Tk=i=1∑mΔti+(n−1)Δtj
即:一条指令执行完全部m段所需时间+(n-1)乘以指令流m段中耗时最长的一段的耗时
吞吐率:
T
P
=
n
T
k
TP=\frac{n}{T_k}
TP=Tkn
流水线过程:
→取指→分析→执行
(1)顺序存取:顺序存取:存储器的数据以记录的形式进行组织。 对数据的访问必须按特定的线性顺序进行。 磁带存储器采用顺序存取的方式。
磁带
(2)直接存取:与顺序存取相似,直接存取也使用一个共享的读写装置对所有的数据进行访问。 但是,每个数据块都拥有唯一的地址标识,读写装置可以直接移动到目的数据块所在位置进行访问。磁盘存储器采用直接存取的方式。 数据块内的数据采用顺序存取
光盘、机械硬盘里的磁盘
(3)随机存取:存储器的每一个可寻址单元都具有自己唯一的地址和读写装置,系统可以在相同的时间内对任意一个存储单元的数据进行访问,而与先前的访问序列无关。 主存储器采用随机存取的方式。
RAM, Cache
(4)相联存取:相联存取也是一种随机存取的形式,但是选择某一单元进行读写是取决于其内容而不是其地址。 与普通的随机存取方式一样,每个单元都有自己的读写装置,读写时间也是一个常数。 )
数据总线:与操作系统字长一致
地址总线:根据存储空间大小得出
若内存为4G,即232B,则地址总线宽度为32
控制总线
带宽、位宽、工作频率
总线带宽=总线位宽
×
总线工作频率
总线带宽=总线位宽×总线工作频率
总线带宽=总线位宽×总线工作频率
直接程序控制:CPU参与全部字符传输过程,一直占用CPU,CPU与外部设备串行工作
中断驱动控制:CPU参与全部字符传输过程,打印过程中释放CPU;CPU可与外设并行工作;中断次数多
中断向量:中断服务程序的入口地址
Direct Memory Access 直接存储访问
允许外部设备和存储器直接拿直接读写数据,既不经过CPU,也不需要CPU干预,但要占用数据总线(所以占用时CPU无法进行数据读写操作),CPU在一个总线周期(一个访问存储器或I/O设备所需时间)结束时响应DMA请求
统一编址:输入输出通过访存指令实现
独立编址:输入输出通过专门的I**/O指令**实现
(34条消息) 软考——软件设计师:第五章:操作系统考点总结(完整篇)_宋子浩的博客-CSDN博客
**原语:**不可分割或不可中断的最小程序
**互斥:**间接制约,资源间相互竞争
**同步:**直接制约,资源间需要协同完成某一工作
为了描述和控制程序的并发执行
进程和程序的区别:
进程实际是程序的一次执行
①进程是动态的,程序是静态的。
②进程具有生命周期,程序是永久存在的。
③进程是由**程序段、相关数据段和进程控制块(PCB)**组成,程序是指令的有序集合。
进程和线程的区别:
进程是资源分配的基本单位,线程是处理器任务调度和执行的基本单位
①包含:线程是进程中的一个子控制单元,一个进程中至少有一个线程,可以有多个线程
②资源分配:各进程拥有独立的地址空间,线程共享本进程的地址空间
③资源开销:进程间切换资源开销大。现成拥有独立的运行栈和程序计数器(PC),切换资源开销小
④执行过程:进程有独立的程序入口、顺序执行序列和程序出口;线程依赖程序,程序提供多线程控制
三态模型
运行态:进程已获得并占用CPU,单处理机中只有一个进程处于运行态
就绪态:进程已具备运行条件(已有除CPU外的必要资源),等待系统分配处理器以便运行
等待态(阻塞):进程不具备运行条件,等待某一事件发生(请求的数据、等待I/O操作等)
五态模型
三态上增加了新建和终止
(34条消息) PV操作简单理解_刘水镜的博客-CSDN博客
解决进程 同步和互斥问题
信号量(Saphore)
表示可用资源数,仅可由PV操作改变,初始值应为进程某一可用共享资源总数R
前趋图
(34条消息) 操作系统PV操作、前趋图与PV操作_前趋图怎么画_头发太多想掉一点的博客-CSDN博客
在执行下一个进程时,一个进程→另一个进程,就是先V后P
P表示进程,S表示信号量
(34条消息) 死锁面试题(什么是死锁,产生死锁的原因及必要条件)_AddoilDan的博客-CSDN博客
是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进
① 竞争资源
可剥夺资源:某进程占用资源后,其他高优先级进程或系统可剥夺占用资源,如CPU和主存都是可剥夺资源
不可剥夺资源:系统将资源分配后,不能强制回收,只能在进程执行完后释放
临时性资源:硬件中断、信号、消息、缓冲区内的消息
竞争不可剥夺资源或竞争临时性资源
② 进程间推进顺序非法
① 互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。
② 请求和保持条件:当进程因请求资源而阻塞时,对已获得的资源保持不放。
③ 不可剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。
④ 环路等待条件:在发生死锁时,必然存在一个进程–资源的环形链。
预防死锁
① 破坏请求条件——资源一次性分配:一次性分配所有资源,这样就不会再有请求了
② 破坏保持条件——只要有一个资源得不到分配,也不给这个进程分配其他的资源
③ 破坏不可剥夺条件——可剥夺资源:即当某进程获得了部分资源,但得不到其它资源,则释放已占有的资源
④ 破坏环路等待条件——资源有序分配法:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反
避免死锁
安全状态:如果没有死锁发生,并且即使所有进程突然请求对资源的最大需求,也仍然存在某种调度次序能够使得每一个进程运行完毕,则称该状态是安全的。
银行家算法、有序资源分配
检测死锁
首先为每个进程和每个资源指定一个唯一的号码;
然后建立资源分配表和进程等待表。
解除死锁:
当发现有进程死锁后,便应立即把它从死锁状态中解脱出来,常采用的方法有:
①剥夺资源:从其它进程剥夺足够数量的资源给死锁进程,以解除死锁状态;
②撤消进程:可以直接撤消死锁进程或撤消代价最小的进程,直至有足够的资源可用,死锁状态.消除为止;所谓代价是指优先级、运行代价、进程的重要性和价值等
s ≥ n ( k − 1 ) + 1 s≥n(k-1)+1 s≥n(k−1)+1
其中n为互斥进程数量,k为单个进程所需最大资源数
一次解决或者事务处理中交给计算机系统处理的所有工作的集合
作业
程序、数据、作业说明(书)
作业控制块 JCB
用于管理和调度作业,每个作业都有一个记录作业信息的JCB,
JCB是作业在系统中存在的唯一标志,作业进入系统时创建,退出系统时撤销
交互式作业管理
交互式作业有一个输入(编辑)、编译、运行、调试、再编译、再运行的反复过程。
批处理作业管理
提交、后备、执行、完成四个状态
位示图:
物理块号÷字长=位示图号
磁盘容量÷物理块大小÷字长=所需位示图字
原因:适应并发运行程序
①首次适应算法:空闲分区以地址递增的次序链接。
②循环首次适应算法:与首次适应算法的区别是:不是每次都从链首开始查找,而是从上一次找到的空闲分区的下一个空闲分区开始查找。
③最佳适应算法:空闲分区按其容量从小到大的顺序链接。
④最差适应算法:空闲分区按其容量从大到小的顺序链接(与最佳适应算法相反)
地址分为两部分:页号和页内地址。根据页面地址可得出页内地址位数,剩余即为页号位数
页内地址位数→页的大小
页号地址位数→页的数量
空间利用率比页式存储低,内存碎片大,外碎片,实际上内存未分配
类似页式存储,地址分为段号和段内地址
页是信息的物理单位。分页的主要目的是为了实现离散分配,提高内存利用率。分页仅仅是系统管理上的需要,完全是系统行为,对用户是不可见的。
段是信息的逻辑单位。分段的主要目的是更好地满足用户需求。一个段通常包含着一组属于一个逻辑模块的信息。分段对用户是可见的,用户编程时需要显式地给出段名。
页的大小固定且由系统决定。段的长度却不固定,决定于用户编写的程序。
分页的用户进程地址空间是一维的,程序员只需给出一一个记忆符即可表示 一个地址。
分段的用户进程地址空间是二维的,程序员在标识一个地址时,既要给出段名,也要给出段内地址。
分段比分页更容易实现信息的共享和保护。不能被修改的代码称为纯代码或可重入代码(不属于临界资源),这样的代码是可以共享的。可修改的代码是不能共享的
访问一个逻辑地址需要几次访存?
分页(单级页表) :第一次访存–查内存中的页表,第二次访存–访问目标内存单元。总共两次
访存分段:第一次访存–查内存中的段表,第二次访存-- -访问目标内存单元。总共两次访存
与分页系统类似,分段系统中也可以引入快表机构,将近期访问过的段表项放到快表中,这样可以较少一次访问,加快地址变换速度。
段号 | 页号 | 页内地址 |
---|
将地址先分段,再分页,地址分为三部分:段号、段内页号、页内地址
其地址变换过程如下:
先进先出算法
选择先进入内存的页面予以淘汰。
最佳置换算法
选择永远不再需要的页面或者最长时间内不再使用的页面予以淘汰。
(理想情况,实际上无法预测未来的访问顺序)
最近最久未使用算法
选择最近一段时间中最长时间没有被访问过的页面予以淘汰
与先进先出的区别是,先进先出时如果无缺页,不会更新时间,而最近最久未使用中会更新时间
嵌入式系统
特点:
①微型化
②可定制
③实时性
④可靠性
⑤易移植性
操作系统的特点:
①并发性
②共享性
③虚拟性
④不确定性/随机性:操作系统在随机环境中运行,设备随时可发起终端,系统无法知道程序什么时候进行什么操作
(28条消息) 软考——软件设计师:第二章:数据库技术考点总结(完整篇)_宋子浩的博客-CSDN博客
(28条消息) 数据库管理系统(DBMS)的主要功能、组成以及数据存取的过程_数据库管理系统的工作过程_Shishishi888的博客-CSDN博客
数据库管理系统
主要功能
①数据定义功能(DDL)
定义数据表、视图、索引:CREATE(DATABASE、TABLE)、ALTER(TABLE VIEW)、DROP(VIEW)、TRUNCATE(TABLE)、ADD(column_name())
②数据操纵功能(DML)
数据表的增删查改:ELECT、UPDATE、INSERT、DELETE、ROLLBACK
③数据库运行管理功能:数据的安全性控制、数据的完整性控制、多用户环境干的并发控制和数据库的恢复。
④数据库的建立和维护功能
⑤数据通信接口
⑥数据组织、存储和管理
1、数据结构:
指所研究对象类型的集合,是对象和对象间联系的表达和实现。包括:数据本身和数据之间的联系。
2、数据操作:
指对数据库中对象的实例允许执行的操作的集合,主要指检索和更新。
3、完整性约束:
实体完整性、参照完整性、用户自定义完整性
实体完整性:关系R的主属性不能存在空值
参照完整性/引用完整性:描述关系模式中实体与实体间的关系
举例:删除主表中外键所在列的数据,必须先删除子表对应的数据,否则将破坏参照完整性
用户定义完整性:针对某一具体的关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足语义要求,由应用环境决定
① 外模式(子模式/用户模式):数据库视图,描述的是一个特定用户组所感兴趣的那部分数据库,而对该用户隐藏了数据库的其他部分
② 模式(逻辑模式):数据库中的各种表,定义数据库中全部数据的逻辑结构如:数据记录的名称,数据项的名称,类型,值域等。
③ 内模式(存储模式):它既定义了数据库中的全部数据的物理结构,还定义了数据的存储方法,存取策略等,内模式与数据存储的软件和硬件环境是有关的。
(28条消息) 数据库:第二章 《关系模式》概念总结_Re__CODE的博客-CSDN博客
列:在现实世界中从事物中提取出来的特征,即属性
域:属性的取值范围的值对应的集合
度/目:属性的个数,同时是关系的“元数”
行:关系模式中属性的一组取值,即元组
候选码:若在一个关系中,某一属性或 属性组的值能唯一的识别一个关系的元祖,其子集不能,则该属性组称为候选码
主码(主关键字): 主码一定是候选码中的一个,且只能有一个
外部码(外码): 若F是基本关系R的一个或一组属性,但不是关系R的码,KS是关系S的主码,如果F与KS相应,则称F是关系R的外码
函数依赖:设R(U)是属性集U上的关系模式,X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等而在Y上的属性值不相等,则称X函数确定Y或Y函数依赖于X ,记作X->Y,X称为决定因素,即唯一的X确定Y
若Y不是X的子集称为非平凡的函数依赖, Y是X的子集(任意关系必然成立)称为平凡的函数依赖
如果X->Y,且X的真子集不函数决定Y,则称为Y对X完全函数依赖,否则称为部分函数依赖
传递依赖:Y非平凡函数依赖于X,X非平凡函数依赖于Y,则X->Z
(28条消息) 详解【数据库】关系代数基本运算_关系代数运算_石子君的博客-CSDN博客
并(Union)
差(Difference)
广义笛卡尔积
两个无数分别为 n 目和 m 目的关系 R 和 S 的 笛卡尔积是一个 (n+m) 列的元组的集合。组的前 n 列是关系 R 的一个元组,后 m 列是关系 S 的一个元组,记作 R × S,定义如下:
R
×
S
=
{
t
∣
t
≤
(
t
n
,
t
m
)
∧
t
n
∈
R
∧
t
m
∈
S
}
R×S=\{t|t≤(t^n,t^m)∧t^n∈R∧t^m∈S\}
R×S={t∣t≤(tn,tm)∧tn∈R∧tm∈S}
投影(Projection)
投影运算是从关系的垂直方向进行运算,在关系 R 中选出若干属性列 A 组成新的关系,记作 πA®πA®,其形式如下:
π
A
®
=
{
t
[
A
]
∣
t
∈
R
}
π
A
®
=
{
t
[
A
]
∣
t
∈
R
}
πA®=\{t[A]|t∈R\}πA®=\{t[A]|t∈R\}
πAR◯={t[A]∣t∈R}πAR◯={t[A]∣t∈R}
选择(Selection)
选择运算是从关系的水平方向进行运算,是从关系 R 中选择满足给定条件的元组,记作 σF®σF®,其形式如下:
σ
F
®
=
{
t
∣
t
∈
R
∧
F
(
t
)
=
T
r
u
e
}
σF®=\{t|t∈R∧F(t)=True\}
σFR◯={t∣t∈R∧F(t)=True}
连接(Join)
连接(join)就是把两个表中的行按照给定的条件进行拼接而达成新表。
等值连接
两个关系中将进行比较的属性组的值相等的数据相连,若比较的是相同的属性组,不会去重
自然连接
特殊的等值连接,两个关系表
中进行比较的分量必须是相同的属性组列名
,并且在结果集中将重复属性列去掉
(28条消息) 第一范式、第二范式、第三范式、BCNF范式详解_i胡说的博客-CSDN博客
第一范式(1NF)
符合1NF的关系中每个属性都不可再分
1NF是所有关系型数据库的基本要求,即关系型数据库中的表一定符合1NF
存在数据冗余、插入异常、删除异常、修改异常的问题
插入异常:由于多个主体的属性放在一起,无法单独插入/删除某个主体的属性
修改异常:数据不唯一,修改其中一条数据后其他数据未改变
第二范式(2NF)
若关系模式R属于第一范式,且关系模式R的每个非主属性完全函数依赖于码,则R也属于第二范式。
人话版:在第一范式的基础上,消除非主属性间码的部分函数依赖
解决了数据冗余、更新异常、插入异常和删除异常
第三范式(3NF)
在满足第二范式的基础上,若关系模式中所有非主属性完成函数依赖于码且不传递依赖码,则称R属于第三范式。
满足第二范式不满足第三范式的情况:学生(学号,课程号,系号,系名,系地址),在这个关系模式中,学号可以推出系号,系号推不出学号,系号可以推出系地址,所有学号可以推出系地址。所以学号不直接决定非主属性系地址。
解决办法:拆成两个关系模式
BCNF范式
在满足第三范式的基础上,若关系模式中主属性完全依赖于码且不传递依赖码,则称R属于BCNF范式
第四、第五范式
https://blog.csdn.net/xiaoxiao_su123/article/details/113514395
中间件是一种独立的系统软件服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。
中间件:中间件=平台+通信,这也就限定了只有用于分布式系统中才能叫中间件,同时也把它与支撑软件和实用软件区分开来。
常见中间件:JDBC、ODBC、CORBA
MySQL也可以视为一种中间件,中间件没有严格定义
为什么要使用中间件
屏蔽底层操作系统的复杂性
我们对数据进行增删改查并不需要与底层操作系统的硬盘等各种指令打交道,我们只需要知道MySQL怎么使用,与MySQL进行交互即可,不需要管它是怎么进行存储和互联互通的。
屏蔽技术架构的复杂性
分布式架构下每一个微服务都可以采用不同的语言不同的技术栈,使用中间件就可以将不通的服务来连接互通起来,将不同技术架构的服务串联起来,来达到一个更加稳健、缩短开发周期维护成本低目的。
透明地传输比特流
光缆、电缆、双绞线、无线电波等方式。它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。
设备:
集线器:多端口的中继器,不能隔离广播域和冲突域
中继器:放大信号,不能隔离广播域和冲突域
将网络层交下来的IP数据报封装成帧,在两个相邻结点间的链路上传送帧,每一帧包括数据和必要的控制信息。
功能为:封装成帧、透明传输、差错检验
数据包定义:以太网协议,每帧分成标头(Head)和数据(Data)。"标头"的长度,固定为18字节。"数据"的长度,最短为46字节,最长为1500字节。因此,整个"帧"最短为64字节,最长为1518字节。
MAC地址:以太网规定,连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。
广播:向本网络的所有计算机发送数据包,接收方自行比对标头与自身MAC地址是否相同,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。
设备:
网桥:可以隔离冲突域,不能隔离广播域
交换机
网络层的任务就是要选择合适的路由,在发送数据时, 网络层把运输层产生的报文段或者用户数据报封装成分组或包进行交付给目的站的运输层。
"网络层"出现以后,每台计算机有了两种地址,一种是MAC地址,另一种是网络地址。两种地址之间没有任何联系,MAC地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起。网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。因此,从逻辑上可以推断,必定是先处理网络地址,然后再处理MAC地址。
IP协议:规定网络地址的协议,叫做IP协议,它所定义的地址,称为IP地址。网络地址由32个二进制位组成。根据IP地址来判断两台计算机是否属于同一个子网络,采用的是“子网掩码”,将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。一个IP地址在整个因特网范围内是唯一的,分类的IP地址包括A类(1126)、B类(128191)、C类(192~223单播地址)、D类(多播地址)。
ARP协议:如果两台主机不在同一个子网络,那么将数据包传送到两个子网络连接处的网关,否则使用ARP协议来得到对方的MAC地址。ARP协议只适用于IPV4,不能用于IPV6,IPV6用ICMPV6发送邻居搜索消息。
地址解析协议(ARP)和反地址解析协议(RARP)是驻留在网际层(网络层)中的另一个重要协议。ARP的作用是将IP地址转换为物理地址。RARP的作用是将物理地址转换为IP地址。
网络层的主要功能:
设备:
路由器:可以隔绝广播域
三层交换机:可以隔离冲突域,不能隔离广播域
任务:运输层的任务是负责向两个主机中的进程之间的通信提供可靠的端到端服务,应用层利用该服务传送应用层报文。
UDP协议:提供无连接的、尽最大努力的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。对实时应用很有用,如QQ聊天、在线视频、网络语音电话、直播、实时视频会议等。
UDP是一种不可靠的、无连接的协议,可以保证应用程序进程间的通信。它的错误检测功能要比TCP弱的多。可以这样说:TCP有助于提供可靠性,UDP有助于提高传输的高速率性。
TCP协议:提供面向连接的、可靠的数据传输服务,其数据传输的单位是报文段。传输有三个连接:连接建立、数据传送、连接释放。TCP连接建立采用三次握手机制,连接释放采用四次握手机制。效率比UDP低,一般用于:文件传输、接受邮件、远程登录等
TCP在IP提供的不可靠数据服务的基础上为应用程序提供了一个可靠的、面向连接的、全双工的数据传输服务。
任务:应用层的任务是通过应用进程间的交互来完成特定网络应用。
应用层是体系结构中的最高层,应用层协议定义的是应用进程间通信和交互的规则。应用层的作用,就是规定应用程序的数据格式。对于不同的网络应用需要不有不同的应用层协议。在互联网的应用层协议很多,如域名DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等等。我们把应用层的数据单元称为报文。
各层对应的协议及设备
计算机网络各层网络设备(中继器、集线器、网桥、交换机、路由器、网关)总结_物理层设备_尸者狗的博客-CSDN博客
注SMTP用于发送邮件、POP3用于接收邮件、IMAP用于远程查看邮件
32位地址,分为四个字段,每个字段的范围为0-255
11001010.11000100.00000100.01101010 转换为十进制如下:
202.196.4.106 称为点分十进制
范围
00000000.00000000.00000000.00000000-11111111.11111111.11111111.11111111
0.0.0.0-255.255.255.255
IP地址由网络位和主机位组成,二者位数不固定,从应用场景出发,取决于需要有多少主机位才能满足要求,子网掩码就是用来确定网络位的
子网掩码不是一个IP地址,在二进制的表示上是一堆连续的1、后面接一堆连续的0
用IP地址和地址掩码进行与运算,可以得出网络号
子网中可用地址个数(n表示主机位数):2^n-2
IP地址分为A、B、C、D、E
DHCP协议:动态主机配置协议,是一个局域网协议,使用UDP协议工作,用于给内部网络或网络服务提供商自动分配地址,一般会指定DNS服务器
ipconfig:
tracert:路由跟踪
Ping :
route print:打印路由
netstat:查看网络,监听端口
类型 | 代表 | 优点 | 缺点 |
---|---|---|---|
编译型语言 | C、Pascal、Delphi | 编译一次后,脱离了编译器也可以运行(可以脱离开发环境运行),并且运行效率高 | 可移植性差,一般不可以跨平台(不能在不同的操作系统之间随意切换),不够灵活。 |
解释型语言 | Python、JavaScript、PHP、Shell | 跨平台性好,通过不同的解释器,将相同的源代码解释成不同平台下的机器码 | 一边执行一边解释,效率很低。 |
汇编语言:有汇编指令和伪指令,其中汇编指令可直接翻译橙机器代码,伪指令需要编译器编译
动态类型语言:Prel、Python、PHP
动态类型语言无需声明变量类型,程序运行过程中确认
静态类型语言:C、C++、Java
静态语言需要声明全部变量类型,编译时检查
表达式的结合和优先级
逗号表达式取右操作数作为结果返回
数组和链表对比
数组/顺序表 | 链表 | |
---|---|---|
插入、删除 | 速度慢 | 速度快 |
查询 | 速度快 | 速度慢 |
数组:
存储地址计算公式:
以二维数组为例:
m行n列数组,按行存储
a[i][j]
,则存储地址为:a+(i·n+j)*lenm行n列数组,按列存储
a[i][j]
,则存储地址为:a+(j·m+i)*len
栈
队列
二叉树的性质
完全二叉树:设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边
满二叉树:深度为k且有2^k-1个结点的二叉树称为满二叉树
二叉树的遍历
①先序遍历(先根遍历):根左右(NLR)
先访问根结点,再访问该根结点的左子树结点,最后访问该根结点的右子树结点;如果其左子树或右子树为分支结点,则需要对分支结点再进行一遍先序遍历,这种访问方式也是一种递归方式。
②中序遍历(中根遍历):左根右(LNR)
先访问根结点的左子树结点,再访问根结点,最后访问根结点的右子树结点;如果其左子树或右子树为分支结点,则需要对分支结点再进行一遍中序遍历。
③后序遍历(后根遍历):左右根(LRN)
先访问根结点的左子树结点,再访问根结点的右子树结点,最后访问根结点;如果其左子树或右子树为分支结点,则需要对分支结点再进行一遍后序遍历。
性质:
图的存储结构
n个结点的数的形态、n个数的序列合法的出栈顺序:
f
(
n
)
=
2
n
!
n
!
(
n
+
1
)
!
f(n)=\frac{2n!}{n!(n+1)!}
f(n)=n!(n+1)!2n!
稳定:计基插归冒
六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序
排序算法 | 平均时间复杂度 | 最坏时间复杂度 | 空间复杂度 | 稳定性 |
---|---|---|---|---|
冒泡排序 | O(n2) | O(n2) | O(1) | 稳定 |
选择排序 | O(n2) | O(n2) | O(1) | 不稳定 |
插入排序 | O(n2) | O(n2) | O(1) | 稳定 |
希尔排序 | O(n log n) | O(n2) | O(1) | 不稳定 |
归并排序 | O(n log n) | O(n log n) | O(n) | 稳定 |
快速排序 | O(n log n) | O(n2) | O(log n) | 不稳定 |
堆排序 | O(n log n) | O(n log n) | O(1) | 不稳定 |
计数排序 | O(n+k) | O(n+k) | O(k) | 稳定 |
桶排序 | O(n+k) | O(n2) | O(n+k) | 稳定 |
基数排序 | O(n*k) | O(n*k) | O(n+k) | 稳定 |
其中,n表示数据规模,k表示数据的取值范围。
中缀表达式转后缀表达式:
中缀表达式转前缀表达式:
软件工程方法学三要素:方法、工具、过程
软件定义阶段
问题定义及规划
可行性研究
需求分析
软件设计阶段
软件开发阶段
https://blog.csdn.net/a15626250225/article/details/127517178
各模型对比
名称 | 特点 | 缺点 |
---|---|---|
瀑布模型 | 各阶段划分明确,线性连接 | 不适应需求变化,交付时间长 |
V模型 | 开发设计过程与测试并行进行,与测试V模型一致 | |
增量模型 | 增量模型将软件系统划分为多个增量部分,每个增量部分都是一个完整的系统,通过逐步添加新的功能来逐步构建最终系统 | 对系统设计要求较高(模块化设计),确保增量的集成和兼容 |
演化模型 | 可视作若干次瀑布模型的迭代,通过迭代和增量逐步开发完善系统 | 需要明确需求 |
螺旋模型 | 强调风险管理,每次迭代都要进行风险评估 | 对项目管理和风险评估要求较高 |
敏捷模型 | 强调迭代、协作、自组织,版本发布频繁,持续反馈优化 | 对团队协作和沟通要求较高 |
需求设计、总体设计、详细设计、编码和调试、集成测试、系统测试
说的比较多的是在软件测试里,开发模型里说的少一点,特点是设计开发与测试是并行的过程,尽早建立相关活动间的联系
增量模型也称渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能
使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能
把软件产品分解成增量构件时,唯一必须遵守的约束条件是,当把新构件集成到现有构件中时,所形成的产品必须是可测试的
螺旋模型结合瀑布模型和原型化模型的优点,在每一个开发阶段前引入一个非常严格的风险识别、风险分析和风险控制,它把软件项目分解成一个个小项目。每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定,适合庞大复杂高风险的系统
快速开发,高频迭代
原型模型要求在进行实际软件开发之前,应建立系统的工作原型。
原型通常是实际系统的一个非常粗糙的版本,与实际软件相比,可能表现出有限的功能能力、低可靠性和低效的性能。
在许多情况下,客户只能对软件产品的期望有一个大致的了解。在没有关于系统输入、处理需求和输出需求的详细信息的这种情况下,可以使用原型模型。
用户之上严格区分工作阶段,每阶段有任务与成果
强调系统开发过程的整体性和全局性
系统开发过程工程化,文档资料标准化
面向数据流,自顶向下,逐步分解
使用于需求不明确的开发
包括抛弃型原型和演化原型
1、用分阶段的生命周期计划严格管理
2、坚持进行阶段评审
3、实行严格的产品控制
4、采用现代程序设计技术
5、结果应能清楚审查
6、开发小组成员应该少而精
7、承认不断改进软件工程实践的必要性
①功能内聚:这是最强的内聚,指模块内的所有元素共同作用完成一个功能,缺一不可。
②顺序内聚:指一个模块中的各个处理元素都密切相关于同一功能,且必须按顺序执行,前一功能元素的输出就是下一功能元素的输入。
③通信内聚(信息内聚):指模块内的所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或者产生相同的输出数据。
④过程内聚:指一个模块完成多个任务,这些任务必须按指定的次序执行。
⑤瞬时内聚(时间内聚):把需要同时执行的动作组合在一起形成的模块,所包含的任务必须在同一时间间隔内执行。
⑥逻辑内聚:指模块内执行若干个逻辑上相似的功能。
⑦偶然内聚(巧合内聚):指一个模块内的各处理元素之间没有任何联系。
内聚性:功能内聚>顺序内聚>通信内聚>过程内聚>时间内聚>逻辑内聚>偶然内聚(内聚性越高,模块独立性越强)
模块独立性:功能内聚>顺序内聚>通信内聚>过程内聚>时间内聚>逻辑内聚>偶然内聚
①无直接耦合:两个模块之间没有直接的关系,它们之间的联系完全是通过主模块的控制和调用来实现的。
②数据耦合:指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。
③标记耦合:指两个模块之间传递的是数据结构。
④控制耦合:指一个模块调用另一个模块时,传递的是控制变量,被调用模块通过该控制变量的值有选择地执行模块内的某一功能。
⑤外部耦合:模块间通过软件之外的环境联结(如I/O将模块耦合到特定的设备、格式、通信协议上)。
⑥公共耦合:指多个模块都访问同一个公共数据环境。
⑦内容耦合:当一个模块直接使用另一个模块的内部数据,或通过非正常入口转入另一个模块内部的耦合。
耦合性:无直接耦合<数据耦合<标记耦合<控制耦合<外部耦合<公共耦合<内容耦合(耦合性越低,模块独立性越强)
模块独立性:无直接耦合>数据耦合>标记耦合>控制耦合>外部耦合>公共耦合>内容耦合
分为三类,共计23种,简单理解即可
单例模式
创建的类在当前进程中只有一个实例,并提供一个全局性的访问点,这样可以规避因频繁创建对象而导致的内存飙升情况。
生成器模式(建造者模式)Builder Pattern
将一个复杂对象的构建与其表示分离,使同样的构建过程可以创建不同的表示。
工厂模式
定义一个用于创建对象的工厂接口,并让工厂子类决定实例化哪一个产品类,使产品类的实例化延迟到工厂子类中执行
抽象工厂模式
提供一个创建一系列相关或相互依赖对象的接口,而无需指定具体类。
原型模式
通过复制现有对象来生成新对象。
模板方法模式
命令模式
迭代器模式
观察者模式
定义对象间的一种一对多的依赖关系,使得当一个对象状态改变时,所有依赖它的对象都会得到通知并自动更新。
中介者模式
用一个中介对象来封装一系列的对象交互,使各对象不需要显式地相互引用。
备忘录模式
解释器模式
状态模式
策略模式
责任链模式
访问者模式
生产实际中维护内容可能存在重叠,比如既是适应性也是增量性
(34条消息) 【软考——软件设计师】_宋子浩的博客-CSDN博客
https://blog.csdn.net/qq_29912325/article/details/120673082
(Structural Things)
结构事务用于描述系统的静态结构和组成部分。它们包括:
类(Class)、
接口(Interface)、
组件(Component)、
节点(Node)、
用例(Use Case)、
协作(Collaboration)、
活动类/主动类(Active Class)
七种。结构事务描述了系统中的实体、它们的属性和关系等。
(Behavioral Things)
行为事务用于描述系统的动态行为和交互。
(Grouping Things)
群体事务用于组织和管理其他事务,是UML模型中组织的部分,它们本身不描述系统的结构或行为。
(Annotational Things)
注释事务用于提供额外的说明和文档信息,对其他事务进行补充和解释。
1、关联关系
普通箭头
其中一个类对象使用另一个类对象作为成员变量或方法参数。包括聚合、组合和派生
聚合关系:整体-部分的关联,但二者之间有独立的生命周期
空心菱形箭头
组合关系:整体-部分的关联,部分完全依赖于整体
实心菱形箭头
2、泛化关系
空心三角箭头
较普通的元素与一个较特殊的元素之间的类元关系
单继承与多继承
3、依赖关系
虚线箭头
依赖是指一个类对象使用了另一个类对象,但两者之间的关系是临时性的,短暂存在的。依赖关系通常表示一个类对象依赖于另一个类对象的功能或接口。
4、实现关系
虚线空心箭头
实现关系用来表示规格说明与实现之间的关系。在类图中,实现关系主要用于接口与实现该接口的类之间。
五个等级,由低到高:
安全日志
入侵检测
隔离防护
漏洞扫描
对称加密:
加密和解密使用同一个密钥
非对称加密:
加密和解密需要成对的一组公开密钥和私有密钥
作用
对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。
对于小文本量的信息,可以直接使用信息摘要作为加密方式,但如果文本量较多,经过加密后只会得到固定长度的密文
算法:
感觉媒体:能够刺激人类感官的媒体,如声音、图像、视频
表示媒体:传输信息的中介媒体,即用于数据交换的编码,如图像编码、文本编码、声音编码等
表现媒体:进行输入输出的媒体,如鼠标、键盘、扫描仪、打印机、显示器、VR设备等
交换媒体:系统之间进行信息交换的媒介
(1条消息) 【软考——软件设计师】_宋子浩的博客-CSDN博客
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。