计算机科学导论

文章目录

  • 绪论
    • 算法的作用
    • 算法机器的由来
    • 算法的科学
    • 抽象
  • 数据存储
    • 位和位存储
      • 布尔运算
      • 门和触发器
      • 十六进制计数法
    • 主存储器
      • 存储器结构
      • 存储器容量的度量
    • 海量存储器(mass storage)
      • 磁学系统
        • 磁盘
        • 磁带
      • 光学系统
        • CD
        • DVD
        • Blu-ray Disk
      • 闪存驱动器
      • 文件存储及检索
    • 位模式表示信息
      • 文本信息
      • 数值的表示
      • 图像的表示
      • 声音的表示
    • 整数的存储
      • 二进制补码记数法
    • 小数的存储
      • 浮点记数法
      • 阶段误差
    • 数据压缩
      • 通用数据压缩方法
        • 行程长度编码
        • 频率相关编码(Huffman)
        • 差分编码
        • 字典编码
      • 图像压缩
        • GIF
        • JPEG
        • TIFF
      • 音频视频压缩
    • 通信差错
      • 奇偶校验位
      • 纠错编码
  • 数据操控
    • 计算机体系结构
      • CPU基础知识
      • 存储程序概念
    • 机器语言
      • 指令系统
    • 程序执行
    • 逻辑指令
    • 与其他设备的通信
      • 控制器的作用
      • 直接内存存储
      • HandShaking
      • 流行通信媒介
      • 通信速率
  • 操作系统
    • 操作系统的历史
    • 体系结构
      • 软件概述
      • 操作系统组件
      • 系统启动
    • 协调机器的活动
      • 进程的概念
      • 进程管理
    • 处理进程间的竞争
      • 信号量
      • 死锁
    • 安全性
      • 来自机器外部的攻击
      • 来自机器内部的攻击
  • 组网及因特网
    • 网络基础
      • 网络分类
      • 协议
      • 网络互连
      • 进程间通信的方法
      • 分布式系统
    • 因特网(Internet)
      • 因特网体系结构
      • 因特网编址
      • 因特网应用
    • 万维网
      • 万维网的实现
      • HTML
      • XML
    • 因特网协议
      • 因特网软件的分层方法
      • TCP/IP协议簇
    • 安全性
      • 入侵形式
      • 防护和对策
      • 加密
      • 网络安全的法律途径
  • 算法
    • 算法的概念
      • 定义
    • 算法的表示
      • 伪代码
    • 算法的发现
    • 迭代结构
    • 递归结构
    • 有效性和正确性
      • 有效性
      • 软件验证
  • 程序设计语言
    • 历史回顾
      • 早期程序设计语言
      • 程序设计范型
    • 传统的程序设计概念
    • 过程单元
    • 语言实现
      • 翻译过程
    • 面向对象程序设计
      • 类和对象
      • 构造器
      • 附加特性
    • 程序设计中的并发活动
    • 说明性程序设计
  • 软件工程
    • 软件工程学科
    • 软件生命周期
      • 周期是个整体
      • 传统的开发阶段
      • 软件工程方法
    • 模块化
      • 耦合
      • 内聚
      • 信息隐藏
      • 构件
    • 行业工具
      • UML
    • 质量保证
      • 质量保证的范围
      • 软件测试
    • 文档编制
    • 人机界面
  • 数据抽象
    • 数据结构基础
      • 数组
      • 列表、栈、队列
    • 相关概念
      • 静态结构与动态结构
      • 指针
    • 数据结构的实现
      • 数组的存储
      • 列表的存储
      • 栈和队列的存储
      • 二叉树的存储
  • 数据库
    • 数据库基础
      • 模式的作用
      • 数据库管理系统
    • 关系模型
      • 关系设计中的问题
      • 关系运算
      • SQL
    • 面向对象数据库
    • 维护数据库的完整性
      • 提交/回滚协议

绪论

算法的作用

程序:算法的表示
程序设计:开发程序,采取与机器兼容的形式进行编码并输入机器
软件:程序及其所表示的算法
硬件:机器设备

