软件设计师总结集
- 一、计算机组成与体系结构
- 1.1 浮点数
- 1.2 Flynn分类法
- 1.3 指令流水线
- 1.4 层次化存储体系
- 1.4.1 程序的局限性
- 1.4.2 相联存储器
- 1.5 Cache
- 1.6 输入输出技术
- 1.7 总线系统
- 1.8 CRC循环冗余校验码
- 二、数据结构与算法基础
- 2.1 队列与栈
- 2.2 树与二叉树的特殊性
- 2.2.1 二叉树的结点数
- 2.2.2 树的分类
- 2.2.3 N个二叉树结点求和
- 2.3 最优二叉树(哈夫曼树)
- 2.3.1 霍夫曼编码
- 2.4 拓扑排序
- 2.5 贪心法
- 三、系统开发基础
- 3.1 开发模型
- 3.2 软件开发方法
- 3.3 内聚性
- 3.4 模块设计原则
- 3.5 架构设计
- 3.5.1 管道过滤器风格
- 3.6 测试分类与阶段任务划分
- 3.6.1 单元测试
- 3.7 McCabe复杂度计算
- 3.8 软件质量保证
- 3.9 软件过程改进
- 3.10 结构化设计任务
- 3.11 软件评审
- 四、项目管理
- 4.1 风险管理
- 4.2 其他
- 五、面向对象技术
- 5.1 面向对象的基本概念
- 5.1.1 多态
- 5.1.2 类和对象
- 5.2 面向对象开发各阶段划分及任务
- 5.3 UML图的图示
- 5.4 UML图的定义
- 5.5 UML图中的关系
- 5.6 设计模式的图
- 5.7 其他
- 5.7.1 基类中成员在派生类中的访问权限
- 5.7.2 派生类所继承的基类成员的外部能见度(外界对基类成员的访问权限)
- 5.7.3 软件开发模型
- 5.7.4 模型协议
- 5.7.5 常见端口占用
- 5.7.6 字节转换
- 5.7.7 URL
- 5.7.8 加密方法
- 5.7.9 名词解释
- 5.8 设计模式精简版
- 六、操作系统
- 6.1 进程资源图
- 6.2 页式存储
- 6.3 磁盘管理
- 6.4 I/O管理软件
- 6.5 特殊的操作系统
- 6.5.1 嵌入式操作系统的特点
- 6.6 其他
- 七、知识产权与标准化
- 7.1 知识产权人确定
- 7.1.1 委托开发与合作开发
- 7.1.2 商标权/专利权申请
- 八、数据库系统
- 8.1 数据仓库
- 8.2 数据库设计过程
- 8.3 范式判断
- 8.4 数据库安全
- 九、计算机网络
- 9.1 常见TCP/IP协议基础
- 9.2 协议应用提升
- 9.3 常用命令
- 9.4 IPV6
- 9.5 路由配置
- 9.6 其他
- 9.7 HTML语言
- 十、信息安全
- 10.1 对称加密和非对称加密
- 10.2 信息摘要与数字签名
- 10.3 数字证书
- 10.4 计算机病毒与木马
- 10.5 防火墙技术
- 10.5.1 防火墙数据
- 10.5.2 防火墙类型
- 10.6 其他网络安全控制技术
- 10.7 其他
- 10.8 网络安全协议
- 十一、多媒体技术
- 11.1 其他
- 11.2 多媒体技术基本概念
- 十二、UML建模
- 十三、专业英语
- 13.1 语义网络
- 13.2 SWIFT
- 十四、程序设计语言
- 14.1 文法
- 14.2 编译与解释
- 14.3 错误管理
- 14.4 数据库并发
一、计算机组成与体系结构
1.1 浮点数
- 若浮点数的阶码用移码表示,尾数用补码表示。两规格化浮点数相乘,最后对结果规格化时,右规的右移位数最多为1位;
1.2 Flynn分类法
- 根据指令流和数据流分类
- SISD 单指令流单数据流机器
- SIMD 单指令流多数据流机器
- MISD 多指令流单数据流无实际意义
- MIMD 多指令流多数据流
1.3 指令流水线
当流水线各段所经历的时间不一样,吞吐率的计算公式如下:

