软件设计师

重点考点

1.计算机网络概论

计算机系统基础知识

运算器(运算在这里):
算术逻辑单元(ALU):对数据的算术运算和逻辑运算
累加寄存器(AC):为算术逻辑处理提供工作区(运算结果放在这里面)
数据缓冲寄存器(DR):作为CPU和内存,外部设备之间数据传送的中转站而且在操作速度上的缓冲;
状态条件寄存器(PSW):保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容(状态标志和控制标志)

控制器(说到指令就是在这四个):
指令寄存器(IR):暂存CPU的指令,指令译码器根据IR的内容产生各种微指令
程序计数器(PC):具有寄存信息和计数两种功能
地址寄存器(AR):保存当前CPU所访问的内存单位的地址
指令译码器(ID):对指令中的操作码字段进行分析解释,以便识别所完成的操作
- **数据表示**
- **数据校验**
奇偶校验码
通过在编码中增加一位校验码来使编码中1的个数为奇数(奇校验)或为偶数(偶校验),当编码1的个数的奇偶性发生变化,从而发现错误(但不能改错误)

海明码(校验码位置为2的整数幂;海明码的码组长度需要符合:2^r – 1 (r代表校验位个数))
设数据位是n位,校验位是k位,则n和k必须满足以下关系:2^k-1>=n+k

CRC(循环冗余)
模2运算:就是二进制(0,1)的算法
这种算法是不发生进位和借位

- **指令系统**
- **系统中存储器**
集线器,所有端口组成一个广播域,所有端口组成一个冲突域
交换机,所有端口组成一个广播域,各个端口形成一个冲突域
路由器,各个端口形成一个广播域,各个端口形成一个冲突域
模2运算:

在这里插入图片描述
软件设计师_第1张图片

cpu周期

指令周期->机器周期(cpu周期)->时钟周期(最基本的单位)
总线周期:CPU通过总线对微处理器外部(存储器或I/O接口)进行一次访问所需时间

软件设计师_第2张图片

计算机体系结构

安全性,可靠性与系统性能评测

计算

可知该网络是一个B类网络。网络前缀是26,即26个1。
所以子网掩码为11111111.11111111.11111111.11000000(255.255.255.192)
所以主机数为:2^6-2=62 (6个零;全0和全1不要,所以减2,32-26=6个主机位)
所以子网数为:2^10-2=1022 (借主机号10位,B类地址主机号是16位,即16个0,但现在只有6个0;全0和全1不要,所以减2)
所以每个子网的主机数位:2^(16-10)-2=62 (10是指子网号的位数)

包含的主机号(A,B,C:24次方,16次方,8次方)
IP地址是否属于网络:取决于最后八位二进制前两位是否相同

软件设计师_第3张图片

2.程序设计语言基础知识

程序设计语言概论

基本成分

软件设计师_第4张图片

python:是解释型语言

函数

值调用和引用调用是实现函数调用时传递参数的两种基本方式:在值调用方式下,是将实参的值传给形参,在引用调用方式下,是将实参的地址传递给形参。

形式参数(形参):private String name;
实际参数(实参):name="zhangsan"
基本概念

程序

解释程序也称为解释器,它可以直接解释执行源程序,或者将源程序翻译成某种中间表示形式后再加以执行;
编译程序(编译器):首先将源程序翻译成目标语言程序,然后在计算机上运行目标程序。

