0%

基本信息

名称: 深入学习MongoDB
作者信息: 作者: Kristina Chodorow [ 中文 pdf ]

简单介绍

《深入学习MongoDB》适合所有MongoDB用户阅读参考。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
MongoDB扩展技术
第1章 欢迎来到分布式计算的世界
第2章 理解分片
2.1 分割数据
2.1.1 分配数据
2.1.2 如何创建块
2.2 平衡
2.3 mongos
2.4 配置服务器
2.5 集群的构造
第3章 建立集群
3.1 选择片键
3.1.1 小基数片键
3.1.2 升序片键
3.1.3 随机片键
3.1.4 好片键
3.2 新老集合分片
3.2.1 快速起步
3.2.2 配置服务器
3.2.3 mongos
3.2.4 分片
3.2.5 数据库和集合
3.3 增减容量
3.3.1 移除分片
3.3.2 修改分片中的服务器
第4章 使用集群
4.1 查询
4.2 为什么会这样
4.2.1 计数
4.2.2 唯一索引
4.2.3 更新
4.3 MapReduce
第5章 管理
5.1 使用命令行
5.1.1 了解概况
5.1.2 配置集合
5.1.3 应该连接什么
5.2 监控
5.2.1 mongostat
5.2.2 Web管理界面
5.3 备份
5.4 关于架构的建议
5.4.1 创建应急站点
5.4.2 挖护城河
5.5 错误处理
5.5.1 分片停机
5.5.2 多数分片停机
5.5.3 配置服务器停机
5.5.4 mongos进程死掉
5.5.5 其他注意事项
第6章 学习资源
MongoDB开发技巧50例
第1章 应用设计技巧
1.1 技巧1:速度和完整性的折中
1.1.1 示例:网上购物车
1.1.2 考虑因素
1.2 技巧2:适应未来的数据要范式化
1.3 技巧3:尽量单个查询获取数据
1.3.1 示例:博客
1.3.2 示例:相册
1.4 技巧4:嵌入关联数据
1.5 技巧5:嵌入时间点数据
1.6 技巧6:不要嵌入不断增加的数据
1.7 技巧7:预填充数据
1.8 技巧8:尽可能预先分配空间
1.9 技巧9:用数组存放要匿名访问的内嵌数据
1.10 技巧10:文档要自给自足
1.11 技巧11:优先使用$操作符
1.11.1 深入了解
1.11.2 提高性能
1.12 技巧12:随时聚合
1.13 技巧13:编写代码处理数据完整性问题
第2章 实现技巧
2.1 技巧14:使用正确的类型
2.2 技巧15:用简单唯一的id替换id 2.3 技巧16:不要用文档做id
2.4 技巧17:不要用数据库引用
2.5 技巧18:不要用GridFS处理小的二进制数据
2.6 技巧19:处理“无缝”故障切换
2.7 技巧20:处理复制组失效及故障恢复
第3章 优化技巧
3.1 技巧21:尽可能减少磁盘访问
3.2 技巧22:使用索引减少内存占用
3.3 技巧23:不要到处使用索引
3.4 技巧24:索引覆盖查询
3.5 技巧25:使用复合索引加快多个查询
3.6 技巧26:通过建立分级文档加速扫描
3.7 技巧27:AND型查询要点
3.8 技巧28:OR型查询要点
第4章 数据安全性和一致性
4.1 技巧29:单机做日志,多机则复制
4.2 技巧30:坚持使用复制或日志,或两者兼用
4.3 技巧31:不要信任repair恢复的数据
4.4 技巧32:getlasterror
4.5 技巧33:开发过程中一定要使用安全写入
4.6 技巧34:使用w参数
4.7 技巧35:一定要给w设置超时
4.8 技巧36:不要每次写入都调用fsync
4.9 技巧37:崩溃之后正常启动
4.10 技巧38:持久性服务器的瞬时备份
第5章 管理技巧
5.1 技巧39:手工清理块集合
5.2 技巧40:用repair压缩数据库
5.3 技巧41:不要改变复制组成员投票的权值
5.4 技巧42:无活跃节点时可重置复制组
5.5 技巧43:不必指定——shardsvr和——configsvr参数
5.6 技巧44:开发时才用——notablescan
5.7 技巧45:学习JavaScript
5.8 技巧46:在shell中管理所有服务器和数据库
5.9 技巧47:获得帮助
5.10 技巧48:创建启动文件
5.11 技巧49:自定义函数
5.12 技巧50:使用单个连接读取自身写入

亚马逊链接

基本信息

名称: 七周七语言 理解多种编程范型
作者信息: 作者: 泰特(Tate B.A.) [ 中文 pdf ]

简单介绍

《7周7语言:理解多种编程范型》适合从事程序设计工作的人员阅读。Bruce A. Tate是软件行业的一名老兵,他有一个宏伟目标:用一本书的篇幅切中要害地探索七种不同的语言。《七周七语言:理解多种编程范型》就是他的成果。书中介绍了Ruby、Io、Prolog、Scala、Erlang、Cloiure和Haskell这七种语言。关注每一门语言的精髓和特性,重点解决如下问题:这门语言的类型模型是什么。编程范型是什么。如何与其交互。有哪些决策构造和核心数据结构,有哪些独特的核心特性。在这个飞速发展的信息时代。程序员仅仅掌握甚至精通一门语言是远远不够的。了解多门语言蕴涵的思维方式。在编码中互相借鉴。再挑出一两门对自己口味的语言深入学习,这些已经成为在软件行业中安身立命之本。从这个意义上说。每个程序员都应该看看这本《七周七语言》。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
目 录 

第1章 简介 1 1.1 不走寻常路 1 1.2 语言 2 1.3 谁应该买这本书 4 1.3.1 学会如何学习 4 1.3.2 乱世英雄 4 1.4 谁不应该买这本书 5 1.4.1 超越语法 5 1.4.2 不是安装指南 6 1.4.3 不是编程参考 6 1.4.4 严格督促 6 1.5 最后一击 7

第2章 Ruby 8 2.1 Ruby简史 9 2.2 第一天:找个保姆 10 2.2.1 快速起步 10 2.2.2 从命令行执行Ruby 10 2.2.3 Ruby的编程模型 11 2.2.4 判断 12 2.2.5 鸭子类型 15 2.2.6 第一天我们学到了什么 16 2.2.7 第一天自习 16 2.3 第二天:从天而降 17 2.3.1 定义函数 17 2.3.2 数组 17 2.3.3 散列表 19 2.3.4 代码块和yield 20 2.3.5 定义类 22 2.3.6 编写Mixin 25 2.3.7 模块、可枚举和集合 26 2.3.8 第二天我们学到了什么 27 2.3.9 第二天自习 28 2.4 第三天:重大改变 28 2.4.1 打开类 29 2.4.2 使用method_missing 30 2.4.3 模块 31 2.4.4 第三天我们学到了什么 35 2.4.5 第三天自习 35 2.5 趁热打铁 35 2.5.1 核心优势 35 2.5.2 不足之处 37 2.5.3 最后思考 37

第3章 Io 38 3.1 Io简介 38 3.2 第一天:逃学吧,轻松一下 39 3.2.1 开场白 39 3.2.2 对象、原型和继承 40 3.2.3 方法 43 3.2.4 列表和映射 44 3.2.5 true、false、nil以及单例 46 3.2.6 Steve Dekorte访谈录 48 3.2.7 第一天我们学到了什么 49 3.2.8 第一天自习 50 3.3 第二天:香肠大王 50 3.3.1 条件和循环 51 3.3.2 运算符 52 3.3.3 消息 54 3.3.4 反射 56 3.3.5 第二天我们学到了什么 57 3.3.6 第二天自习 57 3.4 第三天:花车游行和各种奇妙经历 58 3.4.1 领域特定语言 58 3.4.2 Io的method_missing 60 3.4.3 并发 62 3.4.4 第三天我们学到了什么 64 3.4.5 第三天自习 64 3.5 趁热打铁 65 3.5.1 核心优势 65 3.5.2 不足之处 66 3.5.3 最后思考 66

