目录
11.1 用户需求分析阶段:数据流图、数据字典、说明性表格、系统功能结构图等。
11.3 逻辑结构设计阶段:确定数据模型、确定完整性约束和用户视图。
1. 计算机基础知识
指令周期:指执行一条指令所需要的时间;
时钟周期:计算机中最基本的、最小的是时间单位。
DMA:在主存与外设之间建立了直接的数据通路。
采用DMA方式传送数据时,没传送一个数据都需要占用一个总线周期。(因为DMA方式中CPU不参与)
cpu执行算数运算或逻辑运算时,常将源操作数和结果暂存在累加器中。
相联存储器按内容访问;逻辑/虚拟存储器按地址访问。
常用的虚拟存储器由 主存-辅存 两级存储器组成。
CPU访问数据的优先级:高速缓存 → 主存 → 辅存。
在由高速缓存、主存和硬盘构成的三级存储体系中,cpu执行指令时需要读取数据,那么DMA控制器和中断CPU发出的数据地址是 主存物理地址。
流水方式执行n条指令所需要的时间为:( t取指+t分析+t执行 )+(n-1)× MAX( t取指,t分析,t执行 );
RISC(精简指令集计算机)特点:精简指令+硬件结构优化(流水线技术、高速缓存、寄存器堆)
CISC(复杂指令集计算机)特点:复杂指令+软件兼容+硬件逻辑复杂(微程序控制单元)
2. 程序语言基础知识
在对高级语言源程序进行编译的过程中,为源程序中变量所分配的存储单元的地址属于逻辑地址;
在运行时才将逻辑地址转换为物理地址。
PHP:动态网页处理;HTML:网页构建;JS:前端交互;Swift:ios应用开发。
程序中全局变量的存储空间在静态数据区分配;局部变量动态改变,在动态数据区(栈和堆)分配。
脚本语言:解释执行(边翻译边执行);JS,Shell,XML,Ruby等;
通用程序语言:编译执行(需提前编译为机器码)或混合执行(编译为中间字节码再执行);C、C++、Java等;适合应用在系统级程序开发中。
常用的中间码有后缀式、三地址码、抽象语法树等。
编译方式下,用户程序运行的速度更快。
语境包括编译环境和运行环境。
在高级语言源程序中,常需要用户定义的标识符为程序中的对象命名,常见的妈妈对象有:变量、函数、数据类型。(枚举类型的对象可以由用户自定义命名)
3. 数据结构
查找算法中,顺序查找无需要求有序,适合数据量小的情况;折半查找要求查找表进行顺序存储并且按照关键字有序排列,一般不进行表的插入和删除操作;分块查找块内无序、块间有序;动态查找基于树结构,支持在查找过程中动态插入或删除元素。
折半查找:mid= (left+right) // 2; mid = left+1 or right-1
稳定的排序算法:直接插入、冒泡排序、归并排序。其它都是不稳定的。
设一个具有头节点的单链表,指针 h 指向其头节点,则当 h->next == null 时该链表表为空(若不为空,h->next 是第一个数据节点的地址);如果该单链表非空,且指针 p 指向链尾,那么 p->next == null.
4. 操作系统
系统中共有 n 个进程共享一类资源,当每个进程都需要 k 个资源时,至少需要 (k-1)×n 个资源才不会发生死锁。
死锁的处理策略有:鸵鸟策略、预防策略、避免策略、检测与解除死锁。
用户级线程不依赖于内核,该类线程的创建、撤销和切换都不利用系统调度来实现;
内核支持线程依赖于内核,该类线程的创建、撤销和切换都利用系统调用来实现。
操作系统中,短期调度/低级调度/进程调度,决定内存中那个就绪进程可以占用CPU;中级调度/中程调度/兑换调度,决定于交换区中的那个就绪进程可以调入进程;长期调度/高级调度/作业调度,决定出于池中哪个后备作业可以调入主系统做好运行的准备。
逻辑地址:页号+页内地址
物理地址:块号+页内地址
快表 / 相联存储器 / 转换检测缓冲区 / TLB:能够不访问页表,实现快速将虚拟地址映射到物理地址的硬件机制。
I/O系统的存储结构:用户进程 → 设备无关软件 → 设备驱动软件 → 中断处理软件 → 硬件。
当用户通过键盘或鼠标进入某应用系统时,通常最先获得键盘或鼠标输入信息的是:中断处理程序。(常规IO请求事件,如打印文字会遵循上述顺序;IO输出事件,如用户通过键盘或鼠标操作时,这是一个硬件主动触发的异步事件,流程与输出相反。)
Spooling /假脱机技术: 缓和CPU的高速性和 I/O设备的低速性之间的矛盾;
作业响应比 = 作业响应时间/作业执行时间 = (作业等待时间+作业执行时间)/执行时间;
若系统正在将目录文件修改的结果写回磁盘时系统发生崩溃,则对系统的影响相对较大。
在Windows系统中,磁盘碎片整理程序可以分析本地卷,以及合并卷上的可用空间使其成为连续的区域,从而使系统可用更高效地访问文件或文件夹。
5. 计算机网络
网络互联设备分类 | ||
---|---|---|
物理层 | 中继器、集线器 | 位(比特流) |
数据链路层 | 网桥、交换机 | 帧 |
网络层 | 路由器、三层交换机 | 数据包 |
应用层 | 网关 | 报文 |
ISO/OIS七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
ARP 负责把 IP 地址转换为物理地址(MAC地址),RARP 负责把物理地址转换为 IP 地址。
ICMP:是一个专门用于发送差错报文的协议。(通告网络故障、通告网络拥堵、协助解决故障)
路由器连接的各部分各形成一个广播域,交换机的每个端口属于一个冲突域,集线器连接的所有主机构成一个冲突域。
TCP/IP协议簇
防火墙技术经历了 包过滤、应用代理网关 和 状态检测技术 三个发展阶段。
防火墙工作层次越高,工作效率越低,安全性越高。
Linux系统文件的权限表示:r可读;w可写;x可执行;-无权限;[类型][所有者权限][组用户权限][其它用户权限]。
蠕虫的恶意代码中,不需要宿主程序。
自动向应用程序注入意想不到的输入,以发现可利用的脆弱性的测试方法是 模糊测试。
模拟真实黑客攻击场景,在程序运行状态下对系统、应用或网络进行 渗透测试,验证其防御机制的有效性,发现可被利用的漏洞。
6. 数据库技术
数据抽象:物理层、逻辑层、试图层
三级模式:外模式、概念模式、内模式。
两级映象:模式/内模式映象→保证物理独立性、外模式/模式映象→保证逻辑独立性。
数据的独立性:物理独立性(当数据库的内模式发送改变时,数据的逻辑结构不变);逻辑独立性(数据库的逻辑结构发生变化后,用户程序也科研不修改,但是为了程序能够正确执行,需要修改 外模式/模式 之间的映像)。
数据模型的三要素:数据结构、数据操作、数据的约束条件。
在C/S(客户机/服务器)结构中,应用程序安装运行在 客户机 端;在B/S(浏览器/服务器)结构中,应用程序安装运行在 Web服务器 端。
7. 关系数据库
关系的完整性约束:实体完整性、参照完整性、用户定义完整性。
查询优化的准则:
1) 提早执行选取运算。对于有选择运算的表达式,用优化成尽可能先执行选择运算的等价表达式。
2)合并乘积与其后的选择运算为连接运算。
3)将投影运算与其后的其它运算同时进行,以避免重复扫描关系。
等等。
1NF:关系模式R的每一个分量是不可再分的数据项。
2NF:在 INF 基础上消除了非主属性对码的部分函数依赖。
3NF:在 2NF 基础上消除了非主属性对码的传递函数依赖。
BCNF:在 3NF 基础上消除了主属性对码的部分函数依赖和传递函数依赖。
4NF:在 INF 基础上限制关系模式的属性间不允许有非平凡且非函数依赖的多值依赖。
8. SQL
实体完整约束:
1) 列后面加 PRIMARY KEY;
2) 在最后加 PRIMARY KEY (属性名1,属性名2); // 主码为属性组时只能用这种方式
参照完整性约束:
1)列后面加 REFERENCES 表名(属性名);
2)在最后对每一个外码加一行 FOREIGN KEY(属性名)REFERENCES 表名(属性名) [ON DELETE CASADE] //表示删除被参照关系的元组时,同时删除参照关系中的元组。
[ON DELETE SET NULL] // 表示删除被参照关系的元组时,将参照关系的相应属性值设为null。
属性值上的约束
1)NOT NULL
2) UNIQUE
3) NOT NULL UNIQUE
4) CHECK // CHECK(余额 >= 0)
全局约束
1)基于元组:CHECK(入职日期 <= 离职日期)
2) 基于断言:CREATE ASSERTION ASSE_SC1 CHECK (...)
索引
1)创建索引:CREATE [ UNIQUE] [ CLUSTER ] INDEX <索引名> ON <表名>(<列名>[次序] [<,列名>[次序]]...)
2)删除索引:DROP INDEX <索引名>
授权
GRANT 权限/ALL PRIVILEGES ON 表名/数据库名
TO 用户1,用户2/PUBLIC
[ WITH GRANT OPTION ]
收回权限
REVOKE 权限/ALL PRIVILEGES ON 表名/数据库名
TO 用户1,用户2/PUBLIC
[ RESTRICT | CASADE ] // RESTRICT 表示只收回语句中指定的用户的权限;CASADE级联收回
触发器
游标
1)定义游标:DECLARE <游标名> CURSOR FOR < SELEC 语句>
2)打开游标:OPEN <游标名称>
3)推进游标:FETCH 游标名 INTO 变量表 // 与selct后面的属性类型、个数要一致
4)关闭游标:CLOSE <游标名称>
9. 关系型数据库 NoSQL
NoSQL数据库的种类 | |
文档存储 | MongoDB、CouchDB |
键值存储 | Memcached、Redis |
列存储 | Bigtable、HBase、Cassandra |
图存储 | Neo4j、OrientDB |
CAP : 一致性、可用性、分区容忍性
ACID: 原子性、一致性、隔离性、持久性
BASE: 基本可用、软状态、最终一致性
10. 系统开发和运行
结构化开发方法:精髓是自顶向下、逐层分解、模块化设计;基本原则是功能的分解和抽象。
需求的分类:
功能需求:所开发的软件必须具备什么样的功能;
非功能需求:是指产品必须具备的属性或品质,如可靠性、性能、响应时间、容错性和扩展性等。
设计约束:也称为限制条件、补充规约,这通常是对解决方案的一些约束说明。
耦合:
1) 无直接耦合
2) 数据耦合: 指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。
3) 标记耦合: 指两个模块之间传递的是数据结构,如高级语言中的数据组名、记录名、文件名等这
些名字即为标记。
4) 控制耦合: 指一个模块调用另一个模块时,传递的是控制变量,被调模块通过该控制变量的值有
选择地执行块内的某一功能。
5) 公共耦合: 指通过一个公共数据环境相互作用的那些模块之间的耦合。
6) 内容耦合: 是耦合性程度最高的。当一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部,这种模块之间的耦合为内容耦合。
内聚:
1) 偶然内聚: 指一个模块内的各个处理元素之间没有任何联系。
2) 逻辑内聚: 指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
3) 时间内聚: 把需要同时执行的动作组合在一起形成的模块为时间内聚模块。
4) 通信内聚: 指模块内所有处理元素都在同一个数据结构上操作,或者指各处理使用相同的输入数
据或产生相同的输出数据。
5) 顺序内聚:指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的
输出就是下一功能元素的输入。
6) 功能内聚:这是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。
软件维护:正确性维护、适应性维护、完善性维护、预防性维护。
11. 数据库设计
11.1 用户需求分析阶段:数据流图、数据字典、说明性表格、系统功能结构图等。
数据字典包括 数据项、数据结构、数据流、数据存储 和 处理过程 5个部分。
11.2 概念结构设计阶段:E-R图,局部设计→合并ER图
分ER图合并时,存在的冲突类型:
1) 属性冲突:同一属性在不同的分图中,属性的类型、取值范围、数据单位不一致。
2) 命名冲突:相同意义的属性在分图中有这不同的命名,或不同意义的属性有着相同的命名。
3) 结构冲突:同一实体在不同的分图中有着不同的属性,或同一对象在某分图中抽象为实体而在另一分图中又被抽象为属性。
11.3 逻辑结构设计阶段:确定数据模型、确定完整性约束和用户视图。
确定完整性约束和确定用户视图,属于逻辑结构设计阶段的工作。
(1:1)联系转换:将联系归并到关联的两个实体的任意一方。
(1:*)联系转换:将联系归并到关联的两个实体的多方,外键约束。
(*:*)联系转换:转换成一个独立的关系模式,属性取所关联的两个多方实体的码及联系的属性。
11.4 物理设计阶段:确定数据分布、存储结构和访问方式。
11.5 运行维护和管理阶段
数据库重组:在不改变数据库逻辑和物理结构的情况下,去除数据库存储文件中的废弃空间及碎片空间中的指针链,使数据库记录在物理上紧连。
数据库重构:对数据库的结构做修改,包括表结构的修改和视图的修改。
审计,记录数据库资源和权限的使用情况。审计是被动的,只能跟踪对数据库的修改而不能防止。
12. 事务
事务的特性:ACID:原子性、一致性、隔离性、持久性。
并发操作带来的数据不一致性有三类:丢失修改、不可重复读、读脏数据。
可串行化的调度:多个事务的并发执行是正确的,当且仅当其结果与某一次序串行地执行它们的结果相同,称这种调度策略是可串行化的调度。
可串行化是并发事务正确性的准则。即:一个给定的并发调度,当且仅当它是可串行化的才认为是正确调度。
排他锁(X锁):也称为写锁。如果事务 T 对数据加 X 锁后,其它事务对该数据不能再加任何锁,不能读取和修改数据,直到事务 T 释放锁。
共享锁(S锁):也称为读锁。如果事务 T 对数据加 S 锁后,事务T只能读数据但不可以修改,其它事务可以再对数据加S锁,但不能再加X锁。
封锁协议
1)一级封锁协议:指 事务T 在修改 数据A 之前必须先对其加 X 锁,直到事务结束才释放 X 锁。解决了丢失修改的问题。
2) 二级封锁协议:在一级封锁协议之上,加上 事务T 在读取 数据A 之前必须对其加上 S 锁,读完后即可释放 S 锁。 解决了读脏数据的问题。
3)三级封锁协议:在一级封锁协议之上,加上 事务T 在读取 数据A 之前必须对其加上 S 锁,直到事务结束才释放锁。解决了不可重复读的问题。
两段锁协议
两段锁协议是指同一事务对任何数据进行读写之前必须对该数据加锁;在释放一个锁之后,该事务不再申请和获得任何其它封锁。
所谓“两段”的含义时:事务分为两个阶段。第一阶段是获得封锁,也成为扩展阶段;第二阶段是释放封锁,也称为收缩阶段。
注意:两段锁协议是可串行化的充分条件,但不是必要条件。采用两段锁协议也有可能产生死锁。
事务的隔离级别
1. READ UNCOMMITTED // 可避免丢失修改
2. READ COMMITTED // 可避免丢失修改、读脏数据
3. REPEATABLE READ // 可避免丢失修改、读脏数据、不可重复读
4. SERIALIZABLE // 可避免丢失修改、读脏数据、不可重复读、幻读
数据库恢复的基础:建立冗余
1)事务故障的恢复:日志UNDO
2)系统故障的恢复:日志UNDO+REDO
3)介质故障的恢复:备份+日志UNDO+REDO
检查点机制
在日志中设置检查点,当发生故障需要利用日志文件恢复时,反向扫描日志文件,找到检查点,确认检查点时刻正在执行的活动事务。对于检查点后提交的事务,从事务开的开始标志起,正向扫描日志执行REDO操作;对于检查点后未提交的事务,执行UNDO操作,反向扫描日志文件执行逆操作直至事务开始标志。
13. 云计算与大数据处理
云计算的分类:
1)按云部署模式和应用范围分: 公有云、社区云、私有云、混合云
2)按服务层次和服务类型分:基础设施即服务 IaaS、平台即服务 PaaS、软件即服务SaaS
大数据处理的特征 5V:多样性 Variety、速度 Velocity、大量 Volume、价值 Value、真实性 Veracity
14 数据库主流应用技术
OLTP: 联机事务处理,Online Transaction Processing;面向日常事务操作,处理实时、高频的业务数据更新,确保事务的ACID特性,支持高并发的短事务处理。
OLAP:联机分析处理,Online Analytical Processing;面向负责分析和决策,处理历史数据的复杂查询和多维分析。
15 标准化与知识产权
计算机软件著作权的权利自软件开发完成之日起产生,保护期为50年。保护期满,除开发者身份权以外,其它权利中止。
软件的复制品持有人不知道也没有合理理由应当知道该软件是侵权复制品的,不承担赔偿责任:但是应当停止使用、销毁该侵权复制品。如果停止使用并销毁该侵权复制品将给复制品使用人造成重大损失的,复制品使用人可以在向软件著作权人支付合理费用后继续使用。
专利和商标申请,谁先申请给谁;若同一天获取,谁先使用商标谁获得,专利则由申请者协商确定给谁。
商标权的保护期可以延长;著作权的保护期不可延长。
接受他人委托开发的软件,其著作权的归属由委托者与受委托者签订书面合同约定:无书面合同或合同未作明确约定的,其著作权由受委托人享有。
著作权法保护的计算机软件是指 计算机程序及相关文档。
计算机著作权权利中,署名权不可转让。
《中华人民共和国著作权法》和《计算机软件保护条例》是构成我国保护计算机软件著作权的两个基础法律文件。
单个自然人的软件著作权保护期为终生+死亡后50年;法人或其它组织的保护期为 从软件首次发表后的50年(如果一直不发表,那么在开发完成 50 年后,软件著作权(除开发者身份权外)也不再受保护)。
发明专利权的期限为二十年,实用新型专利权的期限为十年,外观设计专利权的期限为十五年,均自申请日起计算。