流水线执行时间 = 一条指令顺序执行时间 + (n-1)*流水线周期
流水线周期为指令耗时最长的一段
吞吐率=指令数/流水线执行时间
最大吞吐率=1/流水线周期
1.4 层次化存储体系
1.4.1 程序的局限性
- 时间局部性:程序中的某段指令一旦被执行,则不久的将来该指令可能再次被执行;
- 空间局部性:程序访问某个存储单元,则不久的将来,附近的存储单元也有可能被访问。
1.4.2 相联存储器
- 相联存储器一种按内容进行存储和访问的存储器。
1.5 Cache
- Cache的设计思想是在合理成本下提高命中率;
- Cache是一个高速小容量的临时存储器;
- 可以用高速的静态存储器(SRAM)芯片实现以集成到CPU芯片内部,或者设置在CPU和内存之间,用于存储CPU最经常访问的指令或操作数据;
- CPU的速度和性能提高很快而贮存速度较低且价格高,其次是程序执行的局部性特点;
- 在于尽可能发挥CPU的高速度。
1.6 输入输出技术
- 程序控制(查询)方式:CPU需要不断查询I/O是否完成,因此一直占用CPU;
- 程序中断方式:中断方式CPU无需等待,提高传输请求的响应速度;
- DMA:DMA是为了在主存与外设之间实现高速、批量数据交换而设置的。DMA方式比程序控制方式、中断方式更高效,CPU只负责初始化。
1.7 总线系统
- PCI总线:是目前微型机上广泛采用的内总线,采用并行传输方式;
- SCSI总线:小型计算机系统接口时一条并行外总线;
1.8 CRC循环冗余校验码
- 循环冗余校验CRC采用模二除法运算。
二、数据结构与算法基础
2.1 队列与栈
- 普通队列:先进先出,元素在队列尾追加,而从队列头删除;
- 优先队列:元素被赋予优先级。访问元素,具有最高优先级的元素最先删除。优先队列具有最高级先出的行为特征;采用二叉堆数据结构实现,二叉堆的插入和删除时间复杂度均为O(lgn)。
2.2 树与二叉树的特殊性
2.2.1 二叉树的结点数
- 二叉树的二叉链表存储结构中每个结点有2个指针。每个结点有0个、1个或者2个空指针对应有2个、1个、0个非空指针;
- 边的个数=非空指针的个数;
- 空指针的个数=结点总个数+1;
- 边数=结点总个数-1;
- 叶子结点个数=度为2的结点个数+1;
推论如下:
设二叉树结点总个数=N,边数=M,度为0(没有子节点)的结点个数=n0,度为1(1个子节点)的结点个数=n1,度为2(2个子节点)的结点个数=n2
推出N = n0+n1+n2;
除根节点之外,每个结点都有边进入结点,M = N - 1, M = n1 + 2n2
根据上述条件推出 n0 = n2 + 1;
空结点(就是空指针,二叉树缺少的结点数)=K,K=2n0+n1
推出K = N + 1
M = N - 1,n0 = n2 + 1
2.2.2 树的分类
- 完全二叉树:让二叉树的每一层的结点都尽可能全满,除了最底层,树的高度一定是最小的;
- 排序二叉树:可能会得到单枝树,此时树的高度可能最大;
- 线索二叉树:与二叉树的遍历序列相关,不确定高度;
- 最优二叉树:与结点的权值有关,不确定高度
2.2.3 N个二叉树结点求和

N=0,是空树,只有1种形态,即A[0]=1。
N=1,是单节点树,只有1种形态。即A[1]=1。
当N>=2时,A[N]是对A[N]A[N-M-1],M从0~N-1的求和。
如:
当N=2时,M=0N-1=01,
A[2]=A[0] xA[2-0-1]+A[1] xA[2-1-1]=A[0] xA[1]+A[1] xA[0]=2;
当N=3时,M=0N-1=02,
A[3]=A[0] xA[3-0-1]+A[1] xA[3-1-1]+A[2] xA[3-2-1]
=A[0] xA[2]+A[1] xA[1]+A[2]A[0]=1x2+1x1+2x1=5。
2.3 最优二叉树(哈夫曼树)
2.3.1 霍夫曼编码
- 以每个字符的出现频率作为关键字构建最小优先级队列;
- 取出关键字最小的两个结点生成子树,根节点的关键字为孩子结点关键字之和,并将根节点插入到最小优先级队列中,直至得到一颗最优编码树;
- 采用贪心算法,每次获取当前情况的最优选择;


