理解Erlang/OTP - Application】的更多相关文章

http://www.cnblogs.com/me-sa/archive/2011/12/27/erlang0025.html 1>application:start(log4erl). 我们就从这一行命令开始说起吧,回车之后可以把log4erl应用程序启动起来.Erlang/OTP中的能完成特定功能集合的组件被称为application. ,application是Erlang代码和功能组织的形式之一([Erlang 0015]Erlang OTP设计原则).application的设计目的是…
http://www.cnblogs.com/me-sa/archive/2012/01/10/erlang0030.html Supervisors are used to build an hierarchical process structure called a supervision tree, a nice way to structure a fault tolerant application.                                         …
http://erlang.org/doc/design_principles/des_princ.html 图和代码皆源自以上链接中Erlang官方文档,翻译时的版本为20.1. 这个设计原则,其实是说用户在设计系统的时候应遵循的标准和规范.阅读前我一直以为写的是作者在设计 Erlang/OTP 框架时的一些原则. 闲话少叙.Let's go! 1.概述 OTP设计原则规定了如何使用进程.模块和目录来组织 Erlang 代码. 1.1 监控树 Erlang/OTP的一个基本概念就是监控树.它是…
  上周Erlang讨论群里面提到lists的++实现,争论大多基于猜测,其实打开代码看一下就都明了.贴出代码截图后有同学问这代码是哪里找的?   "代码去哪里找?",关于Erlang源码阅读的路线图江湖上只有一份残卷了.我觉得"代码在哪儿?"这类问题是信息不对称造成的,本身难度不大,就像<贫民窟的百万富翁>里面的情节:贾马尔知道市井生活中的零零碎碎却说不出国徽上的文字,我们就从电影中的这一幕开始本文的探索吧     内景,演播室—夜晚 普瑞姆:这个问题…
