最近更新文章

Programming Erlang读书笔记3: Sequential Programming

module是Erlang代码的基本单元,我们写的所有function都存储在module里面,module存储在.erl文件里面 module编译成.beam文件后方可运行 在Erlang_HOME建立一个名为.erlang的文件: io:format("consulting .erlang in ~p~n", [element(2, file:get_cwd())]). ...

Programming Erlang读书笔记4: Exceptions

语法: try FuncOrExpressionSequence of Pattern1 [when Guard1] -> Expressions1; Pattern2 [when Guard2] -> Expressions2; ... catch ExceptionType: ExPattern1 [when ExGuard1] -> ExExpressions1; Exce ...

Programming Erlang读书笔记5: Advanced SP

所有的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 ...

Programming Erlang读书笔记6: 编译和运行Erl程序

启动和停止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(). co ...

Programming Erlang读书笔记7: Concurrency

1, Erlang程序由许多进程组成,这些进程可以相互发送消息 2,这些消息可能接收并理解也可能不接收不理解,如果你希望消息被接收并理解,你必须等待应答 3,进程组可以连在一起,如果一组进程中的一个死掉,则该组的其他进程会收到一个说明那个进程为啥死掉的消息

Programming Erlang读书笔记8: Concurrency Programming

在Erlang里: 1,创建和销毁进程非常快 2,进程间发送消息非常快 3,在所有的操作系统间进程行为一致 4,可以有大量的进程 5,进程不共享内存并且完全独立 6,与进程交互的唯一途径是发送消息 Concurrency Primitives Pid = spawn(Fun) Pid!Message receive Pattern1 [when Guard1] -> Expressions ...

Programming Erlang读书笔记9: 并行程序里的错误

使用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 {'EXI ...

Programming Eralng读书笔记10: 分布式编程

分布式程序指设计用于运行在网络中的可以通过消息传递相互交流彼此的活动的计算机上的程序 分布式应用的好处:Performance、Reliability、Scalability、Intrinsically distributed application、Fun、 1, key-value server的简单例子: -module(kvs). -export([start/0, store/2, ...

Erlang基于Socket实现简单聊天室

1,chat_server.erl -module(chat_server). -export([start/1]). -define(TCP_OPTIONS, [list, {packet, 0}, {active, false}, {reuseaddr, true}]). start(Port) -> Pid = spawn(fun() -> manage_clients([]) ...
hideto 评论 (0) 有 5154 人浏览 网络编程章节 2011-06-01

Erlang的分布式编程

1,什么是分布式程序? Erlang分布式程序是设计用来在网络计算机上运行并且只可以通过消息传递来协调活动 2,为啥要写分布式程序? 1) 性能 通过将程序的不同部分分布到不同计算机来并行运行,以此提升性能(适用于密集型、CPU是瓶颈的计算) 2) 可靠性 通过将程序分布来构建容错系统,以此提升可靠性。如果一台机器失败了,我们可以在另一台机器上继续计算 3) 伸缩性 如果我们scale up,迟早 ...
hideto 评论 (0) 有 4996 人浏览 入门介绍章节 2011-06-01

如何写超强伸缩性的多游戏玩家服务器

附标题:如何构建超强伸缩性的游戏服务器而集容错、负载均衡和无限伸缩性于一身 原文:Writing Low-Pain Massively Scalable Multiplayer Servers 介绍 本文以我的OpenPoker项目为例子,讲述了一个构建超强伸缩性的在线多游戏玩家系统。 OpenPoker是一个超强多玩家纸牌服务器,具有容错、负载均衡和无限伸缩性等特性。 源代码位于我的个人站点上 ...
hideto 评论 (2) 有 11491 人浏览 外文经典章节 2011-06-01

Joe Armstrong:关于并行编程和Erlang的十个问题

原文:Ten Questions with Joe Armstrong about Parallel Programming and Erlang 第一部分:关于并行编程的通用问题 1) Michael:我们进入了多核时代,你认为并行计算最终会成为主流吗?或者这仅仅是一个阶段并且很快对并行编程感兴趣的人将(又一次)变成高性能社区的一员? Joe:是的,绝对主流——我们讨论的是双核时性能提高两倍而 ...
hideto 评论 (0) 有 3110 人浏览 外文经典章节 2011-06-01