计算规则
- 通用型:6个字符需要3位表示,100000个字符 总长度 100000*3;
- 霍夫曼编码:(218%+232%+44%+48%+312%+226%)*100000
2.4 拓扑排序
- 对有向图G进行拓扑排序,顶点Vi在顶点Vj之前,则可能
- Vi和Vj是并列的;
- Vi到Vj有向弧;
2.5 贪心法
- 分治法:对于一个规模为n的问题,若该问题可以很容易解决,则直接解决;否则分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归解决这些子问题,然后将各子问题的解合并得到原问题的解;
- 动态规划法:求解问题中,对于每一步决策,列出各种可能的局部解,再依据某种判定条件,舍弃那些肯定不能得到最优解的局部解,在每一步都经过筛选,以每一步都是最优解来保证全局是最优解;
- 回溯法:回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标,但当搜索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择;
- 贪心法:总是做出在当前来说时最好的选择,并不从整体上加以考虑。所做的每一步选择都是当前步骤的局部最优选择,但从整体并不一定是最优的选择,不必为寻找最优解而穷尽所有的解,所以一般可以快速得到满意解,但得不到最优解。
三、系统开发基础
3.1 开发模型
- 喷泉模型
- 面向对象开发方式,迭代无间隙,以用户需求为动力,支持软件重用
3.2 软件开发方法
- 面向对象开发方法
- Booch
- Coad
- OMT
- 面向数据结构开发方法
- Jackson
3.3 内聚性
- 通信内聚:一个模块的所有成分都操作同一数据集或生成同一数据集;
- 逻辑聚合:模块内部的各个组成在逻辑上具有相似的处理动作,但功能用途上彼此无关;
- 过程聚合:模块内部各个组成部分所要完成的动作虽然没有关系,但必须按特定的次序执行;
- 内容耦合:一个模块需要涉及另一个模块的内部信息。
3.4 模块设计原则
- 模块化设计尽量考虑高内聚,低耦合,保持模块的相对独立性
- 模块的控制范围不在其作用范围内
- 模块的规模适中
- 模块的宽度、深度、扇入和扇出适中
3.5 架构设计
3.5.1 管道过滤器风格
- 软件架构具有良好的隐蔽性和高内聚、低耦合的特点;
- 允许设计者将整个系统的输入/输出行为看成多个过滤器的行为的简单合成;
- 支持软件重用;
- 支持并行执行;
- 允许对一些如吞吐量、死锁等属性的分析。
3.6 测试分类与阶段任务划分
3.6.1 单元测试
- 模块接口测试;
- 测试模块的输入参数和形式参数的个数、属性、单位上是否一致;
- 全局变量在各模块中的定义和用法是否一致;
- 输入是否改变了形式参数;
- 局部数据结构测试;
- 路径测试;
- 错误处理测试;
- 边界测试;
3.7 McCabe复杂度计算
McCabe度量法是一种基于程序控制流的复杂性度量方法。先画出程序图,然后采用公式V(G) = m - n + 2计算环路复杂度,其中m是图G中弧的个数,n是图G中的结点数。
3.8 软件质量保证
- 外部和内部质量
- 功能性
- 适合性
- 准确性
- 互操作性
- 安全保密性
- 功能性的依从性
- 可靠性
- 成熟型
- 容错性
- 易恢复性
- 可靠性的依从性
- 易用性
- 易理解性
- 易学性
- 易操作性
- 吸引性
- 易用性的依从性
- 效率
- 时间特性
- 资源利用性
- 效率依从性
- 维护性
- 易分析性
- 易改变性
- 稳定性
- 易测试性
- 维护性的依从性
- 可移植性
- 适应性
- 易安装性
- 共存性
- 易替换性
- 可移植性的依从性
3.9 软件过程改进
- CMM是指软件过程能力成熟度模型
- CMM1级成熟度最低,5级成熟度最高
- CMMI的任务是将已有的几个CMM模型结合在一起,使之构成“集成模型”
- CMM可以提高最终产品的质量
- CMM将软件成熟度由低到高依次划分为初始级、可重复级、定义级、管理级和优先级,其中管理级和优先级对软件过程和产品都有定量的理解与控制
3.10 结构化设计任务
接口设计的主要依据是数据流图,接口设计的任务主要是描述软件与外部环境之间的交互关系,软件内模块之间的调用关系。
3.11 软件评审
- 可维护性是所有软件都应具有的基本特点
- 必须在开发阶段保证软件具有可维护的特点
- 在系统分析阶段的复审过程中,应该指出软件的可移植性问题以及可能影响软件维护的系统界面;
- 在系统设计阶段的复审期间,应该从容易修改、模块化和功能独立的目的出发,评价软件的结构和过程;
- 在系统实施段的复审期间,代码复审应该强调编码风格和内部说明文档这两个影响可维护性的因素。
- 可测试性是可维护性的一个评价指标。
四、项目管理
4.1 风险管理
- 风险避免即放弃或不进行可能带来的损失的活动或工作,这是主动风险控制方法;
- 风险监控是指在决策主体的运行过程中,对风险的发展与变化情况进行全程监督,并根据需要进行应对策略的调整。
- 风险管理是指在一个肯定有风险的环境里把风险减到最低的管理过程,风险不可消除。
4.2 其他
- 花费时间最长的就是项目计划关键路径;
- 完成项目所需的最短时间就是项目计划关键路径所花费的时间。
五、面向对象技术
5.1 面向对象的基本概念
5.1.1 多态
- 参数多态:应用广泛、最纯的多态;
- 包含多态:同样的操作可用于一个类型及其子类型。包含多态一般需要进行运行时的类型检查。包含多态在许多语言中都存在,最常见的例子就是子类型化,即一个类型是另外一个类型的子类型;
- 强制多态:编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求;
- 过载多态:同一个名(操作符、函数名)在不同的上下文中有不同的类型。
5.1.2 类和对象
- 对象的组成:对象名,状态(属性),行为(操作);
- 类是对象共有属性和行为的抽象,一个类定义的对象共享行为和属性
5.2 面向对象开发各阶段划分及任务
- 面向对象分析主要强调理解问题是什么;
- 面向对象设计侧重于理解解决方案;
- 面向对象分析描述软件要做什么;
- 面向对象设计要考虑实现细节问题。
- 面向对象分析包含5个活动:认定对象、组织对象、描述对象间的相互作用、定义对象的操作、定义对象的内部信息。
- 认定对象是指:在应用领域中,按自然存在的实体确立对象。在定义域中,首先将自然存在的"名词"作为一个对象,这通常是研究问题定义域实体的良好开始。通过实体间的关系寻找对象常常没有问题,而困难在于寻找(选择)系统关心的实质性对象。实质性对象是系统稳定性的基础。例如在银行应用系统中,实质性对象应包含客户账务、清算等,而门卫值班表不是实质性对象,甚至可不包含在该系系统中;
- 组织对象含义是:分析对象间的关系,将相关对象抽象成类,其目的是为了简化关联对象,利用类的继承性建立具有继承性层次的类结构。抽象类时可从对象间的操作或一个对象是另一个对象的一部分来考虑;如房子由门和窗构成,门和窗是房子类的子类。由对象抽象类,通过相关类的继承构造类层次,所以说系统的行为和信息间的分析过程是一种迭代表征过程。
- 描述对象间的相互作用是:描述出各对象在应用系统中的关系。如一个对象是另一个对象的一部分,一个对象与其他对象间的通信关系等。这样可以完整地描述每个对象的环境境,由一个对象解释另一个对象,以及一个对象如何生成另一个对象,最后得到对象的界面描述。
5.3 UML图的图示
- 抽象类不能直接进行实例化,所以没有直接对象,只有非直接对象;
- UML通常用于系统的词汇,简单的协作,逻辑数据库模式;
- 类图:展现一组对象、接口、协作和它们之间的关系
- 对象图:展现了一组对象以及它们之间的关系;
- 用例图:展现了一组用例、参与者以及它们之间的关系;
- 序列图:是场景的图形化表示;
- 协作图:强调收发消息的对象的结构组织;
- 交互图:序列图和协作图都是交互图,交互图展示一种交互,由一组对象和它们之间的关系组成,包括它们之间可能发送的消息;
- 状态图:展现了一个状态机,它由状态、转换、事件和活动组成;
- 活动图:是一种特殊的状态图,它展现了在系统内从一个活动到另一个活动的流程;
- 构件图:展现了一组构件之间的组织和依赖;
- 部署图:展现了运行处理结点以及其中的构件的配置。
- 当对系统、类或用例的动态方面建模时,通常是对反应型对象建模;
- 状态的变化必须等待前置状态所有动作完成;
- 动作可以在状态内执行,也可以在状态转换时执行;
- 当触发转换的事件发生并且转换没有指定的监护条件时,对象将离开当前状态,并且其do动作终止;
- when(b=5)称为时间事件;
- 转换由事件触发。
- UML图中粗实线表示并发
5.4 UML图的定义
- 领域类模型中会涉及描述自身情况的属性和操作,描述类之关系的关联,不会存在对象层次的内容
5.5 UML图中的关系
- 关联关系:描述了一组链,链是对象之间的连接;
- 依赖关系:一件事物发生改变影响到另一个事物;
- 聚合关系:整体与部分生命周期不同的关系;
- 组合关系:整体与部分生命周期相同的关系;
- 在UML中,关联的多重度是指一个类的实例能够与另一个类的多少个实例相关联。
5.6 设计模式的图
- 组合设计模式将对象组合成树形结构以表示”部分-整体“的层次结构,使得客户对单个对象和组合对象的使用具有一致性;
5.7 其他
5.7.1 基类中成员在派生类中的访问权限
- public继承方式:不改变基类中成员的访问权限;
- private继承方式:派生类所继承的基类成员的访问权限都改为private;
- protected继承方式:父类中private成员的访问权限不变,其余的都改为protected。
5.7.2 派生类所继承的基类成员的外部能见度(外界对基类成员的访问权限)
- 基类的private成员,只有基类的成员函数可以访问,派生类不能访问;
- 通过private方式继承的基类成员(非private成员),只有派生类的成员函数可以访问,外界以及派生类的子类都不能访问;
- 通过protected方式继承的基类成员(非private成员),只有派生类以及该派生类的子类(非private、方式产生的)可以访问,外界不能访问。

