erlang
mruoli
这个作者很懒,什么都没留下…
展开
-
erlang杂记二 --- 函数
1.匿名函数:fun就是匿名函数,它没有名字。Z=fun(X)->X*X end.Z(3).fun 可以拥有任意数量的参数。Hypot=fun(X,Y)->math:sqrt(X*X + Y*Y) end.fun可以有若干个不同的子句。(模块和函数子句里面,还是要注意下顺序的,一般都是从第一个开始匹配)TempConvert=fun({c,C})->{f,原创 2013-05-16 18:40:49 · 864 阅读 · 0 评论 -
erlang杂记十二--再说尾递归
翻了一下list模块,看的时候,突然发现,尾递归其实是很容易展开成循环的。想起读书时刚开始学程序,C语言,一直再纠结的一个问题,就是如何让一个函数返回两个参数的结果,哈哈,不要笑我。do_sth([], [], SA, SB)->{SA, SB};do_sth([HA|TA]=LA,[HB|TB]=LB, SA, SB)-> do_sth(TA, TB, HA+SA原创 2013-10-18 14:18:40 · 632 阅读 · 0 评论 -
vim下erlang环境配置~
http://blog.erlware.org/2013/09/09/how-to-use-vim-for-erlang-development/http://cryolite.iteye.com/blog/1159448原创 2014-04-01 13:44:16 · 704 阅读 · 1 评论 -
supervisor写了个死锁。。。
一.现象描述:原创 2014-05-09 18:44:32 · 942 阅读 · 0 评论 -
手动gc拯救内存。。
process_gc(MemMax) -> filelib:ensure_dir("./log/"), File = "./log/processes_infosM.log", {ok, Fd} = file:open(File, [write, raw, binary, append]), Fun = fun(PID) -> case erlang:pro原创 2014-06-18 17:37:33 · 2313 阅读 · 0 评论 -
ejabbed install on mac
1.下载src:去process-one.net上下载source code。2.配置:./configure --prefix=/usrs/xxx/xxx (其他参数 -help看)3.编译: make (这个过程会从github上更新deps配置的内容。中间有报错yaml工具:curl -O http://pyyaml.org/download/libyaml/yaml-0.1原创 2014-12-01 21:29:43 · 1112 阅读 · 0 评论 -
一个好用的测试工具tsung
嗯。。。很好用的测试工具有机会也可以拿来集成了原创 2014-12-07 00:18:13 · 553 阅读 · 0 评论 -
关于热更新的东西
http://blogread.cn/it/article/5626?f=wb原创 2014-08-12 19:24:42 · 705 阅读 · 0 评论 -
erlang 代码反编译
debug编出来的代码才可以哦。。1、{ok, {_, [{abstract_code, {_, Ac}}]}} = beam_lib:chunks(code:which(a), [abstract_code]).2、io:fwrite("~s~n", [erl_prettypr:format(erl_syntax:form_list(Ac))]).如果不想代码背反编译,就在转载 2015-05-19 15:52:53 · 3430 阅读 · 0 评论 -
蛋疼的epmd
一,故事从前有一个server,server上跑了很多个erl 实例。有一天,一个erl实例挂了,然后再也不能启动了。。。提示说name被占用了。二,深入在epmd的手册上,看到epmd有个relaxed_command_check参数,坊间传言,使用了这个参数,就可以拯救世界于水火,也就是清理掉这个异常的name。。使用epmd -names可以查看到当前server上注册了的n原创 2015-08-11 19:20:30 · 1114 阅读 · 0 评论 -
erlang的正则匹配和文本解析
前提:发生了一个bug,为了维护数据,先把内存中的数据到处到日志文本,然后整理好修正算法之后,把日志文本里的数据重新分析,导入内存。正则匹配:http://langref.org/erlang/pattern-matching 这里讲了很多用法re:run("one two three", "one (.*) three", [{capture, [1], list}]原创 2015-08-31 19:11:25 · 1724 阅读 · 0 评论 -
erlang安装
1.windows版:自己看着办吧2.linux:wget http://www.erlang.org/download/otp_src_R16B.tar.gztar xf ocd vi Rsudo yum install unixODBC unixODBC-devel./configure --prefix=/home/erlangmakemake installln -原创 2013-05-16 15:59:07 · 541 阅读 · 0 评论 -
erlang杂记十一--不要偷懒的事情
erlang是一门奇怪的语言,任何操作都必须有返回值,所以使用erlang的时候请不要偷懒。比如:if X =:= 1-> do_abc(); X =:= 2 -> do_efg()end这样的代码是不对的,如果X没匹配到,就会出现badmatch的错误,导致程序出错。所以 像 case, if, 带有模式匹配的函数等,一定不要偷原创 2013-10-17 14:26:31 · 490 阅读 · 0 评论 -
erlang杂记十--监督树与application
一。为什么会讲到这个问题那天写代码,调试完就扔到线上去了,结果运行中发现application的stop被调用了,原因是supervisor下的一个gen_server异常。百思不得其解啊,gen_server配置了重启方式permanent,而且supervisor也填上了重启策略,但是日志中既没看到重启也没其他记录,只看到各个gen_server全部被stop。Reason=shutd原创 2013-10-16 14:18:18 · 845 阅读 · 0 评论 -
erlang杂记三 ---- 进程
1.特性:在erlang里,进程属于语言特性而非操作系统。创建和销毁进程非常迅速;在两个进程之间收发消息非常迅捷;进程在所有操作系统上行为相同,可以创建大量进程;进程之间不共享任何数据,彼此完全独立;进程间交互的唯一方法是通过消息传递的。2.并发原语:Pid=spawn(Fun)创建一个进程,用于对Fun求职。新进程与调用者并发运行。Pid ! Message 向Pid发送Messag原创 2013-05-17 10:27:39 · 719 阅读 · 0 评论 -
erlang杂记一 --- 奇怪的语言
1.标点:每个语句之后需添加.符号,表示该式子完成(务必添加)。/之后永远返回浮点数,div表示整数除,rem表示整数取余。;分隔子句。_任意匹配。++低效的列表构造。->=:=绝对等=\=绝对不等==数学等\=数学不等?宏变标记2.变量:变量不能改变(不可以赋值),变量在第一次匹配的时候,会由于自身为空而匹配上等号右侧的内容,但是以后的匹配将返原创 2013-05-16 16:37:06 · 724 阅读 · 0 评论 -
erlang杂记三 --- 服务器抽象
一:第一版服务器程序:start(Name,Mod)->register(Name,spawn(fun()->loop(Name, Mod, mod:init())end)). rpc(Name,Request)-> Name ! {self(), Request}, receive {Name, Response} -> Response end.loop(Name, Mo原创 2013-05-20 02:28:53 · 681 阅读 · 0 评论 -
erlang杂记四---otp
一.why otpotp设计原理是用来使进程、模块和目录中的erlang代码结构化的一系列原理。其最基本的思想就是监督树,然后是行为模式,应用和版本发布。二.gen_servergen_server是行为模式,上一篇将了服务器的演化,其实就是gen_server的基础,也就是一个大的运行框架。借由这个框架,我们把业务和功能更好的划分开,使功能代码与业务彻底解耦,业务更新不会设计功能的修原创 2013-05-21 10:48:12 · 783 阅读 · 2 评论 -
erlang杂记六 --- 写了个小函数(2):最长子序列
代码:-module(my_max).-export([get_max/1]).get_max(L) ->get_max(L, 0, 0).get_max(L, M, Nm) -> case cal_max(L, M, Nm) of {_, Tm, []} -> get_max_l(Tm, Nm); {1, Tm, T} -> g原创 2013-05-23 22:36:21 · 500 阅读 · 0 评论 -
erlang杂记五 --- 写了个小函数(1):一个字符串处理函数
看到论坛上大家在讨论阿里的程序题:字符串的处理问题,逆转,如"www.baidu.com"变为"com.baidu.www",就手痒用erlang写了一个,不过写的很丑很低效。 1 -module(my_reverse). 2 -export([this_reverse/1,this_split/2]). 3 4 this_reverse(L) -> 5 bina原创 2013-05-21 18:50:51 · 903 阅读 · 0 评论 -
erlang杂记八---使用otp框架启动应用
续:这两天重新读,终于把之前头晕的一点东西看懂了。。一.应用的组织形式经典的组织形式:应用名+ 版本号下有:doc,ebin,include,priv,src。应用名+版本号的形式是为了管理方便->代码升级。二.元数据应用元数据文件用来告诉otp如何启动应用,以及该应用应该如何与系统中的其他应用相融合。主要的描述参数包括:description, vsn, modules, reg原创 2013-06-25 09:03:47 · 1721 阅读 · 0 评论 -
erlang杂记七--打个标签,回头想清楚了补上
额,打个标签,关于匹配符号:=还没完全想明白怎么写这个测试。。。:A=B=C=D:A=(B=(C=D))这里。=操作返回的是原来的内容?匹配成功与失败的返回值又都是什么,都表示什么?in otp:gen_server ,the record#state is recorded,when you need some info ,you can store it in the原创 2013-06-23 21:03:56 · 506 阅读 · 0 评论 -
erlang杂记九--处理消息
erlang里面消息通信是最正常的事情,当你只想处理某几种消息的时候,至少有以下方法1.receive {doit,xx}-> do_sth(xx)after M -> lib:flush_message()end.2.receive Msg-> do_sth(Msg)end.do_sth({do_it, XX})-> do(XX)原创 2013-07-27 09:38:20 · 452 阅读 · 0 评论 -
mochiweb 初探
1.安装说到安装,真的算是大费周章。因为环境是自己配的,很多开发库都没有,于是每次make mochiweb的时候,都提示undef crypto,最后发现这个东西是openssl里面的于是 sudo yum install openssl , ./configure;还是不行,依然找不到搜索了下,发现要./configure -with-ssl=PATH然后又提示no k原创 2013-07-21 09:01:51 · 714 阅读 · 0 评论 -
再说mochiweb
mochiweb自带了一个使用示例,make完之后切换到工程目录,直接启动脚本,就可以访问网站了。前几天因为使用需求,要让mochiweb对内外网使用不同的服务,简单的看了一下示例代码,又看了一下mochiweb的socket_server部分代码,发现http start的时候,多配置一个就可以达到目的了。。。也就是super传进来的启动参数,简单修改一下,读取不同的ip和por原创 2013-08-28 21:45:40 · 608 阅读 · 0 评论 -
erlang的shell里写一个尾递归
定时打印消息1> FLoop = fun(Pid)-> Lfun = fun(F,Pid) -> receive loop->io:format("test",[]),erlang:send_after(1000,Pid,loop),F(F,Pid) end end,Lfun(Lfun,Pid) end.2> spawn(fun()-> FLoop(self()) end).原创 2016-08-14 11:47:44 · 546 阅读 · 0 评论