软考背诵笔记

计算机硬件组成

运算器,控制器,存储器,输入设备,输出设备

中央处理单元(CPU)

控制器组成

指令寄存器(IR):暂存cpu执行指令

程序计数器(PC):存放下一条执行地址

地址寄存器(AR):保存当前CPU所访问的内存地址

指令译码器(ID):分析指令操作码

运算器的组成

算术逻辑运算单元ALU:实现对数据的逻辑和算术运算

累加寄存器AC:源头运算结果和源操作数的存放区

数据缓冲寄存器DR:暂时存放内容的指令和数据

状态条件寄存器PSW:保存指令运算结果的条码内容,如内存溢出

寻址方式

快到慢:立即寻址--寄存器寻址--直接寻址==寄存器间接寻址--间接寻址

码制

假设二进制机器字长是n+1,且为整数

原码表示范围:-(2^n-1) x ≤ 2^-1

反码表示范围:-(2^n-1) x ≤ 2^-1

补码表示范围:-2^n  x ≤ 2^n-1

移码表示范围:-2^n  x ≤ 2^n-1

原码小数表示范围:-(1-2^-n) ~ 1-2^-n

补码小数表示范围:-1 ~ 1-2^-n

校验码

奇偶校验码:只能检一位错,且不能纠错

循环冗余校验码CRC:只能检错不能纠错,摸2运算

海明码:利用奇偶性来检错纠错

公式:2^k-1 ≥ n+k

地址映射

全相联映射:主存的任意一块可以映射到Cache中的任意一块

直接相联映射:主存中的一块,只能直接映射到Cache中特定块中

组相联映射:组跟组之间直接相联,组内全相联

逻辑运算

与(and):全1为1 , 有0为0     全真为真,有假为假

或(or):全0为0,有1为1       有真为真,全假为假

非(not):0变1,1变0         真变假,假变真

异或(xor):相同为0,不同为1       同假异真

同或(xnor):相同为1,不同为0         同真异假

与非(nand):先与后非,全1为0,有0为1    全真为假,有假为真

或非(nor):先或后非,全0为1,有1为0     全假为真,有真为假

指令RISC和CISC

RISC 和CISC(精简指令集计算机和复杂指令集计算机)

区别RISCCISC
指令种类少,简单多,丰富
指令复杂度低,简单高,复杂
指令长度固定变化
寻址方式复杂多样
实现(译码)方式硬布线控制逻辑(组合逻辑控制器)微程序控制器
通用寄存器数量多,大量一般
流水线技术支持不支持

Flynn分类法

除了单单,其余主存模块都是多个

指令流---控制部分匹配,同多同少

数据流----处理器匹配,同多同少

体系结构类型结构关键特性代表
单指令流单数据流SISD

控制部分:1个

处理器:1个

主存模块:1个

单处理器系统
单指令流多数据流SIMD

控制部分:一个

处理器:多个

主存模块:多个

各个处理器以异步的

形式执行同一条指令

并行处理机

阵列处理机

超级向量处理机

多指令流单数据流MISD

控制部分:多个

处理器:一个

主存模块:多个

被证明不可能,至少

是不实际的

目前没有,有文献称流水线计算机为此类
多指令流多数据流MIMD

控制部分:多个

处理器:多个

主存模块:多个

能够实现作业、任务、

指令等各级全面并行

多处理及系统

多计算机

流水线

周期

执行时间

吞吐率:总指令条数/流水线执行时间

加速比

I/O

I/O软件层次结构(越往上越与硬件无关)

输入输出技术

程序控制(查询)方式:CPU主动查询,效率低

程序中断方式:外部请求中断,等待CPU处理,效率相对高

DMA方式(直接主存存取):CPU只需初始化,全程DMA控制器完成,在主存和外设建立通路,效率高

中断响应时间:发出中断请求,到开始进入中断处理程序

中断处理时间:中断处理程序开始到中断处理程序结束

中断向量:提供中断处理程序的入口地址,多级中断嵌套,适用堆栈来保护断点和现场


比特转换

1MB=1024KB=2^10KB=2^20B

1B(Byte/字节)=8bit(b/比特)

软件工程

关键路径:起点至终点最长的路径,关键路径上的活动均为关键活动

松弛时间:最早开始时间到最迟开始时间之差,或者最早结束时间到最吃结束时间之差

 文件索引

储存器

区别SRAM(静态随机存取存储器)DRAM(动态随机存取存储器)
刷新机制不需要刷新就可保存数据,只需保持通电数据就可恒久保持因为适用电容作为储存单元,电容器的电荷会逐渐泄露,所以需要定期刷新,以维持数据稳定
速度不刷新所以读写要刷新所以读写,且电容充电需要时间
功耗功耗大,因为要维持触发器的稳定状态功耗低,因为只有再读写的时候才消耗能量
成本由于结构相对复杂集成度低,因此成本较高由于每个存储单元的面积相对较小,有更高的存储密度,因此成本低
应用场景对速度要求高的场合,如CPU的L1缓存,L2缓存广泛用于计算机的主存储器,图形显卡,移动设备,服务器和数据中心等,用于存储正在运行的程序和临时数据