根本区别是:在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程;而在解释方式下,解释程序和源程序(或其某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序。
解释器翻译源程序时不产生独立的目标程序,而编译器则需将源程序翻译成独立的目标程序。

语言处理程序基础

基本原理

文法

乔姆斯基文法体系共分为短语结构文法、上下文有关文法、上下文有关文法和正规文法4类。
短语结构文法或无限制文法也称为0型文法,其描述能力相当于图灵机,可使用任何的语法描述形式。
上下文有关文法也称为1型文法,其描述能力相当于线性有界自动机,语法形式为:xSy->xAy。也就是说,S (非终结符号)推导出A (非终结符号与终结符号的混合串)是和上下文x,y相关的,即S只有在上下文x,y的环境中才能推导出A。
上下文无关文法也称为2型文法,其描述能力相当于下推自动机,语法形式如下:S->A,即S可以无条件的推导出A,与上下文无关。
正规文法也称为3型文法,等价于正则表达式,其描述能力相当于有穷自动机,语法形式如下:S->Aa,其中最后一个a必须为非终结符。

☆大多数程序语言的语法现象可用上下文无关文法描述。

3.数据结构

线性结构

线性表(存储数据的逻辑位置与物理位置是相对应的)
删除或者插入的元素都是需要遍历一遍(复杂度为O(n))

单链表(就是有头结点的线性表):
删除或插入移动的是结点(O(0))

栈是一种特殊的线性表,只能在一端进行插入与删除的(后进先出),用的是递归的方法
队列是另一种线性表,只能在一端进行插入,另一端进行删除(先进先出),%是模运算(相除取余,符号跟s)

哈希表(散列表)

题目给出mod N,散列表地址就是N位(从0开始算到N-1).hash(x)=x%(取余),余数就是在地址上的位置  x为序列

软件设计师_第5张图片

数组,矩阵和广义表

数组:通过连续的内存空间存储值,是一个固定的容量,能按位快速寻值给定头节点的地址往后按位加字节大小就能获得值()

矩阵:一般考稀疏矩阵,通过计算下标来获得三角

广义表:ls=[1,[2,3],[4,5]],有长度为3,深度为2。通过画成树状来分析

软件设计师_第6张图片

平衡二叉树,最优二叉树(哈夫曼树),满二叉树,完全二叉树

平衡二叉树:任意节点的子树的高度差的绝对值小于等于1,即为平衡

最优二叉树:权值(圆圈内的数)最大的作为根节点,通过计算带权路径(当前权值最小节点之间的权值相加)得到上一个节点的权值以此构造一棵权值从大到小的树

满二叉树:整个数都是填满的 

完全二叉树:一棵树的排序最末尾是从左往右填(满二叉树一定是完全)

树分类:
软件设计师_第7张图片

图:图论中的图是由点和点与点之间的线所组成的。通常,我们把点与点之间不带箭头的线叫做边,带箭头的线叫做弧。
无向图:如果一个图是由点和边所构成的,那么,称为无向图,记作G=(V, E),其中V表示图G的点集合,E表示图G的边集合。连接点vi,vj的边记作[vi, vj],或者[vj, vi]。
有向图:如果一个图是由点和弧所构成的,那么称为它为有向图,记作D=(V, A),其中V表示有向图D的点集合,A表示有向图D的弧集合。一条方向从vi指向vj的弧,记作(vi, vj)。

连通图:图中任意两点之间均至少有一条通路,否则称为不连通图
连通图:在无向图中, 若从顶点v1到顶点v2有路径, 则称顶点v1与v2是连通的。如果图中任意一对顶点都是连通的,则称此图是连通图。

有向完全图:在n个顶点的无向图中,若有n(n-1)/2条边,即任意两个顶点之间有且仅有一条边,则称此图为无向完全图
有向完全图:在n个顶点的有向图中,若有n(n-1)条边,即任意两个顶点之间有且仅有方向相反的边,则称此图为有向完全图

软件设计师_第8张图片
软件设计师_第9张图片

查找

二分查找
二分查找是一种高效的查找方法,其思路是待查找元素先与序列中间位置上的元素比较,若相等,则查找成功:若待查找元素较大,则接下来到序列的后半区进行二分查找,否则到序列的前半区进行二分查找。显然,要快速定位序列的中间位置,査找表必须进行顺序存储;其次,从二分查找过程可知,序列必须有序排列才行。

当二分查找的是偶数时,是取正左的数为中间数

排序

直接插入排序

冒泡排序

选择排序

希尔排序

快速排序

归并排序

4.操作系统知识

操作系统概论

进程管理

进程间的通信
整型信号量、记录型信号量和信号量集机制:
对于整型信号量,可以根据控制对象的不同被陚予不同的值。通常将信号量分为公用信号暈和私用信号量两类。其中,公用信号量用于实现进程间的互斥,初值为1或资源的数目;私用信号量用于实现进程间的同步,初值为0或某个正整数。
信号量S的物理意义是:S≥0表示某资源的可用数,若S<0,则其绝对值表示阻塞队列中等待该资源的进程数。

存储管理

设备管理

文件管理

文件路径
路径名是指操作系统查找文件所经过的目录名以及目录名之间的分隔符构成的。通常,操作系统中全文件名是指路径名+文件名。
按查找文件的起点不同可以将路径分为:绝对路径和相对路径。从根目录开始的路径称为绝对路径;从用户当前工作目录开始的路径称为相对路径,相对路径是随着当前工作目录的变化而改变的。

当前目录为swshare
相对路径:flash\
绝对路径:\swshare\flash

软件设计师_第10张图片

作业管理

5.软件工程基础知识

软件工程概论

软件过程模型

原型模型(也叫快速原型)(需求不明确的开发)
采用动态定义需求的方法,通过快速地建立一个能够反映用户主要需求的软件原型
瀑布模型(waterfall Model)(需求明确的开发)
将软件生存周期各个活动规定为线性顺序连接的若干阶段的模型,规定了由前至后,相互衔接的固定次序,如同瀑布流水,逐级下落。这种方法是一种理想的开发模式,缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。
螺旋模型(用于中大型开发)(结合了瀑布模型与演化模型的优点)
螺旋将瀑布模型与快速原型模型结合起来,并且加入两种模型均忽略了的风险分析,适用于复杂的大型软件。增多了风险分析
增量模型(Incremental Model)(1.对已有的产品升级或新版本开发 2.对开发领域比较熟悉且已有原型模型)
增量是开发把软件产品作为一系列的增量构件来设计、编码、集成和测试,可以在增最开发过程中逐步理解需求。
演化模型(Evolutionary Model)
原型模型从初始的原型逐步演化成最终软件产品,特别适用于对软件需求缺乏准确认识的情况。
喷泉模型(water Fountain Model)(描述面向对象的开发过程)
体现面向对象过程的迭代和无间隙特征;迭代意味着每次重复都会增加或明确一些目标系统的性质,但不会对先前的结果造成本质性改动。无间隙意味着开发活动不存在明显的边界,而是允许各开发活动交叉迭代地进行。
基于构件的开发模型(Component-base Development Model)
形式化方法模型(Formal method Model)
统一过程(UP)模型
一种以用例和风险为驱动、以架构为中心、迭代并且增量的开发过程,由UML方法和工具支持。
UP过程定义了五个阶段,起始阶段、精化阶段、构建阶段、移交阶段和产生阶段。
开发过程中有多次迭代,每次迭代都包含计划、分析、 设计、构造、集成和测试,以及内部和外部发布。
每个迭代有五个核心工作流,捕获系统应该做什么的需求工作流、精化和结构化需求的分析工作流、在系统结构内实现需求的设计工作流、构造软件的实现工作流和验证是否如期望那样工作的测试工作流。
敏捷方法

软件设计师_第11张图片

需求分析

系统设计

系统测试(重点)

测试方法
静态测试
动态测试(白盒与黑盒):

白盒测试也称为结构测试,主要用于检测软件编码过程中的错误。程序员的编程经验、对编程软件的掌握程度、工作状态等因素都会影响到编程质量,导致代码错误。
语句覆盖(只要走全部条件的各一边语句);路径覆盖(要全部的语句都走过(全部Y和N))

黑盒测试又称为功能测试,主要检测软件的每一个功能是否能够正常使用。在测试过程中,将程序看成不能打开的黑盒子,不考虑程序内部结构和特性的基础上通过程序接口进行测试,检查程序功能是否按照设计需求以及说明书的规定能够正常打开使用。
主要是为了发现以下错误。
(1)是否有功能错误,是否有功能遗漏。
(2)是否能够正确地接收输入数据并产生正确的输出结果。
(3)是否有数据结构错误或外部信息访问错误。
(4)是否有程序初始化和终止方面的错误。

软件设计师_第12张图片

运行和维护知识

系统维护
硬件维护:一种是定期的设备保养维护(例行的设备检查与保养);另一种是突发性的故障维护(所花时间不能过长,以免影响系统正常运行)
软件维护:正确性维护是指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误;
		适应性维护是指使应用软件适应新型技术变化和管理需求变化而进行的修改;
		完善性维护是指为扩充功能和改善性能而进行的修改,主要是指对(己有的软件系统)增加一些在系统分析和设计阶段中没有规定的功能与性能特征;
		预防性维护是指为了改进应用软件的可靠性和可维护性,为了适应未来的软硬件环境的变化,主动增加预防性的功能,以使应用系统适应各类变化而不被淘汰。

软件项目管理

Putnam和COCOMO都是软件成本估算模型
Putnam模型是一种动态多变量模型,假设在软件开发的整个生存期中工作量有特定的分布。结构性成本模型COCOMO模型分为基本COCOMO模型、中级COCOMO模型和详细COCOMO。基本COCOMO模型是一个静态单变量模型,对整个软件系统进行估算;
中级COCOMO模型是一个静态多变量模型,将软件系统模型分为系统和部件两个层次,系统由部件构成;
详细COCOMO模型将软件系统模型分为系统、子系统和模块三个层次,除了包括中级模型所考虑的因素外,还考虑了在需求分析、软件设计等每一步的成本驱动属性的影响。
cocomo模型的估算选择包括:对象点,功能点,代码行
成熟度有5级:初始级;可重复级;已定义级;以管理级;优化级
Gantt图(不能分析依赖关系,难以确定整个项目的关键所在)
一种简单的水平条形图,以日历为基准描述项目任务。水平轴表示日历时间线,如日、周和月等,每个条形表示一个任务,任务名称垂直的列在左边的列中,图中水平条的起点和终点对应水平轴上的时间,分别表示该任务的开始时间和结束时间,水平条的长度表示完成该任务所持续的时间。当日历中同一时段存在多个水平条时,表示任务之间的并发。
能清晰地描述每个任务从何时开始,到何时结束,任务的进展情况以及各个任务之间的并行性。
但它不能清晰地反映出各任务之间的依赖关系,难以确定整个项目的关键所在,也不能反映计划中有潜力的部分。
Pert图(不能分析并行关系)
软件项目的风险
影响软件项目的风险主要有三种类别:
项目风险涉及到各种形式的预算、进度、人员、资源以及和客户相关的问题
技术风险涉及到潜在的设计、实现、对接、测试即维护问题
商业风险包括如市场风险、策略风险、管理风险和预算风险等

业务风险组括建立一个无人想要的优秀产品的风险、失去预算或人员承诺的风险等

软件质量

软件容错技术
结构冗余结构有四种:
(1)结构冗余
(2)信息冗余
(3)时间冗余
(4)冗余附加技术:冗余附加技术是指为实现其他类型冗余技术所需要的资源和技术,包括程序指令、数据、存放和调动它们的空间和通道等。在屏蔽硬件错误的容错技术中,冗余附加技术包括:关键程序和数据的冗余存储及调用:检测、表决、切换、重构、纠错和复算的实现。在屏蔽软件错误的容错技术中,冗余附加技术包括:冗余备份程序的存储及调用;实现错误检测和错误恢复的程序;实现容错软件所需的固化程序。

软件设计师_第13张图片

软件度量

复杂性度量
McCabe环路复杂性度量法:McCabe度量法是一种基于程序控制流的复杂性度量方法,环路复杂性为V(G) = m-n + 2,V(G)是图中的环路数,m是图中弧数(箭头的数量(除了第一个)),n是图中的节点数(语句框的个数)
Halstead复杂度量(不考):

软件工具与软件开发环境

  1. 软件开发工具
  2. 软件维护工具
开发环境

6.结构化开发方法(自顶向下,逐层分解)

系统分析与设计概论

系统设计的基本原理

1.抽象
2.模块化
3.信息屏蔽
4.模块独立(耦合性与内聚性)

结构化分析方法

结构化分析方法概论

数据流图

基本加工的说明有三种描述方式:结构化语言,判断表(决策表),判断树(决策树)
1.数据流图的每一个基本加工,必须有一个基本加工逻辑说明。
2.基本加工逻辑说明必须描述基本加工如何把输入数据流变换为输出数据流的加工规则。
3.加工逻辑说明必须描述实现加工的策略而不是实现加工的细节。
4.加工逻辑说明中包含的信息应是充足的,完备的,有用的,无冗余的。

数据字典

结构化设计方法

模块的类型
①传入模块:取得数据或输入数据,经过某些处理,再将其传送给其他模块.
②传出模块:输出数据,在输出 之前可能进行某些处理,数据可能被输出到系统的外部,或者会输出到其他模块进行进一步处理。
③变换模块:从上级调用模块得到数据,进行特定的处理,转换成其他形式,在将加工结果返回给调用模块。
④协调模块一般不对数据进行加工,主要是通过调用、协调和管理其他模块来完成特定的功能。

WebApp分析与设计

特性是可用性,功能性,可靠性,效率,可维护性,安全性,可扩展性,以及及时性
设计目标:简单性,一致性,符合性,健壮性,导航性,视觉吸引力与兼容性
适用于采用混合的各种技术,进行一系列设计动作,多类设计并行进行

用户界面设计

三条"黄金原则":用户操纵控制;减少用户的记忆负担;保持界面一致

7.面向对象技术

面向对象基础

原则

     开-闭原则(Open-Closed Principle)是面向对象的可复用设计(Object Oriented Design,OOD)的基石。开-闭原则是指一个软件实体应当对扩展开放,对修改关闭,即在设计 一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。满足开-闭原则的系统可以通过扩展己有的软件系统,提供新的能力和行为,以满足对软件的新需求,使软件系统有一定的适应性和灵活性;因为已有的软件模块,特别是最重要的抽象层模块不能再修改,这就使变化中的软件系统有一定的稳定性和延续性;满足开-闭原则的系统具备更好的可复用性与可维护性。 在面向对象编程中,通过抽象类及接口,规定了具体类的特征作为抽象层,相对稳定,从而满足“对修改关闭”的要求;而从抽象类导出的具体类可以改变系统的行为, 从而满足对扩展开放。
     里氏代换原则(Liskov Substitution Principle,LSP)是指一个软件实体如果使用的是—个基类的话,那么一定适用于其子类,而且软件系统觉察不出基类对象和子类对象的区别,也就是说,在软件系统中把基类都替换成它的子类,程序的行为没有变化。但需要注意的是,里氏代换原则中仅仅指出了用子类的对象去代替基类的对象,而反过来的代换则是不成立的。例如,如果一个软件模块中使用的是一个子类对象,那么使用父类 对象去代换子类对象则可能产生错误。用一句简单的话概括:任何基类对象可以出现的地方,子类对象一定可以代替基类对象。
     依赖倒转原则(Dependence Inversion Principle,DIP)就是要依赖于抽象,而不依赖于实现,或者说要针对接口编程,不要针对实现编程。系统中进行设计和实现的时候应 当使用接口和抽象类进行变量类型声明、参数类型声明、方法返回类型说明,以及数据 类型的转换等,而不要用具体类进行上述操作。要保证做到这一点,一个具体类应当只 实现接口和抽象类中声明过的方法,而不要给出多余的方法。 传统的过程性系统的设计办法倾向于使高层次的模块依赖于低层次的模块,抽象层次依赖于具体层次。
     依赖倒转原则就是把这个不良的依赖关系倒转过来。面向对象设计 的重要原则是创建抽象层次,并且从该抽象层次导出具体层次,具体层次给出不同的实现。继承关系就是一种从抽象化到具体化的导出。抽象层包含的应该是应用系统的业务 逻辑和宏观的、对整个系统来说重要的战略性决定,而具体层次含有的是一些次要的与 实现有关的算法和逻辑,以及战术性的决定,带有一定的偶然性选择。从复用的角度来说,高层抽象的模块是应当复用的,而且是复用的重点,因为它含有一个应用系统最重 要的宏观业务逻辑,是较为稳定的部分。而在传统的过程性设计中,复用则侧重于具体层次模块的复用。 使用依赖倒转原则时建议不依赖于具体类,即程序中所有的依赖关系都应该终止于抽象类或者接口。尽量做到:任何变量都不应该持有一个指向具体类的指针或者引用; 任何类都不应该从具体类派生;任何方法都不应该覆写它的任何基类中的己经实现的方法。             
  1. 对象
通过实例化类模板实现的对象 
  1. 信息传递
对象之间需要相互沟通,沟通的途径就是对象之间收发信息。消息内容包括接收消息的对象的标识,需要调用的函数的标识,以及必要的信息。消息传递的概念使得对现实世界的描述更容易。两个对象之间的交互就是信息。
通过对现实的事物或者虚拟的事物构建的模板模型
  1. 继承
 继承是父类和子类之间共享数据和方法的机制

软件设计师_第14张图片

  1. 多态(多态就是利用了绑定的特性,在java中编译时绑定左边,运行时绑定右边)
    不同的对象收到同一消息可以进行不同的响应,产生完全不同的结果,用户可以发送一个通用的消息,而实现细节则由接收对象自行决 定,使得同一个消息就可以调用不同的方法,即一个对象具有多种形态,称为多态。
    多态的实现收到继承的支持
    参数多态是应用比较广泛的多态。包含多态(一个类型是另一个类型的子类型)。过载多态是同一个名字在不同的上下文中所代表的含义不同。
    强制多态(在发生不同类型的数据进行混合运算时,强制转换类型)
    
  2. 动态绑定(在运行的时候做出更改)
    绑定是一个把过程调用和响应调用所需要执行的代码加以结合的过程。在一般的程序设计语言中,绑定是在编译时进行的,叫做静态绑定。
    动态绑定则是在运行时进行的, 因此,一个给定的过程调用和代码的结合直到调用发生时才进行。
    
  3. 静态绑定(在编译的时候做出更改)

UML

关系
4种关系:依赖,关联,泛化和实现
依赖:B依赖A,A发生变化会影响B,反过来,当B的一个实例被删除,不会影响A的实例
关联:是类与类之间的一种结构关系(聚集是一种关系,其中一个较大的整体类包含一个或多个较小的部分类;相反地,一个较小的部分类是一个较大的整体类的一部分)
泛化:一个类与它的一个或多个细化类之间的关系,表达一般与特殊的关系
实现:是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的q
额外的:组合是一种聚合关系,其中整体负责其部分的创建和销毁,如果整体不存在了,部分也将不存在

软件设计师_第15张图片
软件设计师_第16张图片软件设计师_第17张图片

异步消息由空心箭头表示,同步消息用实心三角箭头表示,返回消息。   棒棒糖是供应接口,插头是需求接口。 
菱形代表'全体-部分'(空心代表可以相互独立,实心代表强关联)

活动图:
软件设计师_第18张图片

什么时候用什么图(按字眼(复杂用例就用活动图))
首先确定系统边界,识别出主要用例,建模"用例图"。
然后对"用例图"中的复杂用例采用"活动图"进一步进行建模,以对用例中执行过程中对象如何通过消息相互交互进行建模。
系统的领域模型采用"类图"进行建模
,交互关系采用"交互图"进行建模。

序列图,通信图,交互概览图和时序图均称为交互图

设计模式(开发非常重要||没必要背)

三种不同的模式:创建型,结构型,行为型

每种设计模式都有特定的意图和适用场景。
适配器(Adapter)模式将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适用于想使用一个已经存在的类,而其接口不符合要求的情况。(既是类结构型模式,又是对象结构型模式)
责任链(Chain of Responsibility)模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。适用于有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定的情况。
桥接(Bridge)模式将抽象部分与其实现部分分离,使它们都可以独立地变化。适用于不希望在抽象和它的实现部分之间有一个固定的绑定关系的情况。(另一个对象提供了一定程度上的间接性,都涉及到从自身以外的一个接口向这个对象转发请求)
外观(Facade)模式为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。适用于需要为一个复杂子系统提供一个简单接口的情况。
组合(Composite)模式将对象组合成树形结构以表示“部分-整体”的层次结构, 使得用户对单个对象和组合对象的使用具有一致性。
装饰器(Decorator)模式描述了以透明围栏来支持修饰的类和对象的关系,动态地给一个对象添加一些额外的职责,从增加功能的角度来看,装饰器模式相比生成子类更加灵活。
观察者(强调的是一对多的联动)许多对象并不是独立存在的,其中一个对象的行为发生改变可能导致一个或者多个其他对象的行为也发生改变
中介者(强调的是多对多的联动)是一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变他们之间的交互

8.算法设计与分析

算法设计与分析的基本概念

Prim算法和Kruscal算法都是基于贪心策略进行的。
Prim算法的时间复杂度为0(n2),其中n为图的顶点数,该算法的计算时间与图中的边数无关,因此该算法适合于求边稠密的图的最小生成树:Kruscal算法的时间复杂度为O(mlgm),其中m为图的边数,该算法的计算时间与图中的顶点数无关,因此该算法适合于求边稀疏的图的最小生成树。

算法分析基础

时间复杂度(程序在计算机上运行时所消耗的时间)

软件设计师_第19张图片

2^x=n,解出x=logn

软件设计师_第20张图片

复杂度为O(n)

软件设计师_第21张图片

复杂度为O(n^2)

软件设计师_第22张图片

空间复杂度(一个算法的空间复杂度(Space Complexity)S(n)定义为该算法所耗费的存储空间 )

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qCMG6Wkm-1657074731438)(D:\MarkDown\软件设计\空间复杂度.png)]

