目录
一、 操作系统… 3
1. DMA. 3
2. 并行与并发… 3
3. 两种存储体系… 3
4. 中断… 4
二、 计算机组成原理… 4
1.浮点数… 4
2.操作数寻址… 4
3. CISC RISC.. 5
4. 存储设备的访问速度… 5
5.寄存器… 5
6.海明码… 6
三、 计算机 络… 6
1. 络攻击… 6
2.防火墙… 6
3.协议… 7
4病毒… 7
5. IPV4与IPV6. 8
6. 5个层次-主要设备… 8
四、 数据结构… 9
1. 树的概念… 9
2. 排序算法… 11
3. 算法设计策略… 13
五、法律… 13
1. 著作权… 13
六.软件… 14
1.软件开发… 14
2.软件质量… 14
3.软件设计… 15
7. 软件测试… 17
8. 面向对象… 18
9. 软件工程… 23
10. 软件维护… 23
七.程序语言编译原理… 24
1.编译器与解释器… 24
2.死循环… 25
八.操作系统… 26
1.互斥-信 量… 26
2.单缓冲与双缓冲的工作方式… 26
九.数据库… 27
1. 三级模式结构… 27
2.范式… 27
3.分布式数据库… 28
4.函数依赖… 28
十.其他… 29
1.媒体分类… 29
2. 软件-文件格式… 29
2.模块… 29
4. 密码体制–公开密钥加密算法… 30
- 操作系统
- DMA
DMA请求的检测点设置在每个机器周期也即总线周期结束时执行,这样使得总线利用率最高。
Direct Memory Access(存储器直接访问)。指一种高速的数据传输操作,在专门的硬件( DMA)控制下,实现高速外设(I/O设备)和主存储器之间自动成批交换数据尽量减少CPU干预的输入/输出操作方式。
因为DMA允许外设直接访问内存,从而形成对总线的独占。这在实时性强的硬实时系统的嵌入式开发中将会造成中断延时过长。这在军事等系统中是不允许的。
- 并行与并发
并行:同一时刻
并发:同一时间间隔
- 两种存储体系
一般计算机系统中主要有两种存储体系:
Cache存储体系由Cache和主存储器构成,主要目的是提高存储器速度,对系统程序员以上均透明;
虚拟存储体系由主存储器和(辅存)在线磁盘存储器等辅存构成,主要目的是扩大存储器容量,对应用程序员透明。
DMA(直接内存存储),在主存和外设间建立了直接的数据通道,无序CPU的干预
- 中断
中断向量可以提供中断服务程序的入口地址。
为实现多级中断嵌套,使用堆栈来保护断点和现场
- 计算机组成原理
1.浮点数
浮点数编码由两部分组成:
尾数(是定点纯小数,常用补码表示,或原码表示)。浮点数的精度由尾数的位数决定
阶码(即指数,为带符 定点整数,常用移码表示,也有用补码的)。表示范围的大小则主要由阶码的位数决定。
在C语言中浮点数包括单精度浮点数(float)、双精度浮点数(double),分别占有32位和64位,对于float而言,符 位用1位表示,尾数M用8位表示,阶码E用23位表示。而对于double而言,符 位1位,尾数11位,阶码52位
2.操作数寻址
立即寻址:指令的地址字段指出的不是操作数的地址,而是操作数本身,不需要访问任何地址的寻址方式。注意:立即数只能作为源操作数,不能作为目的操作数。
直接寻址:在指令格式的地址的字段中直接指出操作数在内存的地址。在指令中直接给出有效地址 [2]
间接寻址:指令地址字段中的形式地址不是操作数的真正地址,而是操作数地址的指示器
寄存器寻址方式:此时指令中给出的操作数地址不是内存的地址单元
寄存器间接寻址方式:指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中。 [2]
相对寻址方式:把程序计数器PC的内容加上指令格式中的形式地址D而形成操作数的有效地址。程序计数器的内容就是当前指令的地址。采用相对寻址方式的好处是程序员无须用指令的绝对地址编程,因而所编程序可以放在内存的任何地方。
变址寻址方式:目的不在于扩大寻址空间,而在于实现程序块的规律变化。为此,必须使变址寄存器的内容实现有规律的变化(如自增1、自减1、乘比例系数)而不改变指令本身,从而使有效地址按变址寄存器的内容实现有规律的变化。
3. CISC RISC
CISC,即Complex Instruaction Set Computer,就是使用复杂指令集系统的计算机。
RISC,即Reduced Instruction Set Computer,精简指令集系统的计算机。需要更多的寄存器。
VLIW 超长指令字
4. 存储设备的访问速度
存储设备按访问速度从快到慢依次为:
通用寄存器> Cache>内存>硬盘
5.寄存器
程序计数器用于存放指令的地址。令当程字顺序执行时,每取出一条指令,PC内容自动增加一个值, 指向下一条要取的指令。当程序出现转移时,则将转移地址送入PC,然后由PC指向新的程序地址。
程序状态寄存器用于记录运算中产生的标志信息,典型的标志为有进位标志位、零标志位、符 标志位、溢出标志位、奇偶标志等。
地址寄存器包括程序计数器、堆栈指示器、变址寄存器、段地址寄存器等,用于记录各种内存地址。
累加寄存器是一个数据寄存器,在运算过程中暂时存放被操作数和中间运算结果,累加器不能用于长时间地保存一个数据。
6.海明码
N为待发送海明码的总位数,K是有效信息位数,r是校验位个数(分成r组作奇偶校验,能产生r位检错信息)校验位的个数r应满足公式: N=K+r≤2^r-1。
此题中k= 48,校验位个数为r,则n≤2^λr-1, 即48+r≤2^r-1,则r为6。
2^k-1>m+k k为校验位 m为信息位
- 计算机 络
1. 络攻击
主动攻击:包含攻击者访问他所需信息的故意行为。主动攻击包括重放攻击、IP地址欺骗、拒绝服务攻击信息篡改、资源使用、欺骗
被动攻击:主要是收集信息而不是进行访问,数据的合法用户对这种活动一点也不会觉察到。包括嗅探、信息收集,流量分析攻击
Dos攻击:Dos即拒绝服务。典型代表:SYN Flooding
为了攻击远程主机,通常利用端口扫描技术检测远程主机状态
2.防火墙
是一种放置在 络边界上,用于保护内部 络安全的 络设备。它通过对流经数据流进行分析和检查,可实现对数据包的过滤、保存用户访问 络的记录和服务器代理功能。防火墙不具备检查病毒的功能。
包过滤防火墙工作在 络协议IP层,它只对IP包的源地址、目标地址及相应 端口]进行处理,因此速度比较快,能够处理的并发连接比较多,缺点是对应用层的攻击无能为力(对应用和用户是透明的,就是感觉不到其存在)。
代理服务器防火墙将收到的IP包还原成高层协议的通讯数据,比如http连接信息,因此能够对基于高层协议的攻击进行拦截。缺点是处理速度比较慢,能够处理的并发数比较少。
其三个区域按照收保护程序,从高到低排序为:内 ,DMZ,外
3.协议
SSH为Secure Shell的缩写。为建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他 络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。
Telnet协议是TCP/IP协议族中的一员,是Internet远程 登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。它是测试终端 的常用协议,并不提供安全连接
POP3,全名为”Post Office Protocol – Version3”,即“邮局协议版本3”。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。提供了SSL加密的POP3协议被称为POP3S。POP3协议特性:
POP3协议默认端口: 110;。
POP3协议默认传输协议: TCP;
POP3协议适用的构架结构: C/S;
POP3协议的访问模式:离线访问。
FTP协议:20为数据口,21为控制口
使用ping命令可以进行 络检测,在进行一系列检测时,按照由近及远原则,首先执行的是ping127.0.0.1 ,可以检查本机的TCP/IP协议
4病毒
欢乐时光病毒是一个VB源程序病毒,专门感染.htm、.html、.vbs、.asp和.htt文件。它作为电子邮件的附件
熊猫烧香:感染用户计算机上的EXE可执行文件,同时,受感染的计算机还会出现蓝屏、频繁重启以及系统硬盘中数据文件被破坏等现象。
X卧底:安装在手机里的监控软件
CIH病毒:感染Windows 95和Windows 98的EXE文件。
- IPV4与IPV6
在IPv4向IPv6过渡期间,如果要使得两个IPv6结点可以通过现有的IPv4 络进行通信,则应该使用(隧道技术 ) ;如果要使得纯IPv6结点可以与纯IPv4结点进行通信,则需要使用(翻译技术 )
- 5个层次-主要设备
物理层:中继器 集线器
数据链路层: 桥
络层:交换机 路由器
传输层:
应用层:
- 数据结构
- 树的概念
满二叉树:一棵深度为h,且有2^h-1个节点的树是满二叉树。或除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。
完全二叉树: 若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h 层所有的结点都连续集中在最左边.
满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。
最优二叉树(哈夫曼树):在权为wl,w2,…,wn的n个叶子所构成的所有二叉树中,带权路径长度最小(即代价最小)的二叉树。权值较大的节点离根比较近
平衡二叉树:树的左右子树的高度差不超过1的数,空树也是平衡二叉树的一种。
- 排序算法
直接插入排序:(适合基本有序)稳定的。时间复杂度:O(n^2)。先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。要点:设立哨兵,作为临时存储和判断数组边界之用
希尔排序:不稳定。先将要排序的一组记录按某个增量d(n/2,n为要排序数的个数)分成若干组子序列,每组中记录的下标相差d.对每组中全部元素进行直接插入排序(比较前后两个的大小,是否交换),然后再用d/2对它进行分组,在每组中再进行直接插入排序。继续不断缩小增量直至为1,最后使用直接插入排序完成排序。
简单选择排序:在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。(若相同的数,要注意第一个和第二个的顺序)
堆排序:时间复杂度也为:O(nlogn )。堆排序需要两个过程,一是建立堆,二是堆顶与堆的最后一个元素交换位置
冒泡排序:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
快速排序:(适合无序)不稳定。选择一个基准元素(最佳的基准元素是中位数),通常选择第一个元素或者最后一个元素。通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大。
N较大时,当待排序的关键字是随机分布时,快速排序的平均时间最短
当n较小,可采用直接插入或直接选择排序。
直接插入排序:当元素分布有序,直接插入排序将大大减少比较次数和移动记录的次数。
直接选择排序 :元素分布有序,如果不要求稳定性,选择直接选择排序
稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序
不是稳定的排序算法:选择排序、快速排序、希尔排序、堆排序
- 算法设计策略
分治法的设计思想是将一个难以直接解决的大问题分解成一些规模较少的相同问题以便各个击破, 分而治之。经分解得到的子问题是独立
动态规划法:基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。适合于用动态规划法求解的问题,经分解得到的子问题往往不是独立的。最优子结构性质,且求解过程中子问题被重复求解
贪心法经常用于解决最优化问题,但他的最优往往是从局部最优来考虑的,每一步都选最优的方案,但这种方案不一定能得到整体上的最优解。
回溯法是一种既带有系统性又带有跳跃性的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根节点出发搜索解空间树。
五、法律
1. 著作权
发表权是属于人身权利,但发表权是一次性权利
根据我国《著作权法》的规定,有三种类型的作品不受法律保护。
第一种是依法禁止出版、传播的作品。
第二 种是不适用于《著作权法》的作品。它们包括下列作品:
(1)法律、法规,国家的决议、决定、命令和其他具有立法、行政、司法性质的文件,极其官方正式译文
(2)时事新闻; 布赛
(3)历法、通用数表、通用表格和公式。
六.软件
1.软件开发
1.1 软件开发方法
原型化方法:需求不清晰且规模不太大时采用。
结构化方法:数据处理领域的不太复杂的软件。适用:一些组织相对稳定、业务处理过程规范、需求明确且在一定时期内不会发生大的变化的大型复杂系统的开发。
1.2. 软件开发过程模型
瀑布模型:将开发阶段描述为从一个阶段瀑布般地转换到另一个阶段的过程。
原型模型:开发人员快速地构造整个系统或者系统的一部分以理解或澄清问题。不适宜大规模软件的开发
螺旋模型:将开发活动和风险管理结合起来,以减小风险。
喷泉模型:开发过程模型以用户需求为动力,以对象为驱动,适合于面向对象的开发方法。
1.3结构化分析 数据流图
对软件功能建模,加工是数据流的一个重要要素,可以用多种方式描述,如流程图、NS盒图等,其中决策树和决策表适于用来表示加工中涉及多个逻辑条件的情况。
2.软件质量
2.1 ISO/IEC软件质量模型
IEC标准即国际电工委员会(International Electrical Commission)
ISO和IEC作为一个整体担负着制订全球协商一致的国际标准的任务,ISO和IEC都是非政府机构
由三个层次组成:第一层是质量特性,第二层是质量子特性,第三层是度量指标。易使用性是指与为使用所需的努力和由一组规定或隐含的用户对这样使用所做的个别评价有关的一组属性。其子特性包括易理解性、易学性、易操作性。
3.软件设计
3.1基本概念
软件设计的任务是基于需求分析的结果建立各种设计模型,给出问题的解决方案。
概要设计阶段进行软件体系结构的设计、数据设计和接口设计; 面对对象设计方法中,进行体系结构设计、初步的类设计/数据设计 、结构设计;
详细设计阶段进行数据结构和算法的设计。面向对象时,进行构件设计。
结构化设计根据系统的数据流图进行设计,模块体现为函数、过程及子程序;
面向对象设计基于面向对象的基本概念进行,模块体现为类.对象和构件等。
3.2子系统结构设计
重点关注如何划分模块,子系统之间以及模块之间的数据和调用关系,模块结构质量等这些粗粒度的问题;而对每个模块内部进行设计时,才需要考虑采用的数据结构以及处理的算法。
3.3设计模式
按照设计模式的目的可以分为创建型、结构型和行为型三大类。
创建型模式与对象的创建有关。包括Factory Method、Abstract Factory. Builder 、Portotype 和Singleton.
结构型模式处理类或对象的组合。包括Adapter (类)、Adapter 对象)、Bridge、Composite(表示对象的部分-整体层次结构) 、Decorator 、Facade、Flyweight 和Proxy(代理)。
行为型模式对类或对象怎样交互和怎样分配职责进行描述。包括Intepreter、Template Method、Chain of Responsibility Command、lterator 、Mediator 、Memento Observer State Strategy和Visitor.Proxv模式的结构图如下所示,
抽象工厂模式(Abstract Factory)提供一个接口, 可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类。分产品族 产品等级结构
图形用户界面(GUI)组件定义不同平台的并行类层次结构
构建器模式(Builder) :将一个复杂类的表示 与其构造相分离,使得相同的构建过程能够得出不同的表示。
工厂方法模式(Factory Method) :定义一个创建对象的接口,但由子类决定需要实例化哪一个类。 工厂方法使得子类实例化的过程推迟。
原型模式(Prototype) :用原型实例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象。
单例模式(Singleton) :保证-个类只有一个实例,并提供一个访问它的全局访问点。
适配器模式(Adapter) :将一个类的接口转换成用户希望得到的另一种接口。 它使原本不相容的接口得以协同工作。适配器,桥接
桥接模式(Bridge) :将类的抽象部分和它的实现部分分离开来,使它们可以独立地变化。
组合模式(Composite) :将对象组合成树型结构以表示“整体部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。
装饰模式(Decorator) :动态地给一个对象添加一些额外的职责。它提供了用子类扩展功能的一个灵活的替代,比派生一个子类更加灵活。
外观模式(Facade) :定义一个高层接口,为子系统中的一组接口提供一个一 致的外观,从而简化了该子系统的使用。适用于:要为一个复杂子系统提供一个简单接口时,简化接口
享元模式(Flyweight) :提供支持大量细粒度对象共享的有效方法。
代理模式(Proxy) :为其他对象提供一种代理以控制这个对象的访问。
职责链模式(Chain of Responsibility) :通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。将接收对象链接起来,在链中传递请求,直到有一个对象处理这个请求。
命令模式(Command) :将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作。
解释器模式(Interpreter) :给定一种语言, 定义它的文法表示,并定义一个解释器,该解释器用来根据文法表示来解释语言中的句子。
迭代器模式(lterator) :提供一种方法来顺序访问一个聚合对象中的各个元素,而不需要暴露该对象的内部表示。
中介者模式(Mediator) :用一个中介对象来封装一系 列的对象交互。它使各对象不需要显式地相互调用,从而达到低耦合,还可以独立地改变对象间的交互。
备忘录模式(Memento)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以在以后将该对象恢复到原先保存的状态。
观察者模式(Observer) :定义对象间的一种-对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。
具体目标知道其观察者,最主要的特征:对扩展开放,对修改关闭
状态模式(State) :允许一个对象在其内部状态改变时改变它的行为。
策略模式(Strategy) :定义一系列算法,把它们一个个封装起来,并且使它们之间可互相替换,从而让算法可以独立于使用它的用户而变化。
模板方法模式(Template Method) :定义一个操作中的算法骨架,而将一些步骤延迟到子类中, 使得子类可以不改变一个算法的结构即可重 新定义算法的某些特定步骤。
访问者模式(Visitor) :表示一个作用于某对象结构中的各元素的操作,使得在不改变各元素的类的前提下定义作用于这些元素的新操作
- 软件测试
4.1测试用例及环路复杂性
基于程序控制流的复杂性度量方法,环路复杂性为V(G)=m-n+2。M为流程图的边,n为结点
- 面向对象
5.1对象
通常可由对象名、属性(状态)和方法(行为)三部分组成
5.2类
一个类定义了一组大体上相似的对象。一个类所包含的方法和数据描述一组对象的共同行为和属性,这些对象共享这些行为和属性。
-
- 继承与重置
继承是父类和子类之间共享数据和方法的机制。父类描述了这些子类的公共属性和方法。如果父类中已有方法名在子类中不出现,表示子类继承父类中的方法
重置或覆盖(overriding):一个子类可以继承它的父类(或祖先类)中的属性和方法,这些属性和操作在子类中不必定义;子类中还可以定义自己的属性和方法,也可以重新定义父类中已经定义的方法UML类图中,如果父类中已有方法名在子类中出现了,就表示子类在继承父类接口定义的前提下,用适合于自己要求的实现去置换父类中的相应实现,即覆盖了父类中的方法。
-
- UML
5.4.1用例图
用于需求分析阶段
5.4.2类图
对象图:类图的一个实例
描述类和类之间的静态关系。不仅显示信息的结构,同时还描述了系统的行为。
泛化关系:箭头指向父类
聚合关系:表示整体和部分的关系
组合关系:如果聚合关系中的表示“部分”的类的存在,与表示“整体”的类有紧密的关系,如公司和部门
实现关系:(用来规定接口和实现的类或组件之间的关系,接口是操作的集合,这些操作用于规定类或组件的服务)
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!