为备考2022上半年软考所做的笔记,祝愿自己顺利通过!
设计模式导学目录
软件设计师考试总结感想
程序计数器 (PC)用来存放下一条要执行的指令的地址;
指令寄存器 (IR)用来存放当前正在执行的指令。
累加器 (AC)是算逻运算单元中用来暂存源操作数和计算结果的寄存器;
地址寄存器 (AR)暂存要访问的内存单元的地址;
DMA是直接内存存取,传送数据的时间只与内存相关,与CPU的时间无关。
指令周期、机器周期、时钟周期的概念及三者之间的关系
每个中断源都有对应的处理程序,这个处理程序称为中断服务程序,其入口地址称为中断向量。所有中断的中断服务程序入口地址构成个表,称为中断向量表;也有的机器把中断服务程序入口的跳转指令构成一张表,称为中断向量跳转表。
中断方式下的数据传送是当IO接口准备好接收数据或准备好向CPU传送数据时,就发出中断信号通知CPU。对中断信号进行确认后,CPU保存正在执行的程序的现场,转而执行提前设置好的IO中断服务程序,完成一次数据传送的处理。这样,CPU就不需要主动查询外设的状态,在等待数据期间可以执行其他程序,从而提高了CPU的利用率。采用中断方式管理IO设备,CPU和外设可以并行地工作。
DMA,全称Direct Memory Access,即直接存储器访问。
DMA用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU的干预,通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作。
评价Cache性能的关键指标是Cache的命中率,影响命中率的因素有其容量、替换算法、其组织方式等。Cache 的命中率随容量的增大而提高,其关系如下图所示。
主存地址与Cache 地址之间的转换工作由硬件完成
存储系统中的存储器,按访问方式可分为按地址访问的存储器和按内容访问的存储器;按寻址方式分类可分为随机存储器、顺序存储器和直接存储器。
- 随机存储器(Random Access Memory,RAM)指可对任何存储单元存入或读取数据,访问任何一个存储单元所需的时间是相同的。
- 顺序存储器(Sequentially Addressed Memory,SAM)指访问数据所需要的时间与数据所在的存储位置相关,磁带是典型的顺序存储器。
- 直接存储器(Direct Addressed Memory,DAM)是介于随机存取和顺序存取之间的一种寻址方式。磁盘是一种直接存取存储器,它对磁道的寻址是随机的,而在一个磁道内,则是顺序寻址。
- 相联存储器是一种按内容访问的存储器。其工作原理就是把数据或数据的某一部分作为关键字,将该关键字与存储器中的每一单元进行比较,找出存储器中所有与关键字相同的数据字。
简单的分辨:
无论是电脑还是手机,容量小的那个一定是内存RAM,容量大的一定是存储(闪存)ROM,比如手机的3GB+64GB、4GB+64GB、6GB+128GB,前者都是内存后者都是存储(闪存);电脑也是如此,8GB+120GB、16GB+240GB(+3TB),前者都是内存后者都是闪存(或硬盘)。
结论:
1、RAM与ROM其实都是内存 (RAM也叫主存)
2、硬盘是外存
3、ROM不等于硬盘
BTW,电脑ROM是用来做什么的呢?
答:存储一些系统相关信息和开机引导BIOS等等。
浅析如何把逻辑地址转换为物理地址
系统应该首先淘汰未被访问的页面,因为根据程序的局部性原理,最近未被访问的页面下次被访问的概率更小;如果页面最近都被访问过,应该先淘汰未修改过的页面。因为未修改过的页面内存与辅存一致,故淘汰时无须写回辅存,使系统页面置换代价小。
指令中的寻址方式就是如何对指令中的地址字段进行解释,以获得操作数的方法或获得程序转移地址的方法。常用的寻址方式有:
- 立即寻址。操作数就包含在指令中。
- 直接寻址。操作数存放在内存单元中,指令中直接给出操作数所在存储单元的地址。
- 寄存器寻址。操作数存放在某一寄存器中,指令中给出存放操作数的寄存器名。·
- 寄存器间接寻址。操作数存放在内存单元中,操作数所在存储单元的地址在某个寄存器中。
- 间接寻址。指令中给出操作数地址的地址。
- 相对寻址。指令地址码给出的是一个偏移量(可正可负),操作数地址等于本条指令的地址加上该偏移量。
- 变址寻址。操作数地址等于变址寄存器的内容加偏移量。
移臂调度算法_blog
内存容量为4GB,即内存单元的地址宽度为32位。字长为32位即要求数据总线的宽度为32位,因此地址总线和数据总线的宽度都为32。
计算机中三大总线:地址总线、数据总线、控制总线
广义地讲,任何连接两个以上电子元器件的导线都可以称为总线。通常可分为4类:**
连接处理机的处理器、存储器及其他部件的总线属于内总线,按总线上所传送的内容分为数据总线、地址总线和控制总线。
【解析】PV信息量的取值表示资源数,最大值为初始可用资源5;当信号量取值小于0时,可表示排队进程数,此时n个进程,最大排队数为n-5,信号量最小取值为-(n-5)。
海明码_知乎
一句口诀记住 OSI七层协议模型
IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段
1.url = 协议//主机名(包括服务器的计算机名+域名)/路径 https:// www.baidu.com
https:// www.baidu.com中的https是协议,www是主机名。就是www, 就是web的主机。
.com是顶级域名,从右向左,每碰到一个“.”,依次表示二级域名,三级域名
运行Windows系统的计算机无法从DHCP服务器中获取动态地址时,它将在169.254.0.0/16中随机选取一个自动专用IP地址(APIPA)。
169.254.0.0/16 这个是保留的"link local"网段,当不能获得DHCP服务时,自动配置的系统被分配这个网段的地址。详细见RFC3927。
保留地址用来在系统中做特殊用途的,不会被分配给任何一个企业、组织。
A选项:TLS安全传输层协议用于在两个通信应用程序之间提供保密性和数据完整性。B选项:TCP是可靠的传输层协议,与安全无关。
C选项:SSH 为Secure Shell的缩写,由IETF的网络工作小组(Network Working Group)所制定;SSH为建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH 协议可以有效防止远程管理过程中的信息泄露问题。本题选择C选项。
D选项: TFTP (Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
POP3主要用于支持使用客户端远程管理在服务器上的电子邮件,默认传输协议是TCP,
认端口号110。
QQ邮箱的POP3
RSA是一种非对称加密算法,由于加密和解密的密钥不同,因此便于密钥管理和分发,同时在用户或者机构之间进行身份认证方面有较好的应用;
SHA-1是一种安全散列算法,常用于对接收到的明文输入产生固定长度的输出,来确保明文在传输过程中不会被篡改;
MD5是一种使用最为广泛的报文摘要算法;
RC5是一种用于对明文进行加密的算法,在加密速度和强度上,均较为合适,适用于大量明文进行加密并传输。
A向B发送了一条信息,就应该使用A的私钥进行加密,而B通过使用A的公钥进行解密(因为A的公钥是大家都可以看到拥有的),只有这样,B才能确定这条信息是A发送给他的。
在这里,一般不称作加密、解密过程,而是把A的加密过程称为数字签名过程,把B的解密过程称为数字签名的验证过程。
数字签名采用的是非对称加密技术,适合对小信息量的内容进行加密,所以只用对摘要进行数字签名即可。
数字签名是对签名真实性的保护
- 用户可在一定的认证机构(CA)处取得各自能够认证自身身份的数字证书,与该用户在同一机构取得的数字证书可通过相互的公钥认证彼此的身份:例如此处A、B均在I1处取得数字证书,则A、B可通过相互的公钥认证彼此的身份。
- 当两个用户所使用的证书来自于不同的认证机构时,用户双方要相互确定对方的身份之前,首先需要确定彼此的证书颁发机构的可信度。即两个CA之间的身份认证,需交换两个CA的公钥以确定CA的合法性,然后再进行用户的身份认证。
静态路由是固定路由,从不更新除非拓扑结构发生变化;
洪泛式将路由信息发送到连接的所有路由器,不利用网络信息;
随机路由是洪泛式的简化;
自适应路由依据网络信息进行代价计算,依据最小代价实时更新路由。
木马与病毒的区别:
木马不具传染性,它并不能像病毒那样复制自身,也并不“刻意”地去感染其他文件(不然太明显),它主要通过将自身伪装起来,吸引用户下载执行。(某某软件啥的)
木马一般主要以窃取用户相关信息为主要目的,相对病毒而言,可以简单地说,病毒破坏你的信息,而木马窃取你的信息。
简单辨析蠕虫病毒跟普通病毒:
1.复制方式:普通病毒需要传播受感染的驻留文件来进行复制,而蠕虫不使用驻留文件即可在系统之间进行自我复制。
2.传染目标:普通病毒的传染能力主要是针对计算机内的文件系统而言,而蠕虫病毒的传染目标是互联网内的所有计算机。
网络蠕虫病毒对个人用户的攻击主要还是通过社会工程学,而不是利用系统漏洞!蠕虫的扩展能力非常可怕,就怕你身边人中招了,然后顺带把你也坑了。
网络攻击的主要手段包括口令入侵、放置特洛伊木马程序、拒绝服务(DoS)攻击、端口扫描、网络监听、欺骗攻击和电子邮件攻击等。
口令入侵是指使用某些合法用户的账号和口令登录到目的主机,然后再实施攻击活动。
特洛伊木马(Trojans)程序常被伪装成工具程序或游戏,一旦用户打开了带有特洛伊木马程序的邮件附件或从网上直接下载,或执行了这些程序之后,当用户连接到互联网上时,这个程序就会向黑客通知用户的IP地址及被预先设定的端口。
拒绝服务DoS 攻击目的是使计算机或网络无法提供正常的服务。最常见的拒绝服务攻击有网络带宽攻击和连通性攻击。带宽攻击指以极大的通信量冲击网络**,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求无法通过。连通性攻击是指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。
端口扫描就是利用Socket编程与目标主机的某些端口建立TCP连接、进行传输协议的验证等,从而侦知目标主机的扫描端口是否处于激活状态、主机提供了哪些服务、提供的服务中是否含有某些缺陷等。
网络监听是主机的一种工作模式,在这种模式下,主机可以接收到本网段在同一条物理通道上传输的所有信息。使用网络监听工具可轻而易举地截取包括口令和账号在内的信息资料。
欺骗攻击是攻击者创造一个易于误解的上下文环境,以诱使受攻击者进入并且做出缺乏安全考虑的决策。IP欺骗是欺骗攻击的一种,IP欺骗实现的过程是:使得被信任的主机丧失工作能力,同时采样目标主机发出的TCP序列号,猜测出它的数据序列号。然后,伪装成被信任的主机,同时建立起与目标主机基于地址验证的应用连接。如果成功,黑客可以使用一种简单的命令放置一个系统后门,以进行非授权操作。
重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,彼坏认证的正确性。重放攻击可以由发起者也可以由拦截并重发该数据的敌方进行。攻击者利用网络监听或者其他方式盗取认证凭据,之后再把它重新发给认证服务器。重放攻击在任何网络通信过程中都可能发生,是黑客常用的攻击方式之一。
主动攻击与被动攻击 && 完整性、不可依赖性、保密性
【解析】安全审计对主体访问和适用客体的情况进行记录和审查,以保证安全规划被正确执行,并帮助分析安全事故产生的原因。与访问控制无关。
ipconfig(linux:ifconfig))(显示TCP/IP网络配置值,如:IP地址,MAC地址,网关地址等)。
tracert(linux:traceroute)用于确定IP数据包访问目标所采取的路径,若网络不通,能定位到具体哪个结点不通。
netstat :用于显示网络连接、路由表和网络接口信息。
nslookup (查询DNS记录)。
软件开发模型总结归纳(瀑布模型、螺旋模型、迭代模型、增量模型、敏捷模型)
增量模型是一种阶段化的软件开发过程模型。在该过程模型中,客户提出系统需求,并指出哪些需求是最重要的。开发团队把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能完成特定的功能。其优点包括:能在较短时间内向用户提交可完成一些有用的工作产品;逐步增加产品的功能,使用户有较充裕的时间学习和适应新产品;项目失败的风险较低;优先级最高的服务首先交付,然后依次将其他构件集成进来,这意味着最重要的服务将接受最多的测试。因此增量模式是一种能够快速构造可运行产品的方法,也适用于今天竞争激烈,需要快速发布产品的市场环境。
耦合是模块之间的相对独立性(互相连接的紧密程度)的度量。耦合取决于各个模块之间接口的复杂程度、调用模块的方式以及通过接口的信息类型等。
- 数据耦合:指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。
- 标记耦合:指两个模块之间传递的是数据结构。
- 控制耦合:指一个模块调用另一个模块时,传递的是控制变量,被调用模块通过该控制变量的值有选择的执行模块内的某一功能。因此,被调用模块内应具有多个功能,哪个功能起作用受调用模块控制。
- 内容耦合:当一个模块直接使用另一个模块的内部数据,或通过非正常入口转入另一个模块内部时,这种模块之间的耦合称为内容耦合。
能力成熟度集成模型CMMI是CMM模型的最新版本,基于连续式表述的CMMI共有6个(0~5)能力等级,对应于未完成级、已执行级、已管理级、已定义级、量化管理级、优化级。每个能力等级对应到一个一般目标,以及一组一般执行方法和特定方法。
能力等级0指未执行过程,表明过程域的一个或多个特定目标没有被满足;能力等级1指过程通过转化可识别的输入工作产品,产生可识别的输出工作产品,关注于过程域的特定目标的完成;能力等级2指过程作为已管理的过程制度化,针对单个过程实例的能力;能力等级3指过程作为己定义的过程制度化,关注过程的组织级标准化和部署;能力等级4指过程作为定量管理的过程制度化;能力等级5指过程作为优化的过程制度化,表明过程得到很好地执行且持续得到改进。
【解析】COCOMO II模型也需要使用规模估算信息,体系结构阶段,在模型层次结构中有3种不同规模估算选择,即:对象点、功能点和代码行。应用组装模型使用的是对象点;早期设计阶段模型使用的是功能点,功能点可以转换为代码行。体系结构模型把工作量表示为代码行数。
根据ISO/IEC 9126软件质量模型的定义,可维护性质量特性包含易分析性、易改变性、稳定性和易测试性4个子特性。其中
- 易分析性是指为诊断缺陷或失效原因,或为判定待修改的部分所需努力有关的软件属性;
- 易改变性是指与进行修改、排错或适应环境变换所需努力有关的软件属性;
- 稳定性是指与修改造成未预料效果的风险有关的软件属性;
- 易测试性是指为确认经修改软件所需努力有关的软件属性。
白盒测试也称为结构测试,根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试,检查是否满足设计的需要。在白盒测试中,语句覆盖是指选择足够的测试用例,使被测程序中每条语句至少执行一次。它对程序执行逻辑的覆盖很低,因此一般认为是很弱的逻辑覆盖。判定覆盖是指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值。条件覆盖是指设计足够的测试用例,使得每一个判定语句中每个逻辑条件的各种可能的值至少满足一次。路径覆盖是指覆盖被测程序中所有可能的路径。在这些覆盖技术中,
从弱到强依次为语句覆盖、判定覆盖、条件覆盖和路径覆盖。
b站三分钟讲解
简单来说,with check option 的作用就是,当你修改视图的时候,视图里的where条件select出有多少rows, 你修改完以后这些rows都还在
浅谈WITH CHECK OPTION的作用
MySQL 联级删除(on delete cascade)应用
区分笛卡儿积、自然连接、内连接、等值连接、外连接
【解析】分布式数据库是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个节点具有独立处理的能力(称为场地自治),它可以执行局部应用,同时每个节点也能通过网络通信子系统执行全局应用。分布式数据库系统是在集中式数据库系统技术的基础上发展起来的,具有如下特点:
(1)数据独立性。在分布式数据库系统中,数据独立性这一特性更加重要,并具有更多的内容。除了数据的逻辑独立性与物理独立性外,还有数据分布独立性(分布透明性)。
(2)集中与自治共享结合的控制结构。各局部的DBMS可以独立地管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部DBMS的工作,执行全局应用。
(3)适当增加数据冗余度。在不同的场地存储同一数据的多个副本,这样,可以提高系统的可靠性和可用性,同时也能提高系统性能。
(4)全局的一致性、可串行性和可恢复性。本题描述的是可用性。
数据库建模多表一对多和多对一、一对一、多对多
把创建型5种+结构型7种记下,剩下的就是行为型。把所有类模式记下,剩下的都是对象模式
记忆口诀:结享外组适代装桥(姐想外租,世代装桥)
定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)
举例:洗衣机有多种清洗功能,在使用时选取一种:
类图如下:
重点是在context中可以setStrategy
策略模式和状态模式的类图大致相似:
策略模式和状态模式的不同点:
状态模式会根据不同的状态会发生一系列行为(比如今天生气会引发不想学习,想睡觉,刷b站),而策略模式关注的某一具体的事情。
将抽象和实现解耦,使得两者可以独立地变化。
举例:卖燕窝(线上,线下)
传统方式下,如果想新增一个燕窝的类型,那么这种新增的燕窝需要和所有的销售途径进行再组合,形成多个新类。
现有如下思路:将销售渠道维度独立出来(渠道类),让燕窝类内部引用渠道类
类图如下:
观察者模式(Observer Pattern):定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。
举例:张三还钱记。
法外狂徒欠了一屁股债,现有如下方式:他的债主每天过来催张三还钱,或是等张三有钱了(内部有个state标记状态,1表示有钱,0表示没钱)去通知债主。观察者模式就是第二种。
类图如下:
此处代码 :
Debit-----------Subject
zhangsan -------ConcreteSubject
Credit-----------Observer
zhaosi-----ConcreteObserver
/**
* 观察者模式
*/
public class ObserverPattern {
public static void main(String[] args) {
Debit zhangsan = new zhangsan();
zhangsan.borrow(new zhaosi());
zhangsan.borrow(new wangwu());
//state改变(张三有钱了)
zhangsan.notifyCredits();
}
}
//借款人
interface Debit{
void borrow(Credit credit);
void notifyCredits();
}
class zhangsan implements Debit{
private List<Credit> allCredit = new ArrayList<>();
private Integer state=0; //0
@Override
public void borrow(Credit credit) {
allCredit.add(credit);
}
@Override
public void notifyCredits() {
//等张三有钱了,通知放贷人来取钱
allCredit.forEach(credit -> credit.takeMoney());
}
}
//放贷人
interface Credit{
void takeMoney();
}
class zhaosi implements Credit{
@Override
public void takeMoney() {
System.out.println("赵四上门取钱");
}
}
class wangwu implements Credit{
@Override
public void takeMoney() {
System.out.println("王五上门取钱");
}
}
上午3分+下午第三题
考察9个关系+9个图
类图及类图之间的关系
数据流图转换成软件结构图
包含多态:同样的操作可用于一个类型及其子类型。包含多态一般需要进行运行时的类型检查。包含多态在许多语言中都存在最常见的例子就是子类型化即一个类型是另外一个类型的子类型。
强制多态:编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。
过载多态:同一个名(操作符、函数名)在不同的上下文中有不同的类型。目前软设考查比较多的是过载多态。
词法分析的基本任务就是识别出源程序中的每个词。
语法分析是分析语句及程序的结构是否符合语言定义的规范,
对于语法正确的语句,语义分析是判断语句的含义是否正确
词法分析阶段处理的错误:非法字符、单词拼写错误等。
语法分析阶段处理的错误∶标点符号错误、表达式中缺少操作数、括号不匹配等有关语言结构上的错误。
静态语义分析阶段(即语义分析阶段)处理的错误∶运算符与运算对象类型不合法等错误。本题选择语义错误。
目标代码生成(执行阶段)处理的错误∶动态语义错误,包括陷入死循环、变量取零时做除数、引用数组元素下标越界等错误等。
有合同约定,著作权归委托方,那么就归属委托方;而在合同中未约定著作权归属,归创作方。
- 合作开发 首先根据合同,若合同没表明,则根据所开发软件能否分割。若能分割:开发者对各自开发的部分可以单独享有著作权;若不能分,其著作权由各合作开发者共同享有,通过协商一致行使;不能协商一致,又无正当理由的,任何一方不得阻止他方行使除转让权以外的其他权利,但是所提收益应当合理分配给所有合作开发者。
- 委托开发 首先根据书面协议,若无,则著作权由受托人(干活的那个人)享有。
- 职务开发 由公司享有
软件著作权的保护不延及开发软件所用的思想、处理过程、操作方法或者数学概念等
PC处理的音频信号主要是人耳能听得到的音频信号(audio),它的频率范围是20~20kHz。可听声包括:
话音(也称语音):人的说话声,频率范围通常为300~3400Hz。
音乐:由乐器演奏形成(规范的符号化声音),其带宽可达到20~20kHz。
其他声音:如风声、雨声、鸟叫声和汽车鸣笛声等,它们起着效果声或噪声的作用,其带宽范围也是20~20kHz。