`
litaocheng
  • 浏览: 333157 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
rabbitmq 的代码中包含一个gen_server2 , 其对Erlang OTP中的gen_server进行了一些优化. gen_server.erl loop(Parent, Name, State, Mod, hibernate, Debug) -> proc_lib:hibernate(?MODULE,wake_hib,[Parent, Name, State, Mod, Debug]); loop(Parent, Name, State, Mod, Time, Debug) -> ...
erl node启动方法 short name: erl -sname Name erl -sname Name@ShortHost longname: erl -name Name erl -name Name@ShortHost erl -name Name@FullHost 说明: Name :: atom() || string() ShortHost :: atom() || string(), 不可含有"."。比如"myhost" FullHost :: [ShortHost()] || Ip, 比如"test ...
Nitrogen web framework 入门 Author: litaocheng@gmail.com Data: 2009-1-23 Version: 0.1 目录 1   概述 2   特性 3   期待 4   术语(Glossary of Terms) 5   应用的结构 6   一个简单的例子 7   更多阅读 1   概述 Nitrogen是一个使用Erlang开发的Web Framework 2   特性
概述 CouchDB,大家或多或少都听说过。它到底有什么特性,适合哪些应用场景,和我们常用的关系型数据库有什么区别? 这些问题,可能我们心里都不是非常清楚。在以前的Blog中(PS,不是在javaeye哦),我提及了几次CouchDB,但是仅 ...
Erlang tools lib中包含三个用于性能分析的工具:cprof,eporf和fprof。 cprof 提供函数调用计数,其对系统的性能影响最小 eprof 提供函数运行时间的百分比 fprof 通过将trace存储到文件,提供函数调用计数及运行时间统计信息 这里我们主要介绍fprof,首先其提供的信息最为详细,其次因为将trace存储到文件中,我们可以进行较长运行时间的性能分析 fprof使用 1,fprof:start(). 2, fprof:apply fprof:profile fprof:analyse       OR   ...
这两天在调试程序,今天刚刚去除了一个小bug:使用inets http client进行Post请求时,mochiweb 总是接收错误,开始怀疑json encode错误,否决;后来想到是不是http request错误呢?认真查看文档: request(Method, Request, HTTPOptions, Options) request() - {url(), headers(), content_type(), body()} body() = string() | binary() 哦,原来是我没有认真的查看文档,这里的body是string或binary,不再是iolist了, ...
Erlang一个非常值得称道的特性就是代码热替换(Hot Code Sawpping),我们在调用函数时,通过M:F(A)的方式,可以保证总是加载最新的代码。 在《Erlang程序设计》中E4部分,通过一个小例子展示了代码的动态加载,两个module代码如下: a.erl -module(a). -compile(export_all). -import(b, [x/0]). start(Tag) -> spawn(fun() -> loop(Tag) end). loop(Tag) -> timer:sleep(3000), ...
今天MailList中一个问题,在Application和Includeed Application中调用application:get_application/0,返回都是Primary Applicaion Name,为什么是这样呢? 在Erlang OTP中Application可以包其他Application,也就是Included Application。我前阵子在项目中也尝试使用Includeed App,可是等我认真看OTP doc的时候,发现我也理解偏差了。 Primary Application启动时,会Load所有的Included Application,但是不会Sta ...
Literal Term int, float, atom, tuple, list, binary in predefined attributes and user-defined attributes, the Value must be literal term. for example: some_module.erl ... -attr1(1). -attr2(1.0). -attr3(correct). -attr4({1, 0}). -attr5("good"). -attr6(<<"good">>). ... ...
在分布式系统中,因为涉及到大量的机器,所以部署略微有些繁琐。 使用Erlang开发的系统,我们可以通过boot_server来加载我们的代码,免去了ssh登陆服务器,更新代码这样繁琐的步骤。我们只需要将最新的beam文件放到一个server,作为Erlang的boot_server,其他的机器启动Erlang时,通过连接这个Boot Server加载最新的应用代码,完成程序的启动。 架设Server ip为:8.17.85.135 其中一个Client为: 124.118.219.104 启动一个Boot Server涉及的主要模块为erl_boot_server,我们可以通过erlang ...
pid 既可以代表本地的process,也可以代表其他节点即远程 process,因此pid ! Msg,既可以向本地节点又可以向其他节点发送消息。 如何来区分local pid和remote pid呢,让我们先看看pid具体包含哪些信息。 打印pid变量的时候,其为X.Y.Z格 ...
昨天写了一个简单的文档,为想学习Erlang的朋友,提供一点点的资料。 书写仓促,纰漏难免。望各位朋友不吝指正。
http://code.google.com/p/erlkad/ 闲暇无事,就用erlang写了一个kad libarary。 放到google code上,最近刚做完单元测试,还需要进一步的测试。 还有一点就是没有做好release,回头准备用erlware的系列工具来生成安装包。 回头会写一些开发过程中的心得。 :)
1个月前写ecrawler的时候,需要一个lru cache算法。 erlang中好像没有特别合适的选择,就自己实现了一个。 思想: 采用gb_trees保存key-value pair,可以实现快速的key lookup,但是当发生替换时, 需要根据访问时间清理item,我们可能需要gb_trees中的数据导入到list中,随后进行排序,然后调换掉比较旧的内容。为了改善性能,我将数据在list中做一个拷贝,但是注意不包含value,只是key和一些状态信息。 当发生替换时,我们可以直接对list进行排序(也可以在每次操作的时候,将item插入到list中的合适位置,保持list有序),随后删除 ...
我们以Module代表gen_server的callback模块 1, 实现gen_server behaviour的模块会产生一个新的process么? 毫无疑问,太会了!通过调用proc_lib:start_link/5创建process 2, gen_server:start_link/3,4中的Options参数有什么用处? Options中只有这几个选项:{debug,Dbgs} | {timeout,Time} | {spawn_opt,SOpts}, debug是用来和sys模块相关联的;咱们通过proc_lib:start_link/5创建process的时候,如果初始化等待的 ...
Global site tag (gtag.js) - Google Analytics