分治法(拆分并解决;包含二分查找法)

将一个难以直接解决的大问题分解成一些规模较小的子问题,然后将各个子问题的解合并得到原问题的解。

典型实例:归并排序

动态规划法(运用了分治法思想)

通常用于求解具有某种最优性质的问题,此做法是将问题实例分解为更小的,相似的子问题,并存储子问题的解从而避免计算重复的子问题。

贪心法

一旦选择了方案就不会改变,每次选择都是当前最优的(该方法不是整体最优解,是局部最优 )

回溯法

从一条路往前走,能进则进,不能进则退回来,换一条路再试。其实现一般要用到递归和堆栈。

分支限界法

概率算法

近似算法

数据挖掘算法

智能优化算法

9.数据库技术基础

基本概念

数据模型

关系代数

多值:属性可以有多个取值,比如家属名称,这个字段可以拆分为姓,名字段,
复合:属性可以拆分成多个字段,比如地址,这个字段可以有省,市,街道
派生:通过其他属性可以计算获得结果的属性

关系数据库SQL语言简介

关系数据库的规范化

规范式
部分依赖就是两个确定一个属性
传递依赖就是一个对应一个能找到下一个

1NF范式就是每一个都是不可分的数据项:
数据First(Sno,Sname,Status,City,Pno,Qty)
关系为F={Sno->Sname,Sno->Status,Status->City,(Sno,Pno)->Qty}

