计算机组成和数据结构
CPU
运算器
- 算术逻辑单元 :算数、逻辑运算
- 累加寄存器AC:为算数逻辑运算提供工作区
- 数据缓冲器DR:读写操作时暂存指令或字
- 程序状态字寄存器PSW:保存算数/逻辑指令结果建立的条件码的内容
控制器
- 指令寄存器IR:对用户透明,指令从内存缓冲到寄存器,然后在IR中缓存
- 程序计数器PC:用于放下一条指令所在单元地址的地方
- 地址寄存器AR:当前CPU访问的单元地址
- 指令编码器ID: 对指令中的操作码部分解析
寄存器组
内部总线
输入
键盘输入一般采用中断方式管理,以便更有效的处理输入事件
磁盘调度
在磁盘调度管理中一般先进行移臂调度,再进行旋转调度
编译程序不参与用户的运行控制,而解释程序参与
浮点数
浮点数由尾数M和阶码E构成。基数为2的数F的浮点数表示为
(1)E阶码是整数,其位数k+1决定了浮点数表示的数值范围,也就是决定了数据的大小,或小数点在数据中的真实位置。阶符决定阶码的正负。即阶码越长,所能表示的范围越大
(2)M尾数是小数,其位数n+1决定了浮点数的精度,如果尾数采用小数且位数n足够长,则当浮点数运算需要对尾数运算结果舍入时,造成的数据精度损失会比较小。即尾数越长,所能表示的精度越高
当两个浮点数相加时,需要先对阶
- 将小阶向大阶对齐
- 将尾数右移n位
计算机体系分类
Flynn分类法
- 单指令流单数据流 SISD
- 单指令流多数据流 SIMD(无实例)
- 多指令流单数据流 MISD
- 多指令流多数据流 MIMD
CISC 复杂指令集计算机
- 指令种类多而复杂,
- 长度是变化的,
- 寻址方式复杂多样,
- 使用微程序控制技术实现译码,
- 通用寄存器数量一般,
- 不支持流水线技术
RISC 精简指令集计算机
- 指令少而简单,
- 长度是固定的,
- 寻址方式少,
- 使用硬件(硬布线控制逻辑)实现译码,
- 通用寄存器数量多,
- 支持流水线技术
SRAM和DRAM
SRAM
- 数据由锁存器记忆,不需要另设电路定期刷新
- 存取速度很快(采用考虑与制作CPU相同的半导体工艺)
缺点:
- 所有元件较多,集成度比DRAM低
- 体积较大,制造成本比DRAM高
DRAM
- 所用原件少,集成度高
- 功耗低,便于大规模集成
缺点:
- 需要定期刷新,外围电路比较复杂
- 刷新器件时不能进行读写操作,使有效利用时间受到限制
DMA(Direct Memory Access 直接内存访问)
传送方式:让存储器与外设、或外设与外设之间直接交换数据,不需要CPU的介入,并且内存地址的修改和传送结束后的报告全部由硬件实现,提高了数据的传输速度。
周期:一个DMA传送需要消耗一个总线读取周期(DMA周期),其中每传输一个数据,仅占用一个存储周期
指令系统
寻址方式
- 立即寻址: 操作数(e.g. 35)作为指令的一部分直接写在指令中)(最快)
- 寄存器寻址: 指令所要的操作数已存储在寄存器中 ,访问时不用访问内存 (其次)
- 直接寻址:指令所要的操作数存放在内存中 (最慢)
处理方式
- 顺序串行
- 流水处理
- 吞吐率:取子过程中的最大值
存储
高速缓存 Cache
- 控制部分
- 判断是否命中,命中直接在cache中寻址,未命中则遵循替换原则将主存的信息放到cache中的某一块
- 缓存部分
- 存放主存的部分复制信息
- 地址映像方法
- 直接映像
- 主存的快和cache中块的对应关系式固定的,地址变换简单,灵活性差
- 全相联映像
- 允许主存的任意一块调入cache的任何一块的空间中,主存中块调入cache的位置不受限制,灵活性高,变换较为复杂
- 组项链映像
- 前两者折中
- 直接映像
- 替换算法
- 随机替换
- 先进先出
- 近期最少使用(平均命中率最高)
- 优化替换
- 性能分析
-
主存储器
-
虚拟存储器
- 页式虚拟存储器
- 段式虚拟存储器
- 段页式虚拟存储器
-
外存储器
- 磁盘存储器
- 光盘存储器
总线
系统总线(并行)
- ISA
- EISA
- PCI
外部总线(并行)
- RS-232C
- SCSI
- USB
- IEEE-1394
内部总线
安全系统
公钥加密(非对称算法)
- DSA
- ECC:国密SM2数字证书采用,相对于RSA来有加密强度高,计算速度快的特点
- RSA:X.509数据证书标准推荐使用,一般用于数字签名
私钥加密(对称算法)
- DES
- RC5:对大量明文消息进行加密传输
消息摘要算法
- MD5(信息摘要算法)
- SHA(安全散列算法)
分组加密算法
- AES
加密模型
认证模型
私钥用于解密和签名,公钥用于加密和认证
数字证书CA
CA的证书用CA的私钥作数字签名,要验证证书的真伪,可以利用CA的公钥验证CA的数字签名
应用层网关
病毒
-
蠕虫病毒
- 通过互联网传播,共计互联网内的所有计算机
-
宏病毒
- 寄存在文档或模版的宏中的计算机病毒
-
木马
- 通过远程网络进行控制的恶意程序
-
引导盘病毒
- 破坏引导盘
-
CIA
防火墙
- 数据过滤
- 源IP地址
- 源端口号
- 目标IP地址
- 目标端口号
Web应用墙
通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的产品;能防御SQL注入,跨站脚本攻击,参数篡改,应用平台漏洞攻击,拒绝服务攻击等。
设计模式
创建型
- 抽象工厂模式
- 定义多种工厂,每个工厂能生产多种对象
- 工厂方法模式
- 创建一个工厂接口和多个工厂实现类
- 原型
- 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象
- 单例模式
- 保证一个类仅有一个实例,并提供一个访问他的全局访问点
- 建造者模式
- 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示
结构型
- 适配器模式
- 将一个类的接口转换成用户希望的另一个接口
- 桥接模式
- 将抽象部分与实现部分分离,使它们都可以独立的变化
- 组合模式
- 使得用户对单个对象和组合对象具有一致性;
- 修饰模式
- 动态的给对象添加一些额外的职责
- 外观模式
- 为子系统中的一组接口提供一个一致的界面,提供一个容易使用的外观层
- 享元模式
- 实现对象的共享,创建共享池
- 代理模式
- 创建类的代理类
行为型
- 责任链模式
- 使多个对象都有机会处理请求,避免请求发送者与接受者耦合在一起,让多个对象都有可能接受请求,将这些对象连成一条链(拦截器中常用)
- 命令模式(Command)
- 模式当中存在调用者、接收者、命令三个对象,实现请求和执行分开;调用者选择命令发布,命令指定接收者
- 解释器模式
- 给定一个解释器用于解释语言中的句子(正则表达式解释器)
- 迭代器模式
- 提供一种方法在不暴露该对象的内部表示的同时,可以顺序访问一个对象中的各个元素
- 中介者模式
- 使用中介者模式将显示和操作分离,一般用于定义良好但是由于复杂方式难以通信的一组对象
- 备忘录模式
- 目的是保存一个对象的某个状态,以便在适当的时候回复对象(备份)
- 观察者模式
- 定义对象间一种一对多的依赖关系,当一个对象的状态改变时,所有依赖于他的对象都会得到通知并自动更新,使所要交互的对象尽量松耦合
- 一个Subject类可以有多个ConcreteSubject子类,一个Observer类也可以有多个ConcreteObserver子类,一个Subject对象可以对应多个Observer对象
- 策略模式
- 定义一系列算法并将其封装起来啊使它们可以相互替换
- 模版方法模式
- 定义一个操作中的算法骨架,将其一些特定的步骤封装成模版方法
- 访问者模式
- 将数据结构和数据操作分离,在被访问的类里面加一个对外提供接待访问者的接口,访问者封装了对被访问者结构的一些杂乱操作,解耦结构与算法,同时具有优秀的扩展性。
耦合类型
- 数据耦合:当一个模块访问另一个模块时,彼此之间通过简单数据参数来交换输入、输出信息的
- 公共耦合:若一组模块都访问同一个公共数据环境(全局数据结构,共享的通信区,内存的公共覆盖区),则他们之间的耦合就成为公共耦合
- 外部耦合:一组模块都访问同一个全局简单变量而不是同一全局数据结构,并且不是通过参数表船体该全局变量的信息
- 标记耦合:一组模块通过参数表(或数据结构体)传递记录信息,或者模块A可以直接访问模块B的内部数据时
- 控制耦合:控制模块调用另一个模块时,传递的是控制变量,被调用块通过该控制变量的值有选择的执行块内某一功能(控制变量)
死锁
互斥资源竞争且不产生死锁的条件:
nw < 2m; 其中n为互斥资源的个数,m为资源总数,w为每个进程需要的资源数
n(w-1) > m; 互斥资源可能发生死锁的条件
例题:
解析:根据题目可得,一共有6个并发进程,且每个进程都需要消耗2个资源
根据公式 nw < 2m; n = 6, w = 2;
可得 m > 6
所以系统产生不发生死锁的资源R的最小数目为7
例题2
解析:根据题目的所得,本题问的主要是可能发生死锁的条件
根据公式n(w-1) >m; 因此我们需要找到所有满足这个公式的情况
根据计算所得2,4,5满足条件
内聚类型
- 时间内聚:把需要同时吉星的动作组合在一起形成的模块
- 过程内聚:指定一个模块完成多个任务,这些任务必须按照指定的过程执行
- 信息(通信)内聚:模块内的所有处理元素都在同一个数据结构上操作,或者个处理使用相同的输入数据或产生相同的输出数据
- 功能内聚:模块内的所有元素共同作用完成一个功能,缺一不可
- 巧合内聚:一个模块各个处理元素之间没有任何联系
- 逻辑内聚:模块内执行若干个逻辑上相似的功能,通过参数决定该模块完成哪一个
- 顺序内聚:一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行
数据流图(DFD)
数据流图描述了数据在系统中如何被传送或变换,以及描述如何对数据流进行变换的功能,用于功能建模
数据流图四要素
- 外部实体:表示要处理的数据的输入来或处理结果要送往何处,不属于目标系统的一部分
- 数据流:数据沿着箭头方向的流动
- 加工:数据对象的处理或变换
- 数据存储:在数据流中起到保护数据的作用,可以是数据库文件或任何形式的数据组织
设计视图
一、静态视图
-
类图
展现了一组对象、接口、协作和他们之间的关系,通常包含:类、接口、协作、依赖、泛化和关联关系
类图中的关系
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
泛化:是一种继承关系,表示一般与特殊的关系,它指定了子类如何继承父类的所有特征和行为
实现: 是一种类与接口的关系,表示类是接口所有特征和行为的实现。
关联:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
聚合:是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
组合:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。
依赖:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.
原文链接:https://blog.csdn.net/qq_34801169/article/details/102718891
-
对象图
一般是某一时刻一组对象以及他们之间的关系。对象图中一般包括对象和链。
二、动态视图
-
序列图
以对象之间消息交互的时间顺序组织对象间交互活动的交互图
交互图
-
活动图
-
状态图
展现了一个状态机,由状态、转换、事件和活动组成。
状态图关注系统的动态视图,对于接口、类和协作的行为建模尤为重要,强调对象行为的事件顺序。
-
部署图
用于展示系统中软件组件和硬件之间的物理关系
通信图
磁盘调度
磁盘调度分为移臂调度和旋转调度两类,在移臂调度的算法中,先来先服务和最短寻道时间优先算法可能会随时改变移动臂的运行方向
惯用模型
瀑布模型
提出了一个系统的、顺序的软件开发方法,从用户需求规格说明开始,通过策划、建模、构建和部署的过程,最终提供完整的软件支持
(1)适用于需求确定且清晰,开发过程无大的变更流的软件开发。
(2)不适用于需要快速开发、交付,需求模糊且易产生变更的软件开发。
-
增量模型
- 将待开发软件系统模块化
- 将待开发软件系统组件化
(1)适用于可以分批次交付、系统可模块化的软件,或者开发人员对相关领域不熟悉难以一次性开发,项目管理人员有较高把握全局水平的开发。
(2)不适用于软件系统很难被模块化的软件开发。
原型模型
定义了软件的一些基本任务,但是没有详细定义功能和特性需求
(1)适用于用户需求模糊、经常变化,系统规模不太大也不太复杂的软件开发。
(2)虽然原型可以作为一个独立的过程模型,但是更多时候是作为一种技术,可以在本博客提到的任何一种模型中使用。即使需求很模糊时,原型模型都能帮助软件开发人员和利益相关者更好地理解究竟需要做什么。
螺旋模型
螺旋模型是一种演进式软件过程模型。它结合了原型的迭代性质和瀑布模型的可控性和系统性特点。它具有快速开发越来越完善的软件版本的潜力。
开发大型系统和软件很实际的方法(但要解决好上面描述的模型存在的问题)
喷泉模型
面相对象开发模型,需要以用户需求为动力,以对象为驱动,适合于面相对象的开发方法,支持软件重用,该模型认为软件开发过程自下而上周期的各个阶段是相互迭代和无间隙的特性
进程管理
页式存储管理
设计时使用逻辑地址,但在运行时需要用物理地址在内存中寻找,这就涉及到逻辑地址和物理地址的转换问题,软考中经常考到。
页式存储是把计算机的存储器划分成大小相等的多个区域,每个区域称为一块,并对它们按照顺序编号。
物理地址 = 块号 X 块长 + 页内地址
例子
比如进程 P 有 4 个页面,页号分为是 0 到 3,页面大小为 4K,页表如下所示,已知逻辑地址为 1A29H,求十六进制的物理地址。
因为页面大小为 4K,4K = 2 的 12 次方,可得页内地址为 12 位。
已知逻辑地址为 1A29H,转换为二进制就是 0001 1010 0010 1001,后面的 12 位(1010 0010 1001)就是页内地址。
可得前面四位 0001 就是页号,查表可得块号为 3,转换二进制为 0011。
所以物理地址的二进制为 0011 1010 0010 1001,转换十六进制为 3A29H
段式存储管理
段式存储管理是将页式存储组织的页大小设置为不固定。
段内地址是连续的,段和段之间的地址是不连续的,段式存储的逻辑地址由段号和段内地址组成。
段式存储结构
段页式存储管理
段页式存储管理方式结合了页式存储和段式存储的方法,采用了分段的方式,每一段作业独立编程,再把段分成若干个页面,相当于在段式的基础上再套了一层页式存储算法
题目例子
假设段页式存储管理系统中的地址结构是这样的,那么系统最多可以有多少个段,每个段最大允许有多少个页,每个页的大小为多少?
解析:
页内地址的长度为12 - 0 + 1 = 13 位,所以 2的13次方为8192;即8K
页号部分的长度地址是11位,所以每个段最大允许有2048个页
段号部分的地址长度是8位,所以最多可以有255个段
参考原文链接:https://blog.csdn.net/qq_41464123/article/details/127067995
单缓冲区时间/双缓冲区时间计算
例题
单缓冲区时间 = (读入缓冲区时间 + 缓冲到用户群时间) * 磁盘块 + 数据处理时间
双缓冲区时间 = max(读入缓冲区时间,缓冲到用户群时间) * 磁盘块 + min(读入缓冲区时
间,缓冲到用户群时间) + 数据处理时间
所以根据公式
单缓冲时间 = (15 + 5) * 10 + 1 = 201
双缓冲时间 = 15 * 10 + 5 +1 = 156
程序语言设计
低级语言和高级语言
-
低级语言
- 汇编
- 指令语句
- 伪指令语句
- 宏指令语句
- 机器于语言
- 汇编
-
高级语言
-
中间代码
- 后缀式
- 三地址码
- 语法树
程序语言
-
命令式程序设计语言
- FORTRAN, PASCAL, C
-
面相对象程序设计语言
- 对象
- 类
- 继承
-
函数式程序设计语言
- LISP,使用大量递归
-
逻辑型程序设计语言
- Prolog
基本成分
-
数据成分
- 常量和变量
- 全局量和局部量
-
运算成分
- 运算符合及规则
-
控制成分
- 顺序结构
- 选择结构
- 循环结构
编译程序过程
-
词法分析
- 对源程序从前到后逐个字符进行扫描,从中识别出一个个‘单词’符号
-
语法分析
- 根据语法规则将‘单词’符号序列分解成各类语法单位,查询是否存在语法上的错误(if,end if 不匹配),分析程序语句的结构是否合法
-
语义分析
- 结构上审查程序设否存在语义错误(运算符和运算类型不符合)
- 无法发现程序中所有的语义错误
-
中间代码分析
-
代码优化
- 对前阶段产生的中间代码进行变换或改造
-
目标代码生成
- 将中间代码变换为成特定机器上的绝对指令代码
-
符号表管理
- 符号表中存储这源程序中一些相关符号的类型和特征信息
-
出错处理
语义
静态语义
- 语法制导翻译:将语言结构的语义以属性的形式赋予代表测激斗的文法符号
动态语义
函数
-
函数定义
-
函数声明
-
函数调用
-
传值调用
- 函数内部对形参的修改不影响实参的值
-
引用调用
- 将实参的地址传递给形参,是得形参的地址对应实参的地址
-
不确定有限自动机 VS 确定有限自动机
对于每一个可能的输入都只有一个状态转移的是确定有限自动机;对于每一个可能的输入可能有多个状态转移的是不确定有限自动机
M1是不确定有限自动机,因为从在A状态输入0的话可能保留在A状态,也有可能到B状态
M2是确定有限自动机
递归下降分析法是一种自上而下的语法分析
数据库技术
模式
- 内模式(存储模式):数据物理结构和存储方式的描述(存储文件),是数据库在物理存储方面的描述,定义所有的内部记录类型,索引和文件的组织方式,以及数据控制方面的细节
- 外模式(用户模式):将表进行一定处理后给用户使用(视图),是用户和数据库系统的接口,是用户用到的那部分数据的描述
- 概念模式(模式):要求物理数据划分成一张张表(基本表),是数据库中全部数据的整体逻辑结构的描述
映像
- 模式/内模式映像:模式和内模式之前的相互转换(物理独立性)
- 外模式/模式映像:外模式和模式之间的相互转换(逻辑独立性)
设计
- 需求分析:分析数据存储的要求,主要产出物有数据流图,数据字典,需求说明书
- 概念结构设计:设计E-R图
- 逻辑结构设计:将E-R图转换为实际的表和表中列的属性
- 物理设计:生成物理数据库
数据库范式
1NF:是指数据库表的每一列(即每个属性)都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。简而言之,第一范式就是无重复的列。
2NF:是否存在非主属性对码的部分函数依赖(达不到 -> 存在冗余,修改操作的不一致性)
3NF:无传递(A5 -> A1; A1 -> A3)
BCNF:在3F的基础上删除主属性对码的部分与传递函数依赖(无传递、无部分依赖)
关系规范化在数据库设计的逻辑设计阶段进行
主键判断
例题
解析:判断R中的主键需要将依赖集F中的推导式写成Left和Right两边,并统计出现在Left中而未出现在Right中的键;这些就是主键
举例说明,在本题中对于 A1 -> A3,将A1写入Left中,并将A3写入Right中
由此可得到:
Left:A1, A2, A5, A6, A3
Right: A3, A4, A1, A6
然后再Left中删去在Right中出现的键
Left:A1, A2, A5, A6, A3
所以本题的答案是A2A5
透明
分片透明:用户或应用程序不需要知道逻辑上访问的表具体是怎么分块存储的
复制透明:采用复制技术的分布方法,用户不需要知道数据是复制到那些节点的,如何复制的
位置透明:用户无需知道数据存放的物理位置
逻辑透明(局部数据模型透明):用户或应用程序无需知道局部场地使用的是哪种数据模型
对更新满足的语句
WITH CHECK OPTION 表示对用户获得权限UPDATE,INSERT,DELETE操作是保证更新
WITH GRANT OPTION 表示获得权限的用户还可以将该权限赋给其他用户
多媒体技术
媒体
- 感觉媒体:直接作用于人的感觉器官(文本,图形,动画,音频和视频)
- 表示媒体:传输感觉媒体的中介媒体(编码类:文本编码,声音编码)
- 表现媒体:信息输入和输出的媒体(键盘,麦克风,显示器)
- 存储媒体:存储媒体的物理介质(磁盘,光盘,内存)
- 传输媒体:传输媒体的物理介质(电缆,光钎,双绞线)
人的音频信号是20Hz-20KHz
语音信号定义的最高频率为4kHz,数字语音的采样频率定义为8kHz
计算机获取模拟视频信息的过程中首先要进行A\D转换
测试
测试用例设计
当设计测试用例时,一个好的无效等价类,应该只从一个角度违反规则。
题目中给了三个要求,分别是年龄、学历和专业;因此一个好的无效等价类应该满足三者中的二者;
例:(18,本科,电子工程) 是一个好的测试用例
(18,大专,电子工程)不是一个好的测试用例
测试内容
回归测试
修改了旧代码后,重新进行测试以确认修改没有引入新的错误或者导致其他代码产生错误
功能测试
检查软件是否能实现需求中指定的那些功能
性能测试
测试软件的安全性、精准性、速度和可靠性
验收测试
客户对系统进行测试以验证软件系统是否符合他们对需求的理解
软件维护
正确性维护
改正在系统开发阶段已发生的而系统测试阶段尚未发现的错误
适应性维护
应用软件适应新型技术变化和管理需求变化而进行的修改
完善性维护
为扩充功能和改善性能而进行的修改;主要针对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征
预防性维护
为了改进应用阮籍的可靠性和可维护性,为了适应未来的软硬件环境的变化,主动增加预防性的功能,以使应用系统适应各类变化而不被淘汰
网络协议
网络模型
OSI七层网络模型 | TCP/IP概念模型 | 对应网络协议 | 主要作用 | 代表设备 |
应用层 | 应用层 | HTTP, FTP, NFS | 计算机用户,以及各种应用程序和网络之间的接口;直接向用户提供服务,完成用户希望在网络上完成的各种工作 | |
表示层 | Telent, Rlogin, SNMP | 对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。该层的主要功能是:处理用户信息的表示问题,如编码、数据格式转换和加密解密 | ||
会话层 | SMTP, DNS | 用户应用程序和网络之间的接口;组织和协调两个会话进程之间的通信,并对数据交换进行管理 | ||
传输层 | 传输层 | TCP, UDP | 建立,维护和拆除传输连接的功能;向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输,同时向高层屏蔽下层数据通信的细节,向用户透明的传送报文(通信) | |
网络层 | 网络层 | IP, ICMP, ARP | 管理数据通信,控制数据链路层和传输层之间的信息转发、建立、维持和终止网络的连接,向传输层提供最基本的端到端的数据传输服务 | 路由器 |
数据链路层 | 数据链路层 | FDDI,Ethernet, Arpanet | 在物理层提供的比特流的基础上,通过差错控制,流量控制等方法,将有差错的物理线路变为无差错的数据链路(保证安全) | 网桥,交换机,VLANtag |
物理层 | IEEE 802.1A等 | 利用传输介质为数据链路层提供物理连接,实现相邻计算机节点之间的比特流透明传送 | 中继器,集线器 |
TCP、UDP以及相关协议
补充:HTTPS 基于 SSL和TCP,默认端口为443
邮件传输过程中:
- SMTP协议主要用于发送邮件
- POP3协议主要用于接收邮件
- MIME协议主要用于在电子邮件附加多媒体数据时支持邮件传输
- IMAP协议是交互邮件访问协议
TCP/IP网络中,通信是在传输层完成的,在OSI/RM中也是在传输层实现的
DHCP协议的功能是自动分配IP地址
FTP中控制端口为21,上传文件时端口为20,文件传输协议
SFTP = FTP + SSL,保证文件传输的安全性
SNMP(简单网络管理协议):用于管理在IP网络管理网络节点(服务器,工作站,路由器,交换机等)的一种标准协议,使网络管理员能够管理网络效能,发现并解决网络问题以及规划网络增长。通过 SNMP 接收随机消息(及事件报告)网络管理系统获知网络出现问题。
MIME协议并未改动SMTP或是取代它,而是相当于游戏内的一个DLC,也就是继续使用目前的格式,但是增加了邮件主题的结构,并定义了传送非ASCII码的编码规则
远程登录控制:
SSH:安全外壳协议,为远程登录会话和其他网络服务提供安全性协议
Telnet:远程登录协议,允许用户在本地计算机上控制远程主机的操作
IGMP:Internet组管理协议,负责进行IPV4组播成员之间的信息交互
RFB:远程帧缓冲协议,用于远程访问图形界面
通常使用IPSec为IP数据报文进行加密
子网划分
子网一共被划分为A, B, C, D, E五类网络
可用的主机地址 = 2的主机位次方 - 2
222.125.80.128/26表示前26位为网络位,后面6位为主机位
所以可用的主机地址 = 2的6次方-2 = 62
因为只需要看最后6位,所以将128转换成二进制后,得到的是10000000
只对最后6位进行运算,最小的地址是10000001;最大的地址是10111110
所以最小的地址是222.125.80.129,最大的地址是222.125.80.190
ipconfig相关指令
\? | 显示此帮助消息 |
/all | 显示本机TCP/IP完整配置信息 |
/release | 释放IP4地址租约 |
/flushdns | 清除本地DNS缓存 |
/displaydns | 显示本地DNS内容 |
/registerdns | DNS客户端手工向服务器进行注册 |
/renew | DHCP客户端手工向服务器刷新请求 |
/showclassid | 显示网络适配器的DHCP类别信息 |
/setclassid | 设置网络适配器的DHCP类别 |
/renew “Local Area Connection" | 更新“本地连接"适配器的由DHCP分配IP地址的配置。 |
/showclassid Local* | 显示名称以Local开头的所有适配器的DHCP类别ID |
/setclassid“Local Area Connection"TEST | “本地连接"适配器的DHCP类别ID设置为TEST |
算法
线性表存储
访问 | 插入 | 删除 | |
顺序存储 | O(1) | O(n) | O(n) |
链式存储 | O(n) | O(n) | O(n) |
单项循环列表存储 | O(n) | O(1) | O(n) |
总结:顺序存储中逻辑上相邻的元素,物理位置上也相邻,所以在一直第一个元素位和元素序号的情况下可以直接按照序号访问元素,所以位O(1);在插入元素的时候,最差的情况下需要将所有元素的位置全部移动,故时间复杂度为O(n)
链式存储中逻辑上相邻的元素,其物理位置不要求相邻,因此需要额外的存储空间表示元素之间的顺序关系。在链表上查找元素和插入元素的运算时间复杂度都为O(n)
主定理
主要解决一下形式的递归算法的时间复杂度
T(n) = aT(n/b) + f(n)
a为子问题个数,b为子问题的规模其中需满足α ≥1,b > 1
则答案有三种情况:
- 若函数 nlogα更大,则 T(n)= O(nlogαa);
- 若函数f(n)更大,且满足af(n/b) ≤cf(n) ,则T(n)=O(f(n));
- 若两函数相等,则T(n)=O(nlog αlogk+1n)
简化一下,即为比较f(n)和O(nlogα)的大小,取大的,若是相同就加上logn的复杂度。
分治
分治方法是一种重要的算法设计技术(设计策略),该策略将原问题划分成n个规模较小而结构与原问题相似的子问题;递归地解决这些子问题;然后再合并其结果,最终得到原问题的解。
分治算法往往用递归技术来实现,但并非必须。
分治算法最理想的情况是划分为k个规模相等的子问题,但很多时候往往不能均匀地划分子问题。
分治算法的代价在划分子问题和合并子问题的解上,根据不同的问题,划分的代价和合并的代价有所不同。例如归并排序中,主要的计算代价在合并解上,而在快速排序中,主要的计算代价在划分子问题上。
归并排序
归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法,归并排序对序列的元素进行逐层折半分组,然后从最小分组开始比较排序,合并成一个大的分组,逐层进行,最终所有的元素都是有序的
归并排序的基本思路是将待排序的数组分成两个部分,分别对这两部分进行排序,然后将排好序的两部分合并成一个有序数组。这个过程可以用递归来实现。具体的实现步骤如下:
分解:将待排序的数组不断分成两个子数组,直到每个子数组只有一个元素为止。
合并:将相邻的两个子数组合并成一个有序数组,直到最后只剩下一个有序数组为
原文链接:https://blog.csdn.net/weixin_36755535/article/details/131143793
时间复杂度是O(nlogn)
空间复杂度是O(1)
直接插入排序
1.从第一个元素开始,该元素可以认为已经被排序
2.取下一个元素tem,从已排序的元素序列从后往前扫描
3.如果该元素大于tem,则将该元素移到下一位
4.重复步骤3,直到找到已排序元素中小于等于tem的元素
5.tem插入到该元素的后面,如果已排序所有元素都大于tem,则将tem插入到下标为0的位置
6.重复步骤2~5
时间复杂度:最坏情况下为O(N*N),此时待排序列为逆序,或者说接近逆序
最好情况下为O(N),此时待排序列为升序,或者说接近升序。
空间复杂度:O(1)
冒泡排序
思路:
左边大于右边交换一趟排下来最大的在右边(每次进行一次交换就会把当前最大值的放到最后)
时间复杂度:最坏情况:O(N^2)
最好情况:O(N)
平均时间复杂度O(N^2)
空间复杂度:O(1)
快速排序算法
对冒泡排序的一种改进,一趟排序中把将要排序的数据分成两个独立的部分,对这两部分进行排序使得其中一部分所有数据比另一部分都要小,然后继续递归排序这两部分,最终实现所有数据有序
是一种不稳定的排序算法,会改变数据元素的相对位置,也是内排序中平均效率最高的排序算法
选择基准元素
快速排序的第一步是选择一个基准元素,一般情况下是选择数组的第一个元素或最后一个元素作为基准元素。选择基准元素的目的是将数组划分成两个部分,使得左边部分的元素都小于等于基准元素,右边部分的元素都大于等于基准元素。
划分数组
在选择了基准元素之后,需要将数组划分成两部分。具体方法是使用两个指针 i 和 j 分别从数组的左右两端开始扫描,当 i 指向的元素大于等于基准元素时,停止移动,当 j 指向的元素小于等于基准元素时,停止移动,然后交换 i 和 j 指向的元素,继续移动指针。当 i 和 j 相遇时,将基准元素与 i 指向的元素交换位置,这样就完成了一次划分。
递归排序
划分数组之后,将左右两部分分别递归进行排序,直到每个部分只剩下一个元素或空数组为止。递归排序的过程中,需要重复执行以上两个步骤,即选择基准元素和划分数组。
合并数组
在递归排序完成之后,需要将左右两部分合并成一个有序数组。由于左右两部分都已经有序,可以使用归并排序的思想来合并数组。
快速排序的平均时间复杂度为 O(nlogn)
快速排序的空间复杂度为 O(logn) 至 O(n);最差情况下位O(n),平均空间复杂度为O(logn),最好情况下为O(1)
原文链接:https://blog.csdn.net/weixin_36755535/article/details/131145158
简单选择排序
每次从待排序列中选出一个最小值,然后放在序列的起始位置,直到全部待排数据排完即可。
实际上,我们可以一趟选出两个值,一个最大值一个最小值,然后将其放在序列开头和末尾,这样可以使选择排序的效率快一倍。
时间复杂度:最坏情况:O(N^2)
最好情况:O(N^2)
空间复杂度:O(1)
堆排序
堆排序的时间复杂度为O(N*log2N);
数据结构
树
总结点数 = 度数 * 该度所有的节点个数
假设 度为4的节点数位n4,度为3的节点数位n3,度为2的节点数位n2,度为1的节点数位n1,度为0(叶子节点数)的节点数位n0
n4 + n3 + n2 + n1 + n0 - 1 = 4 * n4 + 3 * n3 + 2 * n2 + n1
将各个数值带入
可得n0 = 40
所以叶子节点的个数是40个
软件质量管理
McCabe度量法
一种基于程序控制流的复杂性度量方法;
环路的复杂性为 V(G) = m - n + 2
m为图中的路径数,n为图中的节点数
或者
闭环个数+1;闭环一般是指for或者while循环
ISO/IEC软件质量模型
-
功能性
- 适用性
- 准确性
- 互用性
- 依从性
- 安全性
-
可靠性
- 成熟性
- 容错性
- 易恢复性
-
易使用性
- 易理解性
- 易学性
- 易操作性
-
效率
- 时间特性
- 资源特性
-
可维护性
- 易改变性
- 易分析性
- 稳定性
- 易测试性
-
可移植性
- 适应性
- 易安装性
- 一致性
- 易替换性
软件成熟度模型(CMM)-- 5个成熟等级
Level1 初始级
过程通常是随意且混乱的,一般依赖于组织内人员的能力与英雄主义
Level2 已管理级
组织要确保策划、文档化、执行、监督和控制项目级的过程,并建立明确的目标
Level3 已定义级
根据自身的特殊情况定义适合自己企业和项目的标准流程,将这套管理体系与流程予以制度化,并且开始项目积累和收集企业资产
Level4 量化管理级
建立了产品质量、服务质量和过程性能的定量;3和4的区别在于对过程性能的可预测
Level5 优化级
通过增量式的与创新式的过程与技术改进,组织使用从多个项目收集来的数据对整体的组织绩效进行关注
标准化和产业知识产权
标准化
- 确定标准体制和标准化管理体制
工业产权
- 工业产权
- 专利、实用新型、工业品外观设计、商标、服务标记、厂商名称、产地名称
- 著作权:指作者对其创作的作品享有的人身权和财产权,包括发表权、署名权、修改权和保护作品完整权(保护期不受限制)、复制权、发行权、出租权、展览权、表演权、放映权、广播权、信息网络传播权、摄制权、改编权、翻译权、汇编权、应当由著作权人享有的其他权利。
- ps:翻译权在软件中是指将原软件从一种程序设计语言转换成另一种程序设计语言
- 任职中利用公司资源进行开发完成的作品,著作权归公司所有
- 同时申请者先申请的获得著作权,否则双方协议
- 在未签订协议的情况下,实际开发者获取著作权
知识产权
- 无形性
- 双重性:
- 有财产权和人身权双重属性
- 确认性
- 财产权需要依法审查确认
- 独占性
- 未经权利人许可使用的,就构成侵权
- 地域性
- 各国的知识产权只能在其本国领域内受法律保护
- 时间性
- 专利保护期为20年
- 实用新型专利权和外观设计专利权的期限为10年
- 公民的作品发表权的保护期为作者终生及其死后50年
- 商标权的保护期限自核准注册之日起10年内有效(但可以延长)
商业秘密权
构成条件
- 商业秘密必须具有未公开性,即不为公众所知悉;商业秘密必须具有实用性,即能为权利人带来经济效益;商业秘密必须具有保密性,即采取了保密
专利权
企业知识产产权
法律基本文件
- 《中华人民共和国著作权法》
- 《计算机软件保护条例》
- 翻译权:将原软件从一种自然语言文字转换成另一种自然语言文字的权利