- 浏览: 113339 次
最新评论
-
norain2050:
AvinDev 写道@ccppasm2
触发一次后,队列长度依 ...
对Socket的{active, true}参数进行一些测试 -
cypherpunks:
$ javac *.java$ java LinkedList ...
Java 和 Erlang 的列表元素添加测试 -
langzhe:
“这样节点bar@192.168.0.3加载的模块都通过网络, ...
Boot Server 启动 -
mryufeng:
我重新做了测试http://mryufeng.iteye.co ...
一个简单的列表操作性能测试 -
mryufeng:
pg2狂依赖于global模块!
erlang module pg2
文章列表
如何让多台Server上的Erlang进程启动时只加载远程服务器上面的模块,在kernel的文档里面谈到了一下,同事经过试验,初步能启动进程了,这里记录一下
boot server:192.168.0.2
slave server:192.168.0.3
在boot server输入:
引用erl -kernel start_boot_server true boot_server_slaves '[{192,168,0,2}, {192,168,0,3}]' -name foo@192.168.0.2 -setcookie 123456
在slave server输入:
引用erl -n ...
- 2007-07-11 14:01
- 浏览 3681
- 评论(1)
是个Undocument的Flags,记录一下:
erl -name foo@192.168.0.2 -kernel inet_dist_listen_min 8080 -kernel inet_dist_listen_max 8090
这样该节点在epmd中注册和监听的端口就会在8080-8090间,方便在防火墙中设置规则
- 2007-07-05 17:55
- 浏览 2876
- 评论(0)
CEAN1.3出来了,试试那个iconv还能不能用,在Windows下不行 经过邮件咨询,原来目前只能用于Linux x86下,其他平台以后会实现。
尝试一下将GBK编码流转换为UTF8编码,就用最简单的例子,
GBK格式的 “你好”,转换为UTF8后应该在GBK环境下显示 “浣犲ソ”,可以参见 这篇文章
在Windows环境下(GBK),获取 你好 的字节
引用1> io:format("~w~n", [<<"你好">>]).
<<196,227,186,195>>
在Linux下(UTF8), ...
- 2007-07-05 16:44
- 浏览 2178
- 评论(0)
Note:首先要了解,Erlang里面的列表,比如 [1,2,3,4],其实是这样的方式来存储 [1,[2,[3,[4]]]],因此在头部插入一个元素,很简单,但是在尾部插入就比较困难了。
闲来对Erlang中的2个列表操作进行了测试,先上代码:
-module(test_list).
-compile(export_all).
main() ->
test_concat(),
test_flatten(),
test_append_tail(),
test_append_header().
test_concat() ->
...
- 2007-05-24 12:12
- 浏览 3127
- 评论(1)
NOTE:修正了一个Bug,加入了能否求解的数学算法判断,代码更新了
算法学的不好,一直没有写什么算法程序。之前一直想写个A*的,研究了一下,最终还没有写成。昨晚花了点时间,用Erlang写了个解八数码的程序,用的是最简单的A*,程序没有做什么优化,中规中矩,偷懒用模式匹配来处理移动情况。如果想看更加优雅的Erlang算法程序,可以查看我在附件提供的sudoku.erl,里面大量使用了高阶函数:)
注意:
0.八数码还是比较简单的,不像华荣道和推箱子那么BT,大部分情况在我的机上都能1s内解决,因此暂时不优化啦。
1.Open Table 和 Closed Table都是用的list,O(N ...
- 2007-05-21 21:50
- 浏览 2119
- 评论(0)
注:这篇文章可能会有争议,欢迎提出意见
在Erlang中,如果要实现两个远程节点之间的通信,就需要通过网络来实现,对于消息发送,是使用TCP。如果要在两个节点间频繁发送消息,比如每秒几百上千条,那样就要注意了。
无论是网游服务器开发的书籍,或是经验老道的工程师,都会告诉你,在发送数据包时,尽可能把小的消息组合为一个比较大的包来发送,毕竟一个TCP包的头也很大,首先是浪费带宽,其次调用底层发送的指令也是有开销的。有工程师告诉我,一般每秒大概是2W次左右。
简单测试一下,先是代码
一个接收消息并马上抛弃的Server:
start() ->
register(nullserv ...
- 2007-05-01 21:09
- 浏览 5368
- 评论(8)
今天无意中发现这个功能。。。
http://ejabberd.jabber.ru/interconnect-erl-nodes
在下载的 getting_started-5.0.1.pdf 那里也有这个topic:《Advanced Shell Usage - Job Control Mode》,不知道为何官方html格式的文档那里消失了
简单来说是这样,比如节点 foo@192.168.0.2 启动了一个daemon
引用erl -name foo@192.168.0.2 -setcookie 123456 -noshell -noinput ...
如果要管理它,可以这样:
引 ...
- 2007-04-20 14:44
- 浏览 3937
- 评论(1)
在Erlang中,要处理字符串编码的转换,可以使用iconv,目前CEAN的发行版本,ejabberd和iconv模块里面都有iconv的库,但是都无法正常运行(提示版本不兼容),但是在ejabberd的安装包可以使用。经过比较,发现是
erl.exe,erlexec.dll,beam.dll 这三个启动程序的问题,ejabberd的是V5.5.2.2,而CEAN1.2和ErlangOTP R11B4都是V5.5.4,可能两个版本跟iconv的c port不兼容。
下面就以ejabberd的erlang版本来说明:
首先启动port
引用1> iconv:start().
{ok,&l ...
好久之前捣鼓过的东西,怕忘记了,记录一下。
一个简单实现了OTP的Server:echoline,一个Helloworld级别的OTP应用,目录结构如下:
./src/echoline_app.erl
./src/echoline_sup.erl
./src/echoline_server.erl
./src/tcp_server.erl
./ebin/echoline_app.app
./priv/
./include/
./echoline_rel.rel
./Emakefile
这是一个普通的Erlang应用,可以直接使用 erl -make 来编译, Emakefile 内容如下: ...
- 2007-04-09 21:23
- 浏览 2813
- 评论(1)
《轻松实现可伸缩性,容错性,和负载平衡的大规模多人在线系统》一文里面对“Erlang的分布式进程组(Distributed Named Process Groups)”大吹特吹,就是说的pg2这个module。文档那里虽然写了支持分布式节点,但是并没有说如何如何,只提供了一个join(Name, Pid)。
看了一下openpoker的源码,原来很简单,对于连接上的node,用 which_groups() 多调用几次就可以同步过来了:
主节点先创建一个Group:
引用(foo@localhost)1> pg2:create(group).
ok
(foo@localhost)2> ...
- 2007-04-09 19:58
- 浏览 3605
- 评论(3)
Java里面要实现Code Replacement,也就是什么热部署,通常是使用ClassLoader机制。不久前看到了一篇Google的Paper,里面讲解的C++代码热部署更为复杂。
在Erlang里面,实现Code Replacement其实很简单,最方便的方法可以参考 《Erlang Reference Manual》的12.3:
-module(m).
-export([loop/0]).
loop() ->
receive
code_switch ->
m:loop();
Msg -> ...
163的zhousen写了几篇文章,《谈分布式网络程序设计》
http://q.163.com/dirgroup/blog/zhousen.zju/1802920067811231290/#1802920067811231290
http://q.163.com/dirgroup/blog/zhousen.zju/1802920067123113984/#1802920067123113984
http://q.163.com/dirgroup/blog/zhousen.zju/18029200672093930660/#18029200672093930660
简单谈谈感想。
1.网络数据 ...
- 2007-04-01 19:06
- 浏览 3458
- 评论(0)
Erlang的分布式通讯安全策略,可以归结为 All or None。要不拥有全部的权限,要不就完全没有。
它的节点安全设置,是通过一个magic cookie来实现的。这个文件默认放到
$HOME/.erlang.cookie ,文件内容是字符串。
当启用分布通讯的时 ...
http://www.pkblogs.com/montsamu/2007/02/erlang-parallel-map-and-parallel.html
Joe Armstrong 提出了一个pmap实现
pmap(F, L) ->
S = self(),
Pids = map(fun(I) ->
spawn(fun() -> do_f(S, F, I) end)
end, L),
gather(Pids).
gather([H|T]) ->
receive
{H, Ret} ...
- 2007-03-26 20:59
- 浏览 1697
- 评论(0)
gen_tcp:listen(Port, Options),Options 为一个参数列表
之前介绍过 {active, Boolean} 这个 opt,现在介绍一下 {packet, PacketType}
引用{packet, PacketType} (TCP/IP sockets)
Defines the type of packets to use for a socket. The following values are valid:
raw | 0
No packaging is done.
1 | 2 | 4
Packets consist of a header s ...
- 2007-03-26 20:20
- 浏览 3257
- 评论(0)