第4章 Prolog 67 4.1 关于Prolog 68 4.2 第一天:一名优秀的司机 68 4.2.1 基本概况 68 4.2.2 基本推论和变量 69 4.2.3 填空 70 4.2.4 合一,第一部分 73 4.2.5 实际应用中的Prolog 75 4.2.6 第一天我们学到了什么 77 4.2.7 第一天自习 77 4.3 第二天:离瓦普纳法官开演还有15分钟 78 4.3.1 递归 78 4.3.2 列表和元组 79 4.3.3 列表与数学运算 82 4.3.4 在两个方向上使用规则 83 4.3.5 第二天我们学到了什么 86 4.3.6 第二天自习 87 4.4 第三天:维加斯的爆发 87 4.4.1 解决数独问题 87 4.4.2 八皇后问题 91 4.4.3 第三天我们学到了什么 96 4.4.4 第三天自习 96 4.5 趁热打铁 96 4.5.1 核心优势 97 4.5.2 不足之处 97 4.5.3 最后思考 98

第5章 Scala 99 5.1 关于Scala 99 5.1.1 与Java的密切关系 100 5.1.2 没有盲目崇拜 100 5.1.3 Martin Odersky访谈录 100 5.1.4 函数式编程与并发 101 5.2 第一天:山丘上的城堡 102 5.2.1 Scala 类型 102 5.2.2 表达式与条件 103 5.2.3 循环 105 5.2.4 范围与元组 107 5.2.5 Scala中的类 109 5.2.6 扩展类 111 5.2.7 第一天我们学到了什么 113 5.2.8 第一天自习 114 5.3 第二天:修剪灌木丛和其他新把戏 114 5.3.1 对比var和val 115 5.3.2 集合 115 5.3.3 集合与函数 119 5.3.4 第二天我们都学到了什么 124 5.3.5 第二天自习 124 5.4 第三天:剪断绒毛 125 5.4.1 XML 125 5.4.2 模式匹配 126 5.4.3 并发 128 5.4.4 实际中的并发 129 5.4.5 第三天我们学到了什么 132 5.4.6 第三天自习 132 5.5 趁热打铁 133 5.5.1 核心优势 133 5.5.2 不足之处 134 5.5.3 最后思考 135

第6章 Erlang 136 6.1 Erlang简介 136 6.1.1 为并发量身打造 137 6.1.2 Joe Armstrong博士访谈录 138 6.2 第一天:以常人面目出现 139 6.2.1 新手上路 140 6.2.2 注释、变量和表达式 140 6.2.3 原子、列表和元组 141 6.2.4 模式匹配 142 6.2.5 函数 144 6.2.6 第一天我们学到了什么 147 6.2.7 第一天自习 147 6.3 第二天:改变结构 148 6.3.1 控制结构 148 6.3.2 匿名函数 150 6.3.3 列表和高阶函数 150 6.3.4 列表的一些高级概念 153 6.3.5 第二天我们学到了什么 156 6.3.6 第二天自习 157 6.4 第三天: 红药丸 157 6.4.1 基本并发原语 157 6.4.2 同步消息 160 6.4.3 链接进程以获得可靠性 162 6.4.4 第三天我们学到了什么 167 6.4.5 第三天自习 167 6.5 趁热打铁 167 6.5.1 核心优势 168 6.5.2 不足之处 169 6.5.3 最后思考 169

第7章 Clojure 170 7.1 Clojure入门 170 7.1.1 一切皆Lisp 170 7.1.2 JVM 171 7.1.3 为并发更新 171 7.2 第一天:训练Luke 172 7.2.1 调用基本函数 172 7.2.2 字符串和字符 174 7.2.3 布尔值和表达式 175 7.2.4 列表、映射表、集合以及向量 176 7.2.5 定义函数 179 7.2.6 绑定 180 7.2.7 匿名函数 182 7.2.8 Rich Hickey访谈录 183 7.2.9 第一天我们学到了什么 184 7.2.10 第一天自习 185 7.3 第二天:Yoda与原力 185 7.3.1 用loop和recur递归 185 7.3.2 序列 186 7.3.3 延迟计算 189 7.3.4 defrecord和protocol 191 7.3.5 宏 193 7.3.6 第二天我们学到了什么 194 7.3.7 第二天自习 195 7.4 第三天:一瞥魔鬼 195 7.4.1 引用和事务内存 196 7.4.2 使用原子 197 7.4.3 使用代理 198 7.4.4 future 200 7.4.5 还差什么 200 7.4.6 第三天我们学到了什么 201 7.4.7 第三天自习 201 7.5 趁热打铁 201 7.5.1 Lisp悖论 202 7.5.2 核心优势 202 7.5.3 不足之处 203 7.5.4 最后思考 204

第8章 Haskell 205 8.1 Haskell简介 205 8.2 第一天:逻辑 206 8.2.1 表达式和基本类型 206 8.2.2 函数 208 8.2.3 元组和列表 211 8.2.4 生成列表 214 8.2.5 Philip Wadler访谈录 217 8.2.6 第一天我们学到了什么 218 8.2.7 第一天自习 218 8.3 第二天:Spock的超凡力量 218 8.3.1 高阶函数 219 8.3.2 偏应用函数和柯里化 220 8.3.3 惰性求值 221 8.3.4 Simon Peyton-Jones访谈录 223 8.3.5 第二天我们学到了什么 224 8.3.6 第二天自习 225 8.4 第三天:心灵融合 226 8.4.1 类与类型 226 8.4.2 monad 231 8.4.3 第三天我们学到了什么 236 8.4.4 第三天自习 237 8.5 趁热打铁 237 8.5.1 核心优势 237 8.5.2 不足之处 238 8.5.3 最后思考 239

第9章 落幕时分 240 9.1 编程模型 240 9.1.1 面向对象(Ruby、Scala) 241 9.1.2 原型编程(Io) 241 9.1.3 约束-逻辑编程(Prolog) 241 9.1.4 函数式编程(Scala、Erlang、Clojure、Haskell) 241 9.1.5 范型演进之路 242 9.2 并发 242 9.2.1 控制可变状态 243 9.2.2 Io、Erlang和Scala中的actor 243 9.2.3 future 243 9.2.4 事务型内存 243 9.3 编程结构 244 9.3.1 列表解析 244 9.3.2 monad 244 9.3.3 匹配 245 9.3.4 合一 246 9.4 发现自己的旋律 246

附录 参考书目 247

亚马逊链接

基本信息

名称: 程序员的职业素养
作者信息: 作者: Robert C.Martin [ 中文 pdf ]

简单介绍

