erlang
43452445到
程序员一枚
展开
-
erlang list模块函数
一,带函数Pred1, all(Pred, List) -> boolean()如果List中的每个元素作为Pred函数的参数执行,结果都返回true,那么all函数返回true,否则返回false例子:lists:all(fun(E) -> true end,[1,2,3,4]).结果true2, any(Pred, List) -> bo转载 2015-01-07 12:11:54 · 945 阅读 · 0 评论 -
mnesia的锁机制
一、基本概念1、mnesia的锁不是操作系统级别的锁;2、一个mnesia结点中,所有的锁由单独的mnesia_locker进程进行管理;3、其它进程对锁的申请和释放通过发送消息到mnesia_locker进程实现;4、A进程请求锁时,发送的同步消息如果当时获取到了锁,则返回获取到的锁消息;如果没有,则将锁请求加入等待队列,A进程阻塞等待返回;5、B进程进行释放锁时,发送同步消原创 2016-04-06 00:49:08 · 865 阅读 · 0 评论 -
ejabberd源码分析《三》客户端数据处理
参考 http://www.cnblogs.com/yjl49/archive/2011/09/02/2371964.html1.客户端连接服务器后,发送消息给服务器的xml数据处理在ejabberd_c2s中。 ejabberd_c2s 是一个gen_fsm 状态机,在socket连接建立之后创建。 初始状态为 wait_for_stream,接受形为 {xm转载 2016-04-05 19:32:09 · 1344 阅读 · 0 评论 -
ejabberd源码分析《二》客户端网络监听
在配置文件ejabberd.cfg的listen配置项里,可以配置监听模块由ejabberd_listener.erl负责启动监听1、客户端的连接生成一个套接字以后,由ejabberd_c2s.erl调用ejabberd_frontend_socket:startejabberd_receiver:start 生成一个gen_server处理套接字数据在ejab原创 2016-04-05 17:30:12 · 1106 阅读 · 0 评论 -
ejabberd源码分析《一》application启动
什么都别说,直接看启动函数start(normal, _Args) %% ejabberd_logger主要是读取application的配置文件,然后启动lager,设置lager参数。 ejabberd_logger:start(), %% 将本进程的pid写入配置文件指定的文件名中 write_pid_file(), %% 新建jid ets jid:start(), %% 启动其它app原创 2016-04-03 01:42:04 · 1537 阅读 · 0 评论 -
erlang源码分析
一、寄存器The BEAM Virtual Machine uses the following registers: HTOP - top-of-heap pointer E - top-of-stack pointer CP - return-address pointer (where to go when a function is ready原创 2015-12-04 10:45:25 · 2115 阅读 · 0 评论 -
erlang的类型系统一
“Erlang是动态类型的语言,因而不能进行静态分析,所生成的文档也不包含有助于理解的类型信息”——这是惯常的看法,广为流行,而且被看作是Erlang 在开发大型系统时的一个短板(大型系统意味着更强烈的静态分析需求和更严重的依赖文档进行沟通)。然而 Erlang 是一个有着 20多年历史的成熟系统,它早已发展出了一套自己的类型标注系统,不仅用来生成文档,更重要的是可以据此对源码进行静态分析转载 2015-10-22 22:26:46 · 943 阅读 · 0 评论 -
erlang解析socket包头
1. 对于测试用例的介绍:Erlang编写TCP服务器。只做一次Accept,接收到Socket之后开始收数据。用python编写Client,连接到服务器上;发送LEN(int)+CMD(short)+BODY(binary)格式的数据包。用于熟悉Erlang如何做拆解包,数据读取。2. 编写简单的Erlang TCP服务器:Erlang里面的TCP socket应该都是这个方式来编转载 2015-10-22 09:43:47 · 1231 阅读 · 0 评论 -
erlang Emakefile
Erlang有个类似Makefile的文件Emakefile负责编译erl程序,格式是Erlang代码{Modules, Options}.其中Modules是一个atom,或者是一个atom的列表。这些atom可以是一个模块名,如file1;可以是别的目录中的模块名,如../foo/file3;也可以是通过通配符匹配的一系列模块名,如file*;转载 2015-10-18 22:08:52 · 1673 阅读 · 0 评论 -
erlang gen_server热更新
服务源代码:-module(gen_server_1). |-behavior(gen_server)... (up a dir) |-export([start/0])./home/wxserver/erlang/ |-export([init/1, handle_call/3原创 2015-08-08 16:06:21 · 963 阅读 · 0 评论 -
erlang四大behaviour之四-supervisor
erlang四大behaviour之四-supervisor(转载)1. 监督规则一个监督者负责启动、停止、监控他的子进程。监督者的一个基本概念就是当必要的时候重启子进程保证它们的存活哪个子进程要重启和被监控是由一个子规程列表决定的,子进程按照列表中指定的顺序启动,并按相反的顺序终止2. 实例监督者的回调模块-module(ch_sup). -behavio转载 2015-02-03 15:47:50 · 465 阅读 · 0 评论 -
erlang源码参考
一些导读的文章。1、数据类型的内存 http://www.erlang.org/doc/efficiency_guide/advanced.html2、siyao同学一系列介绍数据类型实现的文章Erlang数据类型的表示和实现(1)——数据类型回顾 http://www.cnblogs.com/zhengsyao/p/erlang_eterm_implementation_1.转载 2015-01-31 23:50:00 · 1981 阅读 · 0 评论 -
erlang语法提要
ErLang语法提要 ErLang中的标点符号 ErLang语法中充满了一些约定。大写字母开头的名字(比如Address),表示一个变量,包括参数、局部变量等;小写字母开头的单词(比如ok),表示一个常量,叫做atom(原子的意思),包括常量名、函数名、模块名等。 ErLang的注释用%开头。ErLang用下划线“_”表示任意变量,类似于Java的switch语法里面的defaul转载 2015-01-07 12:23:40 · 834 阅读 · 0 评论 -
erlang模块化对象用法
定义了一个player的类用法P = player:new()P:set_name("myname").Name = P:get_name().原创 2016-07-06 21:03:35 · 1151 阅读 · 0 评论