- 方法F1是基类O的private成员,虽然PQ继承该方法,但是只有基类O的内部才能访问F1;
- 方法F2在P中的访问控制为protected,所以在类P内部该方法可以被访问,而类P的对象无法访问该方法,在OQ中访问控制均为public,故类OQ的对象都可以访问该方法。
- 方法F3在OPQ的访问控制均为protected,该方法只有在3个类的内部才能被访问
5.7.3 软件开发模型
- 瀑布(一但错误重来)
- 螺旋(风险)
- V(测试)
- 原型(需求不明确)
- 喷泉(面向对象)
- 增量(多版本)
5.7.4 模型协议
- OSI 七层模型
应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 - TCP/IP 四层协议
应用层 传输层 网际层 网络接口层
5.7.5 常见端口占用
- POP3 110
- SMTP 25
- FTP 21/20
- HTTP 80
- HTTPS 443
- TFTP 69
- DHCP 67
- DNS 53
- Telnet 23
- SNMP 161
5.7.6 字节转换
- 1字节(byte)(B)=8bit
- 1KB = 1024B
- 1M = 1024KB
- 1G = 1024M
- 1T = 1024G
5.7.7 URL
URL:协议名://主机名.组名.最高层域名
5.7.8 加密方法
- 对称加密 DES 3DES IDEA AES RC-5
- 非对称加密 RSA ECC
- 摘要算法 MD5 SHA
5.7.9 名词解释
- 过程内聚 特定次序
- 通信内聚 一个数据结构
- 功能内聚 同一功能
- 顺序内聚 顺序执行
- 时间内聚 同一时间
- 逻辑内聚 逻辑相关
- 巧合内聚 没有关系
- 非直接耦合 模块没有直接关系,通过主模块控制调用
- 数据耦合 借助参数传递数据
- 标记耦合 通过参数表传递数据结构
- 控制耦合 传递信息包含控制模块内部逻辑信息
- 外部耦合 模块访问同一全局变量
- 公共耦合 多模块访问同一公共数据环境
- 内容耦合 一个模块多个入口,两个模块代码重叠
- 白盒测试
- 语句覆盖 被测试每条语句执行一次 弱逻辑
- 判定/分支覆盖 被测试程序每个判断一次
- 条件覆盖 每个判定语句每个逻辑的值至少满足一次
- 判断/条件覆盖 同时满足判定和条件
- 条件组合覆盖 每个判定各种可能值组合至少一次
- 路径覆盖 覆盖测试可能的路
- 基本路径测试 每条路径都执行过
- 循环覆盖 循环每个条件得到验证
- 功能性:适合性 准确性 互操作性 安全保密性
- 可靠性:成熟性 容错性 易恢复性
- 易用性:易理解性 易学性 易操作性
- 效率:时间特性 资源利用性
- 维护性:易分析性 稳定性 易测试性 易改变性
- 可移植性:适应性 易安装性 一致性 易替换性
5.8 设计模式精简版
创建型
- 类:工厂(创建实例)
- 对象:抽象工厂(创建系列实例)、单例(实例)、原型(复制对象)、构建器(构建复杂对象)
结构型
- 类:适配器(转换接口)
- 对象:装饰(扩展功能)、组合(树形目录结构)、代理(快捷方式)、外观(统一接口)、桥接(继承树拆分)、享元(汉字编码)
行为型
- 类:模板(框架)、解释器(虚拟机的机制)
- 对象:观察者(联动)、访问者(数据与操作分离)、中介者(不直接引用)、命令(记录日志,可撤销)、状态(状态变更类)、策略(多方案)、迭代器(数据集)、备忘录(存档)、职责链(传递职责)
六、操作系统
6.1 进程资源图