《程序员的职业素养》是编程大师 Robert C. Martin40余年编程生涯的心得体会, 讲解成为真正专业的程序员需要什么样的态度、原则,需要采取什么样的行动。Robert C. Martin以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来人引路,助其职业生涯迈上更高台阶。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
第1章 专业主义
1.1 清楚你要什么
1.2 担当责任
1.3 首先,不行损害之事
1.3.1 不要破坏软件功能
1.3.2 不要破坏结构
1.4 职业道德
1.4.1 了解你的领域
1.4.2 坚持学习
1.4.3 练习
1.4.4 合作
1.4.5 辅导
1.4.6 了解业务领域
1.4.7 与雇主/客户保持一致
1.4.8 谦逊
1.5 参考文献
第2章 说“不”
2.1对抗角色
2.2高风险时刻
2.3要有团队精神
2.3.1试试看
2.3.2消极对抗
2.4说“是”的成本
2.5如何写出好代码
第3章说“是”
3.1承诺用语
3.1.1识别“缺乏承诺”的征兆
3.1.2真正的承诺听起来是怎样的
3.1.3 总结
3.2学习如何说“是”
3.2.1 “试试”的另一面
3.2.2 坚守原则
3.3结论
第4章编码
4.1做好准备
4.1.1 凌晨3点写出的代码
4.1.2焦虑时写下的代码
4.2流态区
4.2.1 音乐
4.2.2 中断
4.3 阻塞
4.4调试
4.5保持节奏
4.5.1知道何时应该离开一会
4.5.2开车回家路上
4.5.3 洗澡
4.6进度延迟
4.6.1期望
4.6.2盲目冲刺
4.6.3加班加点
4.6.4交付失误
4.6.5定义“完成”
4.7帮助
4.7.1帮助他人
4.7.2接受他人的帮助
4.7.3 辅导
4.8参考文献
第5章测试驱动开发
5.1此事已有定论
5.2 TDD的三项法则
5.3 TDD的优势
5.3.1 确定性
5.3.2缺陷注入率
5.3.3 勇气
5.3.4 文档
5.3.5设计
5.3.6、专业人士的选择
5.4 TDD的局限
5.5参考文献
第6章练习
6.1 引子
6.1.1 10的22次方
6.1.2转变
6.2编程柔道场
6.2.1 卡塔
6.2.2瓦萨
6.2.3 自由练习
6.3 自身经验的拓展
6.3.1 开源
6.3.2 关于练习的职业道德
6.4结论
6.5参考文献
第7章验收测试
7.1需求的沟通
7.1.1过早精细化
7.1.2迟来的模糊性
7.2验收测试
7.2.1 “完成”的定义
7.2.2 沟通
7.2.3 自动化
7.2.4额外工作
7.2.5验收测试什么时候写,由谁来写
7.2.6开发人员的角色
7.2.7测试的协商与被动推进
7.2.8验收测试和单元测试
7.2.9 图形界面及其他复杂因素
7.2.10持续集成
7.3结论
第8章测试策略
8.1 QA应该找不到任何错误
8.1.1 QA也是团队的一部分
8.1.2需求规约定义者
8.1.3特性描述者
8.2自动化测试金字塔
8.2.1 单元测试
8.2.2组件测试
8.2.3集成测试
8.2.4 系统溺4试
8.2.5人工探索式测试
8.3结论
8.4参考文献
第9章时间管理
9.1 会议
9.1.1拒绝
9.1.2 离席
9.1.3确定议程与目标
9.1.4立会
9.1.5迭代计划会议
9.1.6迭代回顾和DEM0展示
9.1.7争论/反对
9.2注意力点数
9.2.1 睡眠
9.2.2咖啡因
9.2.3恢复
9.2.4肌肉注意力
……
第10章 预估
第11章 压力
第12章 协作
第13章 团队与项目
第14章 辅导、学徒期与技艺
附录 工具

亚马逊链接

基本信息

名称: 游戏改变世界 游戏化如何让现实变得更美好
作者信息: 作者: 简•麦戈尼格尔 (Jane McGonigal) [ 中文 pdf ]

简单介绍

《游戏改变世界:游戏化如何让现实变得更美好》作者简•麦戈尼格尔是著名未来学家,世界顶级未来趋势智库“未来学会”游戏研发总监,被《商业周刊》誉为“十大最重要创新人士之一”,被《快公司》誉为“全球百位创意商业人士之一”,被脱口秀女王奥普拉誉为“全球最令人惊叹的20位女性之一”,她的观点被《哈佛商业评论》誉为“最具突破性的观念”。简•麦戈尼格尔是TED大会新锐演讲者,受关注度超过比尔•盖茨,位居第16位;纽约客大会特邀演讲人,游戏开发者大会主讲人。《游戏改变世界:游戏化如何让现实变得更美好》首次探索了游戏化的力量,权威揭示了互联时代的未来趋势,颠覆了普通人对游戏的一切认知。游戏不是小孩子的玩意儿,不是时间杀手,不是让人自闭、上瘾、丧失活力的毒品,而是解决现实问题、改善生活质量、创造美好未来的利器。作者在书中指出:游戏可以弥补现实世界的不足和缺陷,重塑人类积极的未来。未来属于能够理解、设计并会玩游戏的那些人,而如果人们继续忽视游戏,就会错失良机、失去未来。《纽约时报》超级畅销书,全球50位最具影响力商业思想家之一、著名趋势专家、畅销书《驱动力》《全新思维》作者丹尼尔•平克,积极心理学之父、畅销书《真实的幸福》作者马丁•塞利格曼倾情推荐!知名IT评论人谢文、银海资本合伙人王煜全、顽石WiStone CEO吴刚、触控科技CocoaChina总经理陈昊芝、资深媒体人罗振宇、NTA创新传播机构创始人申音、知名经理人社会观察家王冠雄、i黑马联合发起人龙真重磅推荐!

目录

1
2
3
4
5
6
7
8
9
10
11
引言 游戏,通往未来的线索 

第一部分 游戏化,互联时代的重要趋势 第1章 提升人的幸福感 游戏是我们集中精力的大好机会,我们乐观向上地做着一件自己擅长并享受的事情。所有优秀的游戏都是艰苦工作。它是我们主动选择且享受其中的艰苦工作。而当我们从事自己喜欢的艰苦工作时,就点燃了头脑里的那根快乐雷管。 第2章 构建更美好的现实社会 游戏是最显而易见的心流来源,玩耍是出类拔萃的心流体验。自我激励、自我奖励的活动能让我们更幸福。更重要的是,它还证明,玩家玩游戏,并不是为了逃避现实生活。他们是在主动让现实生活变得更有价值。

第二部分 游戏化的4大目标 第3章 更满意的工作 精心设计的游戏工作让人觉得更有生产力,因为它感觉起来更真实:反馈来得又强又快,影响明显而生动。对很多不喜欢自己的日常工作、觉得它没有什么直接影响的人而言,游戏里的工作提供了真正的奖励和满足感。 第4章 更有把握的成功 胜利往往终结乐趣,而失败维持乐趣。只要我们的失败有趣,我们就会继续尝试,并保持最终成功的希望。如果我们能为失败所激发,说不定能坚持更长时间,做更艰巨的工作,处理更复杂的挑战。成功的希望比成功本身更刺激。 第5章 更强的社会联系 我们越是更多地一起玩游戏,越是会产生有意识地创造全球社群的感觉。玩家并不只是想在游戏里赢,他们还肩负着更大的使命。他们的使命,就是成为宏伟事业的一部分。 第6章 更宏大的意义 要体验真正的意义,不必贡献出真正有价值的东西,必须得到做出贡献的机会。为生活增加意义的最佳途径,就是把自己的日常行动与一个宏伟的目标联系起来,我们需要机会来反映这一共同事业的宏伟规模。

第三部分 游戏化的运作机制 第7章 全情投入当下:游戏化的参与机制 平行实境游戏不是为了逃避现实,而是为了从现实中得到更多。它让我们在不能或不愿进入虚拟环境时,也能轻松地产生我们渴望的内在奖励。它让我们不仅全情投入游戏生活,更全情投入现实生活。 第8章 实时反馈:游戏化的激励机制 玩家之所以能把几乎每一款游戏都越玩越好,是因为他们能够得到持续的反馈。这种瞬时的积极反馈让玩家更加努力,更成功地完成艰巨的挑战。把我们本来就喜欢的事情变得更像游戏值得一试,它能让我们做得更好,让我们把目光放得更为高远。 第9章 和陌生人结盟,创造更强大的社群:游戏化的团队机制 游戏把一群人的注意力集中在共同的目标上,它提醒我们:我们其实真心愿意与最陌生的陌生人分享。只要我们愿意,只要我们需要,就能够和别人建立关系。人再也没有理由在这个世上感到孤独,不管是在虚拟世界,还是在现实世界。 第10章 让幸福成为一种习惯:游戏化的持续性 不能让幸福知道我们来了,只能偷偷摸摸地从侧面包抄。少数强烈而令人难忘的幸福黑客活动体验,能扭转我们对事情的想法和做法。好的游戏具有强大的力量,能永远地改变你看待自己和自身能力的方式。