算法机器的由来

世界第一位程序员:奥古斯塔·艾达·拜伦(阐释巴贝奇分析机如何编程与运算)
ENIAC
1981 IBM 第一个台式计算机

算法的科学

研究算法的发现,表示,执行,传达,分析,应用,局限

抽象

抽象:一个实体的外部特征与内部构成细节相分离

数据存储

位和位存储

信息以01编码,这些数字被称为位(bits)

布尔运算

And Or Xor (Nand Nor Xnor not)

门和触发器

门:一种执行布尔运算的设备
触发器:可以产生0/1输出值的电路,它的值一直不变,直到临时脉冲使其改变
计算机科学导论_第1张图片
上0下0,输出保持为0,上输入脉冲1,输出保持为1,下输入脉冲1,输出保持为0

十六进制计数法

主存储器

主存储器:计算机内包含的大量电路,每个电路存储一位

存储器结构

存储单元:8位,一个字节(byte)
左端:高位
右端:低位
最左端:最高有效位
最右端:最低有效位
每个存储单元有一个地址,可独立访问,主存储器又称RAM(随机存取存储器)
DRAM:动态RAM,使用快速消散的电荷存储,使用刷新电路反复补充电荷

存储器容量的度量

1 KiB=1000 B
1 KB =1024 B

海量存储器(mass storage)

磁盘,CD盘,DVD盘,磁带,闪存

磁学系统

磁性材料

磁盘

磁道:磁头移动的同心圆
扇区:每个磁道划分成若干个小弧区
磁盘上所有扇区包含相同数目的二进制位,运用ZBR(区位记录)技术,将磁盘分为10个区,相邻几个磁道在一个区中,外圈的区中磁道的扇区更多
磁盘和扇区的位置不固定,通过格式化形成
评估性能:寻道时间,旋转延迟,存取时间,传输速率

磁带

容量大,可靠性高,性价比好

光学系统

反射层创建偏差

CD

CD-DA记录格式
由内向外螺旋式排布,扇区容量2KB
内层信息少,外层信息多,系统需适应数据传输速率变化
600-700MB

DVD

多个半透明层面
几个GB

Blu-ray Disk

蓝色激光聚焦识别,容量是DVD五倍多

闪存驱动器

电子信号将二进制位存到存储介质中,使SiO2捕获电子
反复擦除损坏SiO2晶格
几GB
SD(2GB) SDHC(32GB) SDXC(1TB)

文件存储及检索

物理记录:符合存储设备特性的数据块(扇区)
逻辑记录:文本中一个自然段之类,由字段组成
键字段:标识字段,键字段的值为键
逻辑记录很少与物理记录匹配,所以我们在主存储器中留下空间用于重组若干物理记录成为逻辑记录,这样的空间称为缓存区(buffer)

位模式表示信息

文本信息

ASCII(8位)
Unicode(16位)
文本编辑器:实用程序,操作简单文本文件,只包含字符编码
字处理程序:包含专用格式码

数值的表示

二进制计数法

图像的表示

将图像表示成为一组点,称作像素,像素的集合叫做位图
黑白图像:一个像素8位
彩色图像:RGB 像素表示,几何结构表示

声音的表示

离散采样,乐器数字化接口

整数的存储

二进制补码记数法

设长度为k的位模式,表示范围 − 2 k − 1 ≤ x ≤ 2 k − 1 − 1 -2^{k-1}\leq x \leq 2^{k-1}-1 2k1x2k11
x对应的补码是
( ( 2 k + x )      m o d      2 k ) 2 ((2^{k}+x) \;\;mod\;\;2^{k})_{2} ((2k+x)mod2k)2

小数的存储

浮点记数法

8=1(符号位)+3(指数位)+4(尾数位)
指数位存储方法为余码记数法,即长度为k的位模式下x对应的余码为
( 2 k − 1 + x ) 2 (2^{k-1}+x)_{2} (2k1+x)2

阶段误差

抛弃最低位

