摘要: erlang中构建自己的app是非常方便的,可以自己定制app,不过这里只是简单记录下erlang下典型的做法。即是构建otp application。。构建定制一个application可以通过xxx.app文件,可以把app文件放到config文件夹里面eg:config/gs.app首先来看下 阅读全文
posted @ 2016-02-18 18:17 Shay_黄 阅读(1430) 评论(0) 推荐(0) 编辑
摘要: 在开发过程中,有两个概念是和地区区域相关的:字符编码和时间;编码和时间的规范演变过程中有文化的冲突有历史的遗留,是软件开发中充满人文气息的一角;关于字符编码我之前整理过一篇文章,[Erlang 0024]Erlang二进制数据处理这部分知识很有意思,特别是格列佛游记所引出的大端小端概念,妙趣横生;... 阅读全文
posted @ 2016-01-14 15:21 Shay_黄 阅读(876) 评论(0) 推荐(0) 编辑
摘要: 今天细致的看了下supervisor,现在做个总结:其中,方块代表supervisor process,它的功能很简单,就负责看管它下面的“小弟”(child processes) 并且在必要的时候对某个child process执行restart或者terminate操作;而圆形就代表worker... 阅读全文
posted @ 2015-12-09 15:56 Shay_黄 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 说完了gen_server,今天我们来看看gen_event。通常我们会有这么一种需求场景:采集客户端发送的事件,并做相应的处理,如下图:EventServer负责接收客户端发送的事件消息,当它接受到一个事件消息后,它回调所有的EventHandler处理这条信息(不同的EventHandler对同... 阅读全文
posted @ 2015-12-09 15:55 Shay_黄 阅读(539) 评论(0) 推荐(1) 编辑
摘要: 在《Programming Erlang》的OTP introduction章节中,作者通过循序渐进的方式,向我们展示了gen_server设计思路,现在做下总结:在具体看gen_server之前,我们先看一个server通用框架:在这个server里,你几乎看不到任何和具体功能相关的东西,它只提供... 阅读全文
posted @ 2015-12-09 15:53 Shay_黄 阅读(545) 评论(0) 推荐(1) 编辑
摘要: 我们写完一组功能模块后(在erlang中,以module为单位),总是希望这一组模块,可以打包成一个应用,作为一个单独的整个,可以启动,停止,象mnesia一样。并可以在其它应用中引用。如何来做到这一点呢。每一个应用都是通过application:start系列函数来启动,application:s... 阅读全文
posted @ 2015-11-26 10:14 Shay_黄 阅读(1426) 评论(0) 推荐(0) 编辑
摘要: erlang中为我们提供了这样一个服务器的现成的实现,就是gen_server,不用自己去编写服务器程序了。所要做的就是以下几个事:1.确定我们回调模块的名称2.编写接口函数3.实现六个回调方法也就是说我们只需要关注于回调模块的实现就OK了。1: -module(XXXX) 定义模块名称2:接口函数... 阅读全文
posted @ 2015-09-09 16:34 Shay_黄 阅读(1486) 评论(0) 推荐(0) 编辑
摘要: 在Erlang内部只有两种混合的数据类型:List和Tuple,而这两种都不支持命名访问,所以如果没有额外的库的话想创建像PHP、Ruby或Python中的关联数组(Ruby中的Hash)是不可能的在Ruby中我可以这样做:server_opts={:port=>8080,:ip=>'127.0.0... 阅读全文
posted @ 2015-09-08 14:28 Shay_黄 阅读(653) 评论(0) 推荐(0) 编辑
摘要: 1. 并发原语:(1) Pid = spawn(Fun) %% 创建一个新的并发进程,用于对Fun求值。(2) Pid ! Message %% !是发送操作符,消息发送是异步的,返回结果是消息本身,所以Pid1!Pid2!...!M可以向多个进程发送消息M。(3) receive ... end ... 阅读全文
posted @ 2015-09-07 16:17 Shay_黄 阅读(414) 评论(0) 推荐(0) 编辑
摘要: 1.process_flag(trap_exit,false),是默认行为:“A进程”和“B进程”相互链接,(1)如果“A进程”异常退出“B进程”也随之退出;(2)如果“A进程”正常退出,“B进程”不做任何处理,继续运行。2.process_flag(trap_exit,true):“A进程”和“B... 阅读全文
posted @ 2015-09-07 11:43 Shay_黄 阅读(495) 评论(0) 推荐(0) 编辑