第四部分 游戏化带给互联时代的现实价值 第11章 可持续参与式经济 在参与式经济中,我们竞争的不是“眼球”或“头脑份额”,而是脑力循环和心情份额。成功只能依靠进行更好、更具竞争力的动员,激励我们朝着集体目标做得更多、做得更久。而游戏能激发极端的努力,创建坚持到底、一起完成奇迹事业的社群。积极的情绪是参与带来的终极奖励。 第12章 伟大的人人时代 有人以为普通人在业余时间办不成什么大事,而游戏则帮助我们颠覆了他们的认识。我们是能够接触他人的人类,我们能够出现在他人的生活中,并为其带去不同。我们拥有社会力量,我们可以驾驭它们。社会参与游戏把我们变成了现实生活里的超级英雄。 第13章 认知盈余的红利 每一个玩了10000个小时游戏的年轻人,日后都能在游戏环境下实现非凡的成功。多人和在线游戏加强了我们建立、锻炼共享意向的能力。每当我们答应一起玩游戏,就是在实践人之为人的一项基本天赋。 第14章 超级合作者 游戏最有把握成为地球生命的下一种突破性结构。成为人类以来,我们几乎一直在玩各种精彩的游戏。团结一心,我们可以攻克一个兴许是最值得尝试、规模也最为庞大的障碍:利用游戏提高全球生活质量,为未来做好准备,让地球顺利进入下一个千年的全球性使命。

结语 游戏化,重塑人类的文明

亚马逊链接

基本信息

名称: Hadoop实战(第2版)
作者信息: 作者: 陆嘉恒 [ 中文 pdf ]

简单介绍

《Hadoop实战(第2版)》编辑推荐:第1版广受好评,第2版基于Hadoop及其相关技术最新版本撰写,从多角度做了全面的修订和补充。不仅详细讲解了新一代的Hadoop技术,而且全面介绍了Hive、HBase、Mahout、Pig、ZooKeeper、Avro、Chukwa等重要技术,是系统学习Hadoop技术的首选之作。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
前言
第1章Hadoop简介1
1.1什么是Hadoop2
1.1.1Hadoop概述2
1.1.2Hadoop的历史2
1.1.3Hadoop的功能与作用2
1.1.4Hadoop的优势3
1.1.5Hadoop应用现状和发展趋势3
1.2Hadoop项目及其结构3
1.3Hadoop体系结构6
1.4Hadoop与分布式开发7
1.5Hadoop计算模型—MapReduce10
1.6Hadoop数据管理10
1.6.1HDFS的数据管理10
1.6.2HBase的数据管理12
1.6.3Hive的数据管理13
1.7Hadoop集群安全策略15
1.8本章小结17
第2章Hadoop的安装与配置19
2.1在Linux上安装与配置Hadoop20
2.1.1安装JDK1.620
2.1.2配置SSH免密码登录21
2.1.3安装并运行Hadoop22
2.2在MacOSX上安装与配置Hadoop24
2.2.1安装Homebrew24
2.2.2使用Homebrew安装Hadoop25
2.2.3配置SSH和使用Hadoop25
2.3在Windows上安装与配置Hadoop25
2.3.1安装JDK1.6或更高版本25
2.3.2安装Cygwin25
2.3.3配置环境变量26
2.3.4安装sshd服务26
2.3.5启动sshd服务26
2.3.6配置SSH免密码登录26
2.3.7安装并运行Hadoop26
2.4安装和配置Hadoop集群27
2.4.1网络拓扑27
2.4.2定义集群拓扑27
2.4.3建立和安装Cluster28
2.5日志分析及几个小技巧34
2.6本章小结35
第3章MapReduce计算模型36
3.1为什么要用MapReduce37
3.2MapReduce计算模型38
3.2.1MapReduceJob38
3.2.2Hadoop中的HelloWorld程序38
3.2.3MapReduce的数据流和控制流46
3.3MapReduce任务的优化47
3.4Hadoop流49
3.4.1Hadoop流的工作原理50
3.4.2Hadoop流的命令51
3.4.3两个例子52
3.5HadoopPipes54
3.6本章小结56
第4章开发MapReduce应用程序57
4.1系统参数的配置58
4.2配置开发环境60
4.3编写MapReduce程序60
4.3.1Map处理60
4.3.2Reduce处理61
4.4本地测试62
4.5运行MapReduce程序62
4.5.1打包64
4.5.2在本地模式下运行64
4.5.3在集群上运行64
4.6网络用户界面65
4.6.1JobTracker页面65
4.6.2工作页面65
4.6.3返回结果66
4.6.4任务页面67
4.6.5任务细节页面67
4.7性能调优68
4.7.1输入采用大文件68
4.7.2压缩文件68
4.7.3过滤数据69
4.7.4修改作业属性71
4.8MapReduce工作流72
4.8.1复杂的Map和Reduce函数72
4.8.2MapReduceJob中全局共享数据74
4.8.3链接MapReduceJob75
4.9本章小结77
第5章MapReduce应用案例79
5.1单词计数80
5.1.1实例描述80
5.1.2设计思路80
5.1.3程序代码81
5.1.4代码解读82
5.1.5程序执行83
5.1.6代码结果83
5.1.7代码数据流84
5.2数据去重85
5.2.1实例描述85
5.2.2设计思路86
5.2.3程序代码86
5.3排序87
5.3.1实例描述87
5.3.2设计思路88
5.3.3程序代码89
5.4单表关联91
5.4.1实例描述91
5.4.2设计思路92
5.4.3程序代码92
5.5多表关联95
5.5.1实例描述95
5.5.2设计思路96
5.5.3程序代码96
5.6本章小结98
第6章MapReduce工作机制99
6.1MapReduce作业的执行流程100
6.1.1MapReduce任务执行总流程100
6.1.2提交作业101
6.1.3初始化作业103
6.1.4分配任务104
6.1.5执行任务106
6.1.6更新任务执行进度和状态107
6.1.7完成作业108
6.2错误处理机制108
6.2.1硬件故障109
6.2.2任务失败109
6.3作业调度机制110
6.4Shuffle和排序111
6.4.1Map端111
6.4.2Reduce端113
6.4.3shuffle过程的优化114
6.5任务执行114
6.5.1推测式执行114
6.5.2任务JVM重用115
6.5.3跳过坏记录115
6.5.4任务执行环境116
6.6本章小结117
第7章HadoopIO操作118
7.1IO操作中的数据检查119
7.2数据的压缩126
7.2.1Hadoop对压缩工具的选择126
7.2.2压缩分割和输入分割127
7.2.3在MapReduce程序中使用压缩127
7.3数据的IO中序列化操作128
7.3.1Writable类128
7.3.2实现自己的Hadoop数据类型137
7.4针对Mapreduce的文件类139
7.4.1SequenceFile类139
7.4.2MapFile类144
7.4.3ArrayFile、SetFile和BloomMapFile146
7.5本章小结148
第8章下一代MapReduce:YARN149
8.1MapReduceV2设计需求150
8.2MapReduceV2主要思想和架构151
8.3MapReduceV2设计细节153
8.4MapReduceV2优势156
8.5本章小结156
第9章HDFS详解157
9.1Hadoop的文件系统158
9.2HDFS简介160
9.3HDFS体系结构161
9.3.1HDFS的相关概念161
9.3.2HDFS的体系结构162
9.4HDFS的基本操作164
9.4.1HDFS的命令行操作164
9.4.2HDFS的Web界面165
9.5HDFS常用JavaAPI详解166
9.5.1使用HadoopURL读取数据166
9.5.2使用FileSystemAPI读取数据167
9.5.3创建目录169
9.5.4写数据169
9.5.5删除数据171
9.5.6文件系统查询171
9.6HDFS中的读写数据流175
9.6.1文件的读取175
9.6.2文件的写入176
9.6.3一致性模型178
9.7HDFS命令详解179
9.7.1通过distcp进行并行复制179
9.7.2HDFS的平衡180
9.7.3使用Hadoop归档文件180
9.7.4其他命令183
9.8WebHDFS186
9.8.1WebHDFS的配置186
9.8.2WebHDFS命令186
9.9本章小结190
第10章Hadoop的管理191
10.1HDFS文件结构192
10.2Hadoop的状态监视和管理工具196
10.2.1审计日志196
10.2.2监控日志196
10.2.3Metrics197
10.2.4Java管理扩展199
10.2.5Ganglia200
10.2.6Hadoop管理命令202
10.3Hadoop集群的维护206
10.3.1安全模式206
10.3.2Hadoop的备份207
10.3.3Hadoop的节点管理208
10.3.4系统升级210
10.4本章小结212
第11章Hive详解213
11.1Hive简介214
11.1.1Hive的数据存储214
11.1.2Hive的元数据存储216
11.2Hive的基本操作216
11.2.1在集群上安装Hive216
11.2.2配置MySQL存储Hive元数据218
11.2.3配置Hive220
11.3HiveQL详解221
11.3.1数据定义(DDL)操作221
11.3.2数据操作(DML)231
11.3.3SQL操作233
11.3.4HiveQL使用实例235
11.4Hive网络(WebUI)接口237
11.4.1Hive网络接口配置237
11.4.2Hive网络接口操作实例238
11.5Hive的JDBC接口241
11.5.1Eclipse环境配置241
11.5.2程序实例241
11.6Hive的优化244
11.7本章小结246
第12章HBase详解247
12.1HBase简介248
12.2HBase的基本操作249
12.2.1HBase的安装249
12.2.2运行HBase253
12.2.3HBaseShell255
12.2.4HBase配置258
12.3HBase体系结构260
12.3.1HRegion260
12.3.2HRegion服务器261
12.3.3HBaseMaster服务器262
12.3.4ROOT表和META表262
12.3.5ZooKeeper263
12.4HBase数据模型263
12.4.1数据模型263
12.4.2概念视图264
12.4.3物理视图264
12.5HBase与RDBMS265
12.6HBase与HDFS266
12.7HBase客户端266
12.8JavaAPI267
12.9HBase编程273
12.9.1使用Eclipse开发HBase应用程序273
12.9.2HBase编程275
12.9.3HBase与MapReduce278
12.10模式设计280
12.10.1模式设计应遵循的原则280
12.10.2学生表281
12.10.3事件表282
12.11本章小结283
第13章Mahout详解284
13.1Mahout简介285
13.2Mahout的安装和配置285
13.3MahoutAPI简介288
13.4Mahout中的频繁模式挖掘290
13.4.1什么是频繁模式挖掘290
13.4.2Mahout中的频繁模式挖掘290
13.5Mahout中的聚类和分类292
13.5.1什么是聚类和分类292