数据压缩

无损技术与有损技术

通用数据压缩方法

行程长度编码

111111111111000000001111111->12个1,8个0,7个1

频率相关编码(Huffman)

差分编码

记录相邻的单元的差距

字典编码

LZW编码

图像压缩

GIF

将图像中每个像素颜色压缩到256种颜色之一,有损

JPEG

Step1 22像素色度求平均,保留亮度信息
Step2 8
8像素块运用离散余弦转化,将设定值小于标准(变化非常小)的值设为0

TIFF

音频视频压缩

视频:差分压缩
音频:MP3技术,删除巨大响声后的轻柔声音(暂时模糊)与相近频率的轻柔声音(频率模糊)

通信差错

奇偶校验位

一个模式(连续一段bit)配一个奇偶校验位使得模式和奇偶校验位中1的总数总是奇数/偶数
校验字节:以上方法修改两个位置就无法察觉,考虑从第x位开始每n位归结到一个模式,校验字节由若干个这样的校验位构成

纠错编码

Hamming距离:a与b在二进制下不同的位数

符号 代码
A 000000
B 001111
C 010011
D 011100
E 100110
F 101001
G 110101
H 111010

任意两个代码Hamming距离至少为3,若有一位出错,选择最近Hamming距离

数据操控

计算机体系结构

CPU:控制数据操纵的电路(Centrel Processing Unit)

CPU基础知识

逻辑单元,控制单元,寄存器单元(通用寄存器,专用寄存器)
CPU与主存通过总线通信

存储程序概念

将计算机程序存储到主存中

机器语言

指令系统

RISC:精简指令集计算机
CISC:复杂指令集计算机
数据传输类,逻辑类,控制类

程序执行

专用寄存器:指令寄存器,程序计数器
取指到指令寄存器,由于一条指令两个字节,程序计数器+2,对于JUMP指令,改变程序计数器的值,即修改下一个指令的地址

逻辑指令

与其他设备的通信

控制器的作用

计算机与其他设备的通信通过控制器的中间设备来处理
USB:通用串行总线,成本低
FireWire:火线,传输快
存储映射输入/输出:控制器响应唯一地址引用
特定操作码

直接内存存储

DMA(直接存储器存取) 并行操作
冯诺依曼瓶颈

HandShaking

计算机与外围设备的数据传输是双向的

流行通信媒介

并行通信,串行通信

通信速率

带宽

操作系统

操作系统是控制计算机整体运行的软件

操作系统的历史

批处理:若干个要执行的作业收集到一个批次中,无交互
作业队列:FIFO,但非严格,可以被优先级高的挤掉
交互式处理:程序通过远程终端与用户对话
实时式处理:计算机在一个限期内被强制执行任务
分时操作系统:能同时给多个用户提供服务的操作系统
多道程序设计:实现分时的一种方法,每个作业的执行被限制在每次执行一个时间片,用于单用户系统时称为多任务
嵌入式系统:侧重专用于特定任务的系统

体系结构

软件概述

软件分为两类,应用软件与系统,系统下分实用软件与操作系统,操作系统又分为用户界面与内核

操作系统组件

用户界面:操作系统负责处理系统与用户通信的部分
Shell:文本用户界面
GUI:图形用户界面
窗口管理程序
内核:包含完成计算机安装要求的基本软件组件,有文件管理程序,设备驱动程序,内存管理程序(协调和管理主存的使用,在内存与海量存储器中来回切换),调度程序,分派程序
虚拟内存:通过分页技术产生大的虚构的内存空间

系统启动

引导(booting):每次启动时,引导程序把操作系统从海量存储器传送到主存中
只读存储器:计算机中一小部分主存使用非易失的存储单元建造,现在大部分用闪存技术实现,非严格不可改变
引导程序被存储在机器的ROM中,程序计数器在开机时永远从固定位置开始

协调机器的活动

进程的概念

进程:在操作系统的控制下执行某个程序的活动

进程管理

