软考知识点
错题补充:
- 在高级语言源程序进行编译的过程中,为源程序中变量分配的存储单元的地址属于:逻辑地址,程序运行过程中再映射为物理地址
- McCabe复杂性度量:V(G) = m - n + 2p(V(G)是图G中的环路数,m是图G中弧的个数,n是图G中的结点数,p是强连通分量个数)
大题:
试题一:
外部系统:当前系统之外的人、物、系统
数据存储:存储数据与提供数据 ….文件、….表 ……记录
加工:将输入数据处理后得到输出数据
一个加工至少有一个输入数据流和一个输出数据流
加工只有输入没有输出:黑洞
加入只有输出没有输入:白洞
数据流的起点或者终点必须有一个是加工
问题一:
看子图对应描述进行查找
问题二:
- 看题目表述
- 表示….表/文件
问题三:
- 父图子图平衡
- 加工既有输入数据流也有输出数据流
- 数据守恒
答题格式:
数据流的起点或者终点必须有一个是加工
中文对中文 字母对数字或者字母
试题二数据库设计
问题一:补充E-R图中缺失的联系
弱实体:实体对于另一些实体具有很强的依赖关系,即一个实体的存在必须以孙一个实体为前提,将这类实体称为弱实体。
问题二:关系模式
在关系模式中,如果某一个属性下面有下划线,表示这个属性是主键,如果有一条虚线,则该属性是外键
关系模式:关系模式:对关系的描述称为关系模式,由关系名和其属性集合构成
关系模式的格式为:关系名(属性1、属性2….属性n)
联系向关系模式的转变:
(1)一对一联系的转换。- -对多联系有两种方式向关系模式进行转换。一种方式是将联系转换成一个独立的关系模式,关系模式的名称取联系的名称,关系模式的属性包括该联系所关联的两个实体的码及联系的属性,关系的码取自任一方实体的码:另一种方式是将联系归并到关联的两个实体的任一方,给待归并的一方实体属性集中 增加另一方实体的码和该联系的属性即可,归并后的实体码保持不变。
(2) -对多联系的转换。- -对多联系有两种方式向关系模式进行转换。一种方式是将联系转换成一个独立的关系模式,关系模式的名称取联
系的名称,关系模式的属性取该联系所关联的两个实体的码及联系的属性,关系的码是多方实体的码;另-种方式是将联系归并到关联的两个实体的多方,给待归并的多方实体属性集中增加一方实 体的码和该联系的属性即可,归并后的多方
实体码保持不变。
(3)多对多联系的转换。多对多联系只能转
换成-一个 独立的关系模式,关系模式的名称取联系的名称,关系模式的属性取该联系所关联的两个多方实体的码及联系的属性,关系的码是多方实体的码构成的属性组。
⑤超类和子类的转换 超类、子类实体都可转换为一个关系,并将超类实体的主码加到子类实体中。
试题三 类图加用例图的趋势
观察者模式(Observer):
意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新
适用性:
- 当一个抽象模型有两个方面,其中一个方面依赖于另一个方面,将这两者封装在独立
的对象中以使它们可以各自独立地改变和复用。 - 当对一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变时。
- 当一个对象必须通知其他对象,而它又不能假定其他对象是谁,即不希望这些对象是
紧耦合的。
试题六:
注意点:
- 如果是接口,不需要写public,直接写
- 如果是抽象类,在若一个方法没有方法体,则需要加上abstract
计算机系统:5-6
CPU:
1.CPU的控制器不仅要保证程序的正常执行,而且要能够处理异常事件
2.为实现程序指令的顺序执行,CPU程序计数器中的值将自定加1
3.在CPU中用于跟踪指令地址的寄存器是程序计数器
4.CPU在执行指令的过程中,会自动修改程序计数器的内容,以便使其保持的总是将要执行的下一条指令的地址
5.程序计数器(PC)在控制器中,控制器包括:指令寄存器(IR)、程序计数器(PC)、地址存寄器(AR)、指令译码器(ID)
6.在CPU中,常用来为ALU执行计算算数逻辑运算提供数据并暂存运算结果的寄存器是累加寄存器(AC)
7.计算机指令一般包括操作码和地址码两部分,为分析一条指令,其操作码和地址码都存入指令寄存器(IR)
8.在CPU的寄存器中,指令寄存器对用户完全透明的,指令寄存器的位数取决于*指令字长**
9.CPU中的译码器的主要作用是进行指令译码
10.计算机在执行指令的过程中,需要由CPU的控制器产生每条指令的操作信号并将信号送往相应的部件进行处理,以完成指定的操作
11.计算机在一个指令周期的过程中,为从内存中读取之指令操作码,首先要将**程序计数器(PC)**的内容送到地址总线上
12.编写汇编语言程序时,下列寄存器程序员可以访问的是:程序计数器(PC)
进制转换:
二进制转八进制:3个一组进行转换
二进制转十六进制:4个一组进行转换
数据表示:
原码:最高位是符号位,0表示正号,1表示负号,其余的n-1位表示数值的绝对值。
数值0的原码有两种表现形式:+0 = 00000000 -0 = 10000000
反码:最高位是符号位,0表示正号,1表示负号,正数的反码与原码一致,负数的反码是符号位不变,其余的位绝对值按位求反
数值0的反码有两种表现形式:+0 = 0000
0000 -0 = 11111111
补码:最高位是符号位,0表示正号,1表示负号,正数的补码与反码、原码一致,负数的补码等于其反码的末尾加一,
在补码中,0有唯一的补码:+0 = 00000000 -0 = 00000000
移码:是在补码的基础上将符号位取反
在移码中,0有唯一的移码:+0 = 10000000 -0 = 10000000
1.计算机中常采用原码、反码、补码.和移码表示数据,其中,正负零编码相同的是:补码和移码
2.在计算机系统中常采用补码来表示和运
算数据,原因是采用补码可以:简化计算机运算部件的设计
浮点数
当机器字长为n时,定点数的补码和移码可表示2的n次方个数,而其原码和补码只能表示2的n次方减一个数
一个二进制数可以表示为更一般的形式N=2的E次方乘以F,其中E称为阶码,F称为尾数
用阶码和尾数表示的数称为浮点数,这种表示数的方法称为浮点数表示法
浮点数之间的计算,先对阶,小阶向大阶对齐,浮点数向右移
浮点数所能表示后的数值范围主要是由阶码决定,所表示数值的精度则由尾数表示决定
规格化就是将尾数的绝对值限定在区间[0.5-1]
1.在定点表示法中,小数点不需要占用一个存储位
寻址:
1.指令系统中采用不同寻址方式的目的是:扩大寻址空间并提高编码灵活性
奇偶校验码:
奇偶校验码通过在编码中增加一位校验位来使编码中的1的个数为奇数(奇校验)或者偶数(偶校验),从而使码距为2
奇偶校验都可以发现奇数为出错的编码,而不能检查出偶数位出错的情况
奇偶校验码有3种:水平校验码、垂直校验码、水平垂直校验码
奇偶校验码只有检错能力而没有纠错地能力
海明码:利用奇偶性进行检错和纠错
码距为2具有检错的能力,码距大于等于3才具有纠错的能力,海明码码距为3
循环冗余校验码:可以检错不能纠错,码距为2
在求CRC编码时,采用的是模2运算
CRC码的格式为:k个数据位之后跟r个校验位
RISC和CISC:
流水线:
流水线的时间计算时间:第一条指令的计算时间+(n-1)乘以(最长时间段)
**加速比:**不采用流水线/采用流水线
**操作周期:**最长时间段
**吞吐率:**最长时间段的倒数
**执行几条指令的吞吐率:**n/ 流水线的时间计算时间
流水线方式提高了系统的吞吐率
存储器:
计算机采用分级存储体系的主要目的是为
了解决存储容量、成本和速度之间的矛盾
计算机中CPU对其访问速度最快地是通用寄存器
相连存储器是一种按内容访问的存储器,是按访问方式访问的
按寻址方式访问可以分为:随机存储器、顺序存储器和直接存储器
虚拟存储器是由主存和辅存构成的
若一个存储单元已被访问,则其临近的存储单元还有可能要被访问,该特性被称为空间局部性
Cache:高速缓存
Cache的设计思想是在合理成本下提高命中率
高速缓存用来存放当前最活跃的程序和数据
内容是主存局部域的副本,对程序员来说是透明的
替换算法的复杂度是影响Cache命中率的因素
高速缓存中的地址映像方法:
1.直接映像:冲突多
2.全相联映像:冲突少
3.组相联映像:冲突较少
Cache与主存地址的映像是由硬件自动完成
中断:
中断向量:提供中断服务程序的入口地址
中断响应时间:发出中断请求开始,到进入中断服务程序
保存现场:返回执行的源程序
为了便于实现多级中断嵌套,使用堆栈来保护断点和现场最有效
输入输出(IO)控制方式:
1.程序查询方式
- CPU和I/0 (外设)只能串行工作CPU需要一直轮询检查,长期处于忙等状态。CPU利用率低
- 一次只能读/写一个字
- 由CPU将数放入内存
2.中断驱动方式
- I/0设备通过中断信号主动向CPU报告I/0操作已完成
- CPU和I/0 (外设)可并行工作
- CPU利用率得到提升
- 一次只能读/写一个字
- 由CPU将数据放入内存
3.直接存储器方式(DMA)
- CPU和I/O (外设)可并行工作
- 仅在传送数据块的开始和结束时才需要CPU的干预
- 由外设直接将数据放入内存(主存)
- 一次读写的单位为“块”而不是字
CPU是在一个总线周期结束时响应DMA请求的
采用DMA方式传送数据时,每传送一个数据都需要占用一个存储周期
总线:
总线的分类:数据总线、地址总线、控制总线
数据总线的宽度取决于字长,地址总线的地址取决于内存容量
常见总线:
PCI总线是目前微型机上广泛采用的总线(并行)内总线,采用并行传输方式
SCSI总线是一条并行外总线
在计算机系统中采用总线结构,便于实现系统的积木化构造,同时可以减少信息传输线的数量
总线复用方式可以减少总线中信息线的数量
并行总线适合近距离高速数据传输
串行总线适合长距离数据传输
单总线结构在-一个总线上适应不同种类的设备,通用性强但是无法达到高的性能要求
专用总线在设计.上可以与连接设备实现最佳匹配
加密技术与认证技术:
加密技术:
-
对称加密(私有密钥加密、共享密钥加密) 加密和解密是同一把密钥,只有一把密钥
-
缺点:密钥分发有缺陷
-
优点:
- ①加密解密速度很快
②适合加量大量明文数据
- ①加密解密速度很快
-
包括:DES、3DES、RC-5、IDEA、AES(分组加密的算法)、RC4
-
-
非对称加密(公开密钥加密) 加密和解密不是同一把密钥 一共有两把密钥。分别是公钥和私钥
-
用公钥加密只能用私钥解密
-
用私钥加密只能用共 钥解密
-
不能通过一把推出另一把
-
优点:
- 用接收方的公钥加密明文,可以实现防止窃听的效果-
- 密钥分发没有缺陷
-
缺点:
- 加密解密速度较慢
-
包括:RSA、ECC、DSA
-
-
混合加密
-
Hash函数、MD5摘要算法,对任意长度的输出计算得到的结果长度为128位、SHA-1安全散列算法
认证技术:(处理主动攻击)
-
摘要:将发送的明文进行Hash算法后得到摘要放在密文后一起发送过去,与接收方解密后的明文进行相同的Hash算法得到的摘要进行对比如果一致,则没有篡改,否则有篡改
-
数字签名:(是对真实性的保护)
发送方用自己的私钥对摘要进行签名(加密)得到数字签名放在密文后- .起发送过去接收方用发送方的公钥对数字签名进行验证(解密)如果验证成功则该消息没有被假冒且不能否认否则该消息的真实性为假冒发送 -
CA: 权威机构
数字证书:用户向CA机构申请数字证书将个人信息和公钥发给CA机构CA机构颁给用户数字证书,数字证书用CA的私钥进行签名(加密)用CA的公钥验证( 解密)数字证书得到用户的公钥
1.A和B通信时可以使用数字证书来对用户的身份进行验证,使用数字签名确保消息不可否认
可靠性公式:
串联系统:R = R1R2…RN
并联系统:R = 1 - (1-R1)(1-R2)…(1-RN)
逻辑运算:
逻辑与:只有两个数均为1,结果为1,否则为0
逻辑或:只要有1,则结果为1,否则为0
逻辑同或:相同为1,不同为0
逻辑异或:相同为0,不同为1
补充:
VLIW是超长指令字的简称
程序设计语言:6
低级语言:机器语言和汇编语言(ADD表示减法、SUB减法、NOV赋值)
高级语言:Java、C、C++、PHP、JS、Python等
解释器:翻译源程序时不生成独立的目标程序
解释程序和源程序要参与到程序的运行过程中
编译器:翻译时将源程序翻译成独立保存的目标程序
机器上运行的是与源程序等价的目标程序,
源程序和编译程序都不再参与目标程序的运行过程
控制结构:顺序结构、选择结构、循环结构
许多程序设计语言规定,程序中的数据都必须具有类型,其作用为:
- 便于为数据合理分配存储单元
- 便于对参与表达式计算的数据结构对象进行检查
- 便于规定数据对象的取值范围及能够进行的运算
变量具有对应的存储单元,常量则没有
传值调用与传值调用:
传值调用:将实参的值传递给形参,实参可以是变量、常量和表达式。
不可以实现形参和实参间双向传递数据的效果
传引用(地址)调用:将实参的地址传递给形参,形参必须有地址,实参不能是常量(值),表达式。
可以实现形参和实参间双向传递数据的效果,即改变形参的值同时也改变了实参的值。
编译、解释程序翻译阶段:
编译方式:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成
解释方式:词法分析、语法分析、语义分析
编译器和解释器都不可省略词法分析、语法分析、语义分析且顺序不可交换
即词法分析、语法分析、语义分析是必须的。
编译器方式中中间代码生成和代码优化不是必要,可省略。
即编译器方式可以在词法分析、语法分析、语义分析阶段后直接生成目标代码
1.与编译器相比,解释器参与控制,程序运行速度慢
2.对于可执行语句,则是翻译成中间代码或目标代码
符号表:
不断收集、记录和使用源程序中一些相关符号的类型和特征等信息,并将其存入符号表中。
记录源程序中各个字符的必要信息,以辅助语义的正确性检查和代码生成。
词法分析:
输入:源程序
输出:记号流
词法分析阶段的主要作用是分析构成程序的字符集
由字符按照构造规则构成的符号是否符合程序语言的规定
语法分析:
输入:记号流
输出:语法树(分析树)
语法分析阶段可以发现程序中所有的语法错误
语法分析阶段的主要作用是:对各条语句的结构进行合法性分析,分析程序中的句子结构是否正确
语义分析:
输入:语法树(分析树)
语义分析阶段的主要作用是进行类型分析和检查
语义分析阶段不能发现程序中所有的语义错误
语义分析阶段可以发现所有的静态语义错误
不能发现动态语义错误,动态语义错误运行时才能发现
目标代码生成:(了解)
目标代码生成阶段的工作与具体的机器密切相关
寄存器的分配工作处于目标代码生成阶段
动态的语义错误:
1.若C程序的表达式中引用了未赋初值的变量则,可以通过编译并允许,但是运行结果不一定是期望的结果
2.编译正确的程序必然不包括语法错误
中间代码生成:
常见的中间代码有:后缀式、三地址码、三元式、四元式和树(图)等形式。
中间代码与具体的机器无关(不依赖具体的机器)
可以将不同的高级程序语言翻译成同一种中间代码。
中间代码可以跨平台。
因为与具体的机器无关,使用中间代码有利于进行与机器无关的优化处理和提高编译程序的可移植性。
正规式:
|选择
*闭包:出现0次或者多次 左边离他最近的第一个
有限自动机:
有限自动机是词法分析的一个工具,它能正确地识别正规集
确定的有限自动机(DFA) :对每一个状态来说识别字符后转移的状态是唯一的
不确定的有限自动机(NFA):对每一个状态来说识别字符后转移的状态是不确定的
上下文无关文法:
大多数程序设计语言的语法规则用上下文无关文法描述即可
后缀式:
优先级:1.()2.* / 3.+ - 优先级相同,从右往左
后缀表达式可以使用栈结构转化为中缀表达式
具体方法为:将后缀表达式从左往右依次扫描压入栈中,当遇见符号时,将最顶上的两个元素弹出,按照a(栈顶的倒数第二个元素)?(符号)b(栈顶元素)的形式进行组合,若未结束将所得结果作为一个整体压入栈顶,然后继续扫描,直至找出中缀表达式
补充:
脚本语言是的动态语言,动态语言都是解释型语言
PHP不是标记语言 ,PHP更适合用来进行动态网页处理
可用于编写独立程序和快速脚本的语言是Python,Python属于弱类型语言
在对高级语言源程序进行编译的过程中,为源程序中变量所分配的存储单元的地址属于:逻辑地址
C语言中全局变量的存储空间在静态数据区
递归下降分析法和预测分析法是常用的自顶向下分析法。算符优先分析法和LR分析法、移进-归约分析法属于自底向上的语法分析方法。
更适合用来开发操作系统的编程语言是C/C++
Lisp是一种函数式编程语言
语法指导翻译是一种静态语义分析方法
知识产权:2-3
著作权:
著作权(也称为版权)是指作者对其创作的作品享有的人身权和财产权。人身权包括发表权、署名权、修改权和保护作品完整权等
发表权有时间的限制:作者终身以及其死后50年
署名权、修改权和保护作品完整权没有时间限制
地域性:
地域性。知识产权具有严格的地域性特点,即各国主管机关依照本国法律授予的知识产权,只能在其本国领域内受法律保护,例如中国专利局授予的专利权或中国商标局核准的商示专用权,只能在中国领域内受保护,其他国家则不给予保护,外国人在我国领域外使用中国不侵权
计算机软件著作权:
保护我国公民计算机软件著作权的两部基本法律文件是:《中华人民共和国著作权法》和《 计算机软件保护条例》
计算机软件著作权的客体是:著作权法保护的计算机软件是指计算机程序及其有关文档。
计算机程序包括:源程序和目标程序
文档一般以程序设计说明书、流程图和用户手册等表现
软件作品享有两类权利:软件著作权的人身权和软件著作类权的财产权
人身权:发表权和开发者身份权(署名权)没有时间限制
计算机软件著作权的保护期:计算机软件著作权的权利从软件开发完成之日起产生,保护期为50年,保护期满,除开发者身份权之外,其他权利全部终止
软件盗版行为是指任何未经软件著作权人许可,擅自对软件进行复制、传播,或以其他方式超出许可范围传播、销售和使用的行为。
计算机软件著作权的归属:
职务开发著作权:如果是职务作品,开发者本人只享有署名权,其他的所有权利归公司所有
委托开发的软件著作权归属:
《计算机软件保护条例》第十一条规定:“ 接受他人委托开发的软件,其著作权的归属由委托者与受委托者签订书面合同约定;无书面合同或者合同未作明确约定的,其著作权由受托人享有
商业秘密权:
商业秘密:“指不为公众所知悉的、能为权利人带来经济利益、具有实用性并经权利人采取保密措施的技术信息和经营信息”。****
专利申请:
两个或者两个人以上的人分别就同样的发明创造申请专利的,专利授权给先申请的人
商标权:
我国商标权的保护期限自核准注册之日起10年内有效,但可以根据其所有人的需要无限地延长权利期限,在期限届满前6个月内申请续展注册,每次续展注册的有效期为10年,续展注册的次数不限。
商标注册:
谁先注册归谁,如果同一天注册,谁先使用谁获得商标注册
1.翻译权是指将一个程序从一种程序语言转换为另一种程序语言的权利
2.合理使用是指可以不经著作权人许可,不需要支付报酬,使用其作品
3.烟草制品必须使用注册商标
数据库:上6个题目 51-56 下第二道大题15分
概念数据模型:
两个实体之间的联系:
一对一:(1:1)
一对多:(1:n)
多对多:(m:n)
实体-联系方法表示的概念数据模型称为E-R图:
实体用矩形表示
属性用椭圆表示
联系用菱形表示
结构数据模型:
关系模型:采用二维表格表达实体类型及实体之间的关系的数据模型
数据库的三级模式结构:
三级模式两级映射
三级模式:
概念模式(模式) 基本表
外模式(用户模式/子模式) 视图
内模式(存储模式) 存储文件
两级映像:
模式/内模式映像:物理独立性 实现了概念模式到内模式的转换
外模式/模式映像:逻辑独立性 实现了外模式到模式的转换
关系模式中的基本术语:
关系:一个关系就是一张二维表,每个关系有一个关系名。
元组:表中的一行即为一个元组,对应存储文件中的一一个记录值。
属性:表中的列称为属性,每一列有一个属性名。属性值相当于记录中的数据项或者字段值。
城:属性的取值范围,即不同元组对同一个属性的值所限定的范围。
关系模式:对关系的描述称为关系模式,由关系名和其属性集合构成,关系模式的格式为:关系名(属性名1,属性名2,..属性名n)
候选码(候选键):属性或者属性组合,其值能够唯一的标识一个元组
主码(或主键) :在一个关系中可能有多个候选码,从中选择一个作为主码。
主属性:包含在任何候选码中的属性称为主属性,不包含在任何候选码中的属性称为非主属性
外码(或外键):如果一个关系中的属性或属性组并非该关系的码,但它们是另外一个关系的码,则称其为该关系的外码。
全码: 关系模式的所有属性组是这个关系模式的候选码,称为全码。
超码(超键) :一个包含码的属性集称为超码,例如学号是码,则(学号,姓名)就是一个超码。
关系模型中的关系完整性约束:
实体完整性:关系中主码的值不能为空或部分为空。也就是说,主码中属性即主属性不能取空值。
参照完整性:如果关系R2的外码X与关系R1的主码相对应,则外码X的每个值必须在关系.R|中主码的值中找到,或者为空值。
用户定义的完整性:指用户对某一具体数据指定的约束条件进行检验
关系代数:
笛卡尔积;两个关系D1,D2的笛卡尔积为D1XD2
投影:
选择:
自然连接:去除重复属性的等值连接
具体的计算过程:
若有多个列重合,则需要RA = SA 并且 RB = SB
关系代数转化位SQL语言:
投影:
选择:
笛卡尔积:
自然连接:
SQL控制语句:
grant [权限] on 库.表 to 用户 [with grant option]
with grant option # 允许将权限赋予其他人
视图:是一个虚拟表,查询时可以从一个或者多个基本表或者基本表或者视图中导出
对视图进行增删改查实际就是对实际表进行增删改查
对视图进行操作不必满足where条件,但查出来的数据仍然需要满足where条件
create view A as
select * from table_name where dept="计算机系" # 给视图插入数据且dept不一定为计算机系
insert into A values("jiali","计算机") # ok
insert into A values("Laptoy","软件工程") # ok
[with check option]
:对视图进行操作必须满足 where 条件
create view B as
select * from table_name where dept="计算机系"
[with check option] # 给视图插入数据时dept一定为计算机系,否则报错
insert into B values("Laptoy","计算机") # ok
insert into B values("jiali","软件工程") # no
索引:
CREATE UNIQUE INDEX index_name ON TABLE(Field);
内模式定义所有的内部记录类型、索引个和文件的组织方式
关系模式,函数依赖,码,属性闭包计算:
关系模式:
定义1:一个 天系模式应当是一 一个五元组(含关系名 )。R<U, D, dom, F>
这里:
(1) R为关系名,它是符号化的元组语义;
(2) U为一-组属性;
(3)属性组U中的属性来自域D;
(4)dom为属性到域的映射;
(5)F为属性组U.上的一-组数据依赖。
由于(3), (4)对模式设计关系不大,因此通常把关系模式看作是一一个三元组: R<U,F>, 当且仅当U上的一个关系r满足F时,r称为关系模式R<U, F>的一个关系。
函数依赖:
- X->Y,并且X的任何真子集都无法决定Y,那么Y对X完全函数依赖
- (学号+课程号)->成绩,学号或者课程号都无法单独决定成绩
- 如果不是组合函数,那么X->Y一定是完全函数依赖
部分函数依赖:
- X->Y,但X的其一真子集可以决定Y,那么Y对X部分函数依赖
- (学号+身份证号)->姓名,学号或者身份证号都可以单独确定姓名
传递依赖:
X->Y,Y->Z,那么Z对X传递依赖,X->Z可以忽略(冗余),员工->岗位,岗位->工资
码:
简单说就是若候选码中的部分码能决定函数,那么选择该部分码作为候选码
属性闭包计算( 无法被决定的键一定是候选键)
范式:
第一范式(1NF):属性原子化 ,即不可分割的数据项 不能排除数据冗余和更新异常等问题,因为其中可能存在部分函数依赖
第二范式(2NF):消除部分函数依赖,当且仅当R是1NF,且每个非主属性都完全依赖于候选码 可能会产生
第三范式(3NF):消除传递函数依赖 一个不属于3NF的关系模式R会产生插入异常、删除异常和修改复杂等问题。属于3NF
的关系模式R可能存在主属性对码的部分依赖和传递依赖
BC范式:消除主属性对候选码的部分和传递依赖
事物管理:
事物特性:
(1)原子性。事务是原子的,要么都做,要么都不做。
(2)一致性。事务执行的结果必须保证数据库从-一个一致性状态变到另一一个一致性状。因此,当数据库只包含成功事务提交的结果时,称数据库处于一致性状态。
(3)|隔离性。事务相互隔离。当多个事务并发执行时,任一事务的更新操作直到其成交的整个过程,对其他事务都是不可见的。
(4)持久性。一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也将永久有效
数据库备份与恢复:
数据库的关键技术在于建立冗余数据,即备份数据
如何在系统出现故障后能够及时地使数据库恢复到故障前的正确状态,就是数据库恢复技术
故障类型:
- 事物内部故障
- 系统故障 软故障
- 介质故障 硬故障
- 计算机病毒
备份方法:
- 静态转储和动态转储 静态转储是指在转储期间不允许对数据库进行任何存取、修改
枭作;动态转储是在转储期间允许对数据库进行存取、修改操作。因此,转储和用户事务可并
发执行。 - 海量转储和增量转储 海量转储是指每次转储全部数据;增量转储是指每次只转储上次转储后更新过的数据
- 日志文件
封锁:
并发控制的主要技术是封锁。基本封锁的类型有排它锁(简称X锁或写锁)和共享锁(简称S锁或读锁)。
l)封锁
(1)|排它锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他事务都不能再对A加任何类型的锁,直到T释放A.上的锁。
(2)共享锁。若事务T对数据对象A加上S锁,则只允许T读取A,但不能修改A,其他事务只能再对A加S(共享)锁,直到T释放A上的S锁。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A进行任何修改。
分布式数据库:
分片透明指用户或应用程序不需要知道逻辑上访问的表具体是怎么分块存储的
复制透明:指采用复制技术的分布方法,用户不需要知道数据是复制到哪些节点,如何复制的。
位置透明:指用户无须知道数据存放的物理位置
逻辑透明指用户或应用程序无需知道局部场地使用的是哪种数据模型
共享性:指数据存储在不同的结点数据共享
自治性:指每结点对本地数据都能独立管理
**可用性:**指当某场地故障时,系统可以使用其他场地上的副本而不至于使整个系统瘫痪
分布性:指数据在不同场地上的存储
面向对象:3-4题
类:
类可以分为:实体类、接口类(边界类)(交互)、控制类(协调者)
在面向对象分析与设计中,实体类是应用领域中的核心类,-一般用于保存系统中的信息以及提供针对这些信息的相关处理行为;
******边界类******是系统内对象和系统外参与者的联系媒介;控制类主要是协调上述两种类对象之间的交互。
1.一个类定义了一组大体相似的对象,这些对象共享属性和行为
2.一个类是一组对象的抽象定义
对象:
一个对象通常由对象名、属性(状态)和方法组成
方法的重载:
- 方法名相同,参数个数不同
- 方法名相同,参数类型不同
- 方法名相同,参数顺序不同
封装:一种信息隐蔽技术
继承:
继承是父类和子类至今共享数据和方法的机制 extends
如果一个子类有两个或者多个父类,叫做多重继承
多态:
在收到消息时,对象要予以响应。不同的对象收到同一消息可以产生完全不同的结果,这一现象称为多态d
多态的不同形式:
参数多态是应用比较广泛的多态,被称为最纯的多态。
包含多态在许多语言中都存在,最见的例子就是子类型化,即一个类型是一个类型的子类型。
(过载)(Overloading) 多态是同一个名字在不同的上下文中所代表的含义不同。
动态绑定:
绑定是一个把过程调用和响应调用所需要执行的代码加以结合的过程。在一般的程序设计语言中,绑定是在编译时进行的,叫作静态绑定。动态绑定则是在运行时进行的,因此,一一个给定的过程调用和代码的结合直到调用发生时才进行。
面向对象设计的原则:
- 单一责任原则 就一个类而言,应该仅有一个引起它变化的因素
- 开放-封闭原则 扩展开放,对修改封闭
- 里氏替换原则 基类出现的地方,子类一定会出现
- 依赖倒置原则 依赖于抽象不要依赖于细节(实现)高层模块不应该依赖于低层模块
- 接口分离原则 依赖于抽象而不依赖于具体
- 共同封闭原则 一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而不对其他的包产生造成任何影响
- 共同重用原则 重用了包中的一个类,那么就要重用包中所有的类
面向对象分析:OOA
面向对象分析的目的:是为了获得对应用问题的理解
面向对象分析包括:认定对象、组织对象、描述对象间的相互作用、确定对象的操作、定义对象的内部消息
面向对象分许的第一步是确定问题域
面向对象分许过程中,从给定需求描述中选择名词短语来识别对象
面向对象设计:OOD 理解解决方案
OOD在复用00A模型的基础上,包含与00A对应如下五个活动。
(1)识别类及对象。
(2)定义属性。
(3)定义服务。
(4)识别关系。
(5)识别包。
面向对象测试:
面向对象测试可以分为以下4个层次进行:
- 算法层
- 类层
- 模板层
- 系统层
面向对象程序设计:OOP
1.采用面向对象方法进行软件开发,在分析阶段,架构师主要关注系统的行为
UML:统一建模语言3-4
UML事物
UML包含3种构造块:事物、关系和图
UML中有4种事物:
结构事物:UML模型的静态部分 名词 包括:类、接口、协作、用例、主动类、构件、制品和结点
行为事物:UML模型的动态部分 动词 包括:交互、状态机、活动
分组事物:UML模型的组织部分 最主要的事物是包
注释事物 UML模型的解释部分 注解是一种主要的注释事物
关系:
四种关系:依赖、关联、泛化和实现
依赖:其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)
关联:是一种结构关系,描述了一组链,链是对象之间的连接。包括:聚合和组合
UML中关联的多重度是指:一个类的实例能够与另一个类的多少个实例相关联
聚合:部分和整体的生命周期不一致,整体消失了,部分仍然存在,部分可以脱离整体的存在
组合:部分和整体的生命周期一致,整体消失了,部分也消失了,部分不可以脱离整体而存在
聚集:是一种特殊类型的关联,它描述了整体和部分之间的结构关系
泛化:是特殊/一般地关系
实现:在接口和实现他们的类之间 用例和实现他们的协作之间
UML图:
类图:
所建立的最常见的图就是类图,类图用于对系统的静态设计视图建模
类图、对象图、用例图、序列图、通信图、状态图、活动图、构件图、部署图
序列图和通信图都是交互图
在以下3种情况下使用类图:
- 对系统的词汇进行建模
- 对简单的协助建模
- 对逻辑数据库模式建模
对象图:静态
对象图展示了某一个时刻一组对象以及它们之间的关系
用例图:
用例图展示了一组用例、参与者以及它们之间的关系
包含关系:
一个用例包含另一个用例
扩展关系:一个用例执行的时候,可能会发生一些特殊的情况或者可选的情况,这种情况就是这个用例的扩展用例
泛化关系:
关联是参.与者和用例之间的关系
包含是用例和用例之间的关系
扩展是用例和用例之间的关系
泛化是参与者和参与者之间的关系也是用例和用例之间的关系
对系统的静态用例视图建模时,可以用以下两种方式来使用用例图:
- 对系统的语境建模
- 对系统的需求建模
交互图:交互图用于对系统的动态方面进行建模 通信图、序列图(顺序图)
交互图一般包含对象、链、对象
序列图:描述了以时间为顺序组织的对象之间的交互活动
序列图有对象生命线 (表示一个对象在一段时间内存在)、有控制焦点(表示一个对象执行一个动作的时间段)
消息:
通信图(协作图):
通信图有顺序号
状态图:对动态方面进行建模,任何一种对象的按事件排序的行为
通常是对反应型对象建模
状态:
组合状态(超状态) 嵌套状态(子状态)
活动:
转换:转换包括两个状态(源状态和目标状态)
事件,监护条件,动作
事件:事件触发转换(迁移)
事件表达式
活动(动作)可以在状态内执行,也可以在状态转换(迁移)时执行
活动图:是一种特殊的状态图,他展示了系统内从一个活动到另一个活动的流程,专注于系统的动态视图
使用活动图的方式:
- 对工作流建模
- 对操作建模
构件图(组件图):展示了一组构件之间的组织与依赖,构件图专注于系统的静态实现视图
部署图:是用来对面向对象系统的物理方面建模的方法 部署图对系统的静态部署视图进行建模
部署图展示了系统的软件和硬件之间的关系 在实施阶段使用
部署组件之间的依赖关系类似于包依赖
静态建模:类图、对象图、用例图
动态建模:序列图(顺序图,时序图)、通信图(协作图)、状态图、活动图
物理建模:构件图(组件图)、部署图
交互图:序列图(顺序图,时序图)、通信图( 协作图)
设计模式:23种设计模式
在面向对象软件开发过程中,采用设计模式以复用成功的设计
创建型模式
工厂方法模式
意图:定义一个用于创建对象的接口,让子类决定实例化哪- -个类。Factory Method使一个类的实例化延迟到其子类。
应用实例:您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。而至于需要哪个牌子的汽车,就到哪个牌子的工厂。
Factory Method模式适用于:
-
当一个类不知道它所必 须创建的对象的类的时候。
-
当一个类希望由它的子类来指定它所创建的对象的时候。
-
当类将创建对象的职责委托给多个帮助子类中的某-一个,并且你希望将哪- -个帮助子
类是代理者这一-信息局部化的时候。
抽象工厂模式(Abstract Factory Pattern)
意图:提供一个创建一系列相关或 相互依赖对象的接口,而无须指定它们具体的类。
抽象工厂模式是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。
在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
适用性:Abstract Factory模式适用于:
- 一个系统要独立于它的产品的创建、组合和表示时。
- 一个系统要由多个产品系列中的-一个来配置时。
- 当要强调一系列相关的产品对象的设计以便进行联合使用时。
- 当提供一个产品类库,只想显示它们的接口而不是实现时。
单例模式
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
应用实例:一个班级只能有一个班主任。
生成器模式(Builder Pattern)
意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
我里面有很多的方法,我可以根据这些方法构造出不同的东西
应用实例:去肯德基,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的“套餐”
3)适用性:Builder模式适用于:
- 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
- 当构造过程必须允许被构造的对象有不同的表示时。
原型模式(Prototype Pattern)
就是根据一个基本的对象,去复制这个对象
一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。
结构型模式
适配器模式(Adapter Pattern)
作为两个不兼容的接口之间的桥梁。
将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
就是我想使用你这个接口,但是你这个接口跟我想的不匹配,所以我要增加一个中间的东西去匹配这个接口
装饰器模式(Decorator Pattern)
允许向一个现有的对象添加新的功能,同时又不改变其结构。
动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活
我可以给一个对象添加新的功能,但是不改变结构
我可以给头发染成绿色,但是本质我这还是头发,只不过改变了颜色
代理模式(Proxy Pattern)
一个类代表另一个类的功能。
就相当于我是一个老板,我不想去开会,我找一个人代表我去开会,这个人可以完全拥有我的权限
外观模式(Facade Pattern)
隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。
应用实例:去医院看病,可能要去挂号、门诊、划价、取药,让患者或患者家属觉得很复杂,如果有提供接待人员,只让接待人员来处理,就很方便。
桥接模式(Bridge Pattern)
用于把抽象化与实现化解耦,使得二者可以独立变化。它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
对于两个独立变化的维度,使用桥接模式再适合不过了。
组合模式(Composite Pattern)
又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构
应用实例:
1、算术表达式包括操作数、操作符和另一个操作数,其中,另一个操作数也可以是操作数、操作符和另一个操作数。
2、在JAVAAWT和SWING中,对于Button和Checkbox是树叶,Container是树枝。
享元模式(Flyweight Pattern)
主要用于减少创建对象的数量,以减少内存占用和提高性能
享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。
行为型模式
策略模式(Strategy Pattern)
一个类的行为或其算法可以在运行时更改。
应用实例:
1、诸葛亮的锦囊妙计,每一个锦囊就是一个策略;
2、旅行的出游方式,选择骑自行车、坐汽车,每一种旅行方式都是一个策略。
模板模式(Template Pattern)
一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
观察者模式(Observer Pattern)
当对象间存在一对多关系时,则使用观察者模式。比如,当一个对象被修改时,则会自动通知它的依赖对象。
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
应用实例:拍卖的时候,拍卖师观察最高标价,然后通知给其他竞价者竞价;
迭代器模式(Iterator Pattern)
这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。
责任链模式(Chain of Responsibility Pattern)
为请求创建了一个接收者对象的链。
在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。
命令模式(Command Pattern)
请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
备忘录模式(Memento Pattern)
保存一个对象的某个状态,以便在适当的时候恢复对象。
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
状态模式(State Pattern)
类的行为是基于它的状态改变的。
应用实例:
1、打篮球的时候运动员可以有正常状态、不正常状态和超常状态;
2、曾侯乙编钟中,'钟是抽象接口','钟A'等是具体状态,'曾侯乙编钟'是具体环境(Context)。
访问者模式(Visitor Pattern)
在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。
主要将数据结构与数据操作分离。
主要解决:稳定的数据结构和易变的操作耦合问题。
应用实例:您在朋友家做客,您是访问者,朋友接受您的访问,您通过朋友的描述,然后对朋友的描述做出一个判断,这就是访问者模式。
中介者模式(Mediator Pattern)
提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。
应用实例:中国加入WTO之前是各个国家相互贸易,结构复杂,现在是各个国家通过WTO来互相贸易;
解释器模式(Interpreter Pattern)
给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。
应用实例:编译器、运算表达式计算。
操作系统:
操作系统的地位:
系统软件:编辑程序、汇编程序、编译程序、数据库管理系统
程序顺序执行:
程序顺序执行的主要特征:顺序性、封闭性、可再现性
程序并发执行:
程序并发执行时的特征:
- 失去了程序的封闭性
- 程序和机器的执行程序的活动不再一一对应
- 并发程序间的相互制约性
进程的三态模型:
五态模型:
进程之间的通信:
同步:是合作进程之间的直接制约问题
异步:是申请临界资源进程间的间接制约问题
PV操作:
P操作的定义: S:=S-1, 若S≥0,则执行P操作的进程继续执行;若S<0,则置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列。
V操作定义: S:=S+1, 若S>0,则执行V操作的进程继续执行:若s≤o,则从阻塞状态唤醒一个进程,并将其插入就绪队列,然后执行V操作的进程继续
信号量S的物理意义: S≥0表示某资源的可用数,若S<0,则其绝对值表示阻塞队列中等待该资源的进程数。
PV操作可以实现资源的同步与互斥
PV操作实现同步:缓冲区可以存放1个产品
死锁:
当有n个进程、m个资源、且每个进程所需要的资源数为k并且系统采用的分配策略是轮流地为每个进程分配资源时,
判断是否会发生死锁的公式如下:m>=n*(k-1)+1
为真就不会发生死锁、为假就会发生死锁.、
进程资源图:
可化简是非死锁,不可化简是死锁
先分配再申请
线程:
线程可与同属一个进程的其他线程共享进程所拥有的全部资源
程序局部性原理:
无法淘汰不在内存中的
先淘汰为访问过的,未修改过的
分页存储管理:
段页式存储管理:
单缓冲区:
(T + M) * N + C
双缓冲区:
磁盘调度算法:
先来先服务(FCFS):按请求访问者的先后次序启动磁盘驱动器,而不考虑它们要访问的物理位置。
最短寻道时间优先(SSTF):让离当前磁道最近的请求访问者启动磁盘驱动器,即让查找时间最短的那个作业先执行,而不考虑请求访问者到来的先后次序
扫描算法(电梯调度)(SCAN):总是从磁头当前位置开始,沿磁头的移动方向去选择离当前磁头最近的那个柱面的请求。如果沿磁头的方向无请求访问时,就改变磁头的移动方向。
循环扫描算法(CSCAN):循环扫描调度算法是在扫描算法的基础上改进的。为了减少延迟,规定磁头单向移动,例如,只是自里向外移动,从当前位置开始沿磁头的移动方向去选择离当前磁头最近的那个柱面访问,如果沿磁头的方向无请求访问时,磁头立即返回到最里面的欲访问的柱面,再亦即将最小柱面号紧接着最大柱面号构成循环,进行循环扫描。
文件目录:
若系统正在将目录文件修改的结果写进磁盘时系统发生崩溃,则对系统的影响较大
目录结构:
绝对路径:从数的根节点开始
相对路径:直接从他的下一级开始
位示图:用二进制的一位来表示一个物理块的使用情况
杂题补充:
控制用户对该文件的访问,这一级安全管理称之为文件级安全管理。
当用户通过键盘或鼠标进入某应用系统时,通常最先获得键盘或鼠标输入信息的程序是中断处理程序。
计算机网络:
物理层的互联设备:中继器、集线器(多路中继器/多端口中继器)
数据链路层:网桥、交换机(多端口的网桥)
网络层:路由器
应用层:网关
广播域:
协议簇:
ICMP报文封装在IP数据报中传送
默认情况下,FTP服务器的控制端口为21,上传文件时的(数据)端口为20
TCP和UDP:
IP提供的服务是无连接、不可靠的
TCP协议(三次握手协议):可靠传输、连接管理、差错校验和重传、流量控制、拥塞控制、端口寻址
其中流量控制采用的是:可变大小的滑动窗口协议
UDP:不可靠、无连接协议 有利于提高传输的高速率性,开销较小
127.0.0.1是本地回送地址,当网络连接不可用时,为了测试编写好的网络程序,通常使用的目的主机IP地址为127.0.0.1。
TCP、UDP协议均提供了端口寻址的能力
SMTP和POP3:
C/S模式:client/server 客户端/服务器
SMTP:传输ASCII文本
传输文字附件
端口号是25
MIME:邮件附件扩展模式
PEM:私密邮件
POP3:端口号是110 是用来接收邮件并保存好邮件的协议,用TCP建立连接,采用C/S模式进行通信
IPV4与IPV6:
IPv4是32位,表示ip地址有2的32次方个,IPv6是2的128次方位,表示ip地址有2的128次方个
ARP和RARP:
ARP的作用是实现IP地址与MAC地址之间的变换
ARP报文分为ARP Request 和ARP Response, 其中ARP Request 采用广播进行传送,ARP Response 采用单播进行传送。
DHCP:
DHCP(动态主机配置协议)
DHCP协议的功能是:集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
DHCP客户端可以从DHCP服务器获得本机IP地址、DNS服务器地址、DHCP服务器地址和默认网关的地址等。
Windows无效地址: 169.254.X.X
Linux无效地址: 0.0.0.0
169.254.X.X是Windows系统在DHCP信息租用失败时自动给客户机分配的IP地址。
URL:
协议名://主机名.域名.域名后缀.域名分类/目录/网页文件
https://www.ruankao.org.cn/sign/welcpme
浏览器:
DNS域名查询的次序是:本地的hosts文件-→本地DNS缓存-→本地DNS服务器→根域名服务器。
主域名服务器在接收到域名请求后,查询顺序是本地缓存、本地hosts文件、本地数据库、转发域名服务器。
IP地址和子网划分:
无线网络:
蓝牙的覆盖范围是最小的,通信距离是最短的
windows命名:
ipconfig/release: DHCP客户端手工释放IP地址
ipconfig/fushdns:清除本地DNS缓存内容
iponfig/displaydns:显示本地DNS内容
ipconfig/registerdns: DNS 客户端手工向服务器进行注册
ipconfig:显示所有网络适配器的IP地址、子网掩码和缺省网关值
iponfig/all:显示所有网络适配器的完整TCP/IP配置信息,包括DHCP服务是否已启动
ipconfig/renew: DHCP 客户端手工向服务器刷新请求( 重新申请IP地址)
使用ping命令进行网络检测,按照由近及远原则,首先执行的是ping 127.0.0.1,其次是ping本地IP, 再次是ping默认网关,最后是ping远程主机。
路由:
在Windows中设置默认路由的作用是:当没有其它路由的时候最后选择的路由
Linux:
Linux中只有一个根目录,用**/**表示
在Linux中,要改正一个文件的权限设置可使用chmod命令
杂题补充:
在HTTP中,用于读取一个网页的操作方法是GET
三网合一”是将电信网、广播电视网以及互联网进行整合实现业务互联互通的一种网络解决方案。
网络的可用性是指:用户可利用网络时间的百分比
在 ASP的内置对象中,response 对象可以修改cookie中的值
如果要使得两个IPv6结点可以通过现有的IPv4网络进行通信,则应该使用隧道技术)如果要使得纯IPv6结点可以与纯IPv4结点进行通信,则需要使用翻译技术。
VLIN允许逻辑的划分网段
结构化开发:
系统设计地基本原理:抽象、模块化、信息隐蔽、
模块独立:耦合性和内聚性
耦合:
耦合是模块之间的相对独立性(互相连接的紧密程度)的度量。耦合取决于各个模块之间接口的复杂程度、调用模块的方式以及通过接口的信息类型等。
背过:
无直接耦合。指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。因此,模块间耦合性最弱,模块独立性最高。
数据耦合。指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。
标记耦合。指两个模块之间传递的是数据结构。
控制耦合。指一个模块调用另一个模块时,传递的是控制变量,被调用模块通过该控制变量的值有选择地执行模块内的某一功能。
外部耦合。模块间通过软件之外的环境联结(如I/O将模块耦合到特定的设备、格式、通信协议上)时称为外部耦合。
公共耦合。指通过一个公共数据环境相互作用的那些模块间的耦合。
内容耦合。当一个模块直接使用另一个模块的内部数据,或通过非正常入口转入另一个模块内部时,这种模块之间的耦合称为内容耦合。
内聚:
偶然内聚(巧合内聚)。指一个模块内的各处理元素之间没有任何联系。
逻辑内聚。指模块内执行若干个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
时间内聚。把需要同时执行的动作组合在一起形成的模块称为时间内聚模块。
过程内聚。指-一个模块完成多个任务,这些任务必须按指定的过程执行。
通信内聚。指模块内的所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或者产生相同的输出数据。
顺序内聚。指一个模块中的各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入。
功能内聚。这是最强的内聚,指模块内的所有元素共同作用完成一个功能, 缺一不可。
设计原则:
- 分解-协调原则
- 自顶向下原则
- 信息隐蔽、抽象的原则
- 一致原则
- 明确性原则
- 高内聚,低耦合
- 模块的扇入扇出系数要合理
- 模块的规模要适当 并非越小越好
- 模块的作用范围应该在其控制范围内
系统文档:
(1)用户与系统分析人员在系统规划和系统分析阶段通过文档进行沟通。这里的文档主要包括可行性研究报告、总体规划报告、系统开发合同和系统方案说明书等。
(2)系统开发人员与项目管理人员通过文档在项目期内进行沟通。这里的文档主要有系统开发计划(包括工作任务分解表、PERT 图、甘特图和预算分配表等)、系统开发月报以及系统开发总结报告等项目管理文件。
(3)系统测试人员与系统开发人员通过文档进行沟通。系统测试人员可以根据系统方案说明书、系统开发合同、系统设计说明书和测试计划等文档对系统开发人员所开发的系统进行测试。系统测试人员再将评估结果撰写成系统测试报告。
(4)系统开发人员与用户在系统运行期间进行沟通。用户通过系统开发人员撰写的文档运行系统。这里的文档主要是用户手册和操作指南。
(5)系统开发人员与系统维护人员通过文档进行沟通。这里的文档主要有系统设计说明书和系统开发总结报告。有的开发总结报告写得很详细,分为研制报告、技术报告和技术手册3个文档,其中的技术手册记录了系统开发过程中的各种主要技术细节。
(6)用户与维修人员在运行维护期间进行沟通。用户在使用信息系统的过程中,将运行过程中的问题进行记载,形成系统运行报告和维护修改建议。系统维护人员根据维护修改建议以及系统开发人员留下的技术手册等文档对系统进行维护和升级。
- 数据流图(DFD)对系统的功能至今的数据流进行建模,其中顶层数据流图描述了系统的输入输出
- 在结构化分析中,用数据流图(DFD)描述数据在系统中如何被传送或者变换,以及如何对数据流进行变换的功能或者子功能,用于对功能建模
数据字典:
数据字典:数据流、数据项、数据存储、基本加工 不包含外部实体
数据流图中的元素在数据字典中进行定义
根据数据字典和实体关系图进行数据设计
根据数据流图进行接口设计和体系结构设计
构造分层DFD需要注意的问题:
- 适当命名
- 画数据流而不是控制流
- 避免一个加工有过多的数据流
- 分解尽可能均匀
- 先考虑确定状态。忽略琐碎的细节
信息安全:
防护墙:不具备查毒功能
过滤型的防火墙,它对用户完全透明,速度较快其优点是防火墙对每条传入和传出网络的包实行低水平控制:每个IP包的字段都被检查,例如源地址、目的地址、协议和端口等:缺点是不能防范黑客攻击,因为网管不可能区分出可信网络与不可信网络的界限;不支持应用层协议,因为它不识别数据包中的应用层协议,访问控制粒度太粗糙;不能处理新的安全威胁。
包过滤防火墙对网络层的数据报文进行检查
应用代理网关防火墙应用代理网关防火墙彻底隔断内网与外网的直接通信,内网用户对外网的访问变成防火墙对外网的访问,然后再由防火墙转发给内网用户。所有通信都必须经应用层代理软件转发,访问者任何时候都不能与服务器建立直接的TCP连接,应用层的协议会话过程必须符合代理的安全策略要求。缺点:难以配置,处理速度非常慢
病毒:
计算机病毒的特征包括:传播性、隐蔽性、感染性、潜伏性、触发性、破坏性等
Worm表示蠕虫病毒、Trojan表示特洛伊木马、Backdoor表示后门病毒、Macro表示宏病毒
宏病毒感染的对象主要是文本文档、电子表格等
木马软件:冰河 X卧底病毒通过木马形式感染智能手机
蠕虫病毒:欢乐时光、熊猫烧香、红色代码、爱虫病毒、震网
网络攻击:
拒绝服务攻击(Dos攻击) :目的是使计算机或网络无法提供正常的服务(重要)
拒绝服务攻击是不断向计算机发起请求来实现的(重要)
重放攻击:攻击者发送一个目的主机已经接受过的报文来达到攻击目的攻击者利用网络监听或者其他方式盗取认证凭据,之后再重新发送给认证服务器。主要用于身份认证过程,目的是破坏认证的正确性。(重要)
Kerberos系统中可通过在报文中加入时间戳来防止重放攻击(重要)
口令入侵攻击:使用某些合法用户的账号和口令登录到目的主机,然后再实施攻击活动
特洛伊木马:被伪装成程序或游戏,当用户下载了带有木马的软件或附件时,这个程序就会向黑客发起连接请求,建立连接后黑客就实施攻击活动。
端口欺骗攻击:采用端口扫描找到系统漏洞从而实施攻击(重要)
网络监听:攻击者可以接收某一网段在同一条物理通道上传输的所有信息,使用网络监听可以轻松截取包括账号和口令在内的信息资
IP欺骗攻击:产生的IP数据包为伪造的源IP地址,以便冒充其他系统或发件人的身份。
Sq1注入攻击:是黑客对数据库进行攻击的常用手段之一。没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。攻击者可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,首先获取数据库的权限,就可获取用户账号和口令信息,以及对某些数据修改等。(重要)
入侵检测技术:专家系统、模型检测、简单匹配(重要)
网络安全:
SSL(端口号443)是传输层安全协议,已经成为一个事实上的Web安全标准
TSL是传输层安全协议
SSH是安全连接
安全通道HTTPS 默认端口号为443/tcp 443/udp
电子邮件安全:PGP
电子邮件类型:MIME
通常使用IPSec为IP数据报文进行加密
IGMP不能用于远程登录或者控制