亚马逊链接

基本信息

名称: 谁说菜鸟不会数据分析(入门篇)(全彩)
作者信息: 作者: 张文霖 [ 中文 pdf ]

简单介绍

《谁说菜鸟不会数据分析(入门篇)(升级版)》有足够的魅力让你一口气读下去,在无形之中掌握数据分析的技能,提升职场竞争能力。这是一本有趣的数据分析书!

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
第1章 数据分析那些事儿
1.1 数据分析是“神马”/14
1.1.1 何谓数据分析/15
1.1.2 数据分析的作用/16
1.2 数据分析六步曲/17
1.2.1 明确分析目的和思路/18
1.2.2 数据收集/20
1.2.3 数据处理/21
1.2.4 数据分析/21
1.2.5 数据展现/22
1.2.6 报告撰写/23
1.3 数据分析的三大误区/24
1.4 数据分析师的职业发展/25
1.4.1 数据分析的广阔前景/25
1.4.2 数据分析师的职业要求/27
1.4.3 数据分析师的基本素质/28
1.5 几个常用指标和术语/32
1.6 本章小结/36
第2章 结构为王——确定分析思路
2.1 数据分析方法论/38
2.1.1 数据分析方法论与数据分析法的区别/38
2.1.2 数据分析方法论的重要性/39
2.2 常用的数据分析方法论/40
2.2.1 PEST分析法/40
2.2.2 5W2H分析法/43
2.2.3 逻辑树分析法/44
2.2.4 4P营销理论/45
2.2.5 用户行为理论/47
2.3 本章小结/48
第3章 无米难为巧妇——数据准备
3.1 理解数据/50
3.1.1 字段与记录/51
3.1.2 数据类型/52
3.1.3 数据表/53
3.2 数据来源/57
3.2.1 导入数据/57
3.2.2 问卷录入要求/63
3.3 本章小结/65
第4章 三心二意——数据处理
4.1 何为数据处理/67
4.1.1 “三心二意”处理数据/67
4.1.2 数据处理的内容/69
4.2 数据清洗/70
4.2.1 重复数据的处理/71
4.2.2 缺失数据处理/76
4.2.3 检查数据逻辑错误/80
4.3 数据加工/82
4.3.1 数据抽取/82
4.3.2 数据计算/87
4.3.3 数据分组/91
4.3.4 数据转换/92
4.4 数据抽样/97
4.5 本章小结/98
第5章 工欲善其事必先利其器——数据分析
5.1 数据分析方法/101
5.1.1 对比分析法/102
5.1.2 分组分析法/105
5.1.3 结构分析法/106
5.1.4 平均分析法/107
5.1.5 交叉分析法/108
5.1.6 综合评价分析法/109
5.1.7 杜邦分析法/113
5.1.8 漏斗图分析法/114
5.1.9 矩阵关联分析法/115
5.1.10 高级数据分析方法/120
5.2 数据分析工具/121
5.2.1 初识数据透视表/121
5.2.2 创建数据透视表的三步法/122
5.2.3 数据透视表分析实践/124
5.2.4 数据透视表小技巧/130
5.2.5 多选题分析/132
5.3 本章小结/135
第6章 给数据量体裁衣——数据展现
6.1 揭开图表的真面目/138
6.1.1 图表的作用/138
6.1.2 经济适用图表有哪些/139
6.1.3 通过关系选择图表/140
6.1.4 图表制作五步法/145
6.2 表格也疯狂/146
6.2.1 突出显示单元格/146
6.2.2 项目选取/147
6.2.3 数据条/148
6.2.4 图标集/149
6.2.5 迷你图/150
6.3 给图表换装/151
6.3.1 平均线图/152
6.3.2 双坐标图/153
6.3.3 竖形折线图/156
6.3.4 瀑布图/159
6.3.5 帕累托图/160
6.3.6 旋风图/165
6.3.7 人口金字塔图/169
6.3.8 漏斗图/171
6.3.9 矩阵图(散点图)/173
6.3.10 发展矩阵图/176
6.3.11 改进难易矩阵(气泡图)/178
6.4 本章小结/180
第7章 专业化生存——图表可以更美的
7.1 别让图表犯错/183
7.1.1 让图表“五脏俱全”/183
7.1.2 要注意的条条框框/185
7.1.3 图表会说谎/196
7.2 浓妆淡抹总相宜——图表美化/200
7.2.1 图表美化的三原则/200
7.2.2 略施粉黛——美化图表的技巧/203
7.2.3 图表也好“色”/209
7.3 如虎添翼的招儿/213
7.3.1 我的图表模板/214
7.3.2 快速制图/215
7.3.3 添加标签小工具/216
7.3.4 修剪超大值/218
7.4 本章小结/220
第8章 专业的报告——体现你的职场价值
8.1 初识数据分析报告/222
8.1.1 数据分析报告是什么/222
8.1.2 数据分析报告的写作原则/222
8.1.3 数据分析报告的作用/224
8.1.4 数据分析报告的种类/225
8.2 数据分析报告的结构/228
8.2.1 标题页/228
8.2.2 目录/230
8.2.3 前言/231
8.2.4 正文/233
8.2.5 结论与建议/234
8.2.6 附录/234
8.3 撰写报告时的注意事项/235
8.4 报告范例/236
8.5 本章小结/244
写在后面的Q/A
附录A网络学习资源

亚马逊链接

基本信息

名称: 重构与模式(修订版)
作者信息: 作者: Joshua Kerievsky [ 中文 pdf ]

简单介绍

