计算机科学精粹
第 1章 预备知识 1
1.1 想法 1
1.1.1 流程图 2
1.1.2 伪代码 3
1.1.3 数学模型 4
1.2 逻辑 5
1.2.1 运算符 6
1.2.2 布尔代数 8
1.2.3 真值表 9
1.2.4 逻辑在计算中的应用 12
查看完整
1.1 想法 1
1.1.1 流程图 2
1.1.2 伪代码 3
1.1.3 数学模型 4
1.2 逻辑 5
1.2.1 运算符 6
1.2.2 布尔代数 8
1.2.3 真值表 9
1.2.4 逻辑在计算中的应用 12
查看完整
【作者简介】
Wladston Ferreira Filho 程序员,现任职于Code Energy。极简主义者。热衷于学习各种编程语言。
【译者简介】
蒋楠 毕业于电子科技大学、维多利亚大学。多年来致力于Web开发与软件架构设计,对算法、数据密集型应用、分布式数据库系统兴趣浓厚。非zi深程序员,严肃马拉松跑者。
Wladston Ferreira Filho 程序员,现任职于Code Energy。极简主义者。热衷于学习各种编程语言。
【译者简介】
蒋楠 毕业于电子科技大学、维多利亚大学。多年来致力于Web开发与软件架构设计,对算法、数据密集型应用、分布式数据库系统兴趣浓厚。非zi深程序员,严肃马拉松跑者。
本书面向所有对计算机科学感兴趣的读者,以浅显易懂的语言和简明扼要的形式介绍计算机科学领域的重要知识点,尽量少涉及学术概念,着力将抽象理论具体化,复杂问题简单化,既适合计算机专业技术人员查漏补缺基本理论,也适合普通读者了解计算思维。
第 1章 预备知识 1
1.1 想法 1
1.1.1 流程图 2
1.1.2 伪代码 3
1.1.3 数学模型 4
1.2 逻辑 5
1.2.1 运算符 6
1.2.2 布尔代数 8
1.2.3 真值表 9
1.2.4 逻辑在计算中的应用 12
1.3 计数 13
1.3.1 乘法 13
1.3.2 排列 14
1.3.3 具有相同项的排列 15
1.3.4 组合 16
1.3.5 求和 17
1.4 概率 19
1.4.1 对结果计数 19
1.4.2 独立事件 20
1.4.3 互斥事件 20
1.4.4 对立事件 21
1.4.5 赌徒谬误 21
1.4.6 高级概率 21
1.5 小结 22
第 2章 复杂度 23
2.1 时间计算 25
2.2 大O 符号 28
2.3 指数 29
2.4 内存计算 30
2.5 小结 31
第3章 策略 33
3.1 迭代 33
3.2 递归 36
3.3 蛮力法 38
3.4 回溯法 40
3.5 启发法 43
3.5.1 贪心法 43
3.5.2 利用贪心法求解电网问题 45
3.6 分治法 46
3.6.1 利用分治法求解排序问题 46
3.6.2 利用分治法求解最佳交易问题 49
3.6.3 利用分治法求解背包问题 50
3.7 动态规划 51
3.7.1 利用记忆化求解斐波那契数 52
3.7.2 利用记忆化求解背包问题 52
3.7.3 利用自底向上法求解最佳交易问题 53
3.8 分支定界法 54
3.8.1 上界与下界 55
3.8.2 背包问题中的上界与下界 56
3.9 小结 58
第4章 数据 59
4.1 抽象数据类型 60
4.2 常见抽象 62
4.2.1 基本数据类型 62
4.2.2 栈 62
4.2.3 队列 63
4.2.4 优先队列 63
4.2.5 列表 64
4.2.6 排序列表 64
4.2.7 映射 65
4.2.8 集合 65
4.3 数据结构 65
4.3.1 数组 66
4.3.2 链表 67
4.3.3 双向链表 68
4.3.4 数组与链表的比较 68
4.3.5 树 69
4.3.6 二叉查找树 70
4.3.7 二叉堆 73
4.3.8 图 74
4.3.9 散列表 74
4.4 小结 75
第5章 算法 77
5.1 排序 77
5.2 搜索 79
5.3 图 80
5.3.1 图的搜索 80
5.3.2 图着色 83
5.3.3 寻路 83
5.3.4 PageRank 86
5.4 运筹学 86
5.4.1 线性最优化问题 87
5.4.2 网络流问题 88
5.5 小结 89
第6章 数据库 91
6.1 关系数据库 92
6.1.1 关系 92
6.1.2 模式迁移 95
6.1.3 SQL 95
6.1.4 索引 97
6.1.5 事务 99
6.2 非关系数据库 99
6.2.1 文档存储 100
6.2.2 键值对存储 101
6.2.3 图数据库 102
6.2.4 大数据 103
6.2.5 SQL 与NoSQL 的比较 103
6.3 分布式数据库 104
6.3.1 单主机复制 104
6.3.2 多主机复制 105
6.3.3 分片 105
6.3.4 数据一致性 107
6.4 地理数据库 107
6.5 序列化格式 108
6.6 小结 109
第7章 计算机 111
7.1 体系结构 111
7.1.1 存储器 112
7.1.2 CPU 114
7.2 编译器 118
7.2.1 操作系统 121
7.2.2 编译优化 121
7.2.3 脚本语言 122
7.2.4 反汇编与逆向工程 123
7.2.5 开源软件 124
7.3 存储器层次结构 125
7.3.1 处理器与存储器之间的鸿沟 125
7.3.2 时间局部性与空间局部性 126
7.3.3 一级缓存 127
7.3.4 二级缓存 127
7.3.5 第 一级存储器与第二级存储器 128
7.3.6 外部存储器与第三级存储器 130
7.3.7 存储技术的发展趋势 130
7.4 小结 131
第8章 程序设计 133
8.1 语言学 133
8.1.1 值 134
8.1.2 表达式 134
8.1.3 语句 135
8.2 变量 136
8.2.1 变量类型 136
8.2.2 变量作用域 137
8.3 范式 138
8.3.1 命令式编程 138
8.3.2 声明式编程 140
8.3.3 逻辑编程 144
8.4 小结 145
附录 147
结语 151
后记 152
^ 收 起
1.1 想法 1
1.1.1 流程图 2
1.1.2 伪代码 3
1.1.3 数学模型 4
1.2 逻辑 5
1.2.1 运算符 6
1.2.2 布尔代数 8
1.2.3 真值表 9
1.2.4 逻辑在计算中的应用 12
1.3 计数 13
1.3.1 乘法 13
1.3.2 排列 14
1.3.3 具有相同项的排列 15
1.3.4 组合 16
1.3.5 求和 17
1.4 概率 19
1.4.1 对结果计数 19
1.4.2 独立事件 20
1.4.3 互斥事件 20
1.4.4 对立事件 21
1.4.5 赌徒谬误 21
1.4.6 高级概率 21
1.5 小结 22
第 2章 复杂度 23
2.1 时间计算 25
2.2 大O 符号 28
2.3 指数 29
2.4 内存计算 30
2.5 小结 31
第3章 策略 33
3.1 迭代 33
3.2 递归 36
3.3 蛮力法 38
3.4 回溯法 40
3.5 启发法 43
3.5.1 贪心法 43
3.5.2 利用贪心法求解电网问题 45
3.6 分治法 46
3.6.1 利用分治法求解排序问题 46
3.6.2 利用分治法求解最佳交易问题 49
3.6.3 利用分治法求解背包问题 50
3.7 动态规划 51
3.7.1 利用记忆化求解斐波那契数 52
3.7.2 利用记忆化求解背包问题 52
3.7.3 利用自底向上法求解最佳交易问题 53
3.8 分支定界法 54
3.8.1 上界与下界 55
3.8.2 背包问题中的上界与下界 56
3.9 小结 58
第4章 数据 59
4.1 抽象数据类型 60
4.2 常见抽象 62
4.2.1 基本数据类型 62
4.2.2 栈 62
4.2.3 队列 63
4.2.4 优先队列 63
4.2.5 列表 64
4.2.6 排序列表 64
4.2.7 映射 65
4.2.8 集合 65
4.3 数据结构 65
4.3.1 数组 66
4.3.2 链表 67
4.3.3 双向链表 68
4.3.4 数组与链表的比较 68
4.3.5 树 69
4.3.6 二叉查找树 70
4.3.7 二叉堆 73
4.3.8 图 74
4.3.9 散列表 74
4.4 小结 75
第5章 算法 77
5.1 排序 77
5.2 搜索 79
5.3 图 80
5.3.1 图的搜索 80
5.3.2 图着色 83
5.3.3 寻路 83
5.3.4 PageRank 86
5.4 运筹学 86
5.4.1 线性最优化问题 87
5.4.2 网络流问题 88
5.5 小结 89
第6章 数据库 91
6.1 关系数据库 92
6.1.1 关系 92
6.1.2 模式迁移 95
6.1.3 SQL 95
6.1.4 索引 97
6.1.5 事务 99
6.2 非关系数据库 99
6.2.1 文档存储 100
6.2.2 键值对存储 101
6.2.3 图数据库 102
6.2.4 大数据 103
6.2.5 SQL 与NoSQL 的比较 103
6.3 分布式数据库 104
6.3.1 单主机复制 104
6.3.2 多主机复制 105
6.3.3 分片 105
6.3.4 数据一致性 107
6.4 地理数据库 107
6.5 序列化格式 108
6.6 小结 109
第7章 计算机 111
7.1 体系结构 111
7.1.1 存储器 112
7.1.2 CPU 114
7.2 编译器 118
7.2.1 操作系统 121
7.2.2 编译优化 121
7.2.3 脚本语言 122
7.2.4 反汇编与逆向工程 123
7.2.5 开源软件 124
7.3 存储器层次结构 125
7.3.1 处理器与存储器之间的鸿沟 125
7.3.2 时间局部性与空间局部性 126
7.3.3 一级缓存 127
7.3.4 二级缓存 127
7.3.5 第 一级存储器与第二级存储器 128
7.3.6 外部存储器与第三级存储器 130
7.3.7 存储技术的发展趋势 130
7.4 小结 131
第8章 程序设计 133
8.1 语言学 133
8.1.1 值 134
8.1.2 表达式 134
8.1.3 语句 135
8.2 变量 136
8.2.1 变量类型 136
8.2.2 变量作用域 137
8.3 范式 138
8.3.1 命令式编程 138
8.3.2 声明式编程 140
8.3.3 逻辑编程 144
8.4 小结 145
附录 147
结语 151
后记 152
^ 收 起
【作者简介】
Wladston Ferreira Filho 程序员,现任职于Code Energy。极简主义者。热衷于学习各种编程语言。
【译者简介】
蒋楠 毕业于电子科技大学、维多利亚大学。多年来致力于Web开发与软件架构设计,对算法、数据密集型应用、分布式数据库系统兴趣浓厚。非zi深程序员,严肃马拉松跑者。
Wladston Ferreira Filho 程序员,现任职于Code Energy。极简主义者。热衷于学习各种编程语言。
【译者简介】
蒋楠 毕业于电子科技大学、维多利亚大学。多年来致力于Web开发与软件架构设计,对算法、数据密集型应用、分布式数据库系统兴趣浓厚。非zi深程序员,严肃马拉松跑者。
本书面向所有对计算机科学感兴趣的读者,以浅显易懂的语言和简明扼要的形式介绍计算机科学领域的重要知识点,尽量少涉及学术概念,着力将抽象理论具体化,复杂问题简单化,既适合计算机专业技术人员查漏补缺基本理论,也适合普通读者了解计算思维。
比价列表