2NF范式就是非主属性完全依赖于码:
First关系F中的码是Sno,Pno 而Status依赖Sno,故非2NF
若把关系变为First(Sno,Sname,Status,City)和Second(Sno,Pno,Qty),分解后Sname,Status,City完全依赖码Sno,Qty依赖于码Sno,Pno

3NF范式依然是分解(消除非主属性对码的y),分解为First(Sno,Sname,Status),Second(Status,City),Third(Sno,Pno,Qty)

数据库的控制功能

10.网络与信息安全基础知识

netstat:监控tcp/ip的状态信息,用于检验本机各端口的网络连接情况

DNS诊断指令:

​ nslookup(检测是否能正确实现域名解析)

​ ping(测试连通性)

​ tracert(追踪路由连通)

网络概述

网络互连硬件

软件设计师_第23张图片

各个端口号

软件设计师_第24张图片

网络的协议与标准

路由类型

软件设计师_第25张图片

internet及应用

信息安全基础知识

  1. 网络安全概述:

    木马程序:
    木马程序一般分为服务器端(Server)和客户端(Client), 服务器端是攻击者传到目标机器上的部分,用来在目标机上监听等待客户端连接过来。客户端是用来控制目标机器的部分,放在攻击者的机器上。
    3.防火墙
    ①工作层次。 这是决定防火墙效率及安全的主要因素。一般来说, 工作层次越低,则工作效率越高, 但安全性就低了;反之, 工作层次越高,工作效率越低, 则安全性越高。
    ②防火墙采用的机制。 如果采用代理机制, 则防火墙具有内部信息隐藏的特点, 相对而言, 安全性高, 效率低;如果采用过滤机制, 则效率高, 安全性却降低了。
    
  2. 对称加密与非对称加密

    非对称加密又称为公开密钥加密,而共享密钥加密指对称加密。常见的对称加密算法有:DES,三重DES,RC-5,
    
    公钥加密算法有:RSA,ELGamal,背包算法,Rabin(RSA的特例),迪菲-赫尔曼密钥交换协议中的公钥加密算法,椭圆曲线加密算法;
    DES是典型的私钥加密体制
    
  3. 数字签名

    DSA数字签名(又称为公钥数字签名)
    谁发的就用谁的公钥
    
    公钥和私钥是成对的,它们互相解密。
    公钥加密,私钥解密。
    私钥数字签名,公钥验证。
    

    MIME是电子邮箱协议