讲述重构与设计模式两大热门技术,将两者有机结合,极具实战价值,业界专家学习和教授重构与模式亲身经历的结晶,《设计模式》作者Erich Gamma、Ralph Johnson和《重构》作者Martin Fowler联合推荐。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
第1章 本书的写作缘由 1
1.1 过度设计 1
1.2 模式万灵丹 2
1.3 设计不足 2
1.4 测试驱动开发和持续重构 3
1.5 重构与模式 5
1.6 演进式设计 6
第2章 重构 7
2.1 何谓重构 7
2.2 重构的动机 8
2.3 众目睽睽 9
2.4 可读性好的代码 10
2.5 保持清晰 11
2.6 循序渐进 11
2.7 设计欠账 12
2.8 演变出新的架构 13
2.9 复合重构与测试驱动的重构 13
2.10 复合重构的优点 15
2.11 重构工具 15
第3章 模式 17
3.1 何谓模式 17
3.2 模式痴迷 18
3.3 实现模式的方式不止一种 20
3.4 通过重构实现、趋向和去除模式 22
3.5 模式是否会使代码更加复杂 24
3.6 模式知识 25
3.7 使用模式的预先设计 26
第4章 代码坏味 28
4.1 重复代码(DuplicatedCode) 30
4.2 过长函数(LongMethod) 30
4.3 条件逻辑太复杂(ConditionalComplexity) 31
4.4 基本类型偏执(PrimitiveObsession) 32
4.5 不恰当的暴露(IndecentExposure) 32
4.6 解决方案蔓延(SolutionSprawl) 33
4.7 异曲同工的类(AlternativeClasseswithDifferentInterfaces) 33
4.8 冗赘类(LazyClass) 33
4.9 过大的类(LargeClass) 33
4.10 分支语句(SwitchStatement) 34
4.11 组合爆炸(CombinatorialExplosion) 34
4.12 怪异解决方案(OddballSolution) 34
第5章 模式导向的重构目录 36
5.1 重构的格式 36
5.2 本目录中引用的项目 37
5.2.1 XMLBuilder 38
5.2.2 HTMLParser 38
5.2.3 贷款风险计算程序 39
5.3 起点 39
5.4 学习顺序 39
第6章 创建 41
6.1 用CreationMethod替换构造函数 43
6.1.1 动机 43
6.1.2 做法 45
6.1.3 示例 45
6.1.4 变体 49
6.2 将创建知识搬移到Factory 51
6.2.1 动机 51
6.2.2 做法 54
6.2.3 示例 55
6.3 用Factory封装类 60
6.3.1 动机 60
6.3.2 做法 61
6.3.3 示例 62
6.3.4 变体 65
6.4 用FactoryMethod引入多态创建 67
6.4.1 动机 67
6.4.2 做法 68
6.4.3 示例 70
6.5 用Builder封装Composite 74
6.5.1 做法 76
6.5.2 示例 77
6.5.3 变体 87
6.6 内联Singleton 90
6.6.1 动机 90
6.6.2 做法 92
6.6.3 示例 93
第7章 简化 96
7.1 组合方法 97
7.1.1 动机 97
7.1.2 做法 99
7.1.3 示例 99
7.2 用Strategy替换条件逻辑 102
7.2.1 动机 102
7.2.2 做法 104
7.2.3 示例 105
7.3 将装饰功能搬移到Decorator 115
7.3.1 动机 115
7.3.2 做法 118
7.3.3 示例 119
7.4 用State替换状态改变条件语句 133
7.4.1 动机 133
7.4.2 做法 134
7.4.3 示例 135
7.5 用Composite替换隐含树 143
7.5.1 动机 143
7.5.2 做法 146
7.5.3 示例 147
7.6 用Command替换条件调度程序 155
7.6.1 动机 155
7.6.2 做法 157
7.6.3 示例 158
第8章 泛化 164
8.1 形成TemplateMethod 165
8.1.1 动机 166
8.1.2 做法 167
8.1.3 示例 167
8.2 提取Composite 172
8.2.1 动机 172
8.2.2 做法 173
8.2.3 示例 174
8.3 用Composite替换一多之分 180
8.3.1 动机 180
8.3.2 做法 182
8.3.3 示例 183
8.4 用Observer替换硬编码的通知 190
8.4.1 动机 190
8.4.2 做法 191
8.4.3 示例 192
8.5 通过Adapter统一接口 199
8.5.1 动机 199
8.5.2 做法 200
8.5.3 示例 201
8.6 提取Adapter 208
8.6.1 动机 208
8.6.2 做法 210
8.6.3 示例 210
8.6.4 变体 216
8.7 用Interpreter替换隐式语言 217
8.7.1 动机 217
8.7.2 做法 219
8.7.3 示例 220
第9章 保护 230
9.1 用类替换类型代码 231
9.1.1 动机 231
9.1.2 做法 233
9.1.3 示例 234
9.2 用Singleton限制实例化 240
9.2.1 动机 240
9.2.2 做法 241
9.2.3 示例 241
9.3 引入NullObject 244
9.3.1 动机 244
9.3.2 做法 246
9.3.3 示例 247
第10章 聚集操作 252
10.1 将聚集操作搬移到CollectingParameter 253
10.1.1 动机 253
10.1.2 做法 254
10.1.3 示例 255
10.2 将聚集操作搬移到Visitor 259
10.2.1 动机 259
10.2.2 做法 263
10.2.3 示例 267
第11章 实用重构 274
11.1 链构造函数 275
11.1.1 动机 275
11.1.2 做法 276
11.1.3 示例 276
11.2 统一接口 278
11.2.1 动机 278
11.2.2 做法 279
11.2.3 示例 279
11.3 提取参数 280
11.3.1 动机 280
11.3.2 做法 280
11.3.3 示例 281
跋 282
参考文献 283
索引 286

亚马逊链接

基本信息

名称: 算法导论(原书第3版)
作者信息: 作者: Thomas H.Cormen [ 中文 pdf ]

简单介绍

