Erlang
lee_鹿游原
Talk is cheap. Show me the code
展开
-
Erlang语言 基于LLVM的高性能Erlang(Hipe)尝鲜
即将发布的R17A版本引入很重要的一个针对性能提升的特性:”Support the LLVM backend in HiPE”,具体改变参见这里. 我们知道Erlang是一门领域语言,第一天就是为电信工业高可用,集群和热更新环境而设计的,语言的性能一开始不是重点。直到R12版本才加入SMP多处理器,充分适应多核化的硬件发展趋势,从此向着高性能大步迈进。Erlang的虚拟机是register转载 2014-11-13 16:36:29 · 1671 阅读 · 0 评论 -
Erlang SASL
sasl是一个应用,sasl的一个重要功能便是可以记录系统进程相关日志,如进程启动、结束、崩溃错误等信息。sasl的日志功能是基于erlang自带的日志模块error_logger来实现的原创 2014-09-03 11:04:31 · 3398 阅读 · 0 评论 -
C++ 与 elang 通信注意问题
1.采取二进制流方式通信,erlang需要进行二进制解析2.erlang 虚拟机二进制流是大端,相同 AS3 和 JAVA虚拟机同样二进制流也是大端,而C++依赖于cpu架构,因为网络字节序都是用大端。固C++收发数据需要相对自身大小端转化。3.可以用 term_to_binary binary_to_term 进行传输,不过C++端需要做一些逻辑解析,这个因地制宜吧,需要可以这样做、另...原创 2014-06-19 18:05:53 · 993 阅读 · 0 评论 -
Erlang 知识杂记
由于不是很长时间写博客,一些日常的知识就记录在一个wen原创 2014-08-28 16:27:24 · 951 阅读 · 0 评论 -
Erlang Robot
自己写的简单测试的robot , 只有登录,其它消息自己修改模拟~~原创 2014-09-13 15:08:20 · 1075 阅读 · 0 评论 -
Erlang Edoc文档生成
1.要生成类似于erlang的文档 , 模块的代码注释必须按照erlang的规则走。Erlang edoc原创 2014-08-12 11:25:18 · 1893 阅读 · 0 评论 -
Erlang element
-module(proto).-compile(export_all).-record(msg,{id=1,age}).getId(RecordInfo)-> element(#msg.id,RecordInfo). getAge(RecordInfo)-> element(#msg.age,RecordInfo).原创 2014-07-12 14:24:26 · 1510 阅读 · 0 评论 -
Erlang的并行编译与加密
1.首先Erlang防止反编译 , 有2种方法 ,原创 2014-07-25 17:54:38 · 3144 阅读 · 0 评论 -
Ubuntu 安装eclipse+Erlang+java
这次要在ubuntu下开发Erlang服务端 ,固选择ubuntu。 发布运行在centos下。首先安装ubuntu ,我用的是ubuntu 12.04版本,可以ubuntu官网下载即可。自己设置一个好的软件源,我用的是163.1.安装eclipse。去官网 http://www.eclipse.org/downloads/ 下载linux版本的eclipse ,我的软件安装目原创 2014-04-07 11:48:54 · 1833 阅读 · 0 评论 -
Erlang的数据存储交互
1。进程内数据dict 2. 跨进程 ets(public,named) 3. 跨节点 mnesia转载 2014-07-05 10:38:49 · 1073 阅读 · 0 评论 -
mnesia的一些设置
当我们启动Mnesia的时候,一个名为LATEST.LOG的文件被创建并且放在数据库目录内。这个文件被Mnesia用来对基于磁盘的事务做日志。这包括所有在存储类型为disc_copies或disc_only_copies的表中至少写入一条记录的事务。还包括对模式本身所作的全部操作,如创建新表等。Mnesia的不同实现的日志格式可能有变化。当前实现的Mnesia是标准库模块disc_lo转载 2014-07-24 14:12:57 · 1674 阅读 · 0 评论 -
Erlang HiPE
HiPE(High Performance Erlang) 霸爷有一个一语中的的描述"erlang的hipe相当于jit, 根据语言评测有hipe支持在纯erlang的运算上会快2-3倍,这个性能的提升对于计算密集型的应用还是比较可观的。"编译启用HIPE选项可以这样:c(Module,[native,{hipe,HipeOptions}|MoreOptions). 或转载 2014-11-13 16:04:43 · 3112 阅读 · 0 评论 -
mac下安装Erlang
mac下配置erlang 稍微比linux配置简单一些。1.首先安装XCODE 2.其次安装brew (累死linux )原创 2014-05-12 11:48:32 · 6644 阅读 · 2 评论 -
Erlang gen_tcp补充(2)
这次讲的是gen_tcp:send 的阻塞 与 直接调用 erlang:port_command的非阻塞。————————————————————————————————————————————————————————gen_tcp.erl 源码在 kernelgen_tcp.erlsend(S, Packet) when is_port(S) -> case inet_db:l原创 2014-07-05 20:21:02 · 1545 阅读 · 0 评论 -
Redis for Erlang
1.安装Redismac安装:brew install redis 可以安装redis桌面查看工具:redis-desktop-manager Redis管理及监控工具:http://www.treesoft.cn/dms.html2.安装redis for erlang驱动https://github.com/wooga/eredis :redis for erlang ht...原创 2018-10-23 16:14:45 · 1299 阅读 · 0 评论 -
Erlang使用Elasticsearch、Logstash、Kibana搭建日志平台
1.简介将Erlang运行时产生的Log,通过ELK(Elasticsearch、Logstash、Kibana)进行查看分析。 2.安装2.1 Erlang相关:Erlang 20+https://github.com/lambdaclass/lager_logstash_backend 这是扩展的功能库如果你使用Rebar3,将其依赖添加到配置文件。如果没有使...原创 2018-09-03 17:37:09 · 797 阅读 · 0 评论 -
Erlang对接Google Translation API
1.引导谷歌翻译文档地址:https://cloud.google.com/translate/docs/ , 需要境外银行卡。按照谷歌引导一步步进行,拿到key,激活收费即可。项目决定用google api,实时性比较优秀。微软翻译api也很好,相对谷歌价格划算,不需要境外银行卡,每月有免费200w字符等等。2.相关代码简单的http请求,细节略。source="" 谷歌会为其自动识别源语言种类...原创 2016-12-27 11:14:29 · 1200 阅读 · 0 评论 -
Erlang gen_server init
参考文章 http://youthyblog.com/2015/07/31/erlang-question-gen-server-and-init/很幸运能看到这篇文章,从而获得一种新的写法。平常都是用 timeout =0 ,做一些耗时或者初始化操作。伪代码:start_link(Args) -> proc_lib:start_link(?MODULE, init, [self()...原创 2016-09-06 17:05:03 · 1102 阅读 · 0 评论 -
Erlang NIF简析
在Erlang调用C代码时,NIF(Native Implemented Function)是比port driver更简单和有效的实现方式,尤其是编写同步程序中,NIF是非常适合Erlang 的。1, 基本原理 NIF可以使我们可以用C实现相同的程序逻辑,但速度比用纯Erlang的快,跟C的速度很相近。 C语言编译生成的动态库(*.so)在Erlan转载 2016-05-10 15:07:10 · 987 阅读 · 0 评论 -
Mnesia动态添加节点杂记
FAQ List:1. 如果动态的添加一个节点到Mnesia cluster中2. 如何动态的从mnesia cluster中删除一个节点3. 在一个节点上演示将当前已有的表格分片fragment存储, 增加删除分片的方法4. 多个节点的分片测试5. 节点池node_pool如何保持存储的fragment在各个节点中的平衡?6. 总结Mnesia使用linear hashing线性哈希转载 2016-01-14 18:43:08 · 1671 阅读 · 0 评论 -
Cowboy的路由机制
路由机制配置链接URL到Erlang模块(处理对应请求的模块)的映射就是路由。当 Cowboy接收到一个请求时,它会尝试在给定的分发规则中匹配 域名 到对应的资源路径。如果匹配成功,那么对应的Erlang 模块就会被执行。Cowboy首先会匹配域名,接着尝试找到匹配的资源路径。Cowboy会将路由规则编译后,再使用。结构通用的路由结构是这样定义的:Route转载 2015-11-30 10:04:32 · 1073 阅读 · 0 评论 -
[Erlang]前人挖坑,后人还要进坑?
1. 保护式(guard)中如果出错,不会报错,只会返回false!case 1=:1 of true when not erlang:length(t) =:= 1 orelse true -> ok; _ -> errorend.Result is: error保护式中对t (atom) 求len转载 2015-12-14 14:48:43 · 4370 阅读 · 0 评论 -
Erlang 的 pid解释
erlang保证1个cluster内Pid是唯一的:Pid的值A是节点id,也就是节点名称的内部索引,由于不能在cluster里有相同的node (short)name,因此不同node上的进程A值肯定不同。在本地节点时,该值总为0B,内部进程表里的内部索引,值为0 -> MAXPROCSC,序列号,每当进程数超过MAXPROCS时,加1原创 2014-07-16 15:34:44 · 3909 阅读 · 0 评论 -
Erlang gen_tcp补充(1)
gen_tcp.erlaccept(S) -> case inet_db:lookup_socket(S) of ①{ok, Mod} -> %% Mod 要么是inet_tcp, 要么是inet6_tcp. Mod:accept(S);Error -> Error end.inet_tcp.erlaccept(...原创 2014-04-30 17:20:32 · 1887 阅读 · 0 评论 -
分析和解决mnesia过载问题
2014-06-06 22:53 267人阅读 评论(0) 收藏 举报目录(?)[+]mnesia在频繁操作数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了。这个警告在mnesia dump操作会发生这个问题,表类型为disc_转载 2014-07-24 11:28:33 · 1135 阅读 · 0 评论 -
erlang re正则表达式模块
{_, P} = re:compile("[a-zA-Z0-9]+@[a-zA-Z0-9]+\\.[a-z]{2,3}").或者 {_, P} = re:compile("[a-zA-Z0-9]+@[a-zA-Z0-9]+[\.][a-z]{2,3}"). re:run("E-mail: xyz@pdq.com", P).{match,[{8,11}]}re:run("E-mail:...原创 2014-07-21 18:19:13 · 5336 阅读 · 0 评论 -
Erlang 入门(一)
1.数字类型,需要注意两点1)B#Val表示以B进制存储的数字Val,比如7> 2#101.5二进制存储的101就是10进制的5了2)$Char表示字符Char的ascii编码,比如$A表示652.比较难以翻译的概念——atom,可以理解成常量,它可以包含任何字符,以小写字母开头,如果不是以小写字母开头或者是字母之外的符号,需要用单引号包括起来,比如abc,'A转载 2013-12-19 16:26:14 · 1133 阅读 · 3 评论 -
Erlang与ActionScript3采用JSON格式进行Socket通讯
server.erl Java代码 -module(server). -export([start/0,start/1,process/1]). -define(defPort, 8888). start() -> start(?defPort). start(Port) -> case gen_tcp:listen(转载 2013-12-19 16:38:32 · 1345 阅读 · 0 评论 -
Erlang入门(二)
Erlang中的process——进程是轻量级的,并且进程间无共享。查了很多资料,似乎没人说清楚轻量级进程算是什么概念,继续查找中。。。闲话不 提,进入并发编程的世界。本文算是学习笔记,也可以说是《Concurrent Programming in ERLANG》第五张的简略翻译。1.进程的创建 进程是一种自包含的、分隔的计算单元,并与其他进程并发运行在系统中,在进程间并没有一个继承转载 2013-12-19 16:27:11 · 980 阅读 · 0 评论 -
erlang 的 supervisor行为
-module(myserver).-behaviour(gen_server).%%define-define(POLICY_PORT,8080). %%监听端口-define(TCP_OPTION,[ binary, {packet,0}, {active,false}, {reuseaddr, true} ]).%% =====原创 2013-12-16 16:34:33 · 1312 阅读 · 0 评论 -
erlang gen_fsm
自己写的简单的 gen_fsm有限状态机的小例子:-module(test_fsm).-export([start_link/0,stand/2,move/2,dead/2,stop/0]).-export([handle_stand/0,handle_move/0]).-behaviour(gen_fsm).%%-export([init/1,handle_info/3原创 2013-12-18 16:45:41 · 1631 阅读 · 0 评论 -
Erlang gen_tcp和gen_server结合应用
今天把 tcp和gen_server结合在一起使用。个人猜想:erlang的OTP模式,gen_server,handle_call处理代码逻辑,handle_info处理发给server的消息,模块内,提供接口函数,供外部调用 gen_server:call()..erlang进程通信用 !发送消息。 消息接收应该是在handle_info处接收。 (这些结论有待验证..只是猜想。)原创 2013-12-14 14:21:34 · 3643 阅读 · 0 评论 -
Erlang gen_server进程调用实例
刚才又重新 理解Gen_server才明白它的工作原理。handle_call : 是进程之间的调用.. 需要返回值gen_server完全写好一套消息框架,只需要实现它的功能函数既可。-module(test_A).-behaviour(gen_server).%%External exports-export([start_link/0,handleCall/1]).原创 2013-12-14 16:20:40 · 2135 阅读 · 0 评论 -
Erlang gen_server和ets简单应用
%%Author:Lee%%Desc:学生管理的小例子 %%gen_server-module(stuManager).%% gen_server callbacks-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]).%% External expor原创 2013-12-12 17:42:53 · 1538 阅读 · 0 评论 -
Erlang ets表
-module(myets).%%-export([start/0]).-compile(export_all).%%ets:new(Name, Options) -> tid() | atom()%%默认是set类型start()-> ets:new(test,[named_table]), ets:insert(test,{a,1}), List = ets:tab2list原创 2013-12-12 14:28:57 · 1686 阅读 · 0 评论 -
Erlang gen_server的简单小例子
今天下午,花时间写了一下gen_server例子,自己对这个运转模式不是很理解,还没有细看它里面的实际代码,先会用吧...-module(my_server).-behaviour(gen_server).%%External exports-export([start_server/0,handle_test/1]).%% gen_server callbacks-expor原创 2013-12-11 16:28:47 · 2576 阅读 · 0 评论 -
Erlang简单gen_tcp例子
简单 client / server通信例子。前端:flash AS3后台:Erlangpackage{ import flash.display.Sprite; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.ProgressEvent; import fl...原创 2013-12-10 18:14:14 · 3236 阅读 · 0 评论 -
Erlang入门(三)
所谓分布式的Erlang应用是运行在一系列Erlang节点组成的网络之上。这样的系统的性质与单一节点上的Erlang系统并没有什么不同。分布式这是个“大词”,Erlang从语言原生角度支持分布式编程,相比于java简单不少。一、分布式机制下列的BIFs是用于分布式编程:spawn(Node, Mod, Func, Args)启动远程节点的一个进程spawn_link(Nod转载 2013-12-19 16:28:05 · 1043 阅读 · 0 评论 -
erlang网络编程的几个性能调优和注意点
前些天给echo_server写了个非常简单的连接压力测试程序,代码 -module(stress_test). -export([start/0, tests/1]). start() -> tests(12345). tests(Port) -> io:format("starting~n"),转载 2013-12-19 16:33:10 · 1887 阅读 · 0 评论 -
Socket编程
1 使用TCP我们学习Socket编程的历险从一个从服务器获取TCP数据的程序开始。然后我们会写一个简单的串行TCP服务器展示如何并行的处理多个并发会话。1.1 从服务器获取数据我们先写一个小函数(标准库的 http:request(Url) 实现相同的功能,但是这里是演示TCP的)来看看TCP socket编程获取 http://www.google.co转载 2013-12-19 17:24:17 · 1368 阅读 · 0 评论