- 浏览: 20047 次
- 性别:
- 来自: 北京
-
最新评论
文章列表
一个Socket是一个允许机器与Internet上另一端使用IP通信的端点
gen_tcp 用于TCP编程、 gen_udp 用于UDP编程。
TCP:
例子:从服务器获取数据
nano_get_url() ->
nano_get_url("www.google.com").
nano_get_url(Host) ->
{ok,Socket} = gen_tcp:connect(Host,80,[binary, {packet, 0}]), %% (1)
ok = gen_tcp:send(Socket, "G ...
虚拟化是一个广义的术语,在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行 ...
erlang中操作文件的模块有:
file模块:包含用于文件的打开,关闭,读取,写入和目录列表等功能的函数
filename模块:提供了一套操作文件名的函数
filelib模块:file模块的扩展,提供了一套辅助函数用于生成文件列表,检查文件类型等操作
io模块:提供了一系列对已打开文件进行操作的函数
文件操作:
1.读取文件
1)从文件中读取所有erlang数据项:
data1.dat
//data1.dat的文本内容
{person, "joe", "armstrong",
[{occupation, programmer},
{f ...
汇编语言程序设计的一般概念
- 博客分类:
- 汇编
冯、诺依曼体系的计算机:采用二进制代码表示数据和指令,采用存储程序工作方式。
计算机最终执行的程序:包含指令序列和数据。
指令:指示计算机完成某种基本操作的命令。
机器语言:计算机硬件能够直接识别的语言, ...
如果想把erlang和一个C的程序对接起来,那么就需要用到接口技术。
我们需要在一个独立的操作系统进程里运行一个与erlang运行时系统相互独立的外部程序。Erlang 的运行时系统通过二进制的通信通道与这个外部程序交互。在erlang端有一个erlang端口负责管理这样的通信,我们把创建这种端口的进程称为端口连接进程。
Port=open_port(PortName,PortSettings) //返回一个端口
如下消息是会被发送到端口(这些消息中PidC是连接进程的PID):
Port ! {PidC,{command,Data}} :发送数据到端口
Port ! {PidC,{con ...
IRC协议:因特网在线聊天协议(IRC)可以分散的运行多台机器,从而实现internet的远程会议。IRC协议利用基本的TCP/IP网络协议系统开发。但是它并没有要求TCP/IP是唯一的运行环境。IRC是一种文本协议,它仅要求用户有一个简单端口程 ...
分布式erlang的核心概念是节点,包含了地址空间和独立进程集的完整虚拟机。
访问单个节点或节点集都受到cookie保护,每个节点都有自己的cookie,而且必须保证所有要和这个节点通信的其他节点有相同的cookie,为此,在一个分布式系统中,所有的节点必须用相同的magic cookie来启动。具有相同cookie而且彼此互相连接的节点集称为erlang集群。
三种方法来设置cookie:
1.把相同的cookie存放在$HOME/.erlang.cookie文件中。
2.在启动erlang时,带上命令行参数-setcookie C把cookie设置为C。
3.使用erlang:set_co ...
erlang进程之间没有共享内存,每一个进程都有它自己的内存,想要修改其他进程的内存,你只能向它发送一条消息。
erlang的进程不共享内存,没有锁的概念。
erlang的错误侦测机制:进程之间可以相互链接。如果一个进程消亡,那么跟这个进程有链接的进程会得到一条消息,被告诉进程已经消亡,及其原因。
erlang进程的三个原语:spawn,send,receive.
Pid = spawn(Fun):创建一个新的并发进程。对于Fun求值,返回一个Pid,可以使用Pid向进程发送消息。
Pid!Message:想标识符为Pid的进程发送消息,消息发送是异步的。!是发送消息符。它的返回值是它 ...
case/if语法:
case表达式语法:
case Expression of
Pattern1 [when Guard1] ->Expr_seq1;
Pattern2 [when Guard2] ->Expr_seq2;
…
end.
if表达式语法:
if
Guard1 -> Expr_seq1;
Guard2 -> Expr_seq2;
…
end
创建一个列表最有效的方法就是把元素加在一个现有列表的头部。
发转一个列表:lists:reverse(L).
例子:将一个整数列表分解为偶数列表和基数列表
方法一:采 ...
模块(module):
module是erlang中代码的基本单元,所有函数都位于模块之中,模块文件一般存放在.erl文件中。
要运行一个模块,首先要先编译它,编译成功之后会生成一个.beam的文件。
模块名与文件名一致
-module(test2).
-export([area/1]).
area({rectangle,Width,Ht}) ->
Width*Ht;
area({circle,R}) ->
3.14*R*R.
调用:
c(test2). //编译文件
test2:area({circle,5}). //调用test2模块的area函数。
...