导图社区 软件设计师思维导图
这是一篇关于软件设计师思维导图,设计,公式等,软考,软件设计师必须掌握的知识点,希望对你有所帮助!
编辑于2023-11-09 18:33:43软件设计师
课程基础
技术类-计算机基础知识
第一章:计算机基础
计算机硬件
主机
运算器ALU
控制器
CPU
运算器
ALU(算术逻辑单元:做算术运算和逻辑运算),当暂存运算结果时采用累加寄存器
AC(累加寄存器:是通用寄存器,用来暂存结果数据的)
PSW(状态条件寄存器:存状态标志或控制标志的)
DR(数据缓冲寄存器:写内存时,暂存指令或数据的)
控制器CU
PC(程序计数器:存储下一条要执行指令的地址,跟踪指令地址,采用直接寻址)【是控制器中的子部件】【程序员可访问】
IR(指令库寄存器:存储即将执行的指令),它的位数取决于:指令字长,且存操作码和地址码,对用户完全透明
ID(指令译码器:对指令中的操作码字段进行分析解释)
AR(地址寄存器:用来保存当前CPU所访问的内存单元的地址)
时序部件(提供时序控制信号)
不仅要保证指令的正确执行,还有能够处理异常事件
指令步骤流程
取指令:PC→AR→M(存储器)→DR→IR; 分析:OP→ID→CU; 执行:AD→AR→M(存储器)→DR→AC
CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断处理,所以CPU内部构造非常复杂。
GPU:类型高度统一、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。GPU是一种SIMD(single Instruction Multiple Data)架构
CPU是在一个总线周期结束时响应DMA请求
CPU执行指令的过程中,根据时序部件发出的时钟信号按部就班进行操作(也就是:按指令周期的不同阶段)以二进制编码方式存放指令和数据
存储器
主存(内存)(指令和数据存于此地)
MAR(地址寄存器:指令所在内存单元的地址)
MDR(数据寄存器:存放从地址单元取出来的数据)
例题
H表示16进制(数码是0、1、2、3、4、5、6、7、8、9、A(10)、B(11)、C(12)、D(13)、E(14)、F(15)) 16进制的每一位都代表4位2进制数 其中A-F分别表示十进制数字10-15,规则是“逢十六进一” 题:内存按字节编址,地址从A4000H到CBFFFH,为多少字节? 故:CBFFF-A4000为:(C-A=2),(B-4=7),(F-0=F),(F-0=F),(F-0=F)。最后得:27FFF。 十六进制27FFFH+1H=28000H(必须要加1的问题)=2*(16⁴)+ 8*(16³)=2*(2¹⁶)+ 8*(2¹²)=2¹⁷+2¹⁵ 十六进制28000H转为二进制为2*16*16*16*16+8*16*16*16+0*16*16+0*16+0*1=163840B/1024 = 160kb,即有163840个字节。(8Bit == 1个字节)
SRAM(cache):静止存取功能的内存。特点:不需要刷新电路既能保存数据,体积大、功耗大
DRAM(主存):动态随机存取存储器。特点:数据只能保存很短的时间,每隔一段时间需要刷新一次,若不刷新信息将丢失
虚拟存储器:由主存和辅存组成
ROM(只读存储器)、PROM(用户可写入一次)、 RAM(读写存储器且随机)按地址访问存储器的任一单元、 SAM(顺序存储器)按顺序查找目标地址、 DAM(直接存储器)按数据块所在位置访问、无需CPU干预 相联存储器(按内容进行访问,Cache中常用)
容量:通用寄存器<Cache<主存<磁盘 速度:磁盘<主存<Cache<通用寄存器
数据表示
补码本身是带符号位的,补码表示的数字中0是唯一的,不像原码有+0和-0之分,也就意味着n位进制编码可以表示2n个不同的数
釆用8位补码表示整型数据时,可表示的数据范围为-128〜127,因此进行127+1运算会产生溢出
对阶时,小数向大数看齐;对阶是通过较小数的尾数右移实现的
n位补码(表示数据位),表示范围是 -2n-1 ~ 2n-1-1,其中最小值为认为定义
两个浮点数相加:要统一这两个数的阶码(对阶)
采用补码:简化运算部件的设计
算术左移:相当于对操作数进行乘2操作
±0编码相同的是:补码和移码
校验码
奇偶校验码
只能发现奇数个位出错的情况,它是利用多组数位的奇偶校验性来检错和纠错的
海明校验码
基于奇偶校验码,它的校验码的位置必须在2ⁿ位置, 设数据位是n位,校验位是k位,则n和k的关系是:2的k次方 ≧ n+k+1
CRC循环冗余校验码
采用模2运算来构造校验位(模2加法:1+1=0,0+1=1)(模2减法:1-1=0,0-1=1)(模2乘法:1*1=1,0*1=0,每位都要做乘法并相加例如:1011*101= 1011 0000 1011 = 100111) (模2除法:X除以P(对X和P做模2加减法),被除数首位为1时,商1,为0时商0)
k个数据位之后跟r个校验位
指令
取指
分析
执行
流水线创建时间
第一条指令的执行时间
流水线的周期(▵t):是执行时间最长的一个阶段
流水线执行时间: 理论公式:(t1+t2+....tK)+(n-1)*3▵t; 解释:(t1+t2+....tK)是第一条指令执行的时间,k是分为多少段(几级就有几段:比如5级);n是多少条的指令;3∆t执行时间最长的一个阶段比如(3∆t) 实践公式:Tk= (k+n-1)*▵t (k为指令数,n为段数)
吞吐率
指单位时间内执行的指令条数【即:最长流水级时间的倒数】 流水线的吞吐率 = 指令执行条数 / 流水线执行时间 = 100/305Δt
最大吞吐率
1/▵t
加速比
不使用流水线的执行时间 / 使用流水线的执行时间的比值。(不使用流水线的话就是串行执行) 示例: 10条指令不用流水线的执行时间=(2∆t +1∆t +3∆t +1∆t +2∆t)*10=90∆t。 10条指令使用流水线的执行时间=(2∆t +1∆t +3∆t +1∆t +2∆t)+(10-1)*3∆t =36∆t。
VLIW:超长指令字
高速缓冲存储器(Cache)
时间局部性:指如果程序中的某条指令一旦被执行,则不久的将来该指令可能再次被执行
空间局部性:是指一旦程序访问了某个存储单元,则在不久的将来,其附近的存储单元也最有可能被访问
映像方法
直像映射:简单,但不灵活、冲突率高
全相联映像:复杂,十分灵活、速度慢,块冲突次数最小,只有装满后才需要替换
组相联映像:是直接映像和全相联映像方式的组合
算法
随机算法:最简单的替换算法
先进先出算法:数据先进先出,不太合理
近期最少使用算法:LRU近期用得最少的,比较合理,但复杂
最不经常使用页置换:计数器位数多,实现困难
Cache的性能
Hc:访问命中率
ta:存取时间
tm:主存的访问时间
公式
ta = Hctc+(1-Hc)tm
CAche的设计思想是在合理的成本下提高命中率 是介于CPU和内存之间的一个高速缓存,避免CPU“空等”现象
磁盘存储器
存储容量:n*t*s*b;(n为总记录面数,t为磁道数,s为扇区数(也可叫块),b为每个扇区存储的字节数)
存取时间:平均寻道时间+平均等待时间+读/写时间;(读写时间可忽略,有则要加)
计算题: 1、顺序执行:((第一块的旋转时间+第一块的处理时间) + 剩下的8转一圈所需的时间)* 剩下的块数9 +第一块的耗时 2、优化后:10块 * 第一块所需的时间
最短移臂调度算法:先看最接近的柱面号,再看扇区号从小到大排列
Flynn分类
指令流
数据流
分类
单指令流单数据流(SISD):顺序执行的单处理器计算机,特点:只对一条指令/数据进行操作
单指令流多数据流(SIMD):矩阵处理机,一条指令对应多条数据
多指令流单数据流(MISD):不实际、少见
多指令流多数据流(MIMD):也就是我们的多核处理器
复杂指令系统CISC(特点)
指令数量众多(100-250条)
指令使用频率相差悬殊
多种寻址方式(5-20种)
变长的指令,长度不固定
指令可以直接处理内存(主存)中的数据,执行速度慢
以微程序控制为主
不同寻址方式的目的:扩大寻址空间并提高编程灵活性
精简指令系统RISC(特点)
指令数量少
寻址方式少
指令的长度固定
以硬布线逻辑控制为主
单周期指令执行,采用流水线技术
优化的编译器
CPU中的通用寄存器数量多(32以上,有的可达上千个)
总线
按功能划分:地址总线、数据总线、控制总线
按总线的数据线多少划分
并行总线(多条双向数据线)
特点(应用:计算机各部件)
有传输延迟、适合近距离连接
串行总线(一条双向数据线或两条单向数据线)
特点(计算机与其他系统间使用)
速率不高,但适合长距离连接
单工:单向传输 半双工:两个方向一发一收,交替进行 全双工:随时都可以交替运行
内存容量为4GB,即内存单元的地址宽度为32位。
总线复用:减少总线中信号线的数量
磁盘阵列
RAID 0(无冗余和无校验的数据分块)
特点:存储性能最高
RAID 1(磁盘镜像阵列)
特点:有冗余,利用率50%
RAID 2(采用纠错海明码的磁盘阵列)
特点:有单纠错双验错功能,适用于大数据
RAID 3(奇偶校验码)
特点:位交叉奇偶校验
RAID 4(奇偶校验码)
特点:块交叉奇偶校验,适用大型文件读取
RAID 5(无独立校验盘的奇偶校验码的磁盘阵列)
特点:对于大批量和小批量数据的读写性能都很好,适用于i/o需求频繁的应用
计算:(N-1块)* 容量= 用户可用的容量,且以最小的为主
第二章:程序设计语言
解析型: (不生成目标程序、效率低、灵活性好、可移植性好)
编译型: (一次编译到处运行、 效率高、 灵活性差、 可移植性差)
阶段一:词法分析(3型文法),如何分析程序的一个一个的单词,输出单词序列,记号流
阶段二:语法分析(结构、形式),输入是:记号流
2型文法(四元组:VN,VT,P,S) 作用:根据语言的语法规则(描述程序语言语法结构的上下文无关文法),识别出各种语法成分(如表达式、语句、程序段乃至整个程序等),按语法规则分析检查每条语句是否有正确的逻辑结构
技巧答题:先看运算符,剔除多余的选项,比如多余的数字、括号等
阶段三:语义分析(含义)主要检查源程序是否存在静态语义错误,任务是对结构上正确的源程序进行上下文有关性质的审查,进行类型审查,审查源程序有无语义错误,为代码生成阶段收集类型信息
阶段四:生成中间代码(4种形式)中间代码的作用是可使程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现(分配寄存器的工作)
逆波兰记号(后缀式)
四元式
三元式(三地址码)
常用,共同特点
与具体的机器无关,不依赖于具体的计算机
树型表示
阶段五:出错处理
静态错误
语法错误
静态语义错误
动态错误
程序运行错误
有限自动机
确定的有限自动机 DFA
不确定的有限自动机 NFA
是词法分析的工具
大多数通用程序设计语言的语法基本上都是“上下文无关文法”
第三章:操作系统知识
进程(cpu管理)
三态模型:运行、就绪、阻塞
组成:由程序、数据集合、进程控制块PCB(PCB:一种数据结构,是进程存在的唯一标识)
PCB有三种方式: 线性方式:是一张线性表,且是全表扫描 链表方式:把同一状态的PCB,用其中的链接字链接成一个队列,PCB存储在一个连续的区域 索引方式:同一状态的进程归入一个索引表,多个状态对应多个不同的索引表
前驱图(同步关系):表示进程之间的先后关系,谁先完成,谁后完成,这是一种合作关系/同步关系 同步关系导致的问题:
PV操作(相当于加锁和解锁)互斥关系
P操作执行开始之前:将信号量S的值减1(结果S>=0时进程为等待状态) V操作执行结束之后:将信号量S的值加1(结果S>0进程继续执行,S<=0说明有等待队列中有等待进程,需要唤醒等待进程)
可以简化 ⇔ 死锁
存储管理
重定位
静态重定位:绝对/物理地址=相对地址+程序存放的内存起始地址(不灵活)
动态重定位:绝对地址=重定位寄存器的值(BR)+逻辑地址寄存器的值(VR)【真正使用时再转为物理地址】成本高、非连续的空间、代码共享
存储方案
分区管理:把主存的用户区划分成若干个区域,是一个连续的区域
固定分区:固定划分好的,造成空间浪费
可变分区:根据大小来分配(首次适应算法、最佳适应算法、最差适应算法)
可重定位分区(大部分使用):将已使用的放在一个区域
分页管理(页式存储系统):将一个进程的地址空间划分成若干个大小相等的区域称为页。或将主存空间划分成与页相同大小的若干个物理块称为块或页框。
逻辑地址转为物理地址公式: 页号=逻辑地址/1024 页内地址=逻辑地址 % 1024 物理地址=块号*1024+页内地址
4K=2的12次方=2的10次方*2的2次方=4*1024B,8k=2的13次方
分段管理:按程序大小来分段,有地址越界的问题(逻辑地址到物理地址转换时有越界)
段页管理
虚拟存储:将先不用的放入虚拟存储中
内存(物理地址【真实地址】)
设备管理
程序控制
中断:中断向量提供中服务程序入口地址
实现多级中断:采用堆栈来保护断点和现场
中断响应时间:是指从发出中断请求到开始进入中断服务程序所需的时间
DMA直接内存存取:是在主存和外设之间加了一个DMA接口,提升了效率
文件存储管理
直接索引:直接指向一个物理盘块,效率低、范围很小
间接索引:分级索引存储
考试
一般选最大的答案
位示图:
第四章:网络与安全基础
常见的网络协议
SNMP是简单网络管理协议,在UDP之上
POP3是电子邮件第一个离线协议标准,,在TCP之上,端口(110)
SMTP简单邮件传输协议,端口(25)
DHCP自动分配IP地址
ARP地址解析协议
RARP方向地址解析协议
SLIP串行线路互联网络协议
FTP文件传输协议,在TCP之上,端口(20/21)
TFTP简单文件传输协议,端口(69)
HTTP超文本传输协议,在TCP之上,端口(80) HTTPS是基于【SSL】的安全协议,端口:443
传输层
TCP(可靠的、面向连接的、全双工的数据传输服务,3次握手)用于数据量比较少的地方
UDP(不可靠的、无连接的协议)用于数据量大的地方
网络层协议
IP协议,不可靠
IPV4:是一个32位的二进制数的逻辑地址 组成:网络号+主机号(A类1~126,B类128~191,C类192~223,D类224~,E类) 主机地址个数= 2的主机号次方-2 三级IP地址:网络号+子网号+主机号 数据报:最大数值15个单位(4个字节一个单位)60字节、总长度为2的16次方-1=65535字节
IPV6:128位的地址,以16位为一段,用冒号隔开 数据报:最大负载长度64kb 三种基本类型:
IPv6的地址长度是IPV4的2的96次倍
IP下层关系对应的是:TCP和UDP
主要功能:将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方
局域网
IEEE 802.1是协议概伦 IEEE 802.3是局域网协议 IEEE 802.6是城域网协议 IEEE 802.11是无线局域网协议
网络设计和综合布线系统
网络设计
出口层:
核心层:主要目的在于通过高速转发通信,提供优化、可靠的骨干传输结构
汇聚层:网络访问策略控制、数据包处理、过滤、寻址,以及其他数据处理的任务。
接入层:用户使用
综合布线系统
工作区子系统:它是工作区内终端设备连接到信息插座之间的设备组成,包括信息插座、连接软线、适配器、计算机、网络集散器、电话、报警探头、摄像机、监视器、音响等
水平子系统:水平子系统是布置在同一楼层上,一端接在信息插座,另一端接在配线间的跳线架上,它的功能是将干线子系统线路延伸到用户工作区,将用户工作区引至管理子系统
管理子系统:安装有线路管理器件及各种公用设备
垂直(干线)子系统:通常它是由主设备间至各层管理间
设备间子系统:该子系统是由设备间中的电缆、连接跳线架及相关支撑硬件、防雷电保护装置等构成
建筑群子系统:它是将多个建筑物的数据通信信号连接成一体的布线系统,它采用架空或地下电缆管道或直埋敷设的室外电缆和光缆互连起来,是结构化布线系统的一部分
网络规划原则
实用性:强调设计目标和设计结果能满足需求并行之有效
开放性:必须制定全网统一的网络架构,并遵循统一的通信协议标准
先进性:尽可能采用成熟先进的技术
域名系统(DNS)
DNS使用UDP协议,较少情况下使用TCP协议,端口号均为53。域名系统由三部分构成:DNS名字空间、域名服务器、DNS客户机
存储区域网络(SAN)
实现存储系统网络化的网络存储模式
网络安全控制技术
防火墙
内部网络是安全可靠的,外部网络是不可靠不安全的
分类
包过滤防火墙
在网络层,对数据包检查
应用代理网关防火墙
在应用层,对数据和协议进行过滤
状态检测防火墙
在网络层将数据当成会话
加密技术
对称加密
私钥加密,适用大数据量:DES、3DES、AES、IDEA、RC4
非对称加密
公钥加密,适用小数据量:RSA、ECC椭圆曲线
消息摘要:MD5(128位)、SHA-256
数字证书:只有公开密钥,没有私钥
数字签名:发送方-用自己的私钥进行数字签名,接收方-用发送方的公钥进行验证
第五章:数据库基础
数据库系统的结构
外模式:对应用户的,用户使用的数据【用户看到的】有多个 视图:是一个虚拟表
概念模式:概念视图,基础表【全体数据的逻辑结构】只有一个
内模式:内部视图,只有一个 聚簇索引、存储文件:是改变的内模式
三级模式
逻辑独立性(数据的逻辑独立性)
物理独立性(数据的物理独立性)
两级印象
数据模型
概念数据模型(实体-联系模型)按用户的观点来对数据和信息建模,主要用于数据库设计(E-R模型)
基本数据模型(结构数据模型)按计算机系统的观点来对数据和信息建模,主要用于DBMS的实现
三要素:数据机构、数据操作、完整性约束
关系型数据库
关系代数
笛卡尔积【x】
自然连接【▷◁】
关系
等值连接 建立在笛卡尔积的基础之上,去掉不相等的结果 自然连接 建立在等值连接之上,将重复的内容去掉
函数依赖
完全依赖
部分依赖
传递依赖
Armstrong公理
A1自反律:Y包含X,X包含U,则X→Y为F所蕴含
A2增广律:若X→Y为F所蕴含,且Z包含U,则XZ→YZ为F所蕴含
A3传递律:若X→Y,Y→Z为F所蕴含,则X→Z为F所蕴含
合并规则:若X→Y,X→Z则X→YZ为F所蕴含
伪传递规则:若X→Y,WY→Z,则XW→Z为F所蕴含
分解规则:若X→Y,Z包含Y,则X→Z为F所蕴含
全码(all-key):全都属性都是主键
键
超键:能唯一标识元组的属性集;例如(学号、学号+姓名)
候选键:不含有多余属性的超键(超键的最小集);例如(学号、身份证号)
主键:用户挑选出来做元组标识的一个候选键;例如(学号)
外键:
主属性:含在任何一个候选键中的属性
规范化
第一范式(1NF)所有字段属性不可再分的数据项
第二范式(2NF)每一个非主属性完全依赖主键时
第三范式(3NF)建立在第二范式之上的,消除了非主属性对码的传递函数依赖
拆分表,来满足不同范式
数据库设计
规划阶段
需求分析:需求规格说明书、数据字典(数据项、数据流、数据存储、数据加工)
概念设计:E-R图
冲突: 属性冲突:属性域冲突、属性值冲突 结构冲突:同一对象在不同应用中的抽象不同、同一实体在不同E-R图中属性个数和排列次序不同 命名冲突:同名异义、异名同义
逻辑设计:是对关系模式进一步规范化处理
物理设计
事务管理
原子性
一致性
隔离性
持续性
分布式数据库
逻辑透明性:最低层次的透明性,它提供数据到局部数据库的映像,即用户不必关心局部DBMS支持哪种数据模型、使用哪种数据操纵语言
分片透明性:是指用户或应用程序不需要知道逻辑上访问的表具体如何分块存储
复制透明性:用户不关心数据库在网络中的各个节点的复制情况,系统自动完成
故障恢复
备份
数据仓库
数据挖掘
软件开发基础知识
第一章:软件工程
软件开发模型
开发生命周期模型
1、瀑布模型(生命周期法-最常用-最早-只做一次-适合大型开发):有6个阶段:软件计划(可行性)、需求分析(详细分析)、软件设计(框架设计)、程序编码(标准的编写规范)、软件测试(发现错误)、软件维护(持续时间最长)
需求明确:串行完成,开发周期长
2、变换模型
3、螺旋模型:是将瀑布模型和变换模型组合
瀑布+原型:大型复杂有风险
4、喷泉模型:是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。
面向对象:自顶向下,无间隙、迭代
5、V模型:延续,清晰描述了这些测试阶段和开发阶段的关系,测试方面的模型
6、增量模型:融合了瀑布模型的基本成分和原型实现的迭代关系(适合需求变化 的场景)
原型+瀑布:第一个版本为核心
7、RAD模型:快速应用开发,极短的开发周期。要完成:业务建模、数据建模、过程建模、应用程序生成、测试与交付 缺点有3:
8、CBSD模型(基于构件的模型)
9、原型方法:应对用户需求不确定的场景适用于WEB项目,但未真正实现
需求不明确、经常变化:快速获取用户需求
10、XP方法:更短的周期内,更早的提供具体、持续的反馈信息,通过行为贯穿整个生命周期
11、RUP方法:通用过程框架,是一个迭代过程
以架构为中心,用例驱动
系统开发方法论
结构化分析和设计:依次划分为若干个阶段,然后顺序的完成每个阶段,与瀑布模型很好的结合,思想是:自上而下,逐步分解
接口设计是描述软件与外部环境之间的交互关系,软件内模块之间的调用关系,而这些关系的依据主要是分析阶段的数据流图。
面向数据结构的设计:根据数据结构导出程序结构,Jackson方法和warnier,不适合复杂的系统
面向对象分析与设计:最流行的方法之一
构件化开发:基于构件的软件开发,缩短开发时间,5个基本要素:
软件测试
测试的目的:保证质量的主要手段之一,发现错误和缺陷的,证明程序有错,以找错为中心
测试的类型
动态测试
黑盒法
白盒法:以程序的内部逻辑为基础设计测试用例
灰盒法:关注输出对于输入的正确性,结合了白盒黑盒的方式
静态测试:桌前检查(自己检查自己)、代码审查(组成小组)、代码走查(与代码审查基本相同-属于白盒测试)
测试的阶段
单元测试:最小单位,自己负责
集成测试:多个模块组装测试,在概要设计阶段
确认测试:需求分析阶段完成,验证软件的功能是否与需求吻合
系统测试:不只包含软件还有硬件和网络
性能测试:自动化的测试工具,,负载压力测试,发现性能瓶颈
第三方测试:独立于软件开发和用户方的测试,为提供公正诉求所提供的
面向对象测试基础
算法层:单元测试
类层:单元测试
模板层
系统层
语句覆盖、路径覆盖
环路复杂度 = 闭环个数+1
软件维护
改正性维护:识别和纠正软件的错误20%工作量
适应性维护25%工作量
完善性维护50%工作量
预防性维护5%工作量
第二章:结构化开发(面向数据流)
结构化分析:1、画数据流图;2、建立系统逻辑模型;3、划清人机界限问题 工具:数据流图DFD、数据字典DD、结构化语言、判定表、判定树
数据流图平衡的问题
父图与子图的平衡问题:父图有哪些数据流那么子图也应有哪些数据流(方向和条数必须一致)
子图内部的平衡问题:加工要有输入和输出
数据字典:包含(数据流、数据项、数据存储和基本加工)
结构化设计(模块化设计)
抽象化(从高到底):过程抽象、数据抽象、控制抽象
自顶向下,逐步细化
信息隐蔽性:通过信息隐蔽可以提高软件的可修改性、可测试性和可移植性,它也是现代软件设计的一个关键性原则
模块独立:模块大小要适中、模块的扇入和扇出要合理、深度(模块层度)和宽度适当
高内聚(从高到低)
功能内聚:完成一个单一功能,各个部分协同工作,缺一不可
顺序内聚:处理元素相关,而且必须顺序执行
通信内聚:所有处理元素集中在一个数据结构的区域上
过程内聚:处理元相关,而且必须按特定的次序执行
瞬时内聚:所包含的任务必须在同一时间间隔内执行(如:初始化模块)
逻辑内聚:完成逻辑上相关的一组任务
偶然/巧合内聚:完成一组没有关系或松散关系的任务
低耦合(从低到高)
非直接耦合:没有直接联系,互相不依赖对方
数据耦合:借助参数表传递简单数据
标记耦合:一个数据结构的一部分借助于模块接口被传递
控制耦合:模块间传递的信息中包含用于控制模块内部逻辑的信息
外部耦合:与软件以外的环境有关
公共耦合:多个模块引用同一个全局数据区
内容耦合:一个模块访问另一个模块的内部数据,不通过接口,在内部程序代码重叠,一个模块有多个入口
第三章:面向对象技术
概念:面向对象=对象+分类+继承+通过消息的通信
对象
类
类的关系有3种(包含、扩展、泛化)
实体类:主要负责数据和业务逻辑
边界类:负责和用户交互
控制类:主要负责实体类和边界类的交互
继承
多态
UML统一建模语言
结构事务:名词、静态部分、物理元素
行为事务:动词、动态部分、行为
分组事务:包
注释事务:注解
分类:静态模型(用例图、类图、对象图、构件图、部署图)、动态模型(状态图、活动图、顺序图、协作图)
用例
用例之间的关系
包含关系:基用例指向子用例
扩展关系:子用例指向基用例,子用例脱离后不影响基用例
用例的关系有4种(关联、依赖、泛化、实现)
类图(静态视图)
实体类:需求中的每个实体
控制类:程序执行逻辑
边界类:用于对外部用户与系统之间的交互
类图之间的关系
依赖:是一种使用的关系,单项依赖(依赖的一方指向被依赖的一方)
泛化:父类是之类的泛化
关联:是一种拥有的关系,一个类知道另一个类的属性和方法 组合关系:整体和部分是不可分离的 聚合关系:整体与部分是可分离的
实现:通过接口来实现
对象图(静态快照)
交互图(动态建模)
序列图
通信图(协作图):有来有往,对象之间的消息流
状态图(动态建模):行为的结果
活动图(动态视图):行为的动作
构件图(组件图--复用)
部署图(软件与硬件的物理架构)
包图(描述需求)
设计模式
创建型模式:工厂方法模式、抽象工厂模式、单例模式、建 造者模式、原型模式。共五种。口诀:单抽元 件(建)厂
结构型模式:适配器模式、装饰器模式、代理模式、外观模 式、桥接模式、组合模式、享元模式。共七种。 口诀:外侨(桥)组员(元)戴(代)配饰。
行为型模式:策略模式、模板方法模式、观察者模式、迭代 子模式、责任链模式、命令模式、备忘录模式、 状态模式、访问者模式、中介者模式、解释器 模式。共十一种。口诀:观摩(模)对(迭) 策,责令解放(访),戒(介)忘台(态)。
再细分
类模式
工厂方法【Factory Method】:定义一个用于创建对象的接口,让子类决定将哪一个类实例化。 Factory Method使一个类的实例化延迟到其子类。
适配器:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子
模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板 方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
对象模式
抽象工厂【Abstract Factory】:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
建造者模式【builder】:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示(内部内容有所不同)
原型模式【Prototype】:用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象
子主题
单例模式【Singleton】:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化。
组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。 Composite使得客户对单个对象和复合对象的使用具有一致性。
装饰模式:动态地给一个对象添加一些额外的职责。就扩展功能而言, Decorator模式比生成子类方式更为灵活
外观模式:为子系统中的一组接口提供一个一致的界面,外观模式通过提供一个高层接口,隔离了外部系统与子系统间复杂的交互过程,使得复杂系统的子系统更易使用。
享元模式:运用共享技术有效地支持大量细粒度的对象。享元模式通过共享技术实现相同或相似对象的重用
代理模式:代理模式使用代理对象完成用户请求,屏蔽用户对真实对象的访问。为其他对象提供一种代理以控制对这个对象的访问。
责任链模式:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。
迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。
中介者模式:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要 显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态。
观察者模式:每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。
状态模式:允许其在不同的状态下,拥有不同的行为,
策略模式:策略模式让算法独立于使用它的客户而独立变化,还可以相互替换
命令模式:将一个请求封装成一个对象,从而使得用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
访问者模式:你可以在不改变各元素的类的前提下定义作用与这些元素的新操作
核心知识
数据结构与算法
第1章 数据的线性结构
线性表:指的是一维数组(相同类型的数据)
顺序存储(顺序表):它是一个连续的空间,逻辑上相邻的元素在物理上位置也是相邻的 优点:随机存取表中的元素。 缺点:插入和删除操作需要移动元素(移动元素期望值:【插入是:n/2个;删除是:(n-1)/2个】)
链式存储:通过指针链接起来的结点来存储数据元素(组成:数据域,指针域) 优点:移动和删除是不需要移动位置的,但会牺牲空间 缺点:只能顺序存储
单链表:只能从头开始顺序遍历
单向循环链表:尾和头连起来
双向链表:牺牲一下空间来存储前后关系
双向循环链表:首尾相连
循环链表:任意节点出发都能访问整个链表
栈(先进后出、后进先出) 删除元素和添加元素都在一端进行的
顺序存储
栈的链式存储
队列(插入删除都在两端进行) 先进先出
顺序存储
双端队列:B端进必须B端出
串(是一种线性表):子串个数公式:(n+2)*(n-1)/2
第2章 数据的非线性结构
二维数组:主要考特殊三对角矩阵,大部分都是用代入法
树(主考二叉树)顺序排列是完全二叉树
特征:在二叉树的第 i 层上最多有2的i-1次方个结点(i≧1)
特征:深度为 k 的二叉树最多有2的k-1次方个结点(k≧1)
特征:对于任何一棵二叉树,如果其叶子结点数为 N0 ,度为2 的结点数为N2,则N0=N2+1
二叉树的遍历:从根节点出发,按某种次序依次访问二叉树中的所有节点
层次遍历,每层从左到右依次遍历
前序/先序遍历:先遍历根节点,然后再遍历左子树的所有节点,再遍历右子树(所有根都遵循:根、左、右)
中序遍历(表达式):先遍历左的所有子树,再遍历根,再遍历右子树的所有(所有根都遵循:左、根、右)
后序遍历(后缀式:波兰式):先遍历左的所有子树,再遍历右的所有,再遍历根(所有根都遵循:左、右、根)
大小关系
1、根比子树小
2、左子树比右子树小
节点的度:指子树的个数
(n(k-1)+1)/k
平衡二叉树的时间复杂度:O(log2n)
二叉树关系存储
顺序存储:完成二叉树无占位,而一般二叉树则存储有占位情况,会虚拟出来一些地址空间
链式存储:每个部分都有3个空间,当无子树时用空指针代替(二叉链表)空指针个数:k+1。三叉链表有4个空间
二叉查找树:如果中序遍历二叉排序树,就能得到一个排好序的节点序列(规则:左子树比根小,右子树比根大)
哈夫曼树(最优二叉树):带权路径最小的数,权值较大的 结点离根较近。从左到右从小到大
编码:构造完哈夫曼树后标树的每个路径为左0右1,然后看每个字符对应经过的标识,然后串起来就是一个编码
压缩比:压缩前,属于定长编码,每个字符用3位编码,压缩后编码长 度是:1*40%+3*10%+3*20%+3*16%+3*14%=2.2,压缩率:(3- 2.2)/3=27%
图(有闭合空间)
无相完全图:共有n(n-1)/2条边 一个顶点的度:是指与该顶点相邻的顶点数
有向完全图:有向完全图中弧的数目为:n(n-1)
连通图:对应的是无向图:n-1,n*(n-1)/2
强联通图:对应的是有向图,是互通的
图的存储(有同路的存为1反之为0)
邻接矩阵:有向图的邻接矩阵不一定对称。无向图的邻接矩阵的对称的(有空间浪费) 5个结点的有向图若采用邻接矩阵存储是一个5*5 的矩阵
邻接表:有几个顶点就建几个链表
图的遍历:是指从某个顶点出发,沿着某条搜索路径对图中的所有顶 点进行访问且只访问一 次的过程。
第3章 数据的运算
时间复杂度
T(n)= O(1)
T(n)= O(n),相当于一个for循环
T(n)= O(n的2次方),相当于2个for循环嵌套
T(n) = log2(2)
查找算法
顺序查找:依次遍历。平均查找长度:(n+1)/2,效率低
二分查找法:元素必须是有序的(升序)。基本思想是每次拿中间元素来比较,向下取整,基准值=(第一个+最后一个)/ 2
哈希查找:取余计算再进行比较下标。冲突解决方法:随机探测再散列、线性探测(顺序查找),向后无空间时,就跳到最前
排序
直接插入排序(稳定):依次进行升序排序。最好情况的时间复杂度0(n)、最差的时间复杂度0(n的2次方)【倒叙】
冒泡交换位置排序(稳定):依次比较从小到大。最好情况下的时间复杂度为 n(只需比较不需交换位置)、最差是时间复杂度n(n-1)/2
简单选择排序:从待排序的数组中取一个基准值与其他进行比较取一个最小作为结果。最好和最差的时间复杂度 n的2次方
希尔排序:基于直接插入排序。最差的时间复杂度为:n的1.3次方
快速排序(分治法):对冒泡排序的改进。当左右相差太多时就不适合这个算法
堆排序(是选择排序):根节点比子节点都要小
时间复杂度为:log2n
归并排序(分治【稳定】):分解n/2个子序列、求解(两个子序列进行递归)、合并。时间复杂度:o*logn
第4章 算法分析与设计
算法特征:有穷性(有穷时间内完成)、确定性(没有二义性)、可行性、输入、输出
分治法
特征:将n的问题分解为k个子问题,然后将两个子序列进行递归,最后合并。【最优子结构性质、子结构相互独立】
最少的比较次数为:2 最多的比较次数为:n*log2的n次方
动态规划
特征:1、整体最优子结构。2、重叠子问题(递归思想:至底向上)每个子问题只解一次。至顶向下的时间复杂度:2的n次方
时间复杂度:0(n)
背包算法
部分背包问题:它的价值/容量=单位价值
贪心算法
特征:局部最优解,最少的
回溯法
特征:试探法,图的深度优先搜索、二叉树的后序遍历。直到找到所有合理的方案
其他知识
补充知识
第1章 新技术知识
大数据:无法在一定时间范围内用常规软件进行捕捉
特点:大数据量(PB级)、类型多样性、价值密度低、高速(处理速度快)、真实性
架构流程:数据准备→存储管理→计算处理→数据分析→知识展现
大数据应用:推送、偏好分析、大数据“杀熟”
大数据的关键环节
数据采集:ETL工具
数据存储:SQL和NoSQL
数据管理:分布式并行处理技术(MapReduce)
数据分析与挖掘:钻取和分析
大数据的关键技术
HDFS:分布式文件系统,大数据存储技术
HBase:分布式面向列的开源数据库,是非结构化数据存储的数据库
MapReduce:大数据管理技术
Chukwa:用于监控大型分布式系统的数据收集系统
Flume(日志收集系统):是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统
Kafka:是一种高吞吐量的分布式发布订阅消息系统(不能直接通信)
Producer:复杂发布消息打Kafka broker
Consumer:消息消费者,向Kafka broker读取消息的客户端
Apache Spark:是专为大规模数据处理而设计的快速通用的计算引擎
云计算:一个庞大的资源池
特点:超大规模、虚拟化(云:不是固定的有形的实体)、高可靠性、通用性、高可扩展性、按需服务、及其廉价、潜在危险性(数据泄露)
云计算的模式(必考)
基础设施即服务:(IaaS)提供给消费者的服务包括(处理、存储、网络和其它基本的计算资源)
平台即服务:(PaaS)包括操作系统、编程语言、运行环境、数据库和Web服务器
软件即服务:(SaaS)向用户提供应用软件、组件、工作流等虚拟化软件的服务
云计算的核心
资源池
云操作系统
云平台接口
云计算的关键技术
网格计算:采用并行计算,通过任务分解提升计算能力。采用技术:Web Service,主要依赖与SOA
虚拟化:是基础设施的虚拟化,核心是传统已经成熟的集群计算和分区计算的结合
云计算的应用:公有云、私有云、混合云
物联网:物与物相连
两项关键技术:嵌入式技术、传感器技术
物联网架构
感知层:负责信息采集和物物之间的信息传输(RFID:射频识别,远距离读取、存储量大。条形码:存储量小)
网络层:利用有线或无线进行:编码、认证、传输(标准化程度最高、产业化能力最强、最成熟的部分)
应用层:提供丰富的基于物联网的应用,是物联网发展的根本目标
移动互联网:移动设备进行换联网连接(宽带IP为核心)【网络是核心、应用和内容是根本】
特点:接入移动性、时间碎片性、生活相关性、终端多样性
关键技术
架构技术SOA:面向服务的架构(Web service是目前实现SOA的主要技术)
页面展示技术Web2.0:是互联网思维模式
页面展示技术HTML5:可以在网页上直接调试和修改
主流开发平台Android:java实现(开源的)
主流开发平台IOS:非开源的,开发难度大于Android
主流开发平台windows phone:微软手机操作系统
人工智能AI技术
规划三步走:第一步2020年、第二步2025、第三步2030年
主要成果
语音识别技术
计算机视觉
机器学习
机器人技术
自然语言处理
人工智能包含了自识别和自学能力
机对弈最流行的是AlphaGo
自动工程
知识工程
区块链
概念:分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式
特征:开放、共识、去中心化、去信任机制、交易透明、双方匿名、不可篡改、可追溯、自治性、集体维护
应用:区块链最初是作为比特币的底层技术出现
核心技术
分布式账本/去中心化:多个存储节点,没有中心节点,网状图(少数服从多数)
哈希加密/防篡改:采用区块+链式的存储结构
非对称加密/数字签名:保障真实性
共识算法/全名记账:POW(工作量证明)
互联网+
特征:实现互联网与传统产业的联合(六大特征:跨界融合、创新驱动、重塑结构、尊重人性、开放生态、连接一切)
发展趋势:2015年李克强提出2025年完善。制造业服务化:是互联网+制造的重要方向。将价值链由以制造为中心以服务为中心转变。由消费领域向生产领域拓展。
两化融合:工业化和信息化的融合
智慧中国
五层模式:物联感知层、通信网络层、计算与存储层、数据及服务支撑层(SOA)、智慧应用层(智能制造的核心是:CPS)
三个支撑体系:安全保障体系、建设和运营管理体系、标准规范
数据仓库
数据仓库的架构:数据源→数据仓库→服务→展示
特点:按主题组织、相对稳定、反应历史变化、集成化
数据挖掘方法:决策树、神经网络、遗传算法、关联规则挖掘算法
商业智能:商业问题建模和商业数据分析。多维分析(OLAP)
5G(第五代移动通信技术)
100Mbt
关键技术:超密集异构网络、自组织网络技术、内容分发网络、设备到设备通信(D2D)、M2M通信、信息中心网络(ICN)
5G特点是高速率:用户体验的速率为1G,且最长传输距离可达2公里
第2章 项目管理网络图
时间管理(不可再生)
PERT图
关键路径:持续时间最长的路线,可以有一条或多条。也即所有工作松弛时间为0的路线。
最早开始时间:指节点(事件)的最早可能发生时间。采用正推法求解。
最迟开始时间:从该事件出发的任务必须在此时刻之前开始,否则整个工程不能如期完成。采用逆推法求解。
松弛时间:表示不影响整个工期前提下完成该任务的机动余地。每个活动的松弛时间=最晚开始时间-最早开始时间或=最晚结束时间-最早结束时间
第3章 标准化与知识产权
知识产权
特征:无体性、专有性、地域性、时间性
著作权法:完成既享有著作权。不论是否发表,但不适用于:司法性质的文件及其官方正式译文【人身权和财产权】(50年)
职务作品:本职工作开发的东西(有署名权)
署名权、修改权、保护作品完整权(不受保护期限制)
计算机保护条例;对象(计算机程序及其有关文档),软件必须固定在某种有形物体上署名权不被继承
专利法:是指发明、实用新型和外观设计。申请被批准后
不授予专利权:科学发现、智力活动的规则和方法、疾病的诊断和治疗方法
专利期限:发明专利权的期限为二十年,实用新型专利权和外观设计专利权的期限为十年,均自申请日起计算。(保护期不可延长)
在哪里申请就在哪里适用
协商不成,都不允批准
商标法:和烟草制品,必须使用注册商标。
申请在先的拥有,同一天申请的按谁先适用优先(要证明),协议不成按抽签决定
有效期十年,自核准注册之日,保护期可以延长
注册商标的专用权,以核准注册的商标和核定使用的商品为限。
商业秘密权:主体不是单一的、技术信息和经营信息(客体)、保护期不具有确定性、无须国家审批(产生日自动获得)
应试技巧
案例分析
第1章 案例分析概述:最后做算法题,得分较难
第2章 案例一:数据流图
父图和子图的输入输出的数据流条数要一 一对应
子图加工时一定要注意:有输入一定有输出
定义图
按分值来确定答题个数
它描述数据在系统中如何被传送或变换,以及描述如何对数据流进行变换的功能,用于功能建模
第3章 案例二:ER图(E实体-R关系图)
实体有对应的属性
菱形图标的就是关系:它也有相应的属性,也可以没有
有冗余的情况就得拆分
第4章 案例三:UML建模
用例图
组成
参与者(使用者)【名词】
用例(功能)【动宾短语】
边界
关系
关系
包含关系(include)
扩展关系(extend)用例指向父用例
泛华关系
类图
组成
类名
对象
子主题
关系
关联关系(包含)
依赖关系
泛化关系
组合关系
实现关系
第5章 案例四:算法设计
分治:将复杂问题分解成若干规模相同的子问题
动态规划(易考):类似于分治法。但具有最优子结构性质和重叠子问题性质
贪心法:不从整体考虑只求当前局部最优解
回溯:达不到(最优)目标,就退回再走
直接插入排序法
在插入第i个关键码时,k1,k2,…,ki-1已经排好序,这时将关键码ki依次与关键码ki-1,ki-2,…,进行比较,找到ki应该插入的位置时停下来,将插入位置及其后的关键码依次向后移动,然后插入ki。
希尔排序
步骤1∶构造一个步长序列delta1、delta2…、deltak,其中delta1=n/2,后面的每个delta是前一个的1/2,deltak=1; 步骤2∶根据步长序列、进行k趟排序 ; 步骤3∶对第i趟排序,根据对应的步长delta,将等步长位置元素分组,对同一组内元素在原位置上进行直接插入排序。
时间复杂度 < O(n的2次方)。
不稳定
简单选择排序
第一趟从第1个元素开始,在n个元素中选出最小者,将其交换至第一个位置,第二趟从第2个元素开始,在剩下的n-1个元素中选出最小者,将其交换至第二个位置,依此类推,第i趟从n-i+1个元素中选出最小元素,将其交换至第i个位置,通过n-1趟选择最终得到非递减排序的有序序列。
二分查找法(折半查找)
递归
非递归
次数:【log2(n+1)】
第6章 案例五:Java设计模式
定义类
接口类:接口interface用implements实现;抽象类abstract class用extends继承。
抽象类:抽象类中可以有普通方法(有函数体),也可以有抽象方法(无函数体,方法前要加关键字abstract),接口中的方法默认为抽象方法,因此无需加关键标识。抽象类中的方法最好定义为抽象方法,当有方法体时就不能做为抽象方法
接口类中的函数定义
设计类
函数体(调用形式出现)
程序或说明或类图中找到:认真看类图,类图中可以看到类之间的关系以及类中的方法。
常考设计模式
策略模式
特征:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。此模式使得算法可以独立于使用它们的客户而变化。
组成
Strategy(策略)
ConcreteStrategy(具体策略)
Context(上下文)
观察者模式
特征:观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。
组成
抽象主题(Subject)
具体主题(ConcreteSubject)
抽象观察者(Observer)
具体观察者(Concrete Observer)
状态模式
特征:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。
组成
Context(上下文)
State(状态)
ConcreteState(具体状态子类)
建造者模式
特征:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
组成
Builder:抽象建造者
ConcreteBuilder:具体建造者。
Director:指挥者。
Product:产品角色。
桥接模式
特征:将抽象部分与它的实现部分分离,使它们都可以独立地变化。
组成
Abstraction 定义抽象类的接口,维护一个指向 Implementor类型对象的指针
Implementor 定义实现类的接口
ConcreteImplementor 实现 Implementor 接口并定义它的具体实现
装饰器模式
特征:动态地给一个对象添加一些额外的职责。就扩展功能而言,Decorator模式比生成子类方式更为灵活。
组成
Component 定义一个对象接口,可以给这些对象动态地添加职责。
ConcreteComponent 定义一个对象,可以给这个对象添加一些职责。
Decorator 维持一个指向 Component 对象的指针,并定义一个与 Component 接口一致的接口
ConcreteDecorator 向组件添加职责
真题实训
案例分析
案例分析一(数据流图)
案例分析二
案例分析三
案例分析四
案例分析五
做题记录
MD5是一种报文摘要算法,是一种散列函数,用以提供消息的完整性保护(长度为128)
255.255.244.0比正常的B类子网掩码255.255.0.0多了3位1,所以分成了8个子网
检测网络入侵者应该使用入侵检测系统
FTP端口是20(数据)、21(控制);SMTP端口是25;telnet端口是23;DNS端口是53
DMZ区:非军事化区,也称周边网络是提供公共网络访问的区,则Web服务器是一种公共网络的服务器
netstat命令是控制台命令,是一个监控TCP/IP网络的非常有用的工具,还能诊断DNS的故障
Python中列表list是有序的可重复的、集合set的元素是无序的、元组tuple的元素不可变
Python中Matplotlib是绘图库;TensorFlow、PyTorch、Keras是支持深度学习模型的
DES:是共享密钥加密算法(不公开),又叫对称加密算法,常用的算法有DES、3DES、IDEA、AES RES、ACC:是非对称加密算法(公开)
多级中断存储记录常用:堆栈
异步传输:IO接口与打印机设备间交换信息
SFTP:是安全的文件传输协议
病毒:永恒之蓝、蠕虫、特洛伊木马
ACL:网络访问控制列表
商标权的保护期是可以延长的(即:永久的)
风险不可以被消除的
面向对象不允许无环依赖
时序图是以时间维度
Python中的list*2就是将元素复制2份
平均CPI:对列出的CPI求平均数。4*35%+2*45%+6*20%=3.5(四舍五入法)
BGP:外部网关协议
体系结构模型把工作量表示为:代码行数。
抽象类:不能直接产生对象。
重放攻击:解决办法--加时间戳
易分析性属于可维护性的子特性
立即寻址最快、寄存器寻址次之、直接寻址最慢
PCI并行内总线,SCSI并行外总线
软件实体(类、模块、函数等)应该是可以扩展但不可修改的,属于开放封闭设计原则
对象图的对象名会有:标识,并且对象图的关联关系一般不会出现多重度
第一空,根据题干描述,该设计模式将抽象部分与其实现部分分离,使它们都可以独立的变化,指的是桥接模式。
1. 原子性(Atomicity):事务是原子的,要么做,要么都不做。 2. 一致性(Consistency):事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态。 3. 隔离性隔离性(lsolation):事务相互隔离。当多个事务并发执行时,任一事务的更新操作直到其成功提交的整个过程,对其它事物都是不可见的。 4. 持久性(Durability):一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也永久有效。题干描述的是持久性。
采用贪心算法保证能求得最优解的问题是邻分(分数)背包问题。
I/O数据传输主要影响因素是:数据总线宽度
jackson设计方法是:面向数据结构。Jackson分析方法:面向数据流
C/C++:预处理→编译→汇编→链接
线程的堆栈不可共享
流水线方式:不能提高单条指令的执行速度(可执行多条指令、提高利用率、提高吞吐率)
入栈和出栈都不需要遍历
PPPoE:以太网上的点对点协议
错题记录
立即寻址最快→寄存器→直接寻址最慢
AES:是一种分组加密算法
远程登录:SSH、telnet、RFB
包过滤防火墙是对:网络层的数据报文检查
从低到高:外网→DMZ→内网
数据流图DFD:图中不需要表示出控制流
二叉树表达式:a*(b/c-d)这样的中序表示时要用括号
增量模式:缺点配置复杂
系统测试阶段的测试目的来自于需求分析
评价指标:可理解性、可测试性、可修改性
面向对象设计的主要活动:识别类和对象、定义属性、定义服务、识别关系、识别包 面向对象分析时活动执行顺序:认定(识别)对象、组织对象、描述对象间的相互作用、确定对象操作、定义对象的内部信息
数据库的安全机制中,存储过程提供给第三方,从而保证数据的关系不被第三方获取
堆栈:top[1]-top[2]==1
二叉树的层数:是数组的空间取值,如:[11,1024]
归并采用的是:分治法。最好和最坏的时间复杂度:O(n logn)
ARP request采用的是:广播。ARP response采用的是:单播
路由协议不允许数据包在主机之间传送
RISC采用组合逻辑控制器(有较多通用寄存器),CISC采用微程序控制器(较少通用寄存器)
DMA方式传送数据时每个数据都要占用一个总线周期
闪存:采用随机方式存储,常用来代替主存
除运算除数为0:表示为异常
SQL注入的目的:获得数据库的权限
IPSec为IP数据报进行加密
模块划分和模块之间的关系:属于概要设计阶段
c/c++在类型检查时:属于语义分析阶段
java的特征:采用即时编译、对象在堆空间分配、自动的垃圾回收机制
螺旋模型:适合大规模、复杂、且风险高的项目(开发成本高)
参与者属于系统内部
确定的有限自动机:输入任何状态,输出都是确定的状态转换
三元组顺序链表和十字链表:是对稀疏矩阵进行压缩存储的
(冒泡排序、简单排序、堆排序、快速排序)第一趟排序后一定能将某个元素的位置确定下来
清除本地DNS的命令:ipconfig/flushdns
网络系统设计时:尽量让优先级高的目标达到最优
COCOMOII:【层次结构中】基于对象点、功能点、代码行数进行估算;【体系结构阶段】采用源代码行数 应用组装模型使用的是对象点;早期设计阶段模型使用的是功能点,功能点可以转换为代码行
喷泉模型:开发活动之间无明显界限
哈夫曼树:权值相同的节点到树根的路径长度不一定相同
设置多级高速缓冲的作用:提高CPU访问主存数据或指令的效率
各个元素与同一功能密切相关且顺序执行时:则内聚类型为顺序内聚
语法分析阶段的入参是:记号流
敏捷开发方法scrum不包括:Refactoring
易用性的子特性:不包括易分析性
软件实体可以扩展但不可以修改:属于开放封闭原则
UML图:当事件触发一个没有特定监控条件的迁移对象不会离开当前状态
原子性:要么都做,要么都不做 一致性:一个一致性状态到另一个一致性状态 隔离性:事务并发执行,直到成功 持久性:只要事务提交成功,即使数据库崩溃,其结果也不会丢失
N个数排序,最坏情况下时间复杂度最低的是:归并算法(O(nlog2n))
贪心算法:能保证有最优解的问题是【邻分(分数)背包】
建立连接进行可靠通信是传输层的功能
MIM(邮件发送)E:能传输音频、视频等多媒体文件
RSA是一种非对称加密算法;SHA-1是一种安全散列算法;RC5是一种用于对明文进行加密的算法;MD5是一种使用最为广泛的报文摘要算法;
记忆
2的10次方 = 1024 2的12次方 = 4096 2的16次方 = 65536
背诵
设计模式
创建型模式(共五种): 单例模式、 抽象工厂模式、 原型模式、 建造者模式、 工厂方法模式。 口诀:单抽原建厂
结构型模式(共七种): 外观模式、 桥接模式、 组合模式、 享元模式、 代理模式、 适配器模式 装饰器模式、 口诀:外桥组元代配饰。
行为型模式(共十一种): 观察者模式、 模板方法模式、 迭代子模式、 策略模式、 责任链模式、 命令模式、 解释器模式 访问者模式 中介者模式 备忘录模式 状态模式 口诀:观模迭策,责令解访,介忘态。
再细分
类模式
工厂方法(创建型):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method使一个类的实例化延迟到其子类。
适配器(结构型):将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
解释器模式(行为型):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子
模板方法(行为型):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
对象模式
抽象工厂(创建型):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
建造者模式(创建型):将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
原型模式(创建型):用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象
单例模式(创建型):保证一个类仅有一个实例,并提供一个访问它的全局访问点。
桥接模式(结构型):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
组合模式(结构型):将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得客户对单个对象和复合对象的使用具有一致性。
装饰模式(结构型):动态地给一个对象添加一些额外的职责。就扩展功能而言,Decorator模式比生成子类方式更为灵活
外观模式(结构型):为子系统中的一组接口提供一个一致的界面,外观模式通过提供一个高层接口,隔离了外部系统与子系统间复杂的交互过程,使得复杂系统的子系统更易使用。
享元模式(结构型):运用共享技术有效地支持大量细粒度的对象。享元模式通过共享技术实现相同或相似对象的重用
代理模式(结构型):代理模式使用代理对象完成用户请求,屏蔽用户对真实对象的访问。为其他对象提供一种代理以控制对这个对象的访问。
责任链模式(行为型):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。
迭代器模式(行为型):提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。
中介者模式(行为型):用一个中介对象来封装一系列的对象交互,中介者使各对象不需要,显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
备忘录模式(行为型):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态。
观察者模式(行为型):每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。
状态模式(行为型):允许其在不同的状态下,拥有不同的行为,
策略模式(行为型):策略模式让算法独立于使用它的客户而独立变化,还可以相互替换
命令模式(行为型):将一个请求封装成一个对象,从而使得用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
访问者模式(行为型):你可以在不改变各元素的类的前提下定义作用与这些元素的新操作
公式
2的16次方 = 65536
海明校验码:2的k次方 ≧ n+k+1
流水线执行时间:(t1+t2+....tK)+(n-1)*3▵t;
水线的吞吐率 = 指令执行条数 / 流水线执行时间 = 100/305Δt
(n(k-1)+1)/k
McCabe度量法计算:E-N+2;E是流图中边的条数,N是结点数
可靠性
串联的可靠性:R=R1*R2*R3*...*Rn
并联的可靠性:R=1-(1-R1)*(1-R2)*...*(1-Rn)