文件管理

绝对路径:/开始,从根目录开始,包括盘符

相对路径:当前工作目录下的路径名

全文件名:绝对路径+文件名

队列和栈

队列:先进先出

栈:先进后出

软件工程

软件工程基本要素:方法,工具,过程

软件生存周期

可行性分析与项目开发计划:确定软件开发目标,可行性,产出可行性分析报告和项目开发计划,确定系统逻辑模型

需求分析:确定软件功能、性能、数据、系欸按等,产出软件需求说明书

概要设计:设计软件结构,产生概要设计说明书

详细设计:对每个模块共嗯那个进行详细描述,把功能描述转化为精确,结构化的过程描述,产生详细设计文档

编码:控制结构转计算机代码,产出源程序清单

测试:保证软件质量,设计测试用例检查软件,产出软件测试计划、测试用例、软件测试报告

能力成熟度CMMI

初始级:过程不可预测且缺乏控制

已管理:过程为项目服务

已定义:过程为组织服务

定量管理:过程为以度量和控制

优化:集中于过程改进

模型

统一过程模型UP

“用例和风险驱动,以架构为中心,迭代并增量”的开发过程

每一次迭代都是一次完整的开发过程,包括整个开发生命周期

开发阶段:确认需求,风险评估

精华阶段:需求分析,架构设计

构建阶段:系统构建,产生实现模型

移交阶段:产生软件增量,β测试,交付系统

瀑布模型

结构化方法模型,适用于需求明确,二次开发

V模型

瀑布模型的变种,增加多轮测试,测试贯穿始终

原型

快速原型开发,与瀑布模型相反,适用于需求不明确

螺旋模型

多模型混合,像原型,增加风险分析,适用于需求不明确

增量模型

最先优先级高的开发,开发部分交付部分,依次增加,每次产品可独立操作

喷泉模型

用户需求为动力,对象为驱动,适用于面向对象,具有迭代性和无间隙性

基于构建的开发模型

包装构件,构建构件库,组成系统,增强复用性,节省时间和成本

敏捷开发

尽可能早,持续的对有价值的软件的交付

自适应开发ASD

强调开发的适应性

水晶方法Crystal

每一个不同的项目,都需要不同的策略,约定和方法论

特性驱动开发

针对中小型软件开发项目,强调简化,使用,易被开发团队接受

适用于需求经常变动的项目

并列争求法Scrum

迭代的增量化过程,每30天一次的迭代为一个冲刺,按需求优先级实现产品

极限编程XP

轻量级、高效、低风险、柔性、可预测性、科学

四大价值观:沟通、简单性、反馈、勇气

五大原则:快速反馈,简单性假设,逐步修改,提倡更改,优质工作

12个最佳实践:计划游戏,小型发布,隐喻,简单设计,测试先行,重构,结队编程,集体代码所有制,持续集成,某周工作40小时,现场客户,编码标准

软件工具

开发工具:分析,设计,编辑,排错,测试工具

维护工具:版本控制,逆向工程,再工程,文档分析,开发信息库工具

管理和支持工具:项目管理,配置管理,软件评价工具

软件项目

4P:人员,产品。过程。项目

COCOMO:软件项目规模估算法,以代码行估算每个程序员二的工作量,累加成本

基本模型:静态变量模型,以代码行loc计算软件开发工作量

中间模型:在基础模型的基础上,涉及产品,人员,项目,硬件的因素调整工作量估算

详细模型:包括中间模型所有特性,加考虑每个步骤的影响

COCOMOII:COCOMO的升级,考虑多个成品驱动因子

应用组装模型

早期设计阶段模型

体系结构阶段模型

进度管理

基本原则:划分,相互依赖,时间分配,工作量确认。确认责任,明确输出结果,确定里程碑

Ganntt图:能反映活动并行关系,无法反映活动的依赖关系

PERT图:有向图,反应活动的依赖关系,无法反映并行关系

软件项目的组织

主程序员制小组:主程序员全权负责,必要时其他代替,适合大规模项目

民主制小组:成员地位平等,任何决策全员投票,适合于规模小,开发人员少,采用新技术,确定性小的项目

层次式小组:分2层次,组长领导高级程序员,高级程序员领导程序员

软件质量管理

可维护性(常考)

易分析性:与为诊断缺陷,失效原因,为判定待修改部分  有关的软件属性

易改变性:与进行修改,排错,适应环境变化所需努力有关的软件属性

易测试性:为确认经修改软件所需努力有关的软件属性

稳定性:与修改造成未预料效果风险的软件属性

质量特性质量子特性
功能性

适用、准确、互用、依从、安全

可靠性成熟、容错、易恢复
易使用性易理解、易学、易操作
效率时间特性、资源特性
可维护性易分析、易改变、易测试、稳定
可移植性适应、易安装、一致、易替换

软件容错技术

设计质量、程序质量

实现容错的主要手段---冗余

结构冗余:静态(通过表决和比较,少数服从多数),动态(多重模块待机备份,故障时切换备份机),混合冗余(二者混合)

