《Erlang/OTP并发编程实战》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:(美)洛根,(美)梅里特,(瑞典)卡尔森著;连城译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2012
  • ISBN:9787115285591
  • 页数:333 页
图书介绍:本书侧重生产环境下的Erlang开发,主要讲解如何构建稳定、版本控制良好、可维护的产品级代码,凝聚了三位Erlang大师多年的实战经验。

第一部分Erlang起步:OTP基础 2

第1章Erlang/OTP平台 2

1.1基于进程的并发编程 3

1.1.1理解并发 3

1.1.2 Erlang的进程模型 4

1.1.3 4种进程通信范式 5

1.1.4用Erlang进程编程 8

1.2 Erlang的容错架构 10

1.2.1进程链接如何工作 10

1.2.2监督与退出信号捕捉 10

1.2.3进程的分层容错 12

1.3分布式Erlang 13

1.4 Erlang运行时系统和虚拟机 13

1.4.1调度器 14

1.4.2 I/O与调度 15

1.4.3进程隔离与垃圾回收器 15

1.5函数式编程:Erlang的处世之道 16

1.6小结 16

第2章Erlang语言精要 18

2.1 Erlang shell 19

2.1.1启动shell 19

2.1.2输入表达式 20

2.1.3 shell函数 21

2.1.4退出shell 21

2.1.5任务控制基础 22

2.2 Erlang的数据类型 23

2.2.1数值与算术运算 24

2.2.2二进制串与位串 25

2.2.3原子 26

2.2.4元组 27

2.2.5列表 27

2.2.6字符串 28

2.2.7 pid、端口和引用 29

2.2.8将函数视作数据:fun函数 30

2.2.9项式的比较 30

2.2.10解读列表 31

2.3模块和函数 33

2.3.1调用其他模块中的函数(远程调用) 33

2.3.2不同元数的函数 34

2.3.3内置函数和标准库模块 34

2.3.4创建模块 35

2.3.5模块的编译和加载 36

2.3.6独立编译器erlc 37

2.3.7已编译模块与在shell中求值 37

2.4变量与模式匹配 38

2.4.1变量的语法 39

2.4.2单次赋值 39

2.4.3模式匹配:加强版的赋值 41

2.4.4解读模式 42

2.5函数与子句 44

2.5.1带副作用的函数:文本打印 44

2.5.2用模式匹配在多个子句中进行选择 45

2.5.3保护式 46

2.5.4模式、子句和变量作用域 47

2.6 Case和if表达式 48

2.6.1 Erlang的布尔型if-then-else分支选择 48

2.6.2If表达式 49

2.7 fun函数 49

2.7.1作为现有函数别名的fun函数 49

2.7.2匿名fun函数 50

2.8异常与try/catch 52

2.8.1抛出(触发)异常 52

2.8.2运用try…catch 53

2.8.3 try…of…catch 53

2.8.4 after 54

2.8.5获取栈轨迹 54

2.8.6重抛异常 55

2.8.7传统的 catch 55

2.9列表速构 56

2.9.1列表速构记法 56

2.9.2映射、过滤和模式匹配 56

2.10比特位语法与位串速构 57

2.10.1构造位串 57

2.10.2比特位语法中的模式匹配 58

2.10.3位串速构 59

2.11记录语法 59

2.11.1 记录声明 60

2.11.2创建记录 60

2.11.3记录的字段以及模式匹配 60

2.11.4更新记录字段 60

2.11.5记录声明应该放在哪儿 61

2.12预处理与文件包含 61

2.12.1宏的定义和使用 61

2.12.2文件包含 62

2.12.3条件编译 63

2.13进程 64

2.13.1操纵进程 64

2.13.2消息接收与选择性接收 65

2.13.3注册进程 66

2.13.4消息投递与信号 67

2.13.5进程字典 67

2.14 ETS表 68

2.14.1为何ETS表被设计成这样 68

2.14.2 ETS表的基本用法 68

2.15 以递归代替循环 69

2.15.1从迭代到递归 69

2.15.2理解尾递归 71

2.15.3累加器参数 72

2.15.4谈谈效率 72

2.15.5编写递归函数的窍门 73

2.16 Erlang编程资源 78

2.16.1图书 78

2.16.2在线资料 79

2.17小结 79

第3章 开发基于TCP的RPC服务 80

3.1你所创建的是什么 81

3.1.1基础知识提醒 82

3.1.2行为模式基础 82

3.2实现RPC服务器 85

3.2.1行为模式实现模块的典型布局 85

3.2.2模块首部 85

3.2.3 API段 88

3.2.4回调函数段 92

3.3运行RPC服务器 98

3.4浅谈测试 99

3.5小结 100

第4章OTP应用与监督机制 101

4.1 OTP应用 101

4.1.1 OTP应用的组织形式 102

4.1.2为应用添加元数据 103

4.1.3应用行为模式 104

4.1.4应用结构小结 105

4.2用监督者实现容错 105

4.2.1实现监督者 106

4.2.2监督者重启策略 107

4.2.3编写子进程规范 108

4.3启动应用 109

4.4生成EDoc文档 110

4.5小结 110

第5章 主要图形化监测工具的使用 112

5.1 Appmon 112

5.1.1 Appmon GUI 112

5.1.2 WebTool版Appmon 115

5.2 Pman 116

5.3调试器 118

5.4表查看器TV 121

5.5工具栏 123

5.6小结 123

第二部分 构建生产系统 126

第6章 打造一套缓存系统 126

6.1故事背景 126

6.2缓存的设计 127

6.3创建OTP应用的基本骨架 130

6.3.1应用目录结构的布局 130

6.3.2创建应用元数据 130

6.3.3实现应用行为模式 131