《算法导论(原书第3版)》编辑推荐:全球超过50万人阅读的算法圣经!算法标准教材,国内外1000余所高校采用。国内知名高校6位教授历时3年倾心翻译!

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
出版者的话
译者序
前言
第一部分基础知识
第1章算法在计算中的作用
1.1算法
1.2作为一种技术的算法
思考题
本章注记
第2章算法基础
2.1插入排序
2.2分析算法
2.3设计算法
2.3.1分治法
2.3.2分析分治算法
思考题
本章注记
第3章函数的增长
3.1渐近记号
3.2标准记号与常用函数
思考题
本章注记
第4章分治策略
4.1最大子数组问题
4.2矩阵乘法的Strassen算法
4.3用代入法求解递归式
4.4用递归树方法求解递归式
4.5用主方法求解递归式
4.6证明主定理
4.6.1对6的幂证明主定理
4.6.2向下取整和向上取整
思考题
本章注记
第5章概率分析和随机算法
5.1雇用问题
5.2指示器随机变量
5.3随机算法
5.4概率分析和指示器随机变量的进一步使用 5.4.1生日悖论 5.4.2球与箱子 5.4.3特征序列 5.4.4在线雇用问题 思考题 本章注记 第二部分排序和顺序统计量 第6章堆排序 6.1堆 6.2维护堆的性质 6.3建堆 6.4堆排序算法 6.5优先队列 思考题 本章注记 第7章快速排序 7.1快速排序的描述 7.2快速排序的性能 7.3快速排序的随机化版本 7.4快速排序分析 7.4.1最坏情况分析 7.4.2期望运行时间 思考题 本章注记 第8章线性时间排序 8.1排序算法的下界 8.2计数排序 8.3基数排序 8.4桶排序 思考题 本章注记 第9章中位数和顺序统计量 9.1最小值和最大值 9.2期望为线性时间的选择算法 9.3最坏情况为线性时间的选择算法 思考题 本章注记 第三部分数据结构 第10章基本数据结构 10.1栈和队列 10.2链表 10.3指针和对象的实现 10.4有根树的表示 思考题 本章注记 第11章散列表 11.1直接寻址表 11.2散列表 11.3散列函数 11.3.1除法散列法 11.3.2乘法散列法 11.3.3全域散列法
11.4开放寻址法
11.5完全散列
思考题
本章注记
第12章二叉搜索树
12.1什么是二叉搜索树
12.2查询二叉搜索树
12.3插入和删除
12.4随机构建二叉搜索树
思考题
本章注记
第13章红黑树
13.1红黑树的性质
13.2旋转
13.3插入
13.4删除
思考题
本章注记
第14章数据结构的扩张
14.1动态顺序统计
14.2如何扩张数据结构
14.3区间树
思考题
本章注记
第四部分高级设计和分析技术
第15章动态规划
15.1钢条切割
15.2矩阵链乘法
15.3动态规划原理
15.4最长公共子序列
15.5最优二叉搜索树
思考题
本章注记
第16章贪心算法
16.1活动选择问题
16.2贪心算法原理
16.3赫夫曼编码
16.4拟阵和贪心算法 16.5用拟阵求解任务调度问题
思考题
本章注记
第17章摊还分析
17,1聚合分析
17.2核算法
17.3势能法
17.4动态表
17.4.1表扩张
17.4.2表扩张和收缩
思考题
本章注记
第五部分高级数据结构
第18章B树
18.1B树的定义
18.2B树上的基本操作
18.3从B树中删除关键字
思考题
本章注记
第19章斐波那契堆
19.1斐波那契堆结构
19.2可合并堆操作
19.3关键字减值和删除一个结点
19.4最大度数的界
思考题
本章注记
第20章van Emde Boas树
20.1基本方法
20.2递归结构
20.2.1原型van Emde Boas结构
20.2.2原型van Emde Boas结构上的操作
20.3van Emde Boas树及其操作
20.3.1van Emde Boas树
20.3.2van Emde Boas树的操作
思考题
本章注记
第21章用于不相交集合的数据结构
21.1不相交集合的操作
21.2不相交集合的链表表示
21.3不相交集合森林
21.4带路径压缩的按秩合并的分析 思考题 本章注记 第六部分图算法 第22章基本的图算法 22.1图的表示 22.2广度优先搜索 22.3深度优先搜索 22.4拓扑排序 22.5强连通分量 思考题 本章注记 第23章最小生成树 23.1最小生成树的形成 23.2Kruskal算法和Prim算法 思考题 本章注记 第24章单源最短路径 24.1Bellman—Ford算法 24.2有向无环图中的单源最短路径问题 24.3Dijkstra算法 24.4差分约束和最短路径 24.5最短路径性质的证明 思考题 本章注记 第25章所有结点对的最短路径问题 25.1最短路径和矩阵乘法 25.2Floyd—Warshall算法 25.3用于稀疏图的Johnson算法 思考题 本章注记 第26章最大流 26.1流网络 26.2Ford—Fulkerson方法 26.3最大二分匹配 26.4推送一重贴标签算法
26.5前置重贴标签算法 思考题 本章注记 第七部分算法问题选编 第27章多线程算法 27.1动态多线程基础 27.2多线程矩阵乘法 27.3多线程归并排序 思考题 本章注记 第28章矩阵运算 28.1求解线性方程组 28.2矩阵求逆 28.3对称正定矩阵和最小二乘 逼近 思考题 本章注记 第29章线性规划 29.1标准型和松弛型 29.2将问题表达为线性规划 29.3单纯形算法 29.4对偶性 29.5初始基本可行解 思考题 本章注记 第30章多项式与快速傅里叶变换 30.1多项式的表示 30.2DFT与FFT 30.3高效FFT实现 思考题 本章注记 第31章数论算法 31.1基础数论概念 31.2最大公约数 31.3模运算 31.4求解模线性方程 31.5中国余数定理 31.6元素的幂 31.7RSA公钥加密系统 31.3素数的测试
31.9整数的因子分解 思考题 本章注记 第32章字符串匹配 32.1朴素字符串匹配算法 32.2Rabin—Karp算法 32.3利用有限自动机进行字符串匹配 32.4Knuth—Morris—Pratt算法
思考题
本章注记
第33章计算几何学
33.1线段的性质
33.2确定任意一对线段是否相交
33.3寻找凸包
33.4寻找最近点对
思考题
本章注记
第34章NP完全性
34.1多项式时间
34.2多项式时间的验证
34.3NP完全性与可归约性
34.4NP完全性的证明
34.5NP完全问题
34.5.1团问题
34.5.2顶点覆盖问题
34.5.3哈密顿回路问题
34.5.4旅行商问题
34.5.5子集和问题
思考题
本章注记
第35章近似算法
35.1顶点覆盖问题
35.2旅行商问题
35.2.1满足三角不等式的旅行商问题
35.2.2一般旅行商问题
35.3集合覆盖问题
35.4随机化和线性规划
35.5子集和问题
思考题
本章注记
第八部分附录:数学基础知识
附录A求和
A.1求和公式及其性质
A.2确定求和时间的界
思考题
附录注记
附录B集合等离散数学内容
B.1集合
B.2关系
B.3函数
B.4图
B.5树
B.5.1自由树
B.5.2有根树和有序树
B.5.3二叉树和位置树
思考题
附录注记
附录C计数与概率
C.1计数
C.2概率
C.3离散随机变量
C.4几何分布与二项分布
思考题
附录注记
附录D矩阵
D.1矩阵与矩阵运算
D.2矩阵的基本性质
思考题
附录注记
参考文献
索引

亚马逊链接

基本信息

名称: Effective MySQL之SQL语句最优化
作者信息: 作者: 布拉德福 (Ronald Bradford) [ 中文 pdf ]

简单介绍

《Effective MySQL之SQL语句最优化》提供了很多可以用于改进数据库和应用程序性能的最佳实践技巧,并对这些技巧做了详细的解释,希望能够通过一步步详细介绍SQL优化的方法,帮助读者分析和调优有问题的SQL语句。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
第1章DBA五分钟速成
1.1识别性能问题
1.1.1寻找运行缓慢的SQL语句
1.1.2确认低效查询
1.2优化查询
1.2.1不应该做的事情
1.2.2确认优化
1.2.3正确的方式
1.2.4备选的解决方案
1.2本章小结
第2章基本的分析命令
2.1 EXPLAIN命令
2.1.1 EXPLAIN PARTITIONS命令
2.1.2 EXPLAIN EXTENDED命令
2.2 SHOW CREATE TABLE命令
2.3 SHOW INDEXES命令
2.4 SHOW TABLE STATUS命令
2.5 SHOW STATUS命令
2.6 SHOW VARIABLES命令
2.7 INFORMATION SCHEMA
2.8本章小结
第3章深入理解MySQL的索引
3.1示例表
3.2 MySQL索引用法
3.2.1数据完整性
3.2.2优化数据访问
3.2.3表连接
3.2.4结果排序
3.2.5聚合操作
3.3关于存储引擎
3.4索引专业术语
3.5 MySQL索引类型
3.5.1索引数据结构理论
3.5.2 MySQL实现
3.6 MySQL分区
3.7本章小结
第4章创建MySQL索引
4.1本章范例中用到的表
4.2 已有的索引
4.3单列索引
4.3.1创建单列索引的语法
4.3.2利用索引限制查询读取的行数
4.3.3使用索引连接表
4.3.4理解索引的基数
4.3.5使用索引进行模式匹配
4.3.6选择唯一的行
4.3.7结果排序
4.4多列索引
4.4.1确定使用何种索引
4.4.2多列索引的语法
4.4.3创建更好的索引
4.4.4多个列上的索引
4.4.5合并VWd—EKE和ORDER BY语句
4.4.6 MySQL优化器的特性
4.4.7查询提示
4.4.8复杂查询
4.5添加索引造成的影响
4.5.1 DML影响
4.5.2 DDL影响
4.5.3磁盘空间影响
4.6 MySQL的限制和不足
4.6.1基于开销的优化器
4.6.2指定QEP
4.6.3索引的统计信息
4.6.4基于函数的索引
4.6.5一个表上的多个索引
4.7本章小结
第5章创建更好的MySQL索引
5.1更好的索引
5.1.1覆盖索引
5.1.2存储引擎的含义
5.1.3局部索引
5.2本章小结
第6章MySQL配置选项
6.1 内存相关的系统变量
6.1.1 key_buffer_size
6.1.2命名码缓冲区
6.1.3 innodb_buffer_pool_size
6.1.4 innodb_additional_mem pool_size
6.1.5 query_cache_size
6.1.6 max_heap_tablesize
6.1.7 trap_table size
6.1.8 join_buffersize
6.1.9 sort_buffer_size
6.1.10 read_buffersize
6.1.11 read_md_buffer_size
6.2有关基础工具的变量
6.2.1 slow_query_log
6.2.2 slow query_log_file
……
第7章SQL的生命周期
第8章性能优化之隐藏秘籍
第9章MySQLEXPLAIN命令详解