原始链接:https://blog.zhustec.me/posts/erlang-otp-1-callback-based-on-behaviour OTP 是什么 OTP 的全称是开源电信平台 (Open Telecom Platform),但是它的实际作用却不像它的名字一样只是用做电信平台,它是 Erlang 中的一套用于方便用户编写高容错性系统的框架.如果说 Erlang 的伟大之处一半来自于它的并发和分布式,那么另一半就来自于 OTP 框架. 为什么需要 OTP 在编写 Erlang…
转自: http://www.cnblogs.com/yourihua/archive/2012/05/13/2497776.html 1. Fsm 称为 有限状态机,举个例子,游戏中的怪物称为NPC,NPC一般有几种状态,比如:静止,移动,死亡,被攻击,攻击英雄等等几个有限的状态,那么我们就可以有限状态机实现NPC的状态变更. 一个有限状态机可以用一个关系式来描述,State(静止状态S1) x Event(英雄进入视野范围事件E) -> Actions(开始移动动作A), State(移动状…
http://blog.sina.com.cn/s/blog_3fe961ae0101k4p6.html 行为模式其实非常类似于面向对象语言中的接口,至少笔者是这么理解的.OTP行为模式将一些反复出现的模式分成了两个部分,通用部分和具体应用相关的实现部分,这一过程其实就类似于面向对象编程中的抽象出接口的过程.本文给出一个OTP中最常见的行为模式的示例:通用服务器,即gen_server. 编写gen_server回调模块大致包括3相步骤: (1) 确定回调模块的名称: (2) 写接口函数(由客户…
http://erldoc.com/ Open Telecom Platform application array asn1rt base64 binary calendar code dbg dict erlang ets file filelib gb_trees gen_tcp inet io lists make maps math mnesia net_adm os proplists random re rpc string sys unicode Erlang并发编程 Erlan…
之前,在 [Erlang 0126] 我们读过的Erlang论文 提到过下面这篇论文: On Preserving Term Sharing in the Erlang Virtual Machine 地址: http://user.it.uu.se/~kostis/Papers/erlang12_sharing.pdf  摘要:In this paper we describe our experiences and argue through examples why flattening t…
CentOS 6.5安装Erlang/OTP 17.0 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Erlang眼下已经是Fedora和Debian/Ubuntu软件仓库中的一部分. Erlang眼下最新的版本号是OTP 17.0.Erlang是一种编程语言,用于构建大规模.高可伸缩性.高可用性的软实时系统的编程语言.它已经在电信.金融.电子商务.网络电话和即时消息中得到应用.Erlang的执行时系统已经内建了对并发.分布式和容错的支持. OTP…
转自:http://www.myexception.cn/program/1569725.html Erlang OTP gen_event (0) 原英文文档:http://www.erlang.org/erldoc?q=&x=0&y=0Tips:看到网页右边的搜索功能了么,保存这个实用网页吧. 一个实现事件处理功能行为模块,可以动态的删除和增加任意数量事件的事件管理器(event_manager),事件管理器使用这个模块将实现一套标准的接口功能,包括跟踪和错误报告功能.同样他也适合OT…
最近在做一些和 NIF 有关的事情,看到 OTP 团队发布的 17 rc1 引入了一个新的特性“脏调度器”,为的是解决 NIF 运行时间过长耗死调度器的问题.本文首先简单介绍脏调度器机制的用法,然后简要分析虚拟机中的实现原理,最后讨论了一下脏调度器的局限性. 脏调度器机制的用法 了解 NIF 的同学都知道,在 Erlang 虚拟机的层面,NIF 调用是不会被抢占的,在执行 NIF 的时候调度器线程的控制权完全被 NIF 调用接管,因此除非 NIF 调用的代码主动交出控制权,否则调度器线程会一直执…
参考资料:http://erlangcentral.org/wiki/index.php/Building_a_Non-blocking_TCP_server_using_OTP_principles 服务器设计tcp_server_app下的根监控树使用one_for_one重启策略.两个子树应用,第一个是一个tcp套接字监听服务器,使用gen_server模式来实现,采用异步监听的客户端连接的模式.第二个是一个客户端应用,使用gen_fsm模式实现,使用标准SASL错误报告接口,记录客户端消…
转自: http://diaocow.iteye.com/blog/1762895 今天细致的看了下supervisor,现在做个总结: 其中,方块代表supervisor process,它的功能很简单,就负责看管它下面的“小弟”(child processes) 并且在必要的时候对某个child process执行restart或者terminate操作:而圆形就代表worker process,它才是真正负责干活的process:特别注意,supervisor process 监控的不一定…
http://www.hoterran.info/otp-gen_server-sourcecode 在阅读erlang的otp源码gen_server.erl的时候,一直想写点什么,用一种最好的方式表达出来,最终却总是没法表达清楚,困惑之余看到这篇文章,作者用图解的方式,非常清晰明了的表达了我一直想表达的东西,下面是原文链接: http://www.hoterran.info/otp-gen_server-sourcecode 感谢原创作者热心的分享. 阅读OTP源码可以帮助你写出更好.更健壮…
http://erldoc.com/doc/otp-design-principles/index.html 原文: OTP Design Principles 翻译: ShiningRay 有任何问题请到 这里 留言. 目录 概述 监督树 行为 应用 发布 发布处理 Gen_Server行为 客户端-服务器端原理 例子 启动一个Gen_Server 同步调用——Call 异步请求——Cast 停止 处理其他消息 Gen_Fsm行为 有限状态机 例子 启动一个Gen_Fsm 事件通知 超时 所有…
Spring的事件(Application Event)为Bean与Bean之间的信息通讯提供了支持.当一个Bean处理完一个任务之后,希望另一Bean指定并能做相应的处理,这时我们就需要让另外一个Bean监听当期Bean所发送的事件. 通过上述基本信息可知,Spring的事件需要遵循如下流程: (1) 自定义事件,继承ApplicationEvent; (2)定义事件监听器,实现ApplicationListener; (3)使用容器发布事件. 可以理解以上的流程就是Spring默认的事件生效…
继续昨天的话题,昨天提到io:format对数据共享的间接影响,如果是下面两种情况恐怕更容易成为"坑", 呃,恰好我都遇到过; 如果是测试代码是下面这样,得到的结果会是怎样?猜! s2()-> L=[1,2,3,4,5,6], L2=[L,L,L,L], erlang:display( {{erts_debug:size(L),erts_debug:flat_size(L)},{erts_debug:size(L2),erts_debug:flat_size(L2)}} ). 结…
抄自http://www.zackzod.me/2012/10/24/socket-options-in-erlang-otp.html Erlang的inet模块里提供了对Socket进行一系列参数设置的接口 setopts(Socket, Options).可设置的参数目前有28个,其中有一个在R16版本里计划去除.以下是对几个常用参数的设置做的记录. {active, true | false | once} 默认值是true.但是由于设置为true的情况下是没有flow control的…
接上ranch 源码分析(一) 上次讲到了ranch.erl的start_listener函数,下面我们详细分析下这个函数 -module(ranch). %...... 省略若干行 -spec start_listener(ref(), non_neg_integer(), module(), any(), module(), any()) -> supervisor:startchild_ret(). start_listener(Ref, NbAcceptors, Transport, T…
笔记系列 Erlang环境和顺序编程Erlang并发编程Erlang分布式编程YawsErlang/OTP 日期              变更说明 2014-12-21 A Outline, 1 Agenda 0 Scope 围绕OTP设计原则,分别记录行为模式.监督树概念.应用.发布和部署,以及[3]中一个产品级缓存解决方案. 1 OTP Design Principles Erlang Doc: OTP Design Principles User's Guide OTP设计原则阐述的是如…
Erlang Rebar 使用指南之三:Rebar和OTP程序约定和命令 全文目录: https://github.com/rebar/rebar/wiki 本章位置: https://github.com/rebar/rebar/wiki/Rebar-and-OTP-conventions https://github.com/rebar/rebar/wiki/Rebar-commands 1 Erlang 应用OTP application 按照下面的组织结构 demo_project/ +…
这篇文章主要介绍了Erlang初学:Erlang的一些特点和个人理解总结,本文总结了函数式编程.一切都是常量.轻量进程.进程端口映射及典型缺点等内容,需要的朋友可以参考下 我对 Erlang 编程理念的理解:以分布式架构师的角度写代码. 函数式编程 Erlang 里面的函数是数学里面的函数:必须有返回值. 只要是函数必然有返回值,函数是一个过程,以英文的句号为函数结束符. 函数结束之前的表达式就是该函数的返回值. 所以这也是在 Erlang 里面的函数不会看到任何 return 语句的原因. C…
什么叫消息队列? 消息(Message)是指在应用间传送的数据.消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象. 消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递.消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的.这样发布者和使用者都不用知道对方的存在. 为何用消息队列? 消息队列是一种应用间的异步协作机制,那什么时候需要使用 MQ 呢? 像用户下单之后…
ChicagoBoss,Nitrogen ,Zotontic,BeepBeep,ErlyWeb,Erlang Boss. 转自:http://bbs.chinaunix.net/thread-3764065-1-1.html 这里是我翻译的一篇国外的文章,原文地址:http://lenary.co.uk/erlang/2011/08/erlang-web-libraries/ 我目前从事Erlang相关的开发工作,虽然Erlang算是一门小众语言,但是我很喜欢,就像一直喜欢perl一样.这里yy…
我在Erlang Resources 豆瓣小站上发起了一个征集活动 [链接] ,"[征集] 我们读过的Erlang论文",希望大家来参加.发起这样一个活动的目的是因为Erlang相关的出版物很少,很多时候都是从学术论文中寻找答案,而发现合适的论文是第一步,这个活动就是为了解决这个问题. 在一个极小的知识点可能都会有一篇精彩的论文为你条分缕析,抽丝剥茧,甚至可以拼凑起来一个完整的Erlang知识系统,我们开始吧... <面向软件错误构建可靠的分布式系统> Making rel…
很多事情要做,一件一件来; Erlang Resources 小站 2013年1月~6月资讯合集,方便检索.      小站地址: http://site.douban.com/204209/     1 月   A few thoughts about Open Source Software Antirez http://dou.bz/1pyUXj Erlang's biggest missing feature: globals http://dou.bz/22GYw7 DTrace, F…
RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing Protocol高级消息队列协议)的标准实现,用erlang语言开发.RabbitMQ据说具有良好的性能和时效性,同时还能够非常好的支持集群和负载部署,非常适合在较大规模的分布式系统中使用,具体特性还在验证中,待检验.由于项目需要,安装并配置了RabbitMQ,服务器操作系统是CentOS7,服务器是阿里云主机.具体步骤如下: 安装依赖文件: yum install gcc glibc-dev…
rebar是一个遵循 Erlang/OTP 原则的 Erlang 项目构建工具,使用它可以减少构建标准 Erlang/OTP 项目架构配置的工作量,并且可以很容易的编译.测试.发布 Erlang 应用程序.更强大的是,rebar 提供一种依赖管理机制,它可以使开发者很方便地通过 Git.Hg 等方式重用常见的第三方 Erlang 模块或库. 安装rebar 你可以在 https://github.com/rebar/rebar里下载zip包或者源代码自己编译. 在根目录下有一个文件bootstr…
笔记系列 Erlang环境和顺序编程Erlang并发编程Erlang分布式编程YawsErlang/OTP 日期              变更说明 2014-11-02 A outline 2014-11-03 A 1 2014-11-08 A 2 3 2014-11-17 A 4 Agenda 0 范围 Erlang的现实世界建模方式 Erlang进程创建 Erlang进程设计模式 Erlang进程错误处理 1 Erlang Concurrency Modeling Philosophy A…