摘要:
14.1 使用TCP 14.1.1 从服务器上获取数据 -module(socket_examples). -export([nano_get_url/0]). -import(lists, [reverse/1]). nano_get_url() -> nano_get_url("www.goog 阅读全文
摘要:
13.1 库的组织结构 四个操作文件的模块 file模块 包含了用于文件打开、关闭、读取、写入和目录列表等功能的函数。 filename模块 以平台独立的方式提供了一套操作文件名的函数。 filelib模块 是file模块的扩展, 提供了一套辅助函数用于生成文件列表、检验文件类型等操作。 io模块 阅读全文
摘要:
Erlang运行第三方代码时需要一个与Erlang运行时系统相互独立的外部程序, 两者通过二进制通道进行通信。在Erlang中是通过端口连接进程来作为中间人管理两者之间的通信。 12.1 端口 创建端口 Port = open_port(PortName, PortSettings) 发送数据 Po 阅读全文
摘要:
D.1 例子 首先通过一个例子来学习如何使用lib_chan。 D.1.1 第一步:写一个配置文件 # 指定端口号 {port, 2233}. # 指定服务名、密码、模块名、函数名、参数 {service, math, password, "qwerty", mfa, mod_math, run, 阅读全文
摘要:
编写分布式应用程序的需求: 效率性: 可以通过将程序分成多个部分并行运行在多个机器上的方式来提高效率。 可靠性: 可以通过将程序分布在多个机器上以避免单点提高系统的容错性。 伸缩性: 可以通过动态的增加机器以提升整个系统的处理能力。 业务性: 像网络游戏、聊天软件等系统其业务本身就需要分布式的支持。 阅读全文
摘要:
Erlang并发编程错误处理设计的三个方面:*链接、退出信号、系统进程*。 9.1 链接进程 Erlang中两个进程存在依赖关系, 则可通过*link(Pid)*的方式为其建立关联。 如果一个进程接收到退出信号, 则其默认处理也将退出, 如果在这个进程中捕获退出信号以进行其它相关操作, 则其为系统进 阅读全文
摘要:
Erlang中的进程并非属于操作系统, 它是属于程序语言本身的。 Erlang中的进程的特点: 创建和销毁进程非常迅速 在两个进程间收发消息非常迅速 进程在所有操作系统上行为相同 可以创建大量进程 进程之间不共享任何数据, 彼此间完全独立 进程间交互的唯一方式是消息传递 8.1 并发原语 创建进程 阅读全文
摘要:
这里作者再次强调了其对并发编程的理解, 即并发是一种本能, 而不是像共享内存的并发编程方式那样, 为了防止同时修改, 需要加锁, 而这种机制的复杂程度及带来的一系列的问题, 都使得并发编程成为了一种看似高级的技能, 而并不是像作者所理解的那样:即使你不会开车, 看到车向你驶来, 你也会躲避, 这是人 阅读全文
摘要:
6.1 开启和停止Erlang shell 使用erl命令开启Erlang shell, 在shell中调用*erlang:halt()来停止系统运行, 调用init:stop()的别名q()*来退出shell。 6.2 配置开发环境 在大型项目中, 代码分散在各个目录下, 需要进行相关设置使得Er 阅读全文
摘要:
5.1 BIF BIF:Erlang的内建函数, 默认已经导入, 可以直接使用。 相关文档参见: http://erlang.org/doc/man/erlang.html 5.2 二进制数据 书写和打印时二进制数据以整数或字符序列包在”和’ ‘之间的形式出现。 相比于元组和列表, 二进制更节省内存 阅读全文