没有合适的资源?快使用搜索试试~ 我知道了~
首页"深入分析Erlang程序设计:并发、分布、容错"
"深入分析Erlang程序设计:并发、分布、容错"
精选学习资源,大学生必学!(篇)
需积分: 0 15 下载量 153 浏览量
更新于2024-01-12
收藏 12.33MB PDF 举报
《Erlang程序设计(第2版)》是由Erlang语言之父Joe Armstrong编写的经典著作。本书通过介绍消息传递的分布式并发系统,探讨了如何在多核CPU上实现程序自动加速以及编写分布式应用程序当中互相交流的技巧。此外,书中还详细介绍了如何编写容错和分布式系统的设计模式,以及如何处理并发编程的编辑。本书除了针对入门级程序员增加了相关内容外,还包括了顺序编程、并发编程和分布式编程的综合介绍。
在本书中,作者首先讨论了Erlang的基础概念和语法,让读者对这门语言有一个基本的了解。接着,通过实例和案例,详细介绍了如何使用Erlang开发分布式应用程序。在这一过程中,作者重点探讨了消息传递、进程间通信和并发控制等关键技术,以及如何利用Erlang的特性来提高程序的可靠性和性能。
本书还特别关注Erlang的并发编程和分布式系统设计。通过讲解Erlang提供的并发模型和工具,如进程和消息传递机制,作者指导读者如何编写高效、可伸缩和可靠的并发程序。此外,本书还介绍了Erlang的OTP(开放电信平台)框架,以及如何使用OTP来组织和管理复杂的分布式系统。
在介绍完Erlang的基础知识和并发编程后,本书进一步讨论了Erlang的文件和网络编程、ETS和DETS等重要主题。通过实际应用案例和示例代码,读者将学习如何在Erlang中处理文件操作、网络通信和数据存储等常见任务。
总体而言,本书提供了一个完整的Erlang编程指南,既适合Erlang初学者进行学习参考,也适合中级水平的Erlang程序员进一步提高技能。通过学习本书,读者将掌握Erlang的核心概念和基本语法,了解Erlang在分布式并发编程方面的优势,并掌握常用的编程技巧和设计模式。无论是在单机环境还是在分布式系统中,读者都可以借助Erlang轻松构建高效、可靠和可扩展的应用程序。
总结以上所述,"Erlang程序设计(第2版)"是一本内容丰富、系统全面的Erlang编程指南,对于想要学习和深入理解Erlang语言的读者来说,是一本非常有价值的参考书籍。无论是对于刚入门的初学者还是有一定经验的中级程序员,本书都能够提供适合各个层次的内容和案例,帮助读者快速上手并掌握Erlang编程。同时,本书还通过许多实例和技巧,教会读者如何编写高效、可靠的分布式应用程序,提升整个系统的性能和可扩展性。总之,本书是一本不可多得的Erlang学习资料,值得每个对Erlang感兴趣的人阅读和学习。
目 录 3
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
18
17
8.18 模式的匹配操作符
...............................
104
8.19 数字
.....................................................
105
8.19.1 整数
........................................
105
8.19.2 浮点数
....................................
105
8.20 操作符优先级
......................................
106
8.21 进程字典
..............................................
106
8.22 引用
.....................................................
108
8.23 短路布尔表达式
..................................
108
8.24 比较数据类型
......................................
108
8.25 元组模块
..............................................
109
8.26 下划线变量
..........................................
109
8.27 练习
.....................................................
110
第 9 章 类型
..................................................
111
9.1 指定数据和函数类型
.............................
111
9.2 Erlang 的类型表示法
.............................
113
9.2.1 类型的语法
................................
113
9.2.2 预定义类型
................................
114
9.2.3 指定函数的输入输出类型
.........
114
9.2.4 导出类型和本地类型
.................
116
9.2.5 不透明类型
................................
116
9.3 dialyzer 教程
..........................................
117
9.3.1 错误使用内置函数的返回值
......
118
9.3.2 内置函数的错误参数
.................
119
9.3.3 错误的程序逻辑
.........................
119
9.3.4 使用dialyzer
..............................
120
9.3.5 干扰dialyzer 的事物
..................
120
9.4 类型推断与成功分型
.............................
121
9.5 类型系统的局限性
................................
123
9.6 练习
.......................................................
125
第 10 章 编译和运行程序
...........................
126
10.1 改变开发环境
......................................
126
10.1.1 设置载入代码的搜索路径
......
126
10.1.2 在系统启动时执行一组命
令
............................................
127
10.2 运行程序的不同方式
...........................
128
10.2.1 在Erlang shell 里编译和运
行
............................................
128
10.2.2 在命令提示符界面里编译和
运行
........................................
129
10.2.3 作为Escript 运行
...................
130
10.2.4 带命令行参数的程序
.............
131
10.3 用makefile 使编译自动化
...................
132
10.4 当坏事发生
..........................................
135
10.4.1 停止Erlang
............................
135
10.4.2 未定义(缺失)的代码
.........
135
10.4.3 shell 没有反应
........................
136
10.4.4 我的makefile 不工作
.............
137
10.4.5 Erlang 崩溃而你想阅读故障
转储文件
................................
137
10.5 获取帮助
..............................................
138
10.6 调节运行环境
......................................
138
10.7 练习
.....................................................
139
第三部分 并发和分布式程序
第 11 章 现实世界中的并发
.......................
142
第 12 章 并发编程
.......................................
145
12.1 基本并发函数
......................................
145
12.2 客户端服务器介绍
............................
147
12.3 进程很轻巧
..........................................
151
12.4 带超时的接收
......................................
153
12.4.1 只带超时的接收
.....................
154
12.4.2 超时值为 0 的接收
.................
154
12.4.3 超时值为无穷大的接收
.........
155
12.4.4 实现一个定时器
.....................
155
12.5 选择性接收
..........................................
156
12.6 注册进程
..............................................
157
12.7 关于尾递归的说明
..............................
158
12.8 用MFA 或 Fun 进行分裂
....................
160
12.9 练习
.....................................................
160
第 13 章 并发程序中的错误
......................
161
13.1 错误处理的理念
..................................
161
13.1.1 让其他进程修复错误
.............
162
13.1.2 任其崩溃
................................
162
13.1.3 为何要崩溃
............................
162
13.2 错误处理的术语含义
...........................
163
13.3 创建连接
..............................................
164
13.4 同步终止的进程组
..............................
164
4 目 录
13.5 设立防火墙
..........................................
165
13.6 监视
.....................................................
166
13.7 基本错误处理函数
..............................
166
13.8 容错式编程
..........................................
167
13.8.1 在进程终止时执行操作
.........
167
13.8.2 让一组进程共同终止
.............
168
13.8.3 生成一个永不终止的进程
.....
169
13.9 练习
.....................................................
170
第 14 章 分布式编程
...................................
171
14.1 两种分布式模型
..................................
171
14.2 编写一个分布式程序
..........................
172
14.3 创建名称服务器
..................................
173
14.3.1 第1 阶段:一个简单的名
称服务器
................................
173
14.3.2 第2 阶段:客户端在一个
节点,服务器在相同主机
的另一个节点
........................
174
14.3.3 第3 阶段:同一局域网内
不同机器上的客户端和服
务器
........................................
175
14.3.4 第4 阶段:跨互联网不同
主机上的客户端和服务器
.....
176
14.4 分布式编程的库和内置函数
...............
177
14.4.1 远程分裂示例
........................
178
14.4.2 文件服务器再探
.....................
180
14.5 cookie 保护系统
..................................
181
14.6 基于套接字的分布式模型
...................
182
14.6.1 用
lib_chan 控制进程
..........
182
14.6.2 服务器代码
............................
183
14.7 练习
.....................................................
185
第四部分 编程库与框架
第 15 章 接口技术
.......................................
188
15.1 Erlang 如何与外部程序通信
...............
188
15.2 用端口建立外部 C 程序接口
...............
190
15.2.1 C 程序
....................................
191
15.2.2 Erlang 程序
............................
193
15.2.3 编译和链接端口程序
.............
195
15.2.4 运行程序
................................
195
15.3 在Erlang 里调用 shell 脚本
................
196
15.4 高级接口技术
......................................
196
15.5 练习
.....................................................
197
第 16 章 文件编程
.......................................
198
16.1 操作文件的模块
..................................
198
16.2 读取文件的几种方法
..........................
199
16.2.1 读取文件里的所有数据类
型
...........................................
199
16.2.2 分次读取文件里的数据类
型
...........................................
200
16.2.3 分次读取文件里的行
.............
202
16.2.4 读取整个文件到二进制型
中
...........................................
202
16.2.5 通过随机访问读取文件
.........
203
16.3 写入文件的各种方式
..........................
205
16.3.1 把数据列表写入文件
.............
206
16.3.2 把各行写入文件
....................
207
16.3.3 一次性写入整个文件
.............
207
16.3.4 写入随机访问文件
................
209
16.4 目录和文件操作
..................................
209
16.4.1 查找文件信息
........................
210
16.4.2 复制和删除文件
....................
211
16.5 其他信息
.............................................
211
16.6 一个查找工具函数
..............................
212
16.7 练习
.....................................................
214
第 17 章 套接字编程
...................................
216
17.1 使用TCP
.............................................
216
17.1.1 从服务器获取数据
................
216
17.1.2 一个简单的 TCP 服务器
........
219
17.1.3 顺序和并行服务器
................
222
17.1.4 注意事项
................................
223
17.2 主动和被动套接字
..............................
224
17.2.1 主动消息接收(非阻塞
式)
.......................................
224
17.2.2 被动消息接收(阻塞式)
.....
225
17.2.3 混合消息接收(部分阻塞
式)
.......................................
225
目 录 5
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
18
17
17.3 套接字错误处理
..................................
226
17.4 UDP
.....................................................
227
17.4.1 最简单的 UDP 服务器与
客户端
....................................
227
17.4.2 一个UDP 阶乘服务器
...........
228
17.4.3 UDP 数据包须知
....................
230
17.5 对多台机器广播
..................................
230
17.6 一个SHOUTcast 服务器
.....................
231
17.6.1 SHOUTcast 协议
....................
232
17.6.2 SHOUTcast 服务器的工作
原理
........................................
232
17.6.3 SHOUTcast 服务器的伪代
码
............................................
233
17.6.4 运行SHOUTcast 服务器
........
234
17.7 练习
.....................................................
235
第 18 章 用 WebSocket 和 Erlang 进
行浏览
............................................
236
18.1 创建一个数字时钟
...............................
237
18.2 基本交互
..............................................
239
18.3 浏览器里的 Erlang shell
......................
240
18.4 创建一个聊天小部件
...........................
241
18.5 简化版IRC
..........................................
244
18.6 浏览器里的图形
..................................
247
18.7 浏览器服务器协议
............................
249
18.7.1 从Erlang 发送消息到浏览
器
............................................
249
18.7.2 从浏览器到 Erlang 的消息
.....
250
18.8 练习
.....................................................
251
第 19 章 用 ETS 和 DETS 存储数据
.......
252
19.1 表的类型
..............................................
252
19.2 影响ETS 表效率的因素
......................
254
19.3 创建一个ETS 表
.................................
255
19.4 ETS 示例程序
......................................
255
19.4.1 三字母组合迭代函数
.............
256
19.4.2 创建一些表
............................
257
19.4.3 创建表所需的时间
.................
258
19.4.4 访问表所需的时间
.................
258
19.4.5 获胜者是……
........................
259
19.5 保存元组到磁盘
..................................
260
19.6 其余操作
..............................................
262
19.7 练习
.....................................................
263
第 20 章 Mnesia:Erlang 数据库
............
264
20.1 创建初始数据库
..................................
264
20.2 数据库查询
..........................................
265
20.2.1 选择表里的所有数据
.............
266
20.2.2 从表里选择数据
.....................
267
20.2.3 从表里有条件选择数据
.........
268
20.2.4 从两个表里选择数据
(联接)
................................
268
20.3 添加和移除数据库里的数据
...............
269
20.3.1 添加行
....................................
269
20.3.2 移除行
....................................
270
20.4 Mnesia 事务
.........................................
270
20.4.1 中止事务
................................
271
20.4.2 载入测试数据
........................
273
20.4.3 do()函数
................................
273
20.5 在表里保存复杂数据
...........................
274
20.6 表的类型和位置
..................................
275
20.6.1 创建表
....................................
276
20.6.2 常用的表属性组合
.................
277
20.6.3 表的行为
................................
278
20.7 表查看器
..............................................
278
20.8 深入挖掘
..............................................
279
20.9 练习
.....................................................
279
第 21 章 性能分析、调试与跟踪
..............
280
21.1 Erlang 代码的性能分析工具
...............
281
21.2 测试代码覆盖
......................................
281
21.3 生成交叉引用
......................................
283
21.4 编译器诊断信息
..................................
283
21.4.1 头部不匹配
............................
284
21.4.2 未绑定变量
............................
284
21.4.3 未结束字符串
........................
284
21.4.4 不安全变量
............................
284
21.4.5 影子变量
................................
285
21.5 运行时诊断
..........................................
286
21.6 调试方法
..............................................
287
6 目 录
21.6.1 io:format 调试
.....................
288
21.6.2 转储至文件
............................
289
21.6.3 使用错误记录器
.....................
289
21.7 Erlang 调试器
......................................
289
21.8 跟踪消息与进程执行
..........................
291
21.9 Erlang 代码的测试框架
.......................
294
21.10 练习
...................................................
295
第 22 章 OTP 介绍
......................................
296
22.1 通用服务器之路
..................................
297
22.1.1 Server 1:基本的服务器
.......
297
22.1.2 Server 2:实现事务的服务
器
...........................................
298
22.1.3 Server 3:实现热代码交换
的服务器
................................
299
22.1.4 Server 4:事务与热代码交
换
...........................................
301
22.1.5 Server 5:更多乐趣
...............
302
22.2 gen_server 入门
................................
304
22.2.1 确定回调模块名
.....................
304
22.2.2 编写接口方法
........................
305
22.2.3 编写回调方法
........................
305
22.3 gen_server 的回调结构
.....................
308
22.3.1 启动服务器
............................
308
22.3.2 调用服务器
............................
308
22.3.3 调用和播发
............................
309
22.3.4 发给服务器的自发性消息
.....
310
22.3.5 后会有期,宝贝
.....................
310
22.3.6 代码更改
................................
311
22.4 填写gen_server 模板
........................
311
22.5 深入探索
..............................................
313
22.6 练习
.....................................................
313
第 23 章 用 OTP 构建系统
........................
315
23.1 通用事件处理
......................................
316
23.2 错误记录器
..........................................
318
23.2.1 记录错误
................................
318
23.2.2 配置错误记录器
....................
319
23.2.3 分析错误
................................
323
23.3 警报管理
..............................................
324
23.4 应用程序服务器
..................................
326
23.4.1 质数服务器
............................
326
23.4.2 面积服务器
............................
327
23.5 监控树
.................................................
328
23.6 启动系统
.............................................
331
23.7 应用程序
.............................................
335
23.8 文件系统组织方式
..............................
336
23.9 应用程序监视器
..................................
337
23.10 怎样计算质数
....................................
338
23.11 深入探索
...........................................
340
23.12 练习
...................................................
341
第五部分 构建应用程序
第 24 章 编程术语
.......................................
344
24.1 保持Erlang 世界观
.............................
344
24.2 多用途服务器
......................................
346
24.3 有状态的模块
......................................
348
24.4 适配器变量
..........................................
349
24.5 表意编程
.............................................
351
24.6 练习
.....................................................
353
第 25 章 第三方程序
...................................
354
25.1 制作可共享代码存档并用 rebar 管理
代码
.....................................................
354
25.1.1 安装rebar
..............................
354
25.1.2 在GitHub 上创建一个新
项目
.......................................
355
25.1.3 在本地克隆这个项目
............
355
25.1.4 制作一个 OTP 应用程序
.......
356
25.1.5 宣传你的项目
........................
356
25.2 整合外部程序与我们的代码
...............
357
25.3 生成依赖项本地副本
..........................
358
25.4 用cowboy 构建嵌入式 Web 服务
器
.........................................................
359
25.5 练习
.....................................................
364
第 26 章 多核 CPU 编程
............................
366
26.1 给Erlang 程序员的好消息
..................
367
目 录 7
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
18
17
26.2 如何在多核 CPU 中使程序高效运
行
.........................................................
367
26.2.1 使用大量进程
........................
368
26.2.2 避免副作用
............................
368
26.2.3 避免顺序瓶颈
........................
369
26.3 让顺序代码并行
..................................
370
26.4 小消息,大计算
..................................
372
26.5 用mapreduce 使计算并行化
...............
376
26.6 练习
.....................................................
380
第 27 章 福尔摩斯的最后一案
..................
381
27.1 找出数据的相似度
...............................
381
27.2 sherlock 演示
.......................................
382
27.2.1 获取并预处理数据
.................
382
27.2.2 寻找最像给定文件的邮件
.....
383
27.2.3 搜索指定作者、日期或标
题的邮件
................................
385
27.3 数据分区的重要性
..............................
386
27.4 给邮件添加关键词
..............................
386
27.4.1 词汇的重要性:TF*IDF
权重
.......................................
387
27.4.2 余弦相似度:两个权重向量
的相似程度
............................
388
27.4.3 相似度查询
............................
389
27.5 实现方式概览
......................................
389
27.6 练习
.....................................................
390
27.7 总结
.....................................................
391
附录 A OTP 模板
.........................................
392
附录 B 一个套接字应用程序
.....................
398
附录 C 一种简单的执行环境
.....................
413
剩余445页未读,继续阅读
点击了解资源详情
点击了解资源详情
养生的控制人
- 粉丝: 23
- 资源: 333
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- gcp-gists
- aontu:统一者
- Python语言学习、人工智能研究等
- HistoryBlock:适用于FireFox Web浏览器的HistoryBlock插件
- 易语言-出生时间转农历生日计算器
- 利用Lab VIEW软件制作的曲线拟合程序.rar
- StructuresandAlgorithms-Code:重温数据结构与算法,代码实践
- Angular和Parse.com中的约束和验证
- react-app28237225523826703
- swift个人项目实战学习
- django-recaptcha:Django reCAPTCHA表单fieldwidget集成应用程序
- 易语言-FileSystemObject 通过对象操作文件目录及文本读写
- python-utils
- LogViewPro日志查看器.zip
- 起始页:起始页
- 使用SignalR创建实时系统通知
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功