6.3.4实现监督者 131

6.4从应用骨架到五脏俱全的缓存 133

6.4.1编写sc element进程 134

6.4.2实现sc store模块 138

6.4.3打造应用层API模块 142

6.5小结 144

第7章Erlang/OTP中的日志与事件处理 145

7.1 Erlang/OTP中的日志 146

7.1.1日志概述 146

7.1.2 Erlang/OTP内置的日志设施 147

7.1.3标准日志函数 147

7.1.4 SASL与崩溃报告 149

7.2用gen_event编写自定义事件处理器 153

7.2.1 gen_event行为模式简介 153

7.2.2事件处理器示例 154

7.2.3处理错误事件 155

7.3为Simple Cache添加自定义事件流 157

7.3.1事件流API 157

7.3.2将处理器整合进Simple Cach 159

7.3.3订阅自定义事件流 161

7.4小结 162

第8章 分布式Erlang/OTP简介 163

8.1 Erlang分布式基础 163

8.1.1复制式进程间通信 164

8.1.2位置透明性 165

8.2节点与集群 166

8.2.1节点的启动 166

8.2.2节点的互联 167

8.2.3 Erlang节点如何定位其他节点并与之建立通信 169

8.2.4 magic cookie安全系统 170

8.2.5互联节点间的消息传递 171

8.2.6使用远程shell 173

8.3资源探测攻略 175

8.3.1术语 175

8.3.2算法 176

8.3.3实现资源探测应用 177

8.4小结 182

第9章用Mnesia为cache增加分布式支持 183

9.1分布式缓存 184

9.1.1选取通信策略 184

9.1.2同步缓存和异步缓存 186

9.1.3分布式表 188

9.2用Mnesia实现分布式数据存储 189

9.2.1建立项目数据库 189

9.2.2初始化数据库 191

9.2.3建表 192

9.2.4向表中录入数据 195

9.2.5执行基本查询 197

9.3基于Mnesia的分布式缓存 199

9.3.1用Mnesia取代ETS 199

9.3.2让缓存识别出其他节点 202

9.3.3用资源探测定位其他缓存实例 205

9.3.4动态复制Mnesia表 206

9.4小结 209

第10章 打包、服务和部署 210

10.1从系统的角度看应用 210

10.1.1结构 211

10.1.2元数据 211

10.1.3系统如何管理运行中的应用 212

10.2制作发布镜像 213

10.2.1发布镜像 213

10.2.2准备发布代码 214

10.2.3发布镜像的元数据文件 214

10.2.4脚本与启动文件 216

10.2.5系统配置 217

10.2.6启动目标系统 218

10.3发布镜像打包 219

10.3.1创建发布镜像包 219

10.3.2发布镜像包的内容 220

10.3.3定制发布镜像包 222

10.4安装发布镜像 223

10.5小结 223

第三部分 集成与完善 226

第11章 为缓存添加HTTP接口 226

11.1实现TCP服务器 226

11.1.1高效TCP服务器的设计模式 227

11.1.2搭建tcp interface应用的骨架 228

11.1.3填充TCP服务器的实现逻辑 228

11.1.4简单文本协议 231

11.1.5文本接口实现 232

11.2打造一套全新的Web接口 234

11.2.1 HTTP简介 234

11.2.2实现一套通用的Web服务器行为模式 237

11.2.3初识REST 248

11.2.4用gen_web_ server实现REST式协议 249

11.3小结 252

第12章 用端口和NIF集成外围代码 253

12.1端口和NIF 254

12.1.1普通端口 255

12.1.2链入式端口驱动 256

12.1.3原生函数(NIF) 257

12.2用端口来集成解析器 257

12.2.1 Erlang方面的端口 257

12.2.2 C方面的端口 260

12.2.3编译运行 271

12.3开发链入式驱动 272

12.3.1初识链入式驱动 273

12.3.2驱动的C语言部分 274

12.3.3编译驱动代码 278

12.3.4驱动的Erlang部分 279

12.4将解析器实现为NIF 280

12.4.1 NIF的Erlang部分 280

12.4.2 NIF的C代码部分 281

12.4.3编译与运行代码 287

12.5小结 288

第13章用Jinterface实现Erlang和Java间的通信 289

13.1利用Jinterface在Erlang中集成Java 290

13.1.1 OtpNode类 290

13.1.2 OtpMbox类 291

13.1.3 Erlang数据结构的Java映射 291

13.1.4示例:Java中的消息处理 292

13.1.5在Erlang中与Java节点通信 294

13.2安装和配置HBase 296

13.2.1下载和安装 296

13.2.2配置HBase 296

13.3为Simple Cache和HBase牵线搭桥 297

13.3.1 Erlang方面:sc_ hbase.erl 298

13.3.2 HBaseConnector类 299

13.3.3 Java中的消息处理 301

13.3.4 HBaseTask类 304

13.4在Simple Cache中整合HBase 306

13.4.1查询 306

13.4.2插入 307

13.4.3删除 307

13.5运行集成系统 308

13.6小结 310

第14章 优化与性能 311

14.1如何进行性能调优 312

14.1.1设定性能目标 312

14.1.2设定基线 313

14.1.3系统性能分析 313

14.1.4确定需要解决的问题 313

14.1.5测定优化成果 313

14.2 Erlang代码性能分析 314

14.2.1用cprof计算调用次数 314

14.2.2用fprof测定执行时间 316

14.3 Erlang编程语言的缺陷 320

14.3.1基本数据类型的性能特点 321

14.3.2内置函数和运算符的性能 324

14.3.3函数 325

14.3.4进程 327

14.4小结 329

附录A安装Erlang 330

附录B 列表与引用透明性 332