![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
erlang
Atuforever
这个作者很懒,什么都没留下…
展开
-
erlang四大behaviour之一gen_server(转载)
erlang程序设计里面有个设计原则就是把你的进程构造成树,把共用代码提出来,特定功能用自己的module实现,这也就是behaviour了,应用behaviour可以减少与本身事务无关的代码量,设计逻辑更加清晰。老纪边学习边记录吧。gen_server实现服务器/客户端模型,用于多个客户共用一个资源的这种情况。他由几个接口函数和几个回调函数组成(回调函数必须在你的module里定义)这些可以参考...转载 2018-04-09 10:36:17 · 225 阅读 · 0 评论 -
erlang四大behaviour之二-gen_fsm(转载)
今天介绍erlang的一个非常重要的behaviour,就是gen_fsm-有限状态机,有限状态机的作用非常之多,比如文本解析,模式匹配、游戏逻辑等等方面的处理都是它的强项,所以这个behaviour非常之重要1. 有限状态机有限状态机可以用下面这个公式来表达State(S) x Event(E) -> Actions(A), State(S')表示的就是在S状态时如果有事件E发生,那么执行...转载 2018-04-09 10:37:02 · 183 阅读 · 0 评论 -
erlang四大behaviour之三-gen_event
1. 事件处理规则在OTP中,事件管理器是一个事件可以发送到的命名对象,一个事件可以是一个错误、一个警告、或者一些要写入日志的信息在事件管理器中,有0个、一个或者多个事件处理器被安装,当事件管理器被一个事件通知时,这个事件将被安装在事件管理器中的事件处理器处理,事件管理器用一个进程实现,事件处理器用回调模块实现。事件管理器本质上维护一个{Module, State}列表,每一个Module为一个事...转载 2018-04-09 10:37:56 · 236 阅读 · 0 评论 -
erlang四大behaviour之四-supervisor
1. 监督规则一个监督者负责启动、停止、监控他的子进程。监督者的一个基本概念就是当必要的时候重启子进程保证它们的存活哪个子进程要重启和被监控是由一个子规程列表决定的,子进程按照列表中指定的顺序启动,并按相反的顺序终止2. 实例监督者的回调模块-module(ch_sup). -behaviour(supervisor). -export([start_link/0]). -export([init...转载 2018-04-09 10:39:19 · 377 阅读 · 0 评论 -
erlang OTP gen_server 图解分析
在阅读erlang的otp源码gen_server.erl的时候,一直想写点什么,用一种最好的方式表达出来,最终却总是没法表达清楚,困惑之余看到这篇文章,作者用图解的方式,非常清晰明了的表达了我一直想表达的东西,下面是原文链接:http://www.hoterran.info/otp-gen_server-sourcecode感谢原创作者热心的分享。阅读OTP源码可以帮助你写出更好、更健壮的erl...转载 2018-04-09 10:39:59 · 302 阅读 · 0 评论 -
erlang OTP supervisor 图解分析
supervisor实际上是基于gen_server的系统进程,监控子进程的退出状态并设置一定的重启机制.init在这个例子里Mod模块是一个sup程序,它的启动会调用supervisor:start_link,而start_link实际上调用的gen_server:start_link并存入Mod模块的名字和参数.从前面的文章我们可以知道, spawn出来的gen进程会先调用supervisor...转载 2018-04-09 14:56:27 · 366 阅读 · 0 评论 -
erlang之ets总结
/1.ets是什么? ets是Erlang Term Storage的缩写,它是一个基于内存的KV Table,支持大数据量存储以及高效查询. ets有4种类型的table: settable中的每一个Value(Tuple)都是唯一,并且一个Key只能对应一个Valueordered_set同set,唯一不同的是table中的Key是有序的bagtable中的每一个Value都是唯一,但是一个k...转载 2018-04-03 15:53:48 · 8576 阅读 · 0 评论 -
关于erlang supervisor ,书上没有讲到的细节
今天写代码,想要得到一个supervisor下面挂的所有 worker数量,我 通过dynamic的方式启动这些worker的: XXWorker = {"xx_worker" ++ util:uuid(), {xx_worker, start_link,[Task]}, temporary, 5000, worker, dynamic}, ...转载 2018-04-16 15:10:11 · 980 阅读 · 0 评论 -
erlang进程监控:link和monitor
Erlang最开始是为了电信产品而发展起来的语言,因为这样的目的,决定了她对错误处理的严格要求。Erlang除了提供exception,try catch等语法,还支持Link和Monitor两种监控进程的机制,使得所有进程可以连接起来,组成一个整体。当某个进程出错退出时,其他进程都会收到该进程退出的消息通知。有了这些特点,使用erlang建立一个简单,并且健壮的系统就不是什么难事。进程双向监控-...转载 2018-04-16 15:29:02 · 349 阅读 · 0 评论