信息冗余:在数据上加额外的信息检错纠错,如校验码原理

时间冗余:遇到错误时重复执行,如回滚,重复执行还错转为错误处理逻辑

冗余附加技术:实现数据结构,信息和时间冗余技术所需要的技术和资源,包括程序、指令、数据、存放和调动他们空间和通道等

风险管理

特性:不确定性(可能发生可能不),损失(发生产生的恶性后果)

项目风险:威胁项目计划(指预算,进度,人员,资源利用相关者,需求等潜在问题,项目复杂度,规模,结构不确定性也属于项目风险)

技术风险:威胁开发软件的质量和角度时间(指设计,实现,接口。验证,维护等潜在问题。规格说明的歧义性、技术的不正确性、技术陈旧以及前沿技术也是技术风险因素)

商业风险:威胁到开发软件的生存能力

        市场风险:市场无需求的产品

        策略风险:产品不符合整体商业策略

        销售风险:不知道如何销售产品

        管理风险:用于重点转移或人员变动导致失去管理支持

        预算风险:没得到预算或人员保证

风险管理过程

风险识别:形成风险列表

风险预测:从风险可能发生的概率和风险产生的后果预测,风险曝光度=风险发生概率*损失

风险评估:定义风险参照水准,将识别出来的风险评估分类

风险控制:风险避免,风险监控,RMMM计划(风险环节,监控,管理计划)

软件度量

软件属性

外部属性:面向管理者用户,可直接测量,性能指标

内部属性:面向产品本省,只可间接测量,如可靠度

McCabe算法

环路复杂度,有向变m,节点数n,复杂度m-n+2

计算机网络

计算机网络概念

实现远程通信,远程信息处理,资源共享

功能:数据通信,资源共享,负载均衡,高可靠性

分类:局域网LAN,城域网MAN,广域网WAN

拓扑结构

总线型:利用率低,干扰大,价格低

星型:交换机形成的局域网,中央单元负荷大

环型:流动方向固定,效率低,扩展难

树型:总线型的扩充,分级结构

分布式:任意节点连接,管理难,成本高

OSI七层模型

从上到下:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层

物理层:二进制数据传输

数据链路层:将数据封装成,传至局域网内主机

网络层数据分组传输和路由选择,传至互联网的主机

传输层端到端的连接,传至主机端口

会话层:管理主机间的对话,提供会话管理服务

表示层:提供解释所交换的数据的含义的服务,包括数据间的转换,压缩,加密等操作,对数据进行处理

应用层:实现具体应用功能,直接进程间的通信

网络互联硬件

物理层中继器(扩大信息),集线器Hup(多路中断)---无法隔离冲突或广播域

数据链路层网桥(分析帧地址),交换机(多路网桥,Mac地址表)---可以隔离冲突域不可隔离广播域

网络层路由器(连接多个逻辑上分开的网络,路由选择)--可以歌库冲突与也可隔离广播域

应用层网关(连接不同类型,且协议差别较大的网络,协议转换)

有线介质:双绞线,同轴电缆,光纤

无线介质:微波,红外线,卫星通信

局域网协议

IEEE802.3:标准以太网,10Mbps,传输介质同轴电缆

IEEE802.3u:快速以太网,100Mbps,传输介质双绞线

IEEE802.3z:千兆以太网,1000Mbps,传输介质双绞线或光纤

TCP/IP协议簇

特性:逻辑编制,路由选择,域名解析,错误检测,流量控制

网络层协议

IP:核心协议,无连接,不可靠

ICMP:因特网信息控制协议,检测网络通信顺畅

ARP/RARP:地址解析协议,反地址解析协议

ARP:IP地址-->物理地址

RARP:物理地址-->IP地址

传输层协议

TCP:可靠(三次握手)

UDP:不可靠,一般用于音频,视频传输

应用层协议

可靠的-------------------------------------------

FTP:文件传输协议,21控制端口,20传输端口

HTTP80,超文本传输协议,加SSL变HTTS(端口443)

SMTP发送,23,简单邮件传输协议,邮件报文用ASCLL格式表示

POP3收取,110,邮件传输

Telent23,远程连接协议

不可靠------------------------------------------------

TFTP:69,小文件传输协议

SNMP:161,简单网络管理协议

DHCP:67,动态分配IP地址协议,客户机、服务器模型,默认租期8天

DNS:53,域名解析协议,域名解析为IP

IP地址

全0全1不可分配

A类:8位

B类:16位

C类:24位

D类组播

E类保留

防护墙

网络级防火墙:层次低,效率高,使用包过滤、状态检测手段,伪装数据无法过滤,只检测网络包外在

应用级防火墙:层次高、效率低,网络包拆开检测,耗时久,安全强度高,包括双宿主主机,屏蔽主机网关被屏蔽子网等方法。

被屏蔽子网方法:在内部和外部之间,加一个屏蔽子网,称为DMZ(非军事区),这样内网和外网之间必须多经过一道防火墙,屏蔽子网中一般存放的是邮件服务器,WEB服务器这些内外网交互的服务器,可以屏蔽掉一些来自内网的攻击,但完全来自内网的服务器攻击还是无法屏蔽

