摘要: 第十六章 OTP概述Table of Contents第十六章 OTP概述16.1 通用服务器程序的进化路线16.1.1 server1: 原始服务器程序16.1.2 server2: 支持事务的服务器程序16.1.3 server3: 支持热代码替换的服务器程序16.1.4 server4: 同时支持事务和热代码替换16.1.5 server5: 压轴好戏16.2 gen_server起步16.2.1 第一步: 确定回调模块的名称16.2.2 第二步: 写接口函数16.2.3 第三步: 编写回调函数16.3 gen_server回调的结构16.3.1 启动服务器程序时发生了什么16.3.2 阅读全文
posted @ 2014-01-06 14:26 Cloud&Matrix 阅读(391) 评论(0) 推荐(0) 编辑
摘要: 第十五章 ETS和DETS:大数据的存储机制Table of Contents第十五章 ETS和DETS:大数据的存储机制15.1 表的基本操作创建和打开表插入表查找元组释放表15.2 表的类型set表ordered set表bag表duplicate bag表代码示例15.3 ETS表的效率考虑15.4 创建ETS表15.5 ETS程序示例15.5.1 三字索引迭代器15.5.2 构造表15.5.3 构造表有多快15.5.4 访问表有多快15.5.5 胜出的是…15.6 DETS15.7 我们没有提及的部分第十五章 ETS和DETS:大数据的存储机制ETS和DETS都提供"键-值& 阅读全文
posted @ 2014-01-06 14:25 Cloud&Matrix 阅读(1676) 评论(0) 推荐(0) 编辑
摘要: 第十四章 套接字编程Table of Contents第十四章 套接字编程14.1 使用TCP14.1.1 从服务器上获取数据14.1.2 一个简单的TCP服务器14.1.3 改进服务器14.2 控制逻辑14.2.1 主动型消息接收(非阻塞)14.2.2 被动型消息接收(阻塞)14.2.3 混合型模式(半阻塞)14.3 连接从何而来14.4 套接字的出错处理14.5 UDP14.5.1 最简单的UDP服务器和客户机14.5.2 一个计算阶乘的UDP服务器14.5.3 关于UDP协议的其他注意事项14.6 向多台机器广播消息第十四章 套接字编程14.1 使用TCP14.1.1 从服务器上获取数据 阅读全文
posted @ 2014-01-06 14:25 Cloud&Matrix 阅读(645) 评论(0) 推荐(0) 编辑
摘要: 第十二章 接口技术Table of Contents第十二章 接口技术12.1 端口创建端口发送数据改变连接进程的PID关闭端口为一个外部C程序添加接口12.2.1 C程序12.2.2 Erlang程序12.3 open_portPortNameOpt12.4 内联驱动12.5 注意第十二章 接口技术Erlang运行第三方代码时需要一个与Erlang运行时系统相互独立的外部程序, 两者通过二进制通道进行通信。在Erlang中是通过端口连接进程来作为中间人管理两者之间的通信。12.1 端口创建端口Port = open_port(PortName, PortSettings)发送数据Port ! 阅读全文
posted @ 2014-01-06 14:24 Cloud&Matrix 阅读(479) 评论(0) 推荐(0) 编辑
摘要: 第十三章 对文件编程Table of Contents第十三章 对文件编程13.1 库的组织结构file模块filename模块filelib模块io模块13.2 读取文件的不同方法13.2.1 从文件中读取所有Erlang数据项13.2.2 从文件的数据项中一次读取一项13.2.3 从文件中一次读取一行数据13.2.4 将整个文件的内容读入到一个二进制数据中13.2.5 随机读取一个文件13.2.6 读取ID3标记13.3 写入文件的不同方法13.3.1 向一个文件中写入一串Erlang数据项13.3.2 向文件中写入一行13.3.3 一步操作写入整个文件13.3.4 在随机访问模式下写入文 阅读全文
posted @ 2014-01-06 14:24 Cloud&Matrix 阅读(790) 评论(0) 推荐(0) 编辑
摘要: 附录D 套接字应用程序Table of Contents套接字应用程序D.1 例子D.1.1 第一步:写一个配置文件D.1.2 第二步:编写服务器代码D.1.3 第三步:启动服务器D.1.4 第四步:通过网络访问服务器D.2 lib_chan如何工作D.2.1 启动服务器D.2.2 连接服务器D.2.3 调用服务D.2.4 关闭服务附录D 套接字应用程序D.1 例子首先通过一个例子来学习如何使用lib_chan。D.1.1 第一步:写一个配置文件# 指定端口号{port, 2233}.# 指定服务名、密码、模块名、函数名、参数 {service, math, password, "q 阅读全文
posted @ 2013-08-19 15:50 Cloud&Matrix 阅读(551) 评论(0) 推荐(0) 编辑
摘要: 第十章 分布式编程Table of Contents第十章 分布式编程10.1 名字服务10.1.1 第一步: 一个简单的名字服务10.1.2 第二步: 在同一台机器上, 客户端运行于一个节点而服务器运行于第二个节点10.1.3 第三步: 让客户机和服务器运行于同一个局域网内的不同机器上10.1.4 第四步: 在因特网上的不同主机上分别运行客户机和服务器10.2 分布式原语spawn(Node, Fun)spawn(Node, Mod, Func, ArgList)spawn_link(Node, Fun)spawn_link(Node, Mod, Func, ArgList)disconne 阅读全文
posted @ 2013-06-07 14:46 Cloud&Matrix 阅读(551) 评论(0) 推荐(0) 编辑
摘要: 第九章 并发编程中的错误处理Table of Contents第九章 并发编程中的错误处理9.1 链接进程9.2 on_exit处理程序9.3 远程错误处理9.4 错误处理的细节9.4.1 捕获退出的编程模式9.4.2 捕获退出信号(进阶篇)9.5 错误处理原语spawn_linkprocess_flaglinkunlinkexitmonitor9.6 链接进程集9.7 监视器9.8 存活进程第九章 并发编程中的错误处理Erlang并发编程错误处理设计的三个方面:*链接、退出信号、系统进程*。 9.1 链接进程Erlang中两个进程存在依赖关系, 则可通过*link(Pid)*的方式为其建立关 阅读全文
posted @ 2013-06-06 15:53 Cloud&Matrix 阅读(480) 评论(0) 推荐(0) 编辑
摘要: 第八章 并发编程Table of Contents第八章 并发编程8.1 并发原语创建进程向进程发送消息接收消息8.2 一个简单的例子8.3 客户/服务器介绍第一步第二步第三步8.4 创建一个进程需要花费多少时间8.5 带超时的receive8.5.1 只有超时的receive8.5.2 超时时间为0的receive8.5.3 使用一个无限等待超时进行接收8.5.4 实现一个计时器8.6 选择性接收8.7 注册进程注册进程取消注册判断是否已注册查看注册列表8.8 如何编写一个并发程序8.9 尾递归技术8.10 使用MFA启动进程8.11 习题测试注册函数测试发送消息第八章 并发编程Erlang 阅读全文
posted @ 2013-05-31 16:10 Cloud&Matrix 阅读(1052) 评论(0) 推荐(2) 编辑
摘要: 第七章 并发Table of Contents并发第七章 并发这里作者再次强调了其对并发编程的理解, 即并发是一种本能, 而不是像共享内存的并发编程方式那样, 为了防止同时修改, 需要加锁, 而这种机制的复杂程度及带来的一系列的问题, 都使得并发编程成为了一种看似高级的技能, 而并不是像作者所理解的那样:即使你不会开车, 看到车向你驶来, 你也会躲避, 这是人的一种本能反应。而Erlang基于消息的并发编程方式, 恰恰让通过Erlang编写并发程序成为一种与生俱来的能力而不是什么高级技巧。就好像作者在这里所举的记电话号码的例子, 它来源于真实生活场景, 或者说是在真实世界中的行为方式, 因为基 阅读全文
posted @ 2013-05-30 11:02 Cloud&Matrix 阅读(254) 评论(0) 推荐(0) 编辑