DMZ区:是为了解决安装防火墙后外部网络不能访问内部网络服务器的问题,是一个非安全系统与安全系统之间的缓冲区,这个缓冲区位于企业内部网络和外部网络之间的小网络区域内,在这个区域内存放一些必须公开的服务器设施,如企业Web服务器,FTP服务器和论坛等

11.标准化和软件知识产权基础知识

标准化基础知识

知识产权基础知识

著作权归属(只属于单位与组织时):

如果开发者在单位或组织中任职期间,所开发的软件若符合以下条件的,则软件著作权应归单位或组织所有:
(1)针对本职工作中明确规定的开发目标所开发的软件;
(2)开发出的软件属于从事本职工作活动的结果;
(3)使用了单位或组织的资金、专用设备、未公开的信息等物质、技术条件,并由单位或组织承担责任的软件。

授权判断

合理使用是指可以不经著作权人许可,不需支付报酬,使用其作品;
许可使用是指在获得著作权人许可后使用其作品;
强制许可使用也称为强制许可或非自愿许可,是指国务院专利行政部门依照法律规定,可以不经专利权人的同意,直接允许申请人实施专利权人的发明或实用新型专利的一种行政措施;法定许可使用是指法律明文规定,可以不经著作权人许可,以特定的方式有偿使用他人已经发表的作品的行为,并且这种使用应当尊重著作权人的其他各项人身利和财产权。