计算机木马病毒

病毒:破坏计算机功能,破坏数据

病毒特点:传染,隐蔽,潜伏,破坏,针对,衍生,寄生,未知

木马:控制计算机的工具,监视操作,盗取数据

病毒木马种类

系统引导性病毒

文件外壳病毒

目录行病毒

蠕虫病毒:感染EXE可执行文件,熊猫烧香,罗密欧与朱丽叶,恶魔,尼姆达,冲击波

木马:QQ消息尾巴木马,特洛伊木马,冰河

宏病毒:感染word,excel等文件,美丽沙,台湾一号

CIH病毒:史上唯一破外硬件的病毒

红色代码:蠕虫+木马

网络安全

五大要素

保密性,完整性,可用性,可控性,不可抵赖性

网络攻击

拒绝重放ARP:截取某次合法数据拷贝,处于非法目的重新发送

拒绝服务DOS:对信息或资源的合法访问被无条件拒绝

旁路控制

授权侵犯

特洛伊木马

窃听

业务流分析

信息泄露

破坏信息完整性

加密技术

明文:实际数据

密文:加密数据

加密:明文转密文过程

解密:密文转明文过程

加密算法:公开;规则包括代换,置换

对称加密:安全性不高,密钥分发困难,但快,适合大数据;

        “3S5I”:DES(56位密钥),3DES,AQS,RC-5,IDEA(128位密码)

非对称加密:保密性好,速度慢,不适合文件加密,适合少量数据加密

        “AACC”:RSA,DSA,ECC

公钥体系中:公钥加密认证,私钥解密签名

常见网络诊断命令

Ping:检查网络是否联通

Tracert:确定IP数据包访问目标所采取的路径,若网络不通,能定位到具体哪里不通

Ipconfig:显示网络配置值(ip地址,MAC地址,网关地址)

 ipconfig/release:DHCP客户端手工释放IP地址

 ipconfig/flushdns:清楚本地DNS缓存内容

 ipconfig/displaydns:显示本地DNS内容

 ipconfig/registerdns:DNS客户端手工向服务器进行注册

 ipconfig/renew:DHCP客服端手工向服务器刷新请求(重新申请IP地址)

Nslookup:查询dns记录

Netstat:显示网络连接,路由表,网络接口信息

操作系统

死锁

产生条件

资源互斥

占用并等待

不剥夺

形成环路

破坏死锁

预防

避免:一般采用银行家算法

检测

解除

死锁计算

n个进程,r个资源

产生死锁的最大资源数:n*(r-1)

不发生死锁的最小资源数:n*(r-1)+1

数据库

三级模式两级映射

内模式:储存文件

概念模式(模式):基本表

外模式:视图

模式/内模式

内模式/外模式

数据库设计

需求分析:产出数据流图,数据字典,需求说明书

概念结构分析:设计ER图

逻辑结构分析:将ER转关系模式,即实际表和表属性

物理设计分析:生成物理数据库

关系代数运算

笛卡尔积X:S1 X S2,列S1+S1,数据行S1*S1

投影π:选择关系模式的某列

选择σ:选择关系模式的某条记录

自然连接:列:去重显示,记录:属性值相同的记录

函数依赖

部分函数依赖:A可确定C,AB也可确定C,AB中的一部分(即A)可以确定C,称为部分函数依赖

传递函数依赖:当A和B不等价时,A可以确定B,B可以确定C,则A可以确定C,是传递函数依赖

键与约束

实体完整性约束:主键约束

参照完整性约束:外键约束

用户自定义完整性约束:自定义,如age字段要求0-150

范式

第一范式:不存在复合属性

第二范式:不存在部分依赖

第三范式:不存在传递依赖

BC范式:每个属性都不部分依赖于候选键也不传递依赖于候选键

事务管理

原子性:操作,要么都做,要么都不做

一致性:数据,事务发生后数据一致

隔离性:执行,不同事务之间互不干涉

持续性:改变,结果持续性

并发控制

并发问题:丢失更新,不可重复读,读脏数据

控制技术:封锁(排他锁X,共享锁S)

三级封锁协议

一级封锁协议:事务在修改数据R之前,必须对其加排他锁,直到事务结束才释放。一级封锁协议可以解决丢失更新的问题

二级封锁协议:在一级封锁协议的基础上,加上事务T在读数据R之前必须先对其加上S锁,读完之后立即释放S锁。二级封锁协议可以解决读脏数据的问题

三级封锁协议:在一级封锁协议的基础上,加上事务T在读数据R前必须对其加上S锁,直到事务结束时释放S锁。三级封锁协议除了防止修改和不读脏数据外,还进一步防止了不可重复读

分布式数据库

分布式透明性

分片透明性:无需知道逻辑上储存的表如何让分块储存

位置透明性:无需知道数据储存位置的改变

逻辑透明性:无需知道局部使用的是那种数据结构

复制透明性:无需知道复制的数据从何而来

程序设计语言

低级语言:机器语言

