Erlang千万级用户游戏框架(Openpoker)源码文件分析清单
openpoker源码 erlang写的网游服务器源码,OpenPoker是一个大型多人扑克网游,内建支持了容错能力,负载平衡和无限制的规模大小。本文是openpoker源码文件功能的一个清单式说明:模块名称模块功能说明备注ante.erl仅仅是开始下注的处理,具体的逻辑在betting中 barr...
Erlang OTP编程初体验——gen_server和行为模式
行为模式其实非常类似于面向对象语言中的接口,至少笔者是这么理解的。OTP行为模式将一些反复出现的模式分成了两个部分,通用部分和具体应用相关的实现部分,这一过程其实就类似于面向对象编程中的抽象出接口的过程。本文给出一个OTP中最常见的行为模式的示例:通用服务器,即gen_server。 编写gen_s...
Erlang OTP设计原则Gen_Fsm行为
1. Fsm 称为 有限状态机,举个例子,游戏中的怪物称为NPC,NPC一般有几种状态,比如:静止,移动,死亡,被攻击,攻击英雄等等几个有限的状态,那么我们就可以有限状态机实现NPC的状态变更。 一个有限状态机可以用一个关系式来描述,State(静止状态S1) x Event(英雄进入视野范围事件E...
erlang数据库Mnesia主键自增
对于mnesia数据库表有时候需要有一个id字段,就像关系数据库的主键. 最简单的办法是用uuid做id,但是我们希望此id是整数递增的.或者用{node(), erlang:now()} 做id也是不错的办法. 类似于一个set集合(意思是集合中不可能两个相同的键同时存在),每个键对应...
erlang判断语法结构:if/case/guard
erlang 有好几种常用的判断结构语句,如 if、case、guard 等。文章将分别对 if / case /guard 的特点做介绍,以及用例说明1、if 结构ifCondition 1 ->Action 1;Condition 2 ->Action 2;Condition 3 -...
将Cocoa前端编写到Erlang应用程序的好方法是什么?
I'm exploring the possibility of writing an application in Erlang, but it would need to have a portion written in Cocoa (presumably Objective-C). I'd ...
erlang中文手册——gen_server
声明:本文章是对erlang手册的部分内容的中文翻译,版权归原作者所有……由于本人的英语水平有限(翻译此手册的目的之一就是提高英语水平^0^),所以翻译有误乃正常现象,如有发现请及时提醒,THX…… 谨以此文献给初学erlang并且不喜欢看英文手册的朋友…… gen_server...
Erlang gen_serever和普通进程启动方式的区别
并不是简单的通过spawn在子进程启动函数中启动一个进程然后返回{ok, Pid}就可以让子进程拥有出错自动重启的功能。实际上,需要使用proc_lib:spawn_link或者proc_lib:start_link启动子进程,才能在子进程出错退出时让supervisor自动重启它 pr...
Erlang入门:gen_server实例操作与练习2
Eshell V5.10.4 (abort with ^G) 1> bank_server3:create_account(name1, 1000). true 2> name1 ! check. Current money is: 1000 check 3> erlang:sen...
Erlang generic standard behaviours -- gen_server hibernate
hibernate 主要用于在内存空闲时,通过整理进程的stack,回收进程的heap 来达到回收内存节省资源的效果. hibernate 可用于OTP 进程以及普通进程, hibernate 的官方文档 erlang:hibernate/3 Puts the calling process i...
[Erlang 学习笔记]erlang behaviour小结之gen_server
分类: erlang 2012-04-21 22:29 3558人阅读 评论(1) 收藏 举报 erlang server callback 首先清楚gen_server提供C/S架构中的服务端的实现,即定义了自己一套规范的服务器框架。 ...
Erlang gen_server进程花样作死
本文主要记录各种情况下gen_server进程退出的表现。 研究动机起源于Elixir/Phoenix框架中遇到的一个进程异常退出问题。因为网络异常,客户端超过一段时间未发来消息,channel进程(一个gen_server)退出了,但是挂的很突兀,不调用 terminate,进而导致掉线处理没被调...
[小心得]对erlang(函数式语言)的新理解——有关gen_server, supervisor的小小理解
今天我一同事把困扰他多天的问题解决了,在谈论他解决问题的原因时启动了这个话题: 关于对数据处理的问题:我先举个小例子来说明下要解决的是什么样的问题:说当一大堆数据过来时首先由项目A来接收然后进行简单的处理,把处理后的数据再发给项目B进行深层次的处理。在由A发给B的过程中需要用什么机制进行...
Erlang入门:gen_server实例操作与练习2
Eshell V5.10.4 (abort with ^G) 1> bank_server3:create_account(name1, 1000). true 2> name1 ! check. Current money is: 1000 check 3> erla...
Erlang generic standard behaviours -- gen_server noblock call
在Erlang 系统中,经常需要gen_server 进程来处理共享性的数据,也就是总希望一个gen_server 进程来为多个普通进程提供某种通用性的服务,这也是gen_server 设计的初衷.但是,由于公平调度的原因,在Erlang体系中,每个process 能获得的资源都是同等的:同等的CP...
[Erlang危机](2.2)监督者及start_link的语义
原创文章,转载请注明出处:服务器非业余研究http://blog.csdn.net/erlib 作者Sunface 监督者及start_link的语义 In complex production systems, most faults and errors are transient...
Erlang gen_server的简单小例子
今天下午,花时间写了一下gen_server例子,自己对这个运转模式不是很理解,还没有细看它里面的实际代码,先会用吧... -module(my_server).-behaviour(gen_server).%%External exports-export([start_server/0,han...
Erlang的gen_server的terminate()/2未执行
官方资料参考: Module:terminate(Reason, State) Types:Reason = normal | shutdown | {shutdown,term()} | term()State = term() This function is called by a gen_s...
[erlang 002]gen_server中何时会跑到terminate函数
一、从start方法产出的独立gen_server进程 实验代码: %%%-------------------------------------- %%% @Module : %%% @Author : %%% @Email : %%% @Created : %%% @Descrip...
Erlang gen_server:start_link/3 和gen_server:start_link/4
两个方法都可以用来启动一个gen_server服务器进程,具体的参数如下: gen_server:start_link(Module,Args,Option); gen_server:start_link(Server...