亚马逊链接

基本信息

名称: 高性能MySQL(第3版)
作者信息: 作者: 施瓦茨 (Baron Schwartz) [ 中文 pdf ]

简单介绍

“只要你不敢以MySQL专家自诩,又岂敢错过这本神书?”“一言以蔽之,写得好,编排得好,需要参考时容易到爆!”“我可是从头到尾看了一遍上一版,可还是毫不犹豫拿起了这本《高性能MySQL(第3版)》,而且看完后一点都不后悔……”

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
推荐序
前言
第1章MySQL架构与历史1
1.1MySQL逻辑架构1
1.1.1连接管理与安全性2
1.1.2优化与执行3
1.2并发控制3
1.2.1读写锁4
1.2.2锁粒度4
1.3事务6
1.3.1隔离级别8
1.3.2死锁9
1.3.3事务日志10
1.3.4MySQL中的事务10
1.4多版本并发控制12
1.5MySQL的存储引擎13
1.5.1InnoDB存储引擎16
1.5.2MyISAM存储引擎17
1.5.3MySQL内建的其他存储引擎19
1.5.4第三方存储引擎22
1.5.5选择合适的引擎24
1.5.6转换表的引擎27
1.6MySQL时间线(Timeline)29
1.7MySQL的开发模式32
1.8总结33
第2章MySQL基准测试35
2.1为什么需要基准测试35
2.2基准测试的策略37
2.2.1测试何种指标38
2.3基准测试方法40
2.3.1设计和规划基准测试41
2.3.2基准测试应该运行多长时间42
2.3.3获取系统性能和状态43
2.3.4获得准确的测试结果44
2.3.5运行基准测试并分析结果46
2.3.6绘图的重要性47
2.4基准测试工具49
2.4.1集成式测试工具49
2.4.2单组件式测试工具50
2.5基准测试案例52
2.5.1http_load53
2.5.2MySQL基准测试套件54
2.5.3sysbench55
2.5.4数据库测试套件中的dbt2TPC—C测试60
2.5.5Percona的TPCC—MySQL测试工具63
2.6总结65
第3章服务器性能剖析67
3.1性能优化简介67
3.1.1通过性能剖析进行优化69
3.1.2理解性能剖析71
3.2对应用程序进行性能剖析72
3.2.1测量PHP应用程序74
3.3剖析MySQL查询77
3.3.1剖析服务器负载77
3.3.2剖析单条查询81
3.3.3使用性能剖析87
3.4诊断间歇性问题88
3.4.1单条查询问题还是服务器问题89
3.4.2捕获诊断数据93
3.4.3一个诊断案例98
3.5其他剖析工具106
3.5.1使用USER_STATISTICS表106
3.5.2使用strace107
3.6总结108
第4章Schema与数据类型优化111
4.1选择优化的数据类型111
4.1.1整数类型113
4.1.2实数类型113
4.1.3字符串类型114
4.1.4日期和时间类型121
4.1.5位数据类型123
4.1.6选择标识符(identifier)125
4.1.7特殊类型数据127
4.2MySQLschema设计中的陷阱127
4.3范式和反范式129
4.3.1范式的优点和缺点130
4.3.2反范式的优点和缺点130
4.3.3混用范式化和反范式化131
4.4缓存表和汇总表132
4.4.1物化视图134
4.4.2计数器表135
4.5加快ALTERTABLE操作的速度136
4.5.1只修改.frm文件137
4.5.2快速创建MyISAM索引139
4.6总结140
第5章创建高性能的索引141
5.1索引基础141
5.1.1索引的类型142
5.2索引的优点152
5.3高性能的索引策略153
5.3.1独立的列153
5.3.2前缀索引和索引选择性153
5.3.3多列索引157
5.3.4选择合适的索引列顺序159
5.3.5聚簇索引162
5.3.6覆盖索引171
5.3.7使用索引扫描来做排序175
5.3.8压缩(前缀压缩)索引177
5.3.9冗余和重复索引178
5.3.10未使用的索引181
5.3.11索引和锁181
5.4索引案例学习183
5.4.1支持多种过滤条件183
5.4.2避免多个范围条件185
5.4.3优化排序186
5.5维护索引和表187
5.5.1找到并修复损坏的表187
5.5.2更新索引统计信息188
5.5.3减少索引和数据的碎片190
5.6总结192
第6章查询性能优化195
6.1为什么查询速度会慢195
6.2慢查询基础:优化数据访问196
6.2.1是否向服务器请求了不需要的数据196
6.2.2MySQL是否在扫描额外的记录198
6.3重构查询的方式201
6.3.1一个复杂查询还是多个简单查询201
6.3.2切分查询202
6.3.3分解关联查询203
6.4查询执行的基础204
6.4.1MySQL客户端/服务器通信协议205
6.4.2查询缓存208
6.4.3查询优化处理208
6.4.4查询执行引擎222
6.4.5返回结果给客户端223
6.5MySQL查询优化器的局限性223
6.5.1关联子查询223
6.5.2UNION的限制228
6.5.3索引合并优化228
6.5.4等值传递229
6.5.5并行执行229
6.5.6哈希关联229
6.5.7松散索引扫描229
6.5.8最大值和最小值优化231
6.5.9在同一个表上查询和更新232
6.6查询优化器的提示(hint)232
6.7优化特定类型的查询236
6.7.1优化COUNT()查询236
6.7.2优化关联查询239
6.7.3优化子查询239
6.7.4优化GROUPBY和DISTINCT239
6.7.5优化LIMIT分页241
6.7.6优化SQL_CALC_FOUND_ROWS243
6.7.7优化UNION查询243
6.7.8静态查询分析244
6.7.9使用用户自定义变量244
6.8案例学习251
6.8.1使用MySQL构建一个队列表251
6.8.2计算两点之间的距离254
6.8.3使用用户自定义函数257
6.9总结258
第7章MySQL高级特性259
7.1分区表259
7.1.1分区表的原理260
7.1.2分区表的类型261
7.1.3如何使用分区表262
7.1.4什么情况下会出问题263
7.1.5查询优化266
7.1.6合并表267
7.2视图270
7.2.1可更新视图272
7.2.2视图对性能的影响273
7.2.3视图的限制274
7.3外键约束275
7.4在MySQL内部存储代码276
7.4.1存储过程和函数278
7.4.2触发器279
7.4.3事件281
7.4.4在存储程序中保留注释283
7.5游标283
7.6绑定变量284
7.6.1绑定变量的优化286
7.6.2SQL接口的绑定变量286
7.6.3绑定变量的限制288
7.7用户自定义函数289
7.8插件290
7.9字符集和校对291
7.9.1MySQL如何使用字符集292
7.9.2选择字符集和校对规则295
7.9.3字符集和校对规则如何影响查询296
7.10全文索引299
7.10.1自然语言的全文索引300
7.10.2布尔全文索引302
7.10.3MySQL5.1中全文索引的变化303
7.10.4全文索引的限制和替代方案304
7.10.5全文索引的配置和优化306
7.11分布式(XA)事务307
7.11.1内部XA事务307
7.11.2外部XA事务308
7.12查询缓存309
7.12.1MySQL如何判断缓存命中309
7.12.2查询缓存如何使用内存311
7.12.3什么情况下查询缓存能发挥作用313
7.12.4如何配置和维护查询缓存316
7.12.5InnoDB和查询缓存319
7.12.6通用查询缓存优化320
7.12.7查询缓存的替代方案321
7.13总结321
……
第8章优化服务器设置325
第9章操作系统和硬件优化377
第10章复制433
第11章可扩展的MySQL501
第12章高可用性543
第13章云端的MySQL563
第14章应用层优化577
第15章备份与恢复593
第16章MySQL用户工具635
附录AMySQL分支与变种649
附录BMySQL服务器状态655
附录C大文件传输683
附录DEXPLAIN687
附录E锁的调试703
附录F在MySQL上使用Sphinx713
索引739

亚马逊链接