- 浏览: 337677 次
- 性别:
- 来自: 北京
最新评论
-
perfect_control:
真的很详细,一些东西很容易被我忽略掉了
使用fprof进行性能分析 -
leeyisoft:
http://www.erlangqa.com/ 怎么变成 “ ...
Erlang问答网站,欢迎各位提出问题,解答问题。 -
simsunny22:
4年之后我才看到 慢慢的干货
Erlang服务器内存耗尽bug跟踪过程 -
爱死我:
...
使用etop查看系统中进程信息 -
宋兵甲:
在跑这个服务的时候,每秒建立一个客户端连接,连续建立10000 ...
自己写一个tcp 通用服务器
文章列表
Module的Attribute形式如下:
-Attr(Value).
其中Attr为atom,Value可以为任何直接的term。
Attribute包含预定义的Attributes以及用户自定义的Attributes。
预定义模块Attribute(Pre-Defined Module Attributes):
-module(Module)
名为Module的模块声明,Module为atom,Module必须与此文件文件名相同(除去.erl后缀名,比如module1.erl,则Module为module1)
-export(Functions)
说明本模块导出的函数列表,Fu ...
- 2009-01-13 10:13
- 浏览 2265
- 评论(0)
joe老大关于rpc之争的文章
原文:http://armstrongonsoftware.blogspot.com.nyud.net/2008/05/road-we-didnt-go-down.html
通过我的哪吒机器人,我收到joe老大blog更新的消息,以为joe老大的blogspot不会更新,甚是惊喜.
因为"功夫网"的原因,我们无法访问b ...
- 2009-01-13 10:07
- 浏览 3620
- 评论(0)
OTP中,事件管理器(event manager)用来接收事件,这里的事件非常广泛,可以为错误,警告各种各样erlang允许的信息。
事件管理器拥有零个或多个事件处理器(event handler)。当事件管理器收到一个事件时,此事件会被管理器内部安装的所有处理器处理。
其实在事件管理器(gen_event behaviour)中,拥有一个[{Module, State}],其保存安装的处理器(Module模块)及对应的状态。当收到事件时,管理器遍历调用Module的
Module:handle_event/2函数进行处理。
callbacks接口
1. init(InitArg)
处理器安装 ...
- 2009-01-13 10:03
- 浏览 6544
- 评论(1)
gen_server behaviour
gen_server为最常用的一个behaviour,其定义了client/server模型的基本框架。
我们只需要定义一个“回调”(callback)module,实现必要的export fun。
1.genserver:start_link/4
启动gen_server调用start_link/4,比如:gen_server:start_link({local, myserver}, myserver, arg, [])表示我们在本地节点注册一个名叫myserver的process,这个参数也可以忽略,那样就不会为process注册名称,而一切交 ...
- 2009-01-13 10:02
- 浏览 6348
- 评论(1)
很多时候你需要测量某个函数的执行时间,从而进行优化。
在erlang中,通过timer:tc/3可以很方便的获取某个函数的执行时间:
tc(Module, Function, Arguments) -> {Time, Value}
Types Module = Function = atom()
Arguments = [term()]
Time = integer() in microseconds
Value = term()
返回值中Time表示函数消耗时间,单位为ms。
有些时候,我们需要某个函数的执行多次,从而更准确的获取函数的执行时间,我们可以书写这样 ...
- 2009-01-13 09:59
- 浏览 6146
- 评论(0)
Fun定义
fun
(Pattern1, ..., PatternN) [when GuardSeq1] ->
Body1;
....
(PatternK1, ..., PatternKN) [when GuardSeqK] ->
BodyK
end
也可以依据已经定义的函数定义声明fun
fun Name/Arity
fun Module:Name/Arity
对于第一种形式没有指定Module,其会隐式的判断对应的Module,可能是import的Module,也可能是当前Module。(注意:推 ...
- 2009-01-13 09:52
- 浏览 1859
- 评论(0)
为什么要使用behaviour,如果您对erlang有所了解的话,就明白其中的好处。
可以做到代码通用,可以减少错误,可以使用很多成熟的久经考验的模式,可以减轻无谓的重复劳动等等。。
有些时候,你可能需要定义自己的behaviour,这可不仅仅是OTP的权力。
自己定义behaviour非常简单,仅仅需要几步。
下面是一个例子:
-module(my_behaviour).
-export([behaviour_info/1]).
behaviour_info(callbacks) ->
[{init,1},
{handle, 2}];
behavio ...
- 2009-01-13 09:42
- 浏览 5645
- 评论(3)