- R1与R2代表资源,P1-P3代表进程
- 从资源指向进程的箭头代表有资源分配给了进程,从进程指向资源的箭头代表进程要申请这个资源;
- 阻塞点就是从这个进程开始执行,会让程序陷入死锁,执行不了,例如上图P2就是阻塞点。
6.2 页式存储

- 分页存储管理,将内存划分为大小相等的页面,每一页物理内存叫页帧,以页为单位对内存进行编号,该编号可作为页数组的索引,又称为页帧号;
- 淘汰页面,应选择最近没被访问的页面进行淘汰;
- 页面大小为4K,按2进制,则需要12位数来表示存储空间,逻辑地址3C18H转为2进制0011 1100 0001 1000,低12位为页内地址,高4位为页号,0011,转为十进制为3,页号3对应页帧号为2。
6.3 磁盘管理

- 如果磁盘的旋转周期为33ms,每个物理块读取时间是33/11=3ms,每个记录处理时间3ms

所以R0花费时间为3+3=6ms,此时磁头在R2,如果要转到R1,从R0开始一共花费一周时间+一个记录时间=33+3=36ms,
所以总的花费时间为6ms+36*10=366ms;
如果对信息优化处理,则读取时间+处理时间 * 11 = 66,磁头刚好处于能处理的记录上,不需要等待时间。
6.4 I/O管理软件

