笔记-计算机科学精粹

it2022-05-05  205

第2章 复杂度

1、时间复杂度-运行成本 T(n)

最好情况最坏情况平均情况

2、O() 增长最快的项(主项)

 

第3章 策略

1、回溯法 栈

2、启发式方法(启发法)

贪心法 每次做出最佳选择  e.g.求解最短路径 每一步选择最短路径

3、分治法 e.g.归并排序

4、动态规划 对于重复子问题只计算一次 

记忆化

5、分支界定法 解决最优化问题

限制上下界

 

第4章 数据

1、抽象数据类型(ADT)——逻辑结构

优先队列

 

第5章 算法

1、图的搜索

DFS(深度优先搜索)栈BFS(广度优先搜索)队列

2、寻找最短路径

戴克斯特拉算法 优先队列 每个结点优先级是连接该结点与起始结点的边的权重

 

第6章 数据库

数据挖掘:从数据库中提取有用的信息。

1、关系数据库

表:列(字段),属性;行,数据条目。

模式:字段+限制(e.g. 数据的类型)

主键:表的ID字段。

外键:对其它行ID引用的字段。

??模式迁移

2、非关系数据库(noSQL)

文档存储键值对存储  主要在缓存中使用。e.g.键-请求的URL,值-网页最终的HTML图数据库大数据(megadata) SQL以数据为中心,最大限度利用数据结构,消除重复NoSQL以应用程序为中心,便于访问

 3、分布式数据库

单主机多主机分片 查询路由器

4、序列化格式

SQL((结构化查询语言) 常见XML(可扩展标记语言)JSON(JavaScript对象表示法) 大部分人认可CSV(逗号分隔值) 简单   数据以文本形式存储,每行一个数据元素,属性通过逗号(或其他不在数据中出现的字符)隔开

 

第7章 计算机

1、CPU

工作流程:

1)从PC指定的存储地址获取指令;  //PC program counter程序计数器2)PC自增;3)执行指令;4)返回步骤1;

PC在CPU上电时复位为默认值,它是计算机中第一条待执行指令的地址,这条指令通常是一种不可变的内置程序,加载计算机的基本功能。(在个人计算机中,这种程序称为BIOS(基本输入输出系统))

2、 编译器

脚本语言:由解释器而不是CPU执行,不直接编译为机器码,解释器实时转译并执行代码。e.g.JavaScript,Python,Ruby反汇编:对二进制程序解码,用于编码CPU指令的数字→人类可读指令序列逆向工程:查看上述CUP指令,分析用途(可以确定哪部分代码负责验证软件许可证→盗版)开源软件 源代码开放

3、 存储器层次结构

CPU访问寄存器很快,访问RAM却慢很多。

处理器与存储器之间的鸿沟。时间局部性,访问某个存储地址,很快会再次访问。空间局部性,访问某个存储地址,会快会访问其相邻地址。

3、缓存 集成在CPU内部

RAM:1000个CPU周期(1us)

一级缓存:10个CPU周期

二级缓存:100个CPU周期

(购买计算机,注意比较CPU一级/二级/三级缓存容量,建议选时钟频率稍低但缓存容量大的CPU)

4、存储器

第一级存储器(RAM):1 000个CPU周期(1us)

第二级存储器(主存储器(磁盘)):1 000 000个CPU周期(1ms)(CPU无法直接访问)

抖动模式:数据从磁盘读入RAM

(??服务期开始处理无法载入RAM的数据,抖动会导致服务器崩溃。 可能原因:内存不足)

??大端序,小端序

 

第8章 程序设计

编程范式

1、命令式编程

2、声明式编程

语法糖:在语言中添加语法,支持以更简短的方式编写表达式。

3、逻辑编程

 

 

参考资料

Computer Science Distilled:Learn the Artof Solving Computational Problems,by  Wladston Ferreira Filho

转载于:https://www.cnblogs.com/aeron99/p/11143178.html

相关资源:计算机科学精粹

最新回复(0)