进程表:调度程序在主存中跟踪所有进程维护的信息块,包含存储区信息,进程的优先级,就绪/等待状态
计时器电路:每次分派程序给进程分配时间片,初始化一个计时器电路,产生中断信号来指示时间片的结束
中断处理程序:分派程序的一部分,描述分派程序如何相应中断信号的

处理进程间的竞争

信号量

以打印机为例,使用一个标志,状态用置位与清零来表示,这个标志叫做信号量,简单的实现方式是用一个等待队列直接做,但是存在被中断信号影响的问题(当一个进程在检测到标志清零后,将标志置位之前被中断,另一个进程申请使用打印机,使用后原进程由于之前已经检测了清零,继续使用)
解决方法1:中断屏蔽指令,中断允许指令
解决方法2:测试并置位(test-and-set)指令,使操作由一条指令实现,不可分割
使用打印机的操作只能被一个进程使用,这样的一段指令被称为临界区,只被一个进程使用称为互斥

死锁

存在条件
(1)对不可共享资源的竞争
(2)在不完整基础上请求资源
(3)资源被分配出去后无法强制收回
假脱机:操作系统通过多个虚拟的打印机把不可共享的资源变成可共享的

安全性

来自机器外部的攻击

审计软件
嗅探软件:记录系统活动并报告给入侵者

来自机器内部的攻击

让进程访问其他内存,访问无权限访问的文件
解决方案:使用专用寄存器来限制进程的内存使用范围
但可以通过修改专用寄存器的值
解决方案:双特权模式(有特权/无特权)
开机时,系统处于有特权状态,每当系统允许进程运行,将系统切换为无特权状态

组网及因特网

网络基础

网络分类

局域网(LAN),城域网(MAN),广域网(WAN):覆盖面
开放式网络,封闭式网络(专用网络):是否基于公共领域
星型拓扑(配置在无线网络较广泛,中央计算机称为接入点,AP),总线型拓扑:公共总线直接通信还是通过中央计算机间接通信

以太网:总线式拓扑结构的局域网,通过称为以太的同轴电缆连接,个人计算机组网的最通用的方法
以太家族的公共特性:数据打包的格式,传输中的二进制曼彻斯特编码,CSMA/CD控制传输的权限

协议

协议:管理网络活动的规则
CSMA/CD协议:报文广播给所有计算机,只保存给自己的报文,冲突时随机暂停一段时间,不兼容星形网络
CSMA/CA协议:发出请求报文,发现信道空闲,先等待一段时间,若仍空闲,传输,否则随机等待一段时间再次发送请求,中央计算机将优先权赋给等待中的计算机

网络互连

总线式网络中的常用设备
中继器:两条总线间无脑传送信号,不考虑含义
网桥:类似中继器,检测目的地址,必要时才传输
交换机:多条总线间的网桥

互联网(internet):网络间的网络连接方式
路由器:提供网络之间的连接,并允许每个网络保持独特的内部特性

路由器维护转发表,包含根据目的地址信息发送方向的路由信息。计算机发送报文时,提供本地地址与互联网地址

网关:一个网络与互联网接入的点

进程间通信的方法

Client/Service模型:向其他进程(服务器)发送请求的计算机,满足客户机需求的计算机,一个服务器对应多个客户机
P2P(对等模型):两个进程间的通信,分发文件的基本方式,对等体间直接通信,对等体集合称为蜂群,容易导致版权问题

分布式系统

分布式系统:由在网络中不同的计算机作为进程执行的软件单元组成
集群计算:分布式系统提供计算,高可用性,负载平衡
网格计算:与集群相比耦合度不高的分布式系统,仍为协同计算
以上两种均为云计算方式

因特网(Internet)

互联网中的一个例子

因特网体系结构

根据各网络在整个因特网结构中所起的作用分类成层次结构
第一层ISP:国际化广域网
第二层ISP:区域性
因特网服务提供商(acess ISP)
终端系统

wifi:终端系统与Acess ISP之间的连接技术
热点:接入点范围区域

电缆/卫星系统:终端系统与Acess ISP的另一种连接方式,将数字传输与语音通信分开
调制解调器:将数字数据转化为与传输媒介兼容的格式
拨号连接:数字数据转化为语音数据
DSL:低于4000Hz频率范围用于语音通信,更高用于数据传输

因特网编址

IP地址:32位(IPv6 64位)
点分十进制方法
助记地址,域名:注册商将域名分配给域,后缀称为顶级域名(com,edu,cn, gov),一旦一个域注册了一个域名,可以向左任意扩展子域
域名服务器:提供域名转地址服务
DNS:域名服务器组成的因特网范围内的目录系统

因特网应用

电子邮件:需在域内指定邮件服务器
文件传输协议:FTP,传输文件的方式
远程登录与SSH:远程登录使用户从远处访问,拥有与本地用户相同的权限,但不加密,易被监听;SSH是一种加密的远程登录的一种方法
VoIP:利用因特网基础设施提供语音通信,包含如下四种方式
(1)VoIP软电话:P2P模型,Skype
(2)模拟电话适配器:传统电话连接到ISP提供的电话服务上
(3)嵌入式VoIP:替换传统电话为手持式连接到TCP/IP网络上的设备
(4)4G电话网络:完全基于IP通信
因特网广播
(1)多点广播:服务器广播多个客户端,负载大
(2)多路广播:依赖路由器进行转发

万维网

超文本:包含指向其他文档的文本文档,现在不只是文本文档,也称超媒体
超链接:超文本中的连接
万维网:在因特网上发展起来的基于超链接的网状组织
网页:万维网上的超文本文档
网站:紧密相关的一组网页

万维网的实现

浏览器:客户端 ,获取请求材料,整理并展示给客户
万维网服务器:服务端,提供机器内的访问权
HTTP:超文本传输协议,应用于浏览器与万维网服务器之间
URL:统一资源定位符,是文档的地址,每个文档唯一
http://www.360doc.com/content/15/0814/08/3328689_491528233.shtml
http:超文本传输协议
www.360doc.com:主机的助记符
content/15/0814/08:目录路径
3328689_491528233.shtml:文档名
有时,URL不包含所有段,例如,只包含协议与助记符的称为主页

HTML

HTML:超文本标记语言,超文本文档实现的语言

XML

XML:可扩展标记语言,可用于将数据表示为文本文件的符号系统,例如五线谱
HTML基于XML开发,不严格遵守XML标准
###客户端和服务器端的活动
客户端活动:由客户机(浏览器)付出的额外活动,例如,使用搜索引擎时用户指定感兴趣的主题
实现系统:HTML中插入用JS写的程序,传输applet,使用Flash
服务器端活动:由万维网服务器付出的额外活动,例如,搜索引擎根据用户指定感兴趣的主题定制网页
实现系统:CGI(公共网关接口),服务器端执行servlet,ASP,PHP(超文本处理程序)

因特网协议

因特网软件的分层方法

应用层 → \rightarrow 传输层 → \rightarrow 网络层 → \rightarrow 链路层 → \rightarrow 网络层 → \rightarrow 传输层 → \rightarrow 应用层
应用层:由使用因特网通信来完成任务的软件单元组成,利用域名服务器将助记名翻译成IP地址
传输层:将长报文分段,增加序列号便于重组,交给网络层分组的片段
网络层:维护路由器的转发表,使用此表决定转发方向
链路层:接受和传输分组,一般与网络层结合在一起
对于以太网,链路层使用CSMA/CD协议,对于WiFi,使用CSMA/CA协议

TCP/IP协议簇

TCP/IP协议簇:因特网使用的协议的集合
TCP(传输控制协议):定义了传输层一个版本,需要先发送报文确立连接,TCP传输层通过确认和分组重发的方式保证所有片段成功发送,提供流量控制和拥塞控制
UDP(用户数据报协议):传输层的另一个版本,不需要建立连接,无重发,不可靠协议
IP:赋予网络层任务的因特网标准,包含转发与路由
当路由器故障或区域拥堵时,相邻网络层交换路由信息使用IP协议

安全性

入侵形式

病毒:嵌入到已有程序中,伴随宿主程序运行,部分执行扩散,部分执行破坏
蠕虫:有自主能力的程序,可以复制扩散破坏
木马:伪装成合法程序进入计算机系统的软件
间谍软件:收集计算机活动信息,并报告给攻击发起者
电子黑饵:钓鱼邮件
DoS攻击:使用大量未设防的肉鸡同时要求服务器回复
垃圾邮件:大量用作电子黑饵,木马的传播途径

防护和对策

防火墙:安装在网络某一重要节点来过滤通信流,阻止向某一特定地址发送信息,阻止接受已知有问题的来源发送的信息(DoS攻击),阻止源地址为区域内地址的信息进入(欺骗软件)
入侵者通过在感染的计算机上建立一个不存在的服务器来获取嗅探结果
垃圾邮件过滤器:防火墙的变种
代理服务器:介于客户机与服务器之间,保护客户机屏蔽来自服务器的不利行为,使服务器无法知道内联网信息
审计软件:监控报文流量,监控防火墙,监控请求
防病毒软件

加密

将报文进行加密,保证传输过程中的机密性
FTPS(FTP的安全版本)、SSH、HTTPS(HTTP的安全版本,核心为SSL)、
公钥加密:知道如何进行加密,但是无法解密,需要用私钥解密,例如RSA技术
认证机构:可信任的因特网站点,维护相关方的公钥,提供证书
证书:包含有关方的名称与公钥
鉴别:确定报文的作者确实是他声称的那一方,实现方式:数字签名

网络安全的法律途径

算法

算法的概念

定义

算法是定义一个可终止过程的一组有序无歧义可执行步骤的集合
程序是算法的表示 ,进程是执行算法的活动

算法的表示

伪代码

赋值语句:变量名$\leftarrow$表达式
条件语句:if(条件)then(活动)else(活动)
循环语句:while(条件)do(活动) repeat(活动)until(条件)
过程:procedure 过程名(参数)

算法的发现

灵机一动

迭代结构

插入排序

递归结构

二分搜索

有效性和正确性

有效性

最优情况分析,最差情况分析,平均情况分析

软件验证

正确性证明:确定前提条件 考虑结果如何传播 循环不变式

程序设计语言

历史回顾

早期程序设计语言

第一代:机器语言
第二代:汇编语言
机器语言+助记符系统=汇编语言
汇编语言需要通过汇编器转化为机器语言
第三代:Fortran Cobol 机器无关语言
编译器:将程序语言翻译成机器语言
解释器:翻译的同时直接运行

程序设计范型

程序设计范型:程序设计过程
命令型范型:程序设计过程的传统方法,例如伪代码,机器语言
说明型范型:描述问题,应用预先设定的通用算法来解决问题
函数式范型:把函数构造成简单函数的嵌套联合体
面向对象范型:将一组数据看做一个对象

传统的程序设计概念

过程单元

语言实现

翻译过程

翻译过程包含三个步骤,词法分析器,语法分析器,代码生成器
语法图中,需进一步描述的项称为非终结符,存在矩形框中,其他的称为终结符,存在椭圆框中
语法分析树
多义语法:存在两种语法分析树
代码优化:代码生成器的工作

面向对象程序设计

类和对象

实例变量:对象内的变量
成员函数:对象内的函数

构造器

附加特性

类的继承
封装

程序设计中的并发活动

并行处理
多线程通信

说明性程序设计

Prolog
实现数理逻辑中的推理过程的语言

软件工程

软件工程学科

与其他工程的差别:通过常用预先定制的构件构建系统的能力较差,缺少度量学来衡量软件属性
CASE:计算机辅助软件工程,用来简化软件开发的流程

软件生命周期

周期是个整体

开发 → \rightarrow 使用 → \rightarrow 维护 → \rightarrow 使用 → \rightarrow 维护 → \rightarrow

传统的开发阶段

需求分析,设计,实现,测试

软件工程方法

瀑布模型:严格遵守开发流程进行开发
增量模型:先开发出一个简化的版本,然后一点点向里面加功能,扩展概念
迭代模型:改进每个版本
增量模型一般采用演化式原型开发,迭代甚至采用抛弃式原型开发
开放源码开发:自行修改增强原型功能
极限编程(XP)模型:由少于12人组成的开发团队,自由交换想法,进行增量开发

模块化

模块化:把软件分割成易于处理的单元(模块),每个模块仅承担一部分功能

耦合

耦合:模块之间的联系,用来衡量软件系统复杂度
控制耦合:一个模块移交执行控制给另一个模块
数据耦合:模块间数据共享

内聚

内聚:每个模块的内部绑定程度
逻辑内聚:实现逻辑上相似活动的模块内聚
功能内聚:实现某一项功能的模块内聚

信息隐藏

通过封装抽象工具,实现黑盒,保证对象安全

构件

构件:软件中一个可复用单元

行业工具

UML

UML:统一建模语言
用例图 类图

质量保证

质量保证的范围

SQA小组

软件测试

白盒测试

帕累托法则:通过对一个集中区域施加作用,可以明显的改变结果,即对容易出错的模块进行彻底地测试
基本路径测试:测试数据保证软件中每条指令都执行至少一次

黑盒测试

边界值分析
beta测试:将软件的初步版本给特定用户

文档编制

用户文档:如何使用
系统文档:描述内部构成,便于维护,包含源代码
技术文档:如何安装,调参,反馈问题给开发人员

人机界面

人体工程学:协调人类体能
知行学:协调人类精神

数据抽象

数据结构基础

数组

同构数组:项具有相同类型
异构数组:项具有不同类型

列表、栈、队列

队列:用于缓冲区
栈:用于回溯

深度:根到节点路径上的节点数

相关概念

静态结构与动态结构

结构的形状或大小是否会随时间改变

指针

指针是一个存储区,包含了被编码的数字地址

数据结构的实现

数组的存储

1.同构数组
行主序:数据一行接着一行来放
列主序:数据一列接着一列来放
2.异构数组
实现方法:存到不同地方,用指针连接起来

列表的存储

邻接表:整个列表存储在一大块内存中,连续项依次放在相邻的存储单元中
链表:头指针,空指针

栈和队列的存储

栈:栈指针(指向栈顶的指针)
队列:头指针,尾指针(指向下一个空闲位置)
循环队列:为了判断循环队列是空还是满,实现时要浪费一个格子

二叉树的存储

数据库

数据库基础

数据库:多维数据集合

模式的作用

模式:描述了整个数据库的结构,用它来维护数据库
子模式:只是与特定用户需求相关的那部分数据库的描述

数据库管理系统

用户 应用软件 数据库管理系统 实际数据库

关系模型

用矩形表格存放数据,这种表格被称为关系
关系的行称为元组,关系的列称为属性

关系设计中的问题

考虑建立一个公司员工的数据库,需要保存员工编号,姓名,职务等信息,但是在同一张关系中可能一个员工在不同时间段任职多个职务,每个元组存储的不是一个员工,而是一个时间段的职务描述,会产生大量冗余信息,因此,这种情况下考虑用关系的分解

关系运算

select:提取若干个元组
project:提取若干个属性

例:
R1 ← \leftarrow select ID=3263826 from employee
R2 ← \leftarrow project name from R1

这样就可以提取出ID为3263826的元组代表的人名了

join:连接两个元组,新生成的元组属性为两个元组属性的并集

例:
C ← \leftarrow join A and B where A.name =B.name

关系A

name age
bob 17
alice 20

关系B

name sex
bob male
sam male

关系C

A.name A.age B.name B.sex
bob 17 bob male

SQL

SQL:结构化查询语言
格式:

select ...
from ...
where...

面向对象数据库

数据库由对象构成,对象之间通过相互链接反应它们之间的关系

维护数据库的完整性

提交/回滚协议

你可能感兴趣的:(本科课程笔记)