先要这样
apt-get install build-essential
apt-get install libncurses5-dev
apt-get install m4
apt-get install libssl-dev
然后要用新立得装如下库:
libc6
unixodbc
gcj
然后下载源代码
tar -xvf otp-src-R12B-0.tar.gz
cd otp-src-R12B-0
sudo ./configure --prefix=/otp/erlang
sudo make
sudo make install
安装完毕,可以rm -f ...
分布式程序指设计用于运行在网络中的可以通过消息传递相互交流彼此的活动的计算机上的程序
分布式应用的好处:Performance、Reliability、Scalability、Intrinsically distributed application、Fun、
1, key-value server的简单例子:
-module(kvs).
-export([start/0, store/2, lookup/1]).
start() -> register(kvs, spawn(fun() -> loop() end)).
store(Key, Value) -> rpc( ...
使用BIF link将两个节点连接起来,如果其中一个节点B退出,则另一个节点A会收到{'EXIT', B, Why}的信号
可以创建一个on_exit(Pid, Fun)方法来捕获某个Pid进程的死掉:
on_exit(Pid, Fun) ->
spawn(fun() ->
process_flag(trap_exit, true),
link(Pid),
receive
{'EXIT', Pid, Why} ->
Fun(Why)
end
end).
Erlang可以远 ...
在Erlang里:
1,创建和销毁进程非常快
2,进程间发送消息非常快
3,在所有的操作系统间进程行为一致
4,可以有大量的进程
5,进程不共享内存并且完全独立
6,与进程交互的唯一途径是发送消息
Concurrency Primitives
Pid = spawn(Fun)
Pid!Message
receive
Pattern1 [when Guard1] ->
Expressions1;
Pattern2 [when Guard2] ->
Expressions2;
...
after Time ->
Express ...
1, Erlang程序由许多进程组成,这些进程可以相互发送消息
2,这些消息可能接收并理解也可能不接收不理解,如果你希望消息被接收并理解,你必须等待应答
3,进程组可以连在一起,如果一组进程中的一个死掉,则该组的其他进程会收到一个说明那个进程为啥死掉的消息
启动和停止Eshell
$ erl
1> halt().
查看/添加代码查找路径
code:get_path().
code:add_patha(Dir).
code:add_pathz(Dir).
erl -pa Dir1 -pa Dir2 ... -pz DirK1 -pz DirK2
查看载入的module和查看出错的module
code:all_loaded().
code:clash().
可以将code:add_patha()和code:add_pathz()扔到.erlang文件
运行Erl程序的几种方式:
hello.erl
...
所有的BIFs都属于erlang module,如erlang:tuple_to_list()、erlang:time(),但是大部分BIFs都auto-imported了,所以可以直接调用tuple_to_list()、time()
erlang module的所有BIFs列表见:http://www.erlang.org/doc/man/erlang.html
Binary是用来存储大量raw data的数据结构
1> <<5, 10, 20>>.
<<5,10,20>>
操作Binary的BIFs:
@spec list_to_binary(lo ...
语法:
try FuncOrExpressionSequence of
Pattern1 [when Guard1] -> Expressions1;
Pattern2 [when Guard2] -> Expressions2;
...
catch
ExceptionType: ExPattern1 [when ExGuard1] -> ExExpressions1;
ExceptionType: ExPattern2 [when ExGuard2] -> ExExpressions2;
...
after
AfterExpressions
...
module是Erlang代码的基本单元,我们写的所有function都存储在module里面,module存储在.erl文件里面
module编译成.beam文件后方可运行
在Erlang_HOME建立一个名为.erlang的文件:
io:format("consulting .erlang in ~p~n", [element(2, file:get_cwd())]).
%% Edit to the directory where you store your code
c:cd("C:/Program Files/erl5.6/work").
io:format("Now i ...
去http://www.erlang.org/download.html下载Windows版本的Erlang,将bin目录加入到系统path中
cmd进去输入erl回车,就进入Eshell了,输入q().或者Ctrl+C/Break可以退出Eshell(命令末尾加.然后回车才会执行函数)
在Eshell里输入help().可以看到命令列表(实际上是函数列表)
基于Debian的Linux系统下可以用命令apt-get install erlang来安装Erlang,Mac OSX下可以使用MacPorts来安装
从源代码构建:
$ tar -xzf otp_src_R11B-4.ta ...
公司产品终于上线了,一切告一段落,可以有大把时间看书写字了。
新年最令人激动事:可以开始系统的学习Erlang了!
Erlang的书籍和教材还很少,《Programming Erlang》是Erlang的发明者Joe Armstrong自己写的学习Erlang的书,可谓经典
为什么要学习Erlang?现在还不知道,学完了才知道Erlang值不值得学。
搞程序的需要宗教信仰啊。
Five reasons why you should learn Erlang:
1, You want to write programs that run faster when you run them on ...
- 浏览: 612373 次
- 性别:

- 来自: BJ

- 详细资料
搜索本博客
我的相册
screenshot
共 1 张
共 1 张
最近加入圈子
最新评论
-
深入了解Java ClassLoader ...
当我对字节码编译不知所措的时候,发现了这个帖子 谢谢楼主,目前正在学习ASM C ...
-- by ytzhsh -
Rails里如何结合Exceptio ...
收藏了,小工具,好东西.
-- by yangzhihuan -
使用coderay和railscasts ...
不错,很爽,如果能显示成textmate那样的就好了。
-- by carlosbdw -
Axis2快速上手指南
看得很累,希望楼主写个HelloWorld.谢谢
-- by zznj1123 -
使用coderay和railscasts ...
javaeye自己用的是什么highlight什么的吗?
-- by qichunren






评论排行榜