gen_server入门

gen_server入门 1)什么是gen_server? gen_server是OTP(Open Telecom Platform)的一个组件,OTP是Erlang的应用程序框架,gen_server定义了自己的一套规范,用来写Erlang服务器程序 gen_server manual: http://www.erlang.org/doc/man/gen_server.html 2)使用gen ...
hideto 评论 (3) 有 11494 人浏览 OTP系列章节 2011-06-01

OTP Design Principles Overview

1,Supervision Trees 来源于workers和supervisor模型 workers就是实际执行计算的进程 supervisors是监控workers的进程,如果workers进程崩溃,supervisors可以负责重启workers进程 supervision tree将代码分层为supervisors和workers,方便构建容错系统 2,Behaviours Behavio ...
hideto 评论 (0) 有 1398 人浏览 OTP系列章节 2011-06-01

OTP Design Principles: Gen_Server Behaviour

OTP Design Principles: Gen_Server Behaviour 1,Client-Server原则 client-server模型由一个中心服务器和任意多的客户端组成 该模型主要用来做资源管理操作,不同的客户端共享一个通用的资源,服务器负责管理该资源 2,例子 -module(ch3). -behaviour(gen_server). -export([start_li ...
hideto 评论 (1) 有 2043 人浏览 OTP系列章节 2011-06-01

知识库信息

最新评论

相当不错的erlang,我们通信后台自从改成elrang后基本没出过什么大问题
406656983 评论了 进入Erlang的世界
听说几百万进程都不高cpu的
xlaohe1 评论了 进入Erlang的世界
有没有自己的例子公布一个
wrj913 评论了 gen_server入门
我是erlang 菜鸟,弱弱的问一下,erlang帮助文档,那有怎么用,连 Mod名、Func名,是什 ...
wrj913 评论了 Programming Erlang读书笔记8: Concurrency ...
winstars 写道这篇文章排版不错哈哈。。楼主一定是经常写文档的
suu 评论了 进入Erlang的世界
在学精JAVA语言之前,我是不会学其它语言的,无论它有多好、多美。
lshhjxlj 评论了 进入Erlang的世界
坚持学,会有成果的,正在感受erlang带来的快乐和便利
acme_ltt 评论了 进入Erlang的世界
学过一段时间,没有认真静下心来学,就没再坚持看
mj-beijing 评论了 进入Erlang的世界
这篇文章排版不错
winstars 评论了 进入Erlang的世界
Erlang目前还没打算学习,不过长见识了;多谢楼主分享
blues1021 评论了 进入Erlang的世界
在本文中,self表示的是实际执行中创建的那个进程,也就是 start(Mod,Env) -> ...
fsword 评论了 Erlang新手进阶笔记(3) - 通用的server
最后一句,在erlang中所有的self()我见过的都是表示进程的……
松秋明 评论了 Erlang新手进阶笔记(3) - 通用的server
self()实际表示如下% 实际执行体 % loop(Mod, State) -> rece ...
松秋明 评论了 Erlang新手进阶笔记(3) - 通用的server
% 初始化服务,注册名称,启动init方法,初始化服务时接受一个参数 % init(Mod, Env) ...
松秋明 评论了 Erlang新手进阶笔记(3) - 通用的server
应该不错吧,我正在学习Erlang哦。
kangdiji 评论了 进入Erlang的世界
更好的解决方案是指设置{packet,size}?
erlangguy 评论了 Erlang网络编程-Binary
不明白为什么第一个例子handler(Socket)中close(Socket)后还调用了handle ...
erlangguy 评论了 Erlang中的half-sync/half-async和Leader/F ...
解释得不错。
erlangguy 评论了 OTP Design Principles: Supervisor Behavi ...
再说明一下和init里{ok,State}的关系,容易理解一些。
erlangguy 评论了 OTP Design Principles: Gen_Event Behavio ...
event manager本质上是维护一个{Module, State}对的list,每个Module ...
erlangguy 评论了 OTP Design Principles: Gen_Event Behavio ...
Global site tag (gtag.js) - Google Analytics