高级语言:功能语言

各种程序语言特点

Fortrany语言:科学计算,执行效率高

Pscal语言:为教学而开发,表达能力强

C语言:指针操作能力强,高效

C++:面向对象,高效

C#:面向对象,中间代码,.NET

Lisp语言:函数式程序语言,符号处理,人工智能

JAVA语言:面向对象,中间代码,跨平台

Prolog:逻辑推理,简洁性,表达能力,数据库和专家系统

解释:将高级语言翻译成计算机认可的机器语言加以执行,生成不可执行文件可以逐条解释执行,用于调试模式,可以控制源程序,慢,低效

编译:将高级语言翻译成计算机认可的机器语言加以执行,生成独立可执行文件无法控制源程序,高效

程序编译基本原理

源程序

词法分析:单词排错

语法分析:语句排错

语义分析:语义排错,比如除数不为0,分析静态语义错误(编译阶段排查)和动态语义错误(运行阶段排查)

中间代码生成:进行与机器无关的代码优化,后缀式(逆波兰式),三元式(三地址码),四元式,图和树

代码优化

目标代码生成

目标代码

系统开发与运行

高内聚,低耦合

内聚 

内聚程度从低到高:偶然逻辑,时间过程,通信顺序,功能

内聚分类定义记忆关键字
偶然内聚一个模块内各元素之间没有任何联系无直接联系
逻辑内聚模块内执行逻辑相似,参数决定执行哪一个逻辑相似,参数决定
时间内聚需要同时执行的组合动作同时执行
过程内聚一个模块完成多个任务,这些任务必须按照指定的过程顺序执行指定过程顺序
通信内聚模块内所有处理元素都在同一数据结构上操作,或者处理使用相同的输入或产生相同输出相同数据结构,相同输入输出
顺序内聚一个模块中各个处理元素都密切相关与同一功能,且必须顺序执行,前一功能的输出就是下一功能的输入顺序执行,前输出为后输入
功能内聚最强的内聚,模块中所有元素共同作用完成一个功能,缺一不可共同作用,缺一不可

耦合

耦合程度从低到高:无直接数据,标记控制 ,外部公共,内容

耦合分类定义记忆关键字
无直接耦合模块之间无直接关系,分别从属不同模块的控制和调用,不传递任何信息无直接关系
数据耦合模块间又调用,传递简单的数据值(值传递)传递数据值调用
标记耦合模块间传递数据结构数据结构传递
控制耦合一个模块调用另一个模块,传递的是控制变量,被调用的模块通过改变控制变量的值决定执行某一功能控制变量,决定执行某一功能
外部耦合模块间通过外环境联合(如I/O)软件外部环境
公共耦合通过公共数据环境相互作用的那些模块间的耦合公共数据结构
内容耦合当一个模块直接使用另一个模块的内部数据,或者通过非正式入口转入另一个模块内部模块内部关联(直接或者非正式入口进入)

 系统设计

概要设计:设计系统总体结构,数据结构,数据库设计,编写概要设计文档,评审

详细设计:模块内详细算法设计,数据结构设计,数据库物理设计,其他设计(代码,界面,输入输出格式),编写详细设设计文档,评审

测试基础知识

成功的测试:是发现迄今为止未发现的错误

测试原则

尽早不断的测试

避免由开发人员和开发小组测试

设计测试方案时,不仅要确定输入数据,还要确定预期的输出结果

即要包含有效、合理的测试用例,也包含无效、不合理的测试用例

检验程序是否做了该做的事,且是否做了不该做的事

严格按照测试计划进行

妥善保存测试用例和测试计划

测试用例可重复使用或追加测试

测试阶段

单元测试:对单个模块进行测试(接口,信息,功能)。测试依据是软件详细说明书

集成测试:将模块组合起来测试(一次性组装:简单,省时,发现错少,适用小项目;增量组装:耗时,发现错误多,又可分为:自顶向下,自底向上,混合式)

确认测试:功能测试,分内部确认(无用户),Alpha测试(用户+开环环境测),Beat测试(用户+实际环境测),验收测试(用户根据SR对项目验收)

系统测试:性能测试,分负载测试(测极限),强度测试(资源特别低),容量测试(并发,最大用户数)

回归测试:软件改错或变更后,再测试 

动态测试:黑盒测试(功能测试,不了解软件代码结构),白盒测试(结构性测试,明确代码结构)

静态测试:

测试策略

自底向上:从底开始,需编写驱动程序,优点:较早验证底层模块

自顶向下:从顶开始,需编写桩程序,优点:较早验证主要控制和判断点

三明治:前两者混合,优缺点也混合,测试工作量大

测试用例设计

黑盒测试:等价划分,边界值划分