当用户通过键盘或鼠标进入某应用系统时,通常最先获得键盘或鼠标输入信息的是中断处理程序。
6.5 特殊的操作系统
6.5.1 嵌入式操作系统的特点
- 微型化,从性能和成本角度考虑,希望占用的资源和系统代码量少;
- 可定制性,从减少成本和缩短研发周期考虑,要求嵌入式操作系统能运行在不同的微处理器平台上,能针对硬件变化进行结构与功能上的配置,以满足不同应用的需求;
- 实时性,嵌入式操作系统主要应用于过程控制、数据采集、传输通信、多媒体信息及关键要害领域需要迅速响应的场合,所以对实时性要求较高;
- 可靠性,系统构件、模块和体系结构必须达到应有的可靠性,对关键要害应用还要提供容错和防故障措施;
- 易移植性,为了提高系统的易移植性,通常采用硬件抽象层和板级支撑包的底层设计技术。
6.6 其他
- PC,程序计数器,用来存储下一条指令的地址;
- IR,指令寄存器,用来存储正在执行的指令的操作码和地址码。
七、知识产权与标准化
7.1 知识产权人确定
7.1.1 委托开发与合作开发
- 著作权归属由委托人和受托人通过合同约定,合同中未作明确约定的,著作权属于受托人;
7.1.2 商标权/专利权申请
- 两方对同一个专利进行申请,无法都授予专利权
八、数据库系统
8.1 数据仓库
- 遗传算法
- 初始化
- 个体评价
- 选择运算
- 交叉运算
- 变异运算
8.2 数据库设计过程
- 在数据库逻辑结构设计阶段,需要需求分析阶段形成的需求说明文档、数据字典和数据流图作为设计依据
8.3 范式判断
- 自反律:若Y属于X属于U,则X -> Y
- 增广律:若X->Y,且Z属于U,则XZ->YZ
- 传递律:X->Y Y->Z 则X->Z
- 合并规则:X -> Y, X -> Z,则X->YZ;
- 伪传递律:若X->Y, WY->Z,则XW->Z;
- 分解规则: X->Y Z属于Y,则X->Z
- 在数据库逻辑设计阶段,若实体存在多值属性,那将E-R图转为关系模式,将实体的码分别和每个多值属性独立构成一个关系模式,得到的关系模式属于4NF
8.4 数据库安全
- 索引是数据库中提高查询效率的一种机制,不能进行数据更新;
- 视图一般是提供查询数据的,具有一定安全机制,但是不能进行数据更新;
- 触发器可以作为更新机制,但是无法避免数据库的关系模式被第三方获取,不安全;
- 存储过程,可以定义代码给用户使用,避免向第三方提供系统表结构过程,体现数据库安全机制。
九、计算机网络
9.1 常见TCP/IP协议基础
- ARP和ICMP是网络层协议;
- X.25是标准的接口协议;
- SNMP是应用层协议,协议报文封装在UDP协议中传送
- TLS(Transport Layer Security Protocol),传输层安全协议,用在两个通信应用程序之间提供保密性和数据完整性,通常位于某个可靠的传输协议上
9.2 协议应用提升
- DHCP,无效的IP地址:169.254.X.X(windows),0.0.0.0(linux)
9.3 常用命令
- ping windows系列自带的一个可执行命令,用于验证与远程计算机的连接;
- tracert命令 用来显示数据包到达目的主机所经过的路径;
- arp 用来显示和修改地址解析协议(ARP)缓存中的项目。
9.4 IPV6
- 两个IPV6结点可以通过现有的IPV4网络进行通信,则使用隧道技术;
- 纯IPV6结点可以和IPV4结点通信,则使用翻译技术。
9.5 路由配置
- 对于多种不同的路由协议到一个目的地的路由信息,路由器首先根据管理距离决定相信哪一个协议;
- RIP(Routing Information Protocol,路由信息协议)是一种内部网关协议(IGP),是一种动态路由选择协议,用于自治系统(AS)内的路由信息的传递;
- OSPF:OSPF(Open Shortest Path First,开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(atuonomous system AS)内决策路由,是对链路状态路由协议的一种实现,率属于内部网关协议(IGP),故运作于自治系统内部;
- BGP:边界网关协议(BGP)是运行于TCP上的一种自治系统的外部网关协议,,BGP是唯一一个用来处理像因特网大小的网络的协议,页式唯一能够妥善处理好不相关路由域间的多路连接的协议。
- UDP:传输层协议。
9.6 其他
- 在ASP内置对象,response可以修改cookie值,也可创建cookie,request可以访问cookie中值;
- 三网合一是指电信网,广播电视网,互联网
- HTTP的请求过程
- 在浏览器中输入URL,并按下回车键
- 浏览器向DNS服务器发出域名解析请求并获得结果
- 根据目的IP地址和端口号,与服务器建立TCP连接;
- 浏览器向服务器发送数据请求;
- 服务器将网页数据发送给浏览器;
- 通信完成,断开TCP连接;
- 浏览器解析收到的数据并展示
9.7 HTML语言
- 显示的信息为文档的标题,采用
标记。 - 一条分隔线,采用
标记。 - 字体Welcome是斜体,采用标记。
十、信息安全
10.1 对称加密和非对称加密
- 典型的对称加密算法:DES,3DES,AES等
- 典型的非对称加密算法:RSA,ECC等
- 典型的摘要算法:SHA,MD5
10.2 信息摘要与数字签名
- 数字签名是信息的发送者才能产生的,别人无法伪造的一段数字串,对信息的发送者发送信息真实性的一个有效证明,但不能验证接收者的合法性。
10.3 数字证书
- 数字证书包含发送方公钥;
- 数字签名确保消息不可否认。
10.4 计算机病毒与木马
- 木马程序通过邮件附件、程序下载等形式传播;
- 通过伪装网页登录过程,骗取用户信息进而传播;
- 通过攻击系统安全漏洞传播木马,占用系统资源,降低电脑效能,危害本机信息安全,将本机作为工具来攻击其他设备;
- Sniffer适用于拦截通过网络传输二点TCP/IP/UDPP/ICMP等数据包的一款工具,可用于分析网络应用协议,用于网络编程的调试、监控通过网络传输的数据、检测木马程序等。
- 特洛伊木马是一种通过网络传播的病毒,分为客户端和服务器端两部分,服务器端位于被感染的计算机,特洛伊木马服务器端运行后会试图建立网络连接,所以计算机感染特洛伊木马后的典型现象是有未知程序试图建立网络连接。
10.5 防火墙技术
10.5.1 防火墙数据
- DMZ是为了解决安装防火墙后外部网络不能访问内部网络服务器的问题而设立的缓冲区,这个缓冲区位于内部网络和外部网络之间的小网络区域内。
- 包过滤防火墙工作在网络协议IP层,它只对IP包的源地址、目标地址及相应端口进行处理,因此速度比较快,能够处理的并发连接比较多,缺点是对应用层的攻击无能为力;
- 包过滤成本与它的安全性能没有因果关系
- 应用程序和用户对于包过滤的过程并不需要了解,因此该技术对应用和用户是透明的
- 代理服务器防火墙将收到的IP包还原成高层协议的通讯数据,比如http连接信息,因此能够对基于高层协议的攻击进行拦截。缺点是处理速度比较慢,能够处理的并发数比较少,所以不能提高网络整体性能,而代理对于用户认证可以设置。
10.5.2 防火墙类型
- 包过滤防火墙:包过滤防火墙一般有一个包检查块(通常称为包过滤器),数据包过滤可以根据数据包头中的各项信息来控制站点与站点、站点与网络、网络与网络之间的相互访问,但无法控制传输数据的内容,因为内容是应用层数据,而包过滤器处在网络层和数据链路层之间;
- 应用级网关防火墙:应用代理网关防火墙彻底隔断内网与外网的直接通信,内网用户对外网的访问变成防火墙对外网的访问,然后再由防火墙转发给内网用户。所有的通信都必须经应用层代理软件转发,它可对应用层的通信数据流进行监控和过滤。
- 数据库防火墙:数据库防火墙技术是针对关系型数据库保护需求应运而而生的一种数据库安全主动防御技术,数据库防火墙部署于应用服务器和数据库之间
- Web防火墙:Web防火墙是入侵检测系统,入侵防御系统的一种。从广义上来说,Web应用防火墙就是应用级的网站安全综合解决方案,与我们所讲到的防火墙概念有一定区别
10.6 其他网络安全控制技术
- 防火墙是位于两个(或多个)网络间,实施网络间访问控制的一组组件的集合,是一套建立在内外网络边界上的过滤封锁机制。
- 过滤掉不安全服务和非法用户
- 控制对特殊站点的访问;
- 提供监视internet安全和预警的方便端点。
- 漏洞扫描系统基于漏洞数据库,通过扫描等手段,对指定的远程或者本地计算机系统的安全脆弱性进行检测,发现可利用的漏洞的;
- 可以获取某FTP服务器中是否存在可写目录的信息;
- 入侵检测是防火墙的合理补充,帮助系统对付网络攻击,扩展系统管理员的安全管理能力(包括安全审计,监视,进攻识别和响应),提高信息安全基础结构的完整性,从计算机网络系统中的若干关键点收集信息,并分析这些信息,看网络中是否有违反安全策略的行为和遭到袭击的迹象。入侵检测被认为是防火墙过后的第二道安全闸门,在不影响网络性能的情况下能对网络进行监测、从而提供对内部攻击,外部攻击和误操作的实时保护;
- 病毒防御系统是一个用来防止黑客、病毒、木马的防御系统。
10.7 其他
- 数据的机密性(保密性):数据在传输过程中不能被非授权者偷看;
- 数据的完整性:数据在传输过程中不能被非法篡改;
- 数据的真实性(不可抵赖性):信息的发送者身份的确认或系统中有关主体的身份确认,保证信息的可信度;
- 可用性:发送者和接收者双方的通信正常。
10.8 网络安全协议
- IPSec工作于网络层,为IP数据报文进行加密。
- PP2P工作于数据链路层,用于链路加密。
- HTTPS是HTTP与SSL的结合体,为传输层以上层次数据加密
- TLS安全传输层协议用于在两个通信应用程序之间提供保密性和数据完整性
十一、多媒体技术
11.1 其他
- 面向对象程序设计语言为面向对象实现阶段提供支持;
- 若不能得到全部顶点的拓扑序列,则说明该有向图一定包含回路;
- 一个文法定义的语言是终结符号串的集合,这些终结符号串应能从文法的起始符号出发推导出来;
- 甘特图动态地反应项目开发进展情况
- 甘特图,PERT(计划评审技术)图及CPM(关键路径法)图是软件项目管理中常用的管理开发进度的工具,鱼骨图是常用来发现问题根源并提出解决问题的有效办法的工具
- 设备驱动程序是直接与硬件打交道的软件模块,设备驱动程序的任务是接受来自于设备无关的上层软件的抽象请求,进行与设备相关的处理;
- I/O设备与主机间进行数输入输出主要有直接程序控制方式、中断方式、DMA方式和通信控制方式;
- 在中断方式下、CPU需要执行程序来实现数据传送任务;
- 中断方式和DMA方式下,CPU和I/O设备都可同步工作;
- 若同时接到DMA请求和中断请求,CPU优先响应DMA请求。
- 用户因等待时间过长的原原因我们不难想象应该是图片或影像文件过大,且不支持一边下载一边观看。因此能解决这个问题的最好办法就是流媒体技术,而JPEG累进编码方式和GIF图像文件格式都支持一定程度上的压缩,可以减少原文件的大小。AD/DA变换描述的是数字信息与模拟信息的转换。
11.2 多媒体技术基本概念
- 视频(Video)泛指将一系列静态影像以电信号方式加以捕捉,记录,处理,储存,传送,与重现的各种技术。帧是构成视频信息的基本单元。连续的图像变化每秒超过24帧(fraame)画面以上时,根据视觉暂留原理,人眼无法辨别单幅的静态画面;看上去是平滑连续的视觉效果,这这样连续的画面叫做视频;
十二、UML建模
- 当采用标准UML构建系统类模型(Class Model),若类B除具有类A的全部特性外,类B还可以定义新的特性以及置换类A的部分特性,那么类B与类A具有泛化关系;
- 若类A的对象维持类B对象的引用或指针,并可与类C的对象共享相同的类B的对象,那么类A和类B具有聚合关系;
十三、专业英语
13.1 语义网络
The development of the Semantic Web proceeds in steps, each step building a layer on top of another. The pragmatic justification for this approach is that it is easier to achieve consensus on small steps, whereas it is much harder to get everyone on board if too much is attempted. Usually there are several research groups moving in different directions; this competition of ideas is a major driving force for scientific progress. However, from an engineering perspective there is a need to standardize. So, if most researchers agree on certain issues and disagree on others, it makes sense to fix the points of agreement. This way, even if the more ambitious research efforts should fail, there will be at least partial positive outcomes.
Once a standard has been established, many more groups and companies will adopt it, instead of waiting to see which of the alternative research lines will be successful in the end. The nature of the Semantic Web is such that companies and single users must build tools, add content, add use that content. We cannot wait until the full Semantic Web vision materializes - it may take another ten years for it to be realized to its full extent (as envisioned today, of course).
语义网络的发展是一步一步的,每一步都建立在之前的基础之上。选择这种方法的现实理由就是因为很容易对一小步达成一致,而如果想要一步到位就难的多。通常,很多研究组织都是从不同方向考虑的,这种思想的竞争的方式是科学进步的驱动力。然而,从工程的角度来说是需要进行标准化的。因此,如果大多数研究者统一某个观点不同意另一个的时候,改正观点是有意义的,这样,即使再宏大的研究努力也会失败,可能会有局部的积极效果。
一旦一个标准被建立,许多组织和企业都会采纳,而不是等待并查看其他研究先是否会获得成果。语义网络的性质就是让企业和单个用户必须构建工具,添加内容并使用。我们不会等着整个语义网络被物化-因为实现它的全部内容需要再过十年时间(当然是按照今天所设想)。
13.2 SWIFT
There is nothing in this world constant but inconstancy. -SWIFT
Project after project designs a set of algorithms and then plunges into construction of customer-deliverable software on a schedule that demands delivery of the first thing built.
In most projecs, the first system built is barely usable, it may be too slow, too big, awkward to use, or all three. There is no alternative but to start again, smarting but smarter, and build a redesigned version in which these problems are solved. The discard and redesign may be done in one lump, or it may be done piece-by-piece. But all large-system experience shows that it will be done. Where a new system concept or new technology is used, one has to build a system to throw away, for even the best planning is not so omniscient as to get it right the first time.
The management question, therefore, is not whether to build a pilot system and throw it away. You will do that. The only question is whether to plan in advance to build a throwaway, or to promise to deliver the throwaway to customers. Seen this way, the answer is much clearer. Delivering that throwaway to customers buys time, but it does so only at the cost of agony for the user, distraction for the builders while they do the redesign, and a bad reputation for the product that best redesign will find hard to live down.
Hence plan to throw one away, you will, anyhow.
不变只是愿望,变化才是永恒。
一个接一个的软件项目都是一开始设计算法,然后将算法应用到待发布的软件中,接着根据时间进度把第一次开发的产品发布给客户。
对于大多数项目,第一个开发的系统并不适用。他可能太慢、太大、难以使用,或者三者兼有。要解决所有的问题,除了重新开始以外,没有其他的办法-即开发一个更灵巧或者更好的系统。系统的丢弃和重新设计可以一步完成,也可以一块块地实现。所有大型系统的经验都显示,这是必须完成的步骤。而且,新的系统概念或者新技术会不断出现,因此开发的系统必须被抛弃,但即使是最优秀的项目计划也不能无所不知的在最开始就解决这些问题。
因此,管理上的问题不再是“是否构建一个实验性的系统,然后抛弃它”,你必须这样做。现在的问题是“是否预先计划抛弃原型的开发,或者是否将该原型发布给用户”。从这个角度看待问题,答案更加清晰。将原型发布给用户,虽然可以获得时间,但是其代价高昂-对于用户,使用极其痛苦,对于重新开发的人员,分散了经精力,对于产品,影响了声誉,即使是最好的再设计也难以挽回名声。
因此,为舍弃而计划,无论如何,你一定要这样做。
十四、程序设计语言
14.1 文法
- 几乎所有程序设计语言都是通过上下文无关文法来定义的,足够简单,可以构造有效的分析算法来检验一个给定字串是否由某个上下文无关文法产生的;
- S-> 11 | 1001 | S0 | SS,从S可推导出,11,1001,110,1111,11110,10010等,都能被3整除
14.2 编译与解释
- 编译和解释是语言处理的两种基本方式。
- 编译过程包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段,以及符号表管理与出错处理模块。
- 解释过程在词法、语法和语义分析方面与编译程序的工作原理基本相同,但是在运行用户程序时,它直接执行源程序或源程序的内部形式。
- 在编译方式下,机器上运行的是与源码程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程;
- 在解释方式下,解释程序和源程序(或其某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序。
14.3 错误管理
编译程序对C语言源程序进行语法分析时,可以确定变量是否定义(或声明)
14.4 数据库并发

在事务并行处理的过程中,因为多个事务对相同数据的访问,千扰了其他事务的处理,产生了数据的不一致性,是事务隔离性的破坏导致了一致性的破坏。并发操作带来的数据不一致性有三类:丢失修改、不可重复读和读"脏"数据。
事务T1读取A、B的值后进行运算,事务T2在6时刻对B的值做了修改以后,事务T1在t8、tg时刻又重新读取A、B的值再运算,同一事务内对同一组数据的相同运算结果不同,显然与事实不相符,这种情况的产生是由于事务T2干扰了事务T1的独立性,导致不可重复读。
事务T2、T3对数据B分别做减100和加50操作,都是写入数据成库。其中事务T2在时刻t6把B修改后的值100写入数据库,但事务T3在时刻t11再把它对B加50后的值250写入数据库。两个事务都是对H的值进行修改操作并且都执行成功,但B中的值却为250,造成数据的不一致。原因在于T2事务对数据库的修改被T3事务覆盖而丢失了,破坏了事务的隔离性,所以丢失修改。