如果有有道云app可以直接共享链接有道云笔记
友情提示:多媒体不考以及新增了python基础语法的考试
计算机组成与体系结构
- 多级存储体系
- cache地址映像方式发生冲突次数最小:全相联
- cpu访问速度:寄存器>cache>内存>硬盘
- 时间局部性:刚刚访问得指令,再次访问
- 空间局部性:操作临近空间
- 工作集理论:进程运行时被频繁访问的页面集合
- 指令集
- CISC(复杂):多种寻址,微程序控制,指令多但频率差异大
- RISC(精简):寻址方式少,增加寄存器数量,硬布线,高效流水线操作,适合VLSI技术,优化编译,编译出来的库比cisc要大得多
- flunn结构分类
- 单指令流单数据流SISD:
- 单指令流多数据流SIND:
- 多指令流单数据流MISD:理论意义,没有实物
- 多指令流多数据流MIMD:
- 计算机总线:数据、地址、控制
- 计算机结构
- 运算器:
- 算术逻辑单元(ALU):运算相关得功能
- 累加寄存器(AC):通用寄存器,运算过程中存储相应得值
- 数据缓冲寄存器(DR):对类存储器进行读写操作,暂存数据
- 状态条件寄存器(PSW):运算过程中存储一些状态位,如计算机进位等
- 控制器:
- 程序计数器(PC):也叫指令计数器
- 指令寄存器(IR):存放要执行得指令,对用户是完全透明得
- 指令译码器+时序部件
- 运算器:
- 寻址方式:不同寻址方式为了扩大寻址空间以及编程灵活性
- 立即寻址:直接指出操作数本身
- 直接寻址:指令中地址码字段给出得地址就是有地址
- 寄存器寻址:地址码部分给出了一个通用寄存器得变好,寄存器中存折操作数
- 间接寻址:给出得地址不是有效地址,而是存放操作数地址得主存单元地址,操作数地址得地址
- 差错控制crc:可以检错不能纠错,海明效验码都可以
操作系统
- 进程管理
- 进程状态
- PV操作
- P:通过,等待事情发生,信号量自减1,判断信号量是否小于0,如果小于0就会阻塞
- V:释放,满足p的等待条件,信号量自加1,判断是否小于等于0,则在队列中拿出一个进程,使其继续执行
- 互斥:类似于打印机,只有一个人能使用
- 同步:速度上会有差异,但是会等下来,宏观上感受是一起完成的
- 死锁的两种方案:死锁的预防、死锁的避免
- 死锁的避免:有序资源分配法效率比较低、银行家算法常用
- 存储管理(难点)
- 页式存储:将程序与内存均划分同样大小的块,以页为单位将程序调入内存
- 优点:利用率高、碎片小,分配及管理简单
- 缺点:增加了系统开销,可能产生抖动现象
- 基本考点---逻辑地址找物理地址,页内地址是固定,通过页的大小确定页内地址是多少,比如4k页,则后12位是页内地址
- 段式存储:按照用户的自然段来划分逻辑空间,然后调入内存,段的长度可以不一样
- 优点:
- 段页式存储
- 页面置换算法
- 时间局部性:刚被访问的内容,立即又被访问
- 空间局限性:刚被访问的内容,临近的空间很快被访问
- 磁盘管理
- 页式存储:将程序与内存均划分同样大小的块,以页为单位将程序调入内存
- 设备管理
- cpu是在一个总线周期结束时响应DMA请求
- DMA工作方式下,在主存和外设之间建立了数据通道
- 为了便于实现多级中断嵌套使用堆栈来保护断点和现场最有效(因为先进后出的特点)
- 文件管理
- 树形目录结构:文件的绝对路径或者相对路径
- 索引文件结构:物理块号是从几级索引找到,最大支持索引文件大小,(物理块号0开始)
- 位示图(bitmap):物理块号为N在第几个字表示,在该字的第几位表示,(物理块号0开始,位数也是0开始)
计算机网络
- dhcp:可以从DHCP服务器获取本机IP地址、DNS服务器地址、DHCP服务器地址、默认网关等,没有web服务器和邮件服务器
- DNS:负载均衡->启用循环,添加每个web服务器的主机记录
- ipconfig /realease:释放租约,可以刷新IP地址
- ipconfig /renew: 重新获取IP地址
- POP3:采用C/S结构,基于TCP协议的邮件协议,具备ssl加密;MIME:互联网标准,拓展了电子邮件标准,使其能够支持多媒体数据
- ICMP:网络层协议和IP一个协议层,并且封装在IP数据报传输
- VOIP:使用UDP传输语音
- SMTP:使用ASCLL格式传输邮件报文
- FTP:控制端口21,数据端口20
- dhcp:无效的ip地址,169.254.x.x(windows)和0.0.0.0(linux)
- IPV4与IPV6:
- 隧道技术:使得两个IPV6结点可以通过现有的IPV4网络进行通讯
- 翻译技术:使得纯IPV6结点和纯IPV4结点通信
- 物理层:中继器、集线器
- 数据链路层:网桥(可以识别MAC,进行帧转发)、交换机 VLAN工作在此层
- 网络层:路由器
- 冲突域:交换机的每一个端口属于一个冲突域,(各个端口形成一个广播域)集线器属于一个冲突域
- 广播域:路由器连接的多个部分属于多个广播域
- 中国自主研发的3G通信标准:TD-SCDMA
- windows默认路由:没有其他路由时最后的选择
- 主机路由的子网掩码是255.255.255.255
信息安全
- 防火墙不具备查毒功能
- DMZ:隔离区,通过web服务器放在这里
- 防火墙受保护程序从高到低排序:内网、DMZ、外网
- 包过滤防火墙:工作在IP层,只对ip,端口处理,但是对应用层攻击无能为力
- 代理服务器防火墙:将收到得包还原成应用层协议,所以慢
- 系统安全分级
- 物理安全:设备硬件
- 网络安全:病毒等东西隔开
- 系统安全:操作系统,使用系统等安全(漏洞补丁)
- 应用安全:数据库等应用场景
法律法规与标准化
- 商标:先申请拥有,同时则先使用拥有(非法抢注商标除外),其次协商、抽签,但不可不确定
- 专利:先申请拥有,同时则协商,不能同时驳回双方的专利申请
- 著作权:合同约定归属优先,没有合同或明确约定,由受托人享有
- 署名权、修改权、保护作品完整权的保护期不受限制
- 职务作品所产生的著作权和专利由公司享有
- 侵权判定
- 引用其他人的文章必须是已经发表的,而且需要适当引用
- 开发软件思想、处理过程、操作方法、数学概念不受保护
- 法律法规、新闻、公式等不适用著作权
- 只要创作出来,不论发表都享有著作权
- 软件著作权的保护:软件程序(源程序和目标程序)、文档
- 烟草制品必须申请注册商标
- 中国人民共和国著作权法和计算软件保护条例:构成计算软件著作权的两个基本法律文件
数据结构与算法基础
- 矩阵:直接带入公式求,00 01 11 这种特殊值
- 数组:求地址重点是字节大小,不是所有题目都是1字节
- 线性表:队列栈得运用,求出列出栈得顺序相关题目
- 循环链表:队空条件-head=tail、队满条件-(tail+1)%size=head
- 广义表:有限序列。head取表头,tail取表尾,除了第一个元素剩余整体叫表尾
- 空表得深度是1,长度等于元素个数,深度等于元素是一个表,嵌套得层数
- 树
- 线索二叉树:
- 最优二叉树:哈夫曼树,左0,右1
- 平衡二叉树:任意节点左右子节点深度不超过1
- 树转二叉树:孩子节点转成左子树节点,兄弟节点转成右子树节点
- 排序(必考题)
- 插入类排序:直接插入排序和希尔排序(效率更高)
- 直接插入:
- 交换类排序:冒泡排序和快速排序
- 选择类排序:简单选择排序和堆排序
- 插入类排序:直接插入排序和希尔排序(效率更高)
- 回溯法:选优搜索法,走错了就回头
- 贪心法:总是当前最好的选择,并不从整体上加以考虑。局部最优选择,得到满意得解,得不到最优解
- 动态规划法:为了得到最优解
排序方法 | 最好时间复杂度 | 平均时间复杂度 | 最坏时间复杂度 | 辅助空间 | 稳定性 |
直接插入 | O(n) | O(n²) | O(n²) | O(1) | 稳定 |
简单选择 | O(n²) | O(n²) | O(n²) | O(1) | 不稳定 |
冒泡排序 | O(n) | O(n²) | O(n²) | O(1) | 稳定 |
希尔排序 | -- | O(n1.3) | -- | O(1) | 不稳定 |
快速排序 | O(nlogn) | O(nlogn) | O(n²) | O(logn) | 不稳定 |
堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(1) | 不稳定 |
归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(n) | 稳定 |
基数排序 | O(d(n+rd)) | O(d(n+rd)) | O(d(n+rd)) | O(rd) | 稳定 |
面向对象技术(重点)
- 基本概念:对象、类、继承和消息是面向对象的核心概念 (超类就是父类)
- 对象:封装数据和行为的整体,包括对象名、属性、方法,类是一组对象得抽象定义
- 面向对面技术开发系统主要步骤
- 面向对象分析:架构师主要关注系统的行为,抽取和整理用户需求建立模型,第一步是确定问题域
- 面向对象设计:强调的是定义软件对象和这些软件对象如何协作来满足需求,延续了面向对象分析
- 面向对象程序设计:选择合适的开发语言
- 面向对象测试:
- 多态:不同对象收到同样的消息产生不同的结果
- 参数多态:应用广泛,最纯的多态
- 包含多态:很多语言都存在,常见例子子类泛型化
- 过载多态:同一个名在不同上下文可代表不同的含义
- 强制多态:把操作对象的类型强行加以变换
- 类分为三种
- 实体类:负责数据和业务逻辑
- 接口类(边界类):负责和用户进行交互,即用户界面
- 控制类:负责实体类和界面类的交互
- 面向对象的七大原则
- 单一职责:设计目的单一的类
- 开放-封闭:对拓展开放,对修改封闭
- 李氏替换:子类可以替换父类,基类对象出现的地方,子类也可以,但是子类出现的地方,父类不行
- 依赖倒置:依赖于对象,而不是具体实现,针对接口编程,不要针对实现编程
- 接口隔离:使用多个专门的接口比使用单一的接口要好
- 组合重用:尽量使用组合,而不是继承关系达到目的
- 迪米特(最少知识法则):一个对象应当其他对象更少的了解
- 面向对象开发方法:Booch方法、Coad方法、OMT方法
- 面向数据结构方法:Jackson方法
- 关系
- 泛化:一般与特殊
- 关联:类与类之间的关系
- 聚集:较大整体类包含一个或多个较小的部分类
- 组合:是一种聚合关系,整体负责部分创建和销毁,如果整体不在,部分也将不存在
- UML
- 结构图
- 类图:
- 依赖关系:一个事物发生变化会影响另一个事物 ------------▶
- 泛化关系:特殊(子)/一般(父)关系(父子、继承)———▷
- 关联关系:描述一组链,链是对象之间的连接
- 聚合关系:整体和部分生命周期不同,部分离开整体依旧存活 ———◊
- 组合关系:整体和部分生命周期相同,部分离开整体不能存活,关系更紧密 ———◆
- 实现关系:接口和类之间的关系------------▷
- 对象图:展现了某一个时刻一组对象以及他们之间的关系
- 包图:
- 组合结构图:
- 构件图:
- 部署图:组件和硬件的物理关系
- 制品图:
- 类图:
- 行为图
- 用例图:展现了一组用例、参与者以及它们之间的关系
- 顺序图:强调时间
- 通信图:顺序图的另一种表达方式
- 定时图:
- 状态图:
- 活动图:
- 交互概览图:
- 结构图
- 设计模式---23个
- 创建型模式 5个
设计模式名称 | 简要说明 | 关键字 |
抽象工厂(abstract factory) | 提供一个接口,可以创建一系列相关或依赖得对象,无需指定具体得类 | 生产成系列对象 |
构建器(builder) | 将一个复杂类表示与其构造相分离,使得相同得构造过程得到不同得表示 | 复杂对象构造 |
工厂(factory method) | 定义一个创建对象得接口,但由子类决定需要实例化哪一个类 | 动态生产对象 |
原型模式(prototype) | 用原型实例指定创建对象得类型,并且通过拷贝这个原型来创建新的对象 | 克隆对象 |
单例(singleton) | 保证一个类只有一个实例,并提供一个访问它的全局访问点 | 只有一个实例 |
-
- 结构型模式 7个
设计模式名称 | 简要说明 | 关键字 |
适配器(Adapter) | 将一个类得接口转换成用户希望得到得另一个接口,使得原本不相容得接口协同工作 | 转换接口 |
桥接(bridge) | 将类的抽象部分和他的实现部分分离开,使其独立得变化 | 继承树拆分 |
组合(Composite) | 将对象组合成树形结构表示“整体-部分”,使得用户对单个对象和组成对象具有一致性 | 树形目录结构 |
装饰(decorator) | 动态得给一个对象添加一些额外得职责。提供了子类拓展功能得一个灵活代替 | 附加职责 |
外观(Facade) | 定义一个高级接口,为子系统中的一组接口提供一个一致得外观 | 对外统一接口 |
享元(Flywelght) | 提供大量细粒度对象共享得有效方法 | |
代理(Proxy) | 为其他对象提供一种代理以控制这个对象得访问 |
-
- 行为型模式 11个
设计模式名称 | 简要说明 | 关键字 |
职责链(chain of responsibility) | 通过给多个对象请求得机会,减少请求的发送者和接收者之间的耦合,将接收对象链接起来,在链中传递请求,直到有对象处理这个请求 | 传递职责 |
命令(command) | 将一个请求封装为一个对象,可用不同得请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销得操作 | 日志记录,可撤销 |
解释器(interpreter) | 给定一种语言,定义它的文法表示,并定义一个解释器,该解释器用来根据文法解释语言中得句子 | |
迭代器(Iterator) | 提供一种方法顺序访问一个聚合对象种得各个元素而不需要暴露内部 | |
中介者(Mediator) | 用一个中介对象来封装一系列得对象交互,使各对象不需要显式得相互调用,从而达到低耦合,还可以独立改变对象间得交互 | 不直接引用 |
备忘录(Memente) | 在不破坏封装性得前提下,捕获一个对象得内部状态并在该对象之外保存这个状态,从而可以在以后将该对象恢复到原先保存得z | |
观察者(Observer) | 定义对象间得一种一对多得依赖关系,当一个对象得状态发生改变时,所有依赖于它的对象都将得到通知并自动更新 | |
状态(State) | 允许一个对象在其内部状态改变时改变它的行为 | 状态变成类 |
策略(Strategy) | 定义一系列算法,把他们一个个封装起来,并且使他们之间可互相替换,从而让算法可以独立于使用它的用户而变化 | 多方案切换 |
模板方法(template method) | 顶一个操作中得算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法得结构即可重新定义算法得某些特定操作 | |
访问者(Visitor) | 表示一个作用于某对象结构中得各元素操作,使得在不改变各元素得类得前提下定义作用于这些元素得新操作 |
程序设计语言
- 编译过程
- 编译型
- 词法分析:非法的字符,关键字或者标识符拼写错误:输出是记号流,有限自动机是适当工具
- 语法分析:语法结构出错,比如if endif不匹配,缺分号
- ,递归下降分析法是自上而下的语法分析
- 移进-归约分析法是自下而上
- 语义分析:特指静态语义:类型是否匹配,零除数
- 静态:编译过程中分析的情况,语法指导翻译
- 动态语义:运行发现的问题--->死循环
- 中间代码生成:不是必须的和机器无关。提高移植性。逆波兰式、三、四元式和树(三地址码)
- 代码优化:不是必须的
- 目标代码生成
- 编译型
- 文法:大多数语法规则用上下文无关文法描述即可,逆波兰式利用栈求值
- 有限自动机:确定的有限自动机--->输出数能确定输出到哪个状态,确定的 DFA,不确定的叫NFA
- 程序控制结构:顺序、选择、循环
- 函数调用的是实参,实现里面是形参
- LISP是函数式编程语言
软件工程与结构化开发方法与项目管理
- 软件开发模型
- 瀑布模型:需求明确,大型系统得需求在前期很难确定,因此不适用瀑布模型
- 原型模型:需求不明确,用以获取需求,简易系统
- 演化模型:减少由于软件需求不明确带来的开发风险
- 螺旋模型:瀑布和演化的组合,增加了风险分析,包括四个方面活动:制定计划、风险分析、实施工程、客户评价
- 喷泉模型:描述面向对象的开发过程、迭代和无间隙。,以用户需求为动力,对象为驱动
- 增量模型:首先开发核心模块功能,再开发次核心模块,每次开发一部分功能,并于用户需求确认,优先级最高的服务最先交付。与原型模型的区别每一次增量模型的每一次增量版本都可以作为独立可操作的作品。
- V模型:增加了很多轮测试,并且测试贯穿于软件开发的各个阶段
- 敏捷开发方法
- 极限编程(XP):核心是沟通、简单、反馈、勇气,提倡测试先行,为了降级bug
- 五大原则:快速反馈、简单性假设、逐步修改、提倡更改、优质工作
- 12个最佳实践:结对编程、测试先行、持续集成、每周工作40小时、隐喻、小型发布、计划游戏、重构、编码标准。。。。
- 水晶法(Crystal):每一个不同的项目都需要一套不同的策略、约定和方法论。
- 并列争求法(Scrum):一种迭代的增量化过程,把30天一次的迭代称为一个冲刺
- 自适应软件开发(ASD):强调开发方法的适应性
- 敏捷统一过程(AUP)
- 特征驱动开发:针对中小型软件开发项目的开发模式,是一个模型驱动的快速迭代开发过程,强调的是简化、实用、适用于需求经常变动的项目
- 极限编程(XP):核心是沟通、简单、反馈、勇气,提倡测试先行,为了降级bug
- 结构化方法:流程固定,需求明确的项目,自顶向下,逐层分解,面向数据流。缺点和瀑布模型一样,不能回头修改,不适用复杂的大型项目
- 结构化方法的设计:体系结构设计是宏观架构设计;数据设计是数据流的设计;接口设计关注模块间的连接设计;过程设计是模块内的具体实现过程的数据结构和算法的设计。
- Jackon方法:面向数据结构的开发方法,适合小规模的项目
- 原型方法:适合需求不明确的开发,以原型模型为代表
- 面向对象方法:强调复用性,构建全面合理的模型,供不同项目使用,方便修改,节省开发时间和效率,增强复用性,以构建组装模型为代表。
- 统一过程模型简称UP:以用例和风险为驱动、以架构为中心、迭代并且增量的开发过程。开发分为四个阶段:
- 起始:初始活动、确认需求、风险评估
- 精化:需求分析、架构设计
- 构建:系统的构建,产生实现模型
- 移交:软件提交方面的工作,产生软件增量,交付系统
- UP的每一次迭代都是一次完整的软件开发过程,包括整个软件开发生命周期,有五个核心工作流(需求、分析、设计、实现、测试)
- 统一过程的典型代表是RUP,完全兼容UP,比UP更完整、更详细
- 软件工程基本要素:方法、工具、过程
- 能力成熟度模型CMM分为5个等级
- 初始级:无秩序,没有明确定义的步骤,过程混乱
- 可重复级:建立了基本的项目管理,对类似项目有章可循,可重复以往的成功
- 已定义级:用于管理和工程的软件已标准化、文档化
- 已管理级:软件过程和产品质量有详细度量标准,得到定量的认识和控制
- 优化级:对过程、新概念、技术等方面进行定量分析,能够不断改进
- 结构化设计基本原则
- 自顶向下、逐步求精
- 信息隐藏
- 模块独立(高内聚、低耦合、复杂度
- 内聚类型:模块内部元素的联系方式,块内联系标志一个模块内部各个元素间彼此结合的紧密程度,主要表现在模块内部各个元素为了执行某一功能而结合在一起的程度。
- 功能内聚:各个组成部分全部为执行同一功能而合成为一个整体
- 顺序内聚:前一个动作的输出是后一个的输入
- 通信内聚:同一个输入或输出处理元素在同一个数据结构
- 过程内聚:动作没什么关系,必须按照次序
- 时间内聚:处理动作必须同一时间执行
- 逻辑内聚:逻辑上相似的处理,功能上无关
- 偶然内聚(巧合内聚):完成一组没有联系或者松散得任务
- 耦合:系统内不同模块之间的互连程度得度量
- 数据耦合:两个模块彼此间通过数据交换信息,每个参数仅仅为数据
- 控制耦合:传递控制信息
- 公共耦合:公共的数据区域传递消息
- 内容耦合:一个模块涉及另一个模块的内部消息
- 模块关系
- 传入模块:从下属模块取得数据,经处理返回上级模块
- 传出模块:从上级模块取得数据,经处理返回下属模块
- 变换模块:从上级模块取得数据,进行特定得处理,转换成其他形式,在传送给上级模块
项目管理
- 甘特图(Gantt):不能清晰的描述依赖关系,反应活动并行关系
- 计划评审技术图(PERT):反应活动依赖关系,无法反映并行关系 (计算某个时间最晚开始时间)
- 主要考点:计算pert图
- 软件项目管理:成本估计、风险分析、进度管理、人员管理
- 风险管理
- 风险暴露:又称风险曝光度,风险概率乘以风险可能造成的损失-->决定风险的优先级
- 技术风险:技术上的不成熟所带来的风险
- 项目风险:导致项目损失的不确定性
- 风险识别:通过建立风险条目检查表,试图系统化地确定对项目计划的威胁。
- 风险预测:又称风险估算,风险发生可能性以及风险发生所产生的后果
- 风险评估:定义风险参考水平值
- 风险控制:风险避免、风险监控和风险管理及意外事件计划
- 风险避免:放弃可能带来风险的活动,是一种主动风险控制方法
- 风险监控:对风险发展和变化进行全程监控,根据需要进行应对策略的调整
- 风险管理:把肯定有风险的环境里把风险减到最低的过程。风险可以转移、规避,但是不能消除
- 开发成本估算模型
- COCOMO模型:常用代码行作为度量估计单位
- 基本COCOMO模型:静态单变量模型,已估算原来代码行数来计算软件开发工作量
- 中级COCOMO模型:再基本模型上涉及产品等其他因素调整工作量,多变量模型
- 高级COCOMO模型:在中级模型上,更进一步考虑软件工程中每一步骤的影响。
- COCOMO2模型:3种不同的估算选择:对象点、功能点、代码行
- IOS/IEC软件质量
- 功能性:适合性、准确性、互操作性、安全保密性
- 可靠性:成熟型、容错性、易恢复性
- 易用性:易理解性、易学性、易操作性
- 效率:时间特性、资源特性
- 可维护性:易分析性、易改变性、稳定性、易测试性
- 可移植性:适应性、易安装性、一致性、易替换性
- 正式技术评审目标:发生软件中的错误、满足需求、符合标准、使得项目易于管理
- 软件设计质量评审:功能与模块之间的对应关系不属于评审内容
- McCall软件质量模型从软件产品得运行、修正、转移确定了11个质量特 性
- 运行:正确性、可靠性、效率、完整性、使用性
- 修正:维护性、测试性、灵活性
- 转移:移植性、复用性、共运行性
- 软件配置管理:版本控制、变更控制、过程支持、团队支持、变化报告和审计支持
数据库系统
- 数据库模式
- 三级模式两级映射 内模式(对应存储文件) 概念模式(对应基本表)外模式(对应视图)
- 外模式-概念模式映射:表和视图之间存在映射关系。表发生变化,只需要改映射,不需要改应用程序
- 概念模式-内模式映射:将存储结构进行更改,只需要改变映射关系,不需要更改用户应用程序。
- 数据库设计过程分四个阶段,下述描述阶段和产物
- 需求分析
- 数据流图(下午题重点):数据的来源和流向(输出),外部实体和数据加工的图表
- 数据字典:数据更加详细的说明,用于补充数据流图
- 需求说明书:根据用户的需求
- 概念模型
- ER模型(下午题重点)
- 逻辑结构设计
- 关系模式:根据规范化理论,将ER模型转换为关系模式
- 物理设计
- 根据生成的表等概念,生成物理数据库。
- 需求分析
- 三级模式两级映射 内模式(对应存储文件) 概念模式(对应基本表)外模式(对应视图)
- ER模型(下午题重点15分)
- 行叫做元祖,列叫做属性
- 椭圆是属性;长方形是实体;菱形是联系;长方形里面有两个竖表示弱实体
- 一对一;一对多;多对多
- 一个实体关系转换为一个关系模式
- 多对多的两个实体形成一个新的关系,新的关系模式包含各自的主键
- 关系代数
- 自然连接(R⋈S):结果显示全部的属性列,但是相同属性列只显示一次,显示两次关系模式中属性相同且值相同的行。 在数据库语言题目里相当于From R,S
- 笛卡尔积:S1×S2,结果是S1和S2的所有属性列,不排除重复项
- 投影(π):实际是按条件选择某关系模式中的某列,列也可以用数字表示
- 差:S1-S2,结果是S1中有,而S2表中没有的那些记录
- 选择(σ):实际是条件选择某关系模式中的某条记录,∧与 ∨或 ? 非
- 规范化理论(必考) 基本思想就是拆表,数据冗余 修改异常 插入异常 更新异常
- AB->C A->C 部分函数依赖
- A->B B->C 传递函数依赖
- 候选码的属性就是主属性 ,非候选码就是非主属性
- 第一范式:属性值都是不可分的原子值
- 第二范式:消除部分依赖
- 第三范式:消除完全依赖
- BC范式:将函数依赖写出来,推导的左边都是候选键 消除主属性对候选键的部分和传递依赖
- 模式分解
- 保持函数依赖分解
- 判断是否是无损分解分为表格法和公式法(适合两个关系)
- 表格法:横向为所有属性,纵向为所有关系,关系依赖能将某一行完全覆盖则是无损
- 公式法:
- SQL语言
- 建表
- NULL(可以取空值),NOT NULL(不能取空值)
- UNIQUE(取值唯一)
- PRIMARY KEY(列名) 指定主键
- FOREIGN KEY(列名1) 指定外键
- 修改、删除
- alter table
- drop table 删除表名对应的表
- 查询
- where
- group by 对结果分组
- order by:默认升序,降序为desc 如 select * from x order by sno desc
- having 分组查询附加条件
- distinct:过滤重复的选项,只保留一条记录
- avg 求平均值
- with grant option:授予用户权力,并且让他给其他用户授予权利
- 建表
- 并发控制
- 事务:由一系列操作组成,这些操作要么全做,要么全不做,拥有四种特性
- (操作)原子性:要么全做,要么全不做
- (数据)一致性:事务发生后数据时是一致的
- (执行)隔离性:任一事务的更新操作直到其成功提交的整个过程对其他事务都是不可见的,不同事务之间是隔离的,互不干涉
- (改变)持续性:事务操作的结果是持续性的
- 封锁协议
- X锁是排他锁:只有第一个对象能加X锁,其他不能加任何类型的锁
- S锁是共享锁:每个事务都能加S锁,但是不能加X锁
- 事务:由一系列操作组成,这些操作要么全做,要么全不做,拥有四种特性
- 数据库完整性约束
- 实体完整性约束
- 主键:非空、唯一
- 参照完整性约束
- 外键:空或者正确的定义必须指明
- 用户自定义完整性约束
- 限制条件,比如限制用户的年纪 性别等
- 实体完整性约束
- 分布式数据库
- 分片模式:水平分片:行的记录分别放在不同的地方
- 垂直分片:列的记录分别放在不同的地方
- 分片透明性:不需要知道逻辑上访问的具体是如何分块存储的
- 位置透明性:无需知道物理存储位置的改变
- 逻辑透明性:无需知道局部使用的是哪种数据模式
- 复制透明性:不需要关心复制的数据从何而来