软件设计师_第26张图片

12.软件系统分析与设计

结构化分析与设计

数据库分析与设计

面向对象分析与设计

算法分析与设计

面向对象的程序设计与实现

13.多媒体技术

基本概念

矢量图:是根据几何特性来绘制图形,特点是放大后图像不会失真,和分辨率无关,适用于图形设计,文字设计和一些标志设计,版式设计等
矢量图中的图形元素称为图元

位图:位图图像是由像素(图片元素),可以表现色彩的变化和颜色的细微过渡,产生逼真的效果,缺点是在保存时需要记录每一个像素的位置和颜色值

CIF:标准化图像格式,标准采集分辨率CIF=352*288像素

MPEG格式:

MPEG即活动图像专家组,MPEG组织制定的各个标准都有不同的目标和应用,目前已提出的标准有MPEG-1、mpeg-2、mpeg-4和MPEG-7

MPEG-1(VCD)标准用于传输1.5Mbps数据传输率的数字存储媒体运动图像及其伴音的编码。

MPEG-2(DVD)主要用于实现视/音频服务与应用互操作的可能性,是针对标准数字电视和高清晰度电视在各种应用下的压缩方案和系统层的详细规定。

MPEG-4将众多的多媒体应用集成于一个完整的框架内,旨在为多媒体通信及应用环境提供标准的算法及工具,从而建立起一种能被多媒体传输、存储、检索等应用领域普遍采用的统一数据格式。