白盒测试

        语句覆盖:所有语句执行一遍

        判定覆盖:所有判断语句真假分支执行一遍

        条件覆盖:对代码中一个条件,可能式组合的,如a>0&b>0,判断覆盖只针对词组和的真假分支做两个测试用例,而条件覆盖是需要对每个独立的条件都做真假分支的测试用例,共可有4个测试用例,测试层级更高。主要区别:条件覆盖,针对每个条件都要真假覆盖,判定覆盖,只针对每个判断语句

        判定/条件覆盖使判定中每个条件的所有可能取值(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次,即两种覆盖的综合。

        条件组合覆盖:

        路径覆盖逻辑代码中所有可行路径都覆盖了,覆盖层级最高。

标准化知识产权

客体类型权力类型保护期限
公民作品署名权,修改权,保护作品完整权没有限制
发表权,适用权和获得报酬权作者终生及其死亡后50年(低50年的12月31日)
单位作品发表权,适用权和获得报酬权50年(首次发表后的第50 年的12月31日),若其间未发表,不保护
公民软件产品署名权,修改权没有时间限制
发表权,复制权,发行权,出租权,信息网络传播权,翻译权,使用许可权,获得报酬权,转让权作者终生及其死亡后50年(低50年的12月31日),合作开发以最后死亡作者为准
单位软件产品发表权,复制权,发行权,出租权,信息网络传播权,翻译权,使用许可权,获得报酬权,转让权50年(首次发表后的第50 年的12月31日),若其间未发表,不保护
注册商标有效期10年(若注册人死亡或倒闭1年后,为转移则可注销,期满后6个月内必须虚注)
发明专利权保护期为20年(从申请日开始)
实用新型和外观设计专利权保护期为20年(从申请日开始)
商业秘密不确定,公开后公众可用

面向对象分析,执行的活动:认定对象,组织对象,描述对象间的相互作用,确定对象的操作

面向对象设计,执行的活动:识别类及对象,定义属性,定义服务,识别关系,识别包

UML

关系

依赖:一个事务语义依赖于另一个事务变化

关联:分组合和聚合,组合式组成部分(关联性更强),聚合是聚在一起

泛化:一般/特殊   子类/父类的关系

实现:

设计模式

分类

口诀:工适模解(类)、适桥组装外享代(结构型)
创建型5结构型7                行为型11
工厂方法模式(facatory method)适配器模式(adapter)模板方法模式(template method)解释器模式(interpreter)
对象抽象工厂模式(abstract factory)
原型模式(prototype)

单例模式(singleton)
构建器模式(builder)

桥接模式(bridge)

组合模式(composite)

装饰模式(decorator)

外观模式(facade)

享元模式(flyweight)

代理模式(proxy)

职责链模式(chain of responsibility)

命令模式(command)

迭代器模式(iterator)

中介者模式(mediator)

备忘录模式(memento)

观察者模式(observer)

状态模式(state)

策略模式(strategy)

访问者模式(visitor)

创建型设计模式

设计模式名称简要说明记忆关键字
抽象工厂模式(abstract factory)提供一个接口,可以创建一系列相关或相互依赖的对象,而无需定他们具体的类生产成系列对象
构建器模式(builder)将一个复杂类表示与其构造相分离,使得相同的构建过程能够得出不同的表示复杂对象构造
工厂方法模式(factory method)定义一个创建对象的接口,但由其子类决定需要实例化哪一个类,工厂方法使得子类实例化的过程推迟动态生产一个对象
原型模式(prototype)用原型实例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象克隆对象
单例模式(singleton)保证一个类只有一个实例,并且提供一个访问它的全局访问点实例

结构型设计模式

设计模式名称简要说明记忆关键字
适配器模式(adapter)将一个类的接口转换成用户希望得到的另一种接口,它使原本不相容的接口得以相融后协同工作转换接口
桥接模式(bridge)

将类的抽象部分和他的实现部分分离开来,使他们可以独立的变化,抽象部分通过实现部分的接口与实现部分联系起来

此时接口就像一座桥梁一样

继承树拆分
组合模式(composite)将具有层级关系的多个对象组合成树形结构以表示“整体-部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性树形目录结构
装饰模式(decorator)

动态的给一个对象添加一些额外的职责、功能

就像添加了一些装饰,他提供了用子类扩展功能的一个灵活替代,比派生一个子类更加灵活

附加职责
外观模式(facade)为子类系统中的一组接口提供一个接口,从而简化该子类的使用,在外界看来,系统就只有一个接口(外观对外统一接口
享元模式(flyweight)支持大量细粒度对象共享元对象的有效方法文章共享文字方法
代理模式(proxy)为其他对象提供一个代理用于控制这个对象的访问快捷方式

行为型设计模式

数据结构

矩阵

对稀疏矩阵的压缩方式:

1,三元组顺序表

2,行逻辑连接的顺序表

3,十字链表

矩阵顶点的出度

有向图的矩阵,是非对称矩阵,各顶点的出度是矩阵行中1的个数

有n个顶点e条边(弧)的无向图邻接矩阵中:邻接大小为n^2,非0元素的个数是2e,0元素的个数是n^2-2e

有n个顶点e条边(弧)的有向图邻接矩阵中:邻接大小为n^2,非0元素的个数是e,0元素的个数是n^2-e

邻接矩阵优点

  • 方便检查任意一对顶点间是否存在边
  • 方便找任一顶点的所有邻接点(有边直接相连的顶点)
  • 方便计算任一顶点的度(从该点发出的边数为出度,指向该点的变数为入度)
    • 无向图:对应行(列)非0元素个数
    • 有向图:对应行非0元素的个数是出度,对应列非0元素的个数是入度

邻接矩阵缺点

  • 不便于增加和删除顶点
  • 邻接矩阵的空间复杂度为O(n^2),跟其有的边的条数无关,只与顶点数有关,无论边少还是边多空间复杂度都为O(n^2),浪费空间----存稀疏图(点很多而边很少)有大量无效元素
  • 浪费时间---统计稀疏图中一共有多少条边,因为必须遍历所有元素

树与二叉树

定义:

节点的度:某个节点的孩子节点的数,就是他的度(如图:红色数字就为每个节点的度)

树的度:正课书中度最大的节点的度,就为整个树的度(如图:树的度是2)

二叉树的重要特性:

1,在二叉树的第i层上,最多有2^(i-1)个节点(i>0)

2,深度为K的二叉树最多有2^k - 1个节点(k>0)

3,对任何一颗二叉树,如果其叶子节点数为x,度为2的节点数是y,则x=y+1

遍历

前序遍历:左右 1 2 4 5 7 8 3 6

中序遍历:左右 4 2 7 8 5 1 3 6

后续遍历:左右4 8 7 5 2 1 3 6

层次遍历:1 2 3 4 5 6 7 8

查找二叉树

所有左子树<根节点,右子树>根节点

最优二叉树(哈夫曼树)

树的路径长度;权;带权路径长度(路径长度*权);树的带权路径长度:

如图比如:

2的带权路径长度=2*2=4    4的带权路径长度3*4=12

8的带权路径长度=3*8=24     1的带权路径长度1*1=1

所有加起来4+12+24+1=41就是整棵树的带权路径长度

哈夫曼树的带权路径长度最短

例题1:

例题2:

线索二叉树

平衡二叉树

平衡度:左-右   (有则为1 ,没有则为0,左有右没有,1-0=1,右有左没有0-1=-1)

节点深度:有多少层,比如下图左图的39节点,左子树深度就有3层,右边为0

大顶堆

        根节点(堆顶元素)是所有节点中的最大值(父节点都大于左右子节点)。大顶堆常用于实现优先队列,且可用于构建堆排序算法。

小顶堆

        小顶堆中的根节点是所有节点中的最小值(父节点都小于左右子节点)。小顶堆常用于问题如:查找流中的前 K 个最小元素。

二叉排序树

一棵空树,或者是具有下列性质的二叉树:

(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;

(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;

(3)左、右子树也分别为二叉排序树;

左边子树值<根节点值<右子树值

例题:

构造结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/909533.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

面试问答-1

目录 1、线程和进程的概念&#xff0c;区别、以及什么时候用线程什么时候用进程 1.1 概念 1.2 区别 1.3 选择 2、TCP/IP分几层&#xff0c;每层的核心任务是什么 1.tcp/ip模型 tcp&#xff1a; udp&#xff1a; tcp、udp的区别 tcp/udp的连接过程&#xff1a; 3、htt…

矩阵特殊打印方式

小伙伴们大家好&#xff0c;好几天没更新了&#xff0c;主要有个比赛。从今天起继续给大家更新&#xff0c;今天给大家带来一种新的题型&#xff1a;矩阵特殊打印方式。 螺旋打印矩阵 解题思路 首先给大家看一下什么是螺旋方式打印&#xff1a; 就像这样一直转圈圈。 我想大多…

Docker篇(Docker安装)

目录 一、Centos7.x 1. yum 包更新到最新 2. 安装需要的软件包 3. 设置 yum 源为阿里云 4. 安装docker 5. 安装后查看docker版本 6. 设置ustc镜像源 二、CentOS安装Docker 前言 1. 卸载&#xff08;可选&#xff09; 2. 安装docker 3. 启动docker 4. 配置镜像加速 …

计算机网络——路由器构成

算路由表是分布式去算——你算你的&#xff0c;我算我的 输出队列非先来先传 调度发生在哪里 缓存队列一般是应对——来数据方向的速度过快问题

C# 实现读取Excel文件并设置单元格计算公式再保存

背景&#xff1a;需求需要读取数据导出成Excel文件&#xff0c;并且其中有一列需要赋值为公式&#xff0c;用于用户自己修改数据自动计算 导出Excel&#xff0c;我用到开源包MiniExcel Gitee地址MiniExcel源码介绍&#xff0c;功能说明 Nuget安装 搜索MiniExcel 导出代码如下&a…

基于matlab的SVPWM逆变器死区补偿算法仿真研究

背景介绍&#xff1a; 三相脉宽调制(pulse width modulation&#xff0c;PWM)电压源逆变器(voltage source inverter&#xff0c;VSI)的死区效应可导致电机相电压和相电流畸变、零电流钳位效应以及转矩和转速脉动&#xff0c;系统性能降低。为提高系统运行性能&#xff0c;对V…

Spring Validation数据校检

文章目录 Spring Validation1 关于Spring Validation2 使用流程3 快速入门4 运行异常处理4.1 说明4.2 处理异常4.3 明确提示消息 5 常用注解5.1 NotNull注解5.2 NotEmpty 注解5.3 NotBlank 注解5.4 Size 注解5.5 Range 注解 6 非POJO参数校验6.1 使用流程6.2 使用示例 Spring V…

2024数据库国测揭晓:安全与可靠的新标准,你了解多少?

2024年数据库国测的结果&#xff0c;于9月份的最后一天发布了。 对于数据库行业的从业者来说&#xff0c;国测是我们绕不过去的坎儿。那么什么是国测&#xff1f;为什么要通过国测&#xff0c;以及国测的要求有哪些&#xff1f; 这篇文章带大家一探究竟。 国测 自愿平等、客…

前端入门一之CSS知识详解

前言 CSS是前端三件套之一&#xff0c;在MarkDown中也完美兼容这些语法&#xff1b;这篇文章是本人大一学习前端的笔记&#xff1b;欢迎点赞 收藏 关注&#xff0c;本人将会持续更新。 文章目录 Emmet语法&#xff1a;CSS基本语法&#xff1a;css语法结构只有3种&#xff1a…

虚拟现实和增强现实技术,如何打造沉浸式体验?

内容概要 在这个科技飞速发展的时代&#xff0c;虚拟现实&#xff08;VR&#xff09;与增强现实&#xff08;AR&#xff09;技术的结合就像调皮的小精灵&#xff0c;一下子把我们的生活变得神奇又有趣。想象一下&#xff0c;你正在游戏中与精灵搏斗&#xff0c;突然间身边的客…

EL面包屑导航实现

前言 el-breadcrumb 是 Element Plus 中的面包屑导航组件&#xff0c;主要用于展示当前页面在整个应用程序中的位置&#xff0c;并提供导航功能 https://element-plus.org/zh-CN/component/breadcrumb 基础用法 在 el-breadcrumb 中使用 el-breadcrumb-item 标签表示从首页开…

Qt 练习做一个登录界面

练习做一个登录界面 效果 UI图 UI代码 <?xml version"1.0" encoding"UTF-8"?> <ui version"4.0"><class>Dialog</class><widget class"QDialog" name"Dialog"><property name"ge…

c语言简单编程练习10

1、typedef和#define的区别 在用作数据类型替换时的区别&#xff1a; #include <stdio.h> #include <unistd.h>typedef char * A; //typedef需要&#xff1b; #define B char *int main(int argc, char *argv[]) {A a,b;B c,d;printf("a_size%ld\n"…

【spark的集群模式搭建】Standalone集群模式的搭建(简单明了的安装教程)

文章目录 1、使用Anaconda部署Python2、上传、解压、重命名3、创建软连接4、配置spark环境变量5、修改 spark-env.sh配置文件6、启动hdfs&#xff0c;创建文件夹7、修改spark-defaults.conf配置文件8、修改workers配置文件9、修改log4j.properties配置文件&#xff08;可选&…

ST-GCN模型实现花样滑冰动作分类

项目源码获取方式见文章末尾&#xff01; 600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…

【RabbitMQ】03-交换机

1. 交换机 2. Fanout交换机 广播。生产者向exchange发消息 SpringBootTest public class SpringAmqpTest {Autowiredpublic RabbitTemplate rabbitTemplate;Testvoid testSimple() {String exchangName "hmall.fabout";rabbitTemplate.convertAndSend(exchangName…

【07】Maven项目多环境打包配置

&#xff08;1&#xff09;Web项目使用Maven进行多模块划分开发之后&#xff0c;面临一个问题&#xff0c;即如何加载不同环境的配置文件打包发布到不同的环境中&#xff1f; &#xff08;2&#xff09;不同的环境有开发环境、测试环境、线上生产环境等。 &#xff08;3&#x…

【Unity Shader】Special Effects(十)Change 变换(UI)

源码:[点我获取源码] 索引 Change 变换思路分析变换进度噪声纹理闪烁闪烁时机闪烁颜色闪烁动画Change 变换 变换的效果为图像间的切换带来动感过程,使用动画播放器: 思路分析 首先,从原始图像变换到目标图像是一个从0到1的过程,这个过程我们命名为变换进度(0为完全显…

关于wordpress instagram feed 插件 (现更名为Smash Balloon Social Photo Feed)

插件地址&#xff1a; Smash Balloon Social Photo Feed – Easy Social Feeds Plugin – WordPress 插件 | WordPress.org China 简体中文 安装后&#xff0c;配置教程&#xff1a; Setting up the Instagram Feed Pro WordPress Plugin - Smash Balloon 从这里面开始看就…

JavaScript的对象事件处理程序

一、对象的事件 对象的事件是指在一个对象上发生的特定动作或状态改变。对象可以是现实世界中的物体、概念、数据结构等。根据对象的类型和功能&#xff0c;可能会有不同类型的事件。 对象的事件一般由对象的方法或属性来处理和触发。通过定义对象的方法和属性&#xff0c;可…