第一章:绪论
-
图灵模型
- 把计算机当成黑盒:接受输入,输出结果。(分为数据处理器和可编程处理器)
- 通用图灵机:机器只要提供合适程序就能进行任何运算。
冯诺依曼模型
-
计算机组成部分
- 数据:
- 软件:
-
计算机简史-省略
社会问题与道德问题
-
第二章:数字系统
-
数字系统概念
- 常见位置化系统(数字所在位置表示其值):十进制,二进制,八进制,十六进制。
- 常见非位置化系统:罗马数字系统。
各进制及转换-省略
第三章:数据存储
-
数字系统概念
- 多媒体:计算机中定义包含数字,文本,音频,图像,视频的信息。
-
存储数字-省略
- 包括整数存储,小数存储,补码余码系统等,详情见计算机组成原理
存储文本
-
存储音频
- 音频是模拟数据(时间度量中的值不可能无限存在计算机内存中):
- 图像仍然需要采样,但其模拟数据随空间变化,样本成为像素。(解析度越高,每英寸方块需要记录像素越多,色彩深度也就越高)
- 像素编码技术之一——真彩色,24位编码一个像素,每个三原色RGB表示8位,可以编码2的24次方个颜色。(还存在其他不常用方法)
存储视频
- 视频是图像在时间上的表示,后续讨论MPEG(视频压缩技术)
第四章:数据运算
-
逻辑计算
- 位层次:非,与,或,异或
-
移位运算
-
算数运算
- 加减乘除,适用于整数与浮点数
-
第五章:计算机组成-省略
第六章:计算机网络-省略
第七章:操作系统-省略
第八章:算法
- 算法是一组明确步骤的有序集合,它产生结果并在有限的时间内终结。即一组定义良好且有序的指令集合。
算法三种结构
- 顺序,判断,循环
-
算法的表示
- 一般通过UML(算法流程图)或者伪代码来表示算法
- UML:
- 伪代码:
基本算法-省略
- 详情见数据结构(排序,查找等)
子算法
- 递归是自我调用的过程,算法出现在它本身定义中即为递归算法。
- 而迭代是不包含本身的。
第九章:程序设计语言
-
程序设计语言的演化
- 计算机语言就是编写程序时,根据事先定义的规则写初的规定语句集合。
- 机器语言:计算机发展早期唯一的程序设计语言,每台计算机都有自己的机器语言(01序列组成),计算机唯一能事别的语言就是机器语言。
- 汇编语言:带符号或助记符的指令和地址代替二进制码的机器语言,最重要翻译成机器语言执行。
- 高级语言:提高汇编语言效率,提高编程效率,产生了高级语言。高级语言可以移植到不同机器上,但必须转化为机器语言(成为接释和编译)。
程序设计语言的翻译
- 高级语言程序被称为源程序,被翻译的机器语言成为目标程序。
- 两种方法用于翻译:编译和解释。
- 编译:把整个源程序翻译成目标程序。
- 解释:使用解释器把源程序翻译成目标程序(逐行进行翻译)。
①解释的第一种方法:源程序每行被翻译成被其使用的计算机上的机器语言,立即执行,但在翻译执行中出错就从头解释执行,所以这种方法非常慢。
②解释的第二种方法:java到来后新的解释过程被引入,java可以向任何计算机移植,所以把源程序分为两步进行翻译(编译和解释)。java源程序首先编译为字节码(看起来像机器语言但不是任何特定计算机的目标代码,而是虚拟机的目标代码,该虚拟机称为JVM),字节码可以被任何运行JVM的计算机进行编译和解释。 - 编译和解释都有相同的翻译过程:
- 词法分析器:一个个符号读取源代码,创建源程序中的助记符表。比如while就是c/c++/java中的循环符号。
- 语法分析器:分析一组助记符,找出其指令。比如:x,=,0,就是c语言中赋值语句“x=0”。
- 语义分析器:检查语法分析器创建的句子,保证它们不含二义性。
- 代码生成器:对每条指令转化为在其上运行的计算机的机器语言。
程序设计语言的编程模式
- 过程式模式:把程序当作主动主体,使用称为数据/数据的被动对象,为了操纵数据,主动主体发出动作,称为过程。过程模式中对象和过程是完全独立分开的实体。三部分构成:对象创建,过程调用,每个过程的一组代码。
- 面向对象模式:处理活动对象,执行的动作都包含在对象中,对象只需要接收合适的外部请求来执行动作。类中的方法被所有相同类型对象共享,也被从这些对象继承的其他对象共享。
- 拥有继承性,多态性。
- 函数式模式:程序看作数学函数,看作黑盒。提供一些原子函数并且可以组合创建新的函数。比如LIST,Scheme等语言。
- 说明式模式:根据逻辑推理的原则响应查询。需要大量事实来推理,迄今为止只局限于AI领域。比如Prolog语言。
-
程序设计语言的共同概念
- 数据类型:定义一系列值以及应用这些值的一系列操作。分为简单数据类型(原子性,不可分为更小数据类型)和复合数据类型(一组数据,每个元素都说简单/复合数据类型)。
- 变量:存储单元,每个内存单元对应计算机中一个地址。
- 变量声明:变量使用前需要声明,即赋予名字和类型,留出存储区域。
- 常量:可存储值的命名的位置,但在程序开始处被定义后就不能被改变。
- 输入输出
- 表达式:由一系列操作数和运算符简化后的一个单一数值,比如2*5+3
- 语句:执行响应对坐,被翻译成一条/多条计算机可执行指令。存在赋值语句,判断语句,选择语句,循环语句。
- 子程序:完成单一任务的子集集合在一起,放在自己程序单元中就是子程序,使得程序更加结构化,一次编写多次使用。
- 参数:主程序使用参数传递数据,主程序中称为实际参数,子程序称为形式参数。主程序通过两种方式传参:传值和传引用。
第十章:软件工程
-
概念
- 利用合理的工程方法和原则来获得在真实机器上工作的可靠软件
-
开发过程模型
- 瀑布模型:前一个阶段结束才能开始后一个阶段,即只有一个方向流动。缺点是过程出现问题需要检查全过程。
- 增量模型:首先开发系统的简化版本,然后增加更多细节,知道所有功能全部被加入。
-
分析阶段
- 开发过程始于分析阶段,生成规格说明书,存在两种方法:面向过程分析与面向对象分析。
- 面向过程分析使用多种建模工具:数据流图,实体关系图,状态图。
- 面向对象分析使用多种建模工具:用例图,类图,状态图。
设计阶段
-
实现阶段
- 语言选择进行评估。
-
测试阶段
- 目的就是发现错误bug,良好的测试能发现最多的错误。
-
文档
- 包括用户文档,系统文档,技术文档等。
第十一章:数据结构-省略
- 详情见数据结构篇。
第十二章:抽象数据类型-省略
- 详情见数据结构篇。
第十三章:文件结构
-
引言
- 文件存储在辅助存储设备中(磁盘磁带等),设计一个文件时,关键在如何从文件中检索信息,有时需要快速存取特定数据。
- ①顺序文件:按照顺序从头到尾存取记录,以EOF为文件末尾标志。
- ②索引文件:随机存取记录,需要记录的地址。由数据文件组成,是带索引的顺序文件,索引只占两个字段:顺序文件的键和磁盘相应记录的地址。
- ②散列文件:用散列/哈希函数来完成映射,用户给出键,函数把其映射为地址,无需额外的索引文件。
- 散列方法:
①直接散列法: - ②求模法/除余散列法:
- ③数字析取散列法:
-
冲突
- 解决方法:
①开放寻址法:冲突数据存在下个地址
②链表解决法(Java中哈希MAP使用):冲突数据存在下个链表结点
③桶散列法: -
目录
-
第十四章:数据库-省略
- 详见数据库原理
第十五章:数据压缩
-
概念
- 通过消除数据中内在的冗余来减少发送/存储的数据量,分为有损和无损压缩。
- LZ编码详情搜索:https://blog.csdn.net/weixin_42570192/article/details/122353257
第十六章:安全-省略
- 安全三个目标:机密性,完全性,可用性。
第十七章:计算理论-省略
-
第十八章:人工智能-省略