`
hideto
  • 浏览: 2682443 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
本章详细介绍了设计Mnesia数据库和编程结构的基本步骤: 1)定义schema 2)数据模型 3)启动Mnesia 4)创建新表 1,定义schema Mnesia系统的配置在schema里描述 schema是一个特殊的表,它包含了表名、每个表的存储类型(表应该存储为RAM ...
本章介绍了Mnesia: 1)启动一个Erlang session并制定Mnesia数据库的目录 2)初始化数据库结构 3)启动Mnesia并创建必要的表 1,初次启动Mnesia 以下是Mnesia系统启动的一个简单展示: unix> erl -mnesia dir '"/tmp/funky"' Erlang (BEAM) em ...
Mnesia是一个分布式数据库管理系统DBMS,适合于需要连续运算和软实时特性的电信应用及其他Erlang应用 目录 1,介绍 2,Mnesia快速上手 3,构建一个Mnesia数据库 4,事务和其他访问上下文 5,多种Mnesia特性 6,Mnesia系统信息 7,联合Mn ...
Supervisor Behaviour是一个用来实现一个supervisor进程来监控其他子进程的模块 子进程可以是另一个supervisor,也可以是一个worker进程 worker进程一般使用gen_event,gen_fsm或gen_server behaviour来实现 一个使用该模块来实现的supervisor有一个接口方法的标准集,包括跟踪和错误报告的功能 supervisor用来构建一个分层进程结构,称为supervision tree,这是组织一个容错系统的好方式 1,Supervision原则 supervisor负责启动、停止和监控它的子进程 supervisor在必要 ...
定义三个terminal_logger: $$ terminal_logger1.erl -module(terminal_logger1). -behaviour(gen_event). -export([init/1, handle_event/2, handle_call/2, handle_info/2, code_change/3, terminate/2]). init(_Args) -> {ok, []}. handle_event(ErrorMsg, State) -> io:format("*** Error1 *** ...
1,事件处理原则 在OTP里,event manager是一个命名对象,它可以接收event 一个event可以是一个error、alarm或者一些应该被log的信息 在event manager里会安装一些event handler 当event manager被通知一个event时,event会被所有安装的event handler来处理 event manager实现为一个进程,而每个event handler实现为一个callback模块 event manager本质上是维护一个{Module, State}对的list,每个Module是一个event handler,State是e ...
改了一下代码,可以run了: %% code_lock.erl -module(code_lock). -behaviour(gen_fsm). -export([start/1, button/1]). -export([locked/2, open/2]). -export([init/1, handle_event/3, handle_sync_event/4, handle_info/3, code_change/4, terminate/3]). start(Code) -> gen_fsm:start_link({local, code_lock} ...
1,有限状态机 FSM,有限状态机,可以用以下形式来描述做一个关系集: State(S) x Event(E) -> Actions(A), State(S') 意思是,如果我们位于状态S,然后事件E发送了,则我们应该执行动作A,并且将状态改为S' 2,例子 有一个代码锁的 ...
简单的gen_server Hello World程序 代码: -module(genserver). -behaviour(gen_server). -export([start/0, hello/1]). -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]). start() -> gen_server:start_link({local, ?MODULE}, ?MODULE, [], []). hello(Name) -> ...
OTP Design Principles: Gen_Server Behaviour 1,Client-Server原则 client-server模型由一个中心服务器和任意多的客户端组成 该模型主要用来做资源管理操作,不同的客户端共享一个通用的资源,服务器负责管理该资源 2,例子 -module(ch3). -behaviour(gen_server). -export([start_link/0]). -export([alloc/0, free/1]). -export([init/1, handle_call/3, handle_cast/2]). start ...
1,Supervision Trees 来源于workers和supervisor模型 workers就是实际执行计算的进程 supervisors是监控workers的进程,如果workers进程崩溃,supervisors可以负责重启workers进程 supervision tree将代码分层为supervisors和workers,方便构建容错系统 2,Behaviours Behaviours将代码分成两部分,一部分为通用性代码(一个behaviour模块),另一部分为特别性代码(一个callback模块) 使用Behaviour来实现一个supervisor进程,用户只需要实现ca ...
为什么OO很恶心 原文: http://www.sics.se/~joe/bluetail/vol1/v1_oo.html 作者:Joe Armstrong 当我第一次知道OOP的概念时,我非常疑惑,但是不知道为啥——它仅仅在感觉上“不对”。 在OOP问世之后变得粉流行(稍后解释为什么),而批评OOP ...
附标题:如何构建超强伸缩性的游戏服务器而集容错、负载均衡和无限伸缩性于一身 原文:Writing Low-Pain Massively Scalable Multiplayer Servers 介绍 本文以我的OpenPoker项目为例子,讲述了一个构建超强伸缩性的在线多游戏玩家系统。 Ope ...
原文:Ten Questions with Joe Armstrong about Parallel Programming and Erlang 第一部分:关于并行编程的通用问题 1) Michael:我们进入了多核时代,你认为并行计算最终会成为主流吗?或者这仅仅是一个阶段并且很快对并行编程感兴趣的人将 ...
参考: http://weblambdazero.blogspot.com/2008/08/mapreduce-in-erlang.html MapReduce的主要原理是将一个数据集上的计算分发到许多单独的进程上(map),然后收集它们的结果(reduce)。 在Erlang里实现MapReduce非常细节也十分简单,例如Erlang的作者Joe Armstrong发表了一段代码来表示MapReduce版本的Erlang标准lists:map/2方法: pmap.erl -module(pmap). -export([pmap/2]). pmap(F, L) -> ...
Global site tag (gtag.js) - Google Analytics