MPEG-7标准被称为“多媒体内容描述接口”,为各类多媒体信息提供一种标准化的描述,这种描述将与内容本身有关,允许快速和有效的查询用户感兴趣的资料。mEG-7的目标是支持多种音频和视觉的描述,包括自由文本、N维时空结构、统计信息、客观属性、主观属性、生产属性和组合信息。对于视觉信息,描述将包括颜色、视觉对象、纹理、草图、形状、体积、空间关系、运动及变形等。

MPEG-21标准被称为多媒体框架描述

软件设计师_第27张图片

1.媒体

国际电话电报咨询委员会(CCITT)将媒体分为感觉媒体、 表示媒体、 表现媒体、存储媒体和传输媒体5类。
    感觉媒体指直接作用于人的感觉器官.,使人衍生内接感觉的媒体, 如引起听觉反应的声音、引起视觉反应的图像等;
    传输媒体指传输表示媒体的物理介质,如电缆、光缆。电磁波等;
    表示媒体指传输感觉媒体的中介媒体,即用于数据交换的编码,如图像编码、文本编码和声音编码等;
    表现媒体是指进行信息输入和输出的媒体,如键盘、鼠标、话筒,以及显示器、打印机、喇叭等;
	存储媒体指用于存储表示媒体的物理介质,如硬盘、光盘等

2.分辨率

显示分辨率是指显示器上能够显示出的像素点数目,即显示器在横向和纵向上能够显示出的像素点数目。
显示深度是指显示器上显示每个像素点颜色的二进制位数。
视频分辨率

软件设计师_第28张图片

3.音乐

改变数字载波频率可以改变乐音的音调
改变它的幅度就可以改变乐音的音高

14.计算机组成(转为二进制算)

浮点数表示
对阶时,小数向大数看齐;对阶是通过较小数的尾数右移实现的。

原码,反码,补码,移码

原码:

如果机器字长为n,那么一个数的原码就是用一个n位的二进制数,其中最高位为符号位:正数为0,负数为1。剩下的n-1位表示该数的绝对值。

例如: X=+101011 , [X]原= 00101011 X=-101011 , [X]原= 10101011

位数不够的用0补全。

PS:正数的原、反、补码都一样:0的原码跟反码都有两个,因为这里0被分为+0和-0。

反码:

知道了原码,那么你只需要具备区分0跟1的能力就可以轻松求出反码,为什么呢?因为反码就是在原码的基础上,符号位不变其他位按位取反(就是0变1,1变0)就可以了。

例如:X=-101011 , [X]原= 10101011 ,[X]反=11010100

补码:

补码也非常的简单就是在反码的基础上按照正常的加法运算加1。

例如:X=-101011 , [X]原= 10101011,[X]反=11010100,[X]补=11010101

PS:0的补码是唯一的,如果机器字长为8那么[0]补=00000000。

软件设计师_第29张图片

移码:

移码最简单了,不管正负数,只要将其补码的符号位取反即可。

例如:X=-101011 , [X]原= 10101011,[X]反=11010100,[X]补=11010101,[X]移=01010101

上午题参考希赛网

下午题可以去b站看,链接:下午题

你可能感兴趣的:(软件工程)