`
liumengfan
  • 浏览: 31630 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
在rabbitMQ看到一段关于转换地址的代码: 留着以后用 %% inet_parse:address takes care of ip string, like "0.0.0.0" %% inet:getaddr returns immediately for ip tuple {0,0,0,0}, %% and runs 'inet_gethost' port process for dns lookups. %% On Windows inet:getaddr runs dns resolver for ip string, which may fail. ...

record小记

今天阅读rabbitMQ代码,遇到一段代码很疑惑: try log(info, "liufan the #v is ~p~n", [#v1.stats_timer]), run({?MODULE, recvloop, run({?MODULE, recvloop, [Deb, switch_callback(rabbit_event:init_stats_timer( State, #v1.stats_timer), ...
翻译自(http://www.rabbitmq.com/blog/2014/02/19/distributed-semaphores-with-rabbitmq/) 在这篇博客里面,我们将定位“在一个分布式系统里面,如何实现对特殊资源的访问控制”的问题,解决该问题的方案在计算机界广为人知,那就是被成为信号量的东东。“信号量”是在1965年Dijkstra的“Cooperating Sequential Processes”论文里出现的,下面我们将要讨论如何使用AMQP的构建快(consumers,producers,queues)来实现信号量。 需要信号量的地方 在我们讨论解决方案之前,让我 ...

工作沟通二

   工作中总会遇到一些困难的事,每个人面对这些事的时候,会有不同的心态:直接放弃、凑活着做,将过且过、破罐子破摔,尽量想通过其它途径来使事情向好的方向发展,能使自己看到一点点希望。在这个过程中,你的心里会进行激烈的挣扎,而自己能挺过这段难熬的时间,把事情做下去,也许你会看到不一样的风景。    一个积极向上的人,在能力上的进步是不用担心的,但心态的成长是需要过程的,希望自己越做越好。 相信自己永远是最棒的
  自己接到了一个领导派发的任务,而在任务的执行过程中,自己会遇到各种各样的问题:与相关人员的沟通交流、遇到了难题、遇到了需要和相关人员沟通交流才能解决的问题、还有自己无法处理的意外情况。   当自己遇到各种情况的时候,需要分清事情的轻重缓急,有些自己可以解决,有些需要协商的,还有些是自己hold不住的。当自己遇到自己hold不住的问题,这时就需要向自己的上级领导反映了,不能让事情压在自己这里,而不暴露出事情的严重性给相关的人员。到时候,责任可能是自己负担不起的。就像程序一样,当函数自己catch住自己处理不了的异常的时候,就要补它throw出去,总有地方可以处理的。如果自己用错误的方式处理了这 ...
在看了Erlang新增全面的系统信息收集器-system_information模块之后,自己下载最新的代码,查看该模块,仔细看了一下 report() -> [ {init_arguments, init:get_arguments()}, {code_paths, code:get_path()}, {code, code()}, {system_info, erlang_system_info()}, {erts_compile_info, erlang:system_info(compile_info ...
当我们完成erlang的正常配置和编译后,我们可以构建一个debug模式的erlang运行时系统,过程如下: 首先我们再源代码的根目录导出ERL_TOP环境变量:export ERL_TOP=`pwd` 然后进入$ERL_TOP/erts/emulator目录下面,执行:make debug FLAVOR=smp或者make debug FLAVOR=plain 我们要调试的时候 就可以在otp的binx目录下运行  cerl -debug -gdb -break main 详细的步骤可以参考$ERL_TOP/HOWTO/INDTALL.md文件。 再霸爷的博客里搜集到了下面的知识 引用 1 ...

${1+"$@"}

今天看到erl启动脚本的时候,看到 ROOTDIR="/usr/local/lib/erlang" BINDIR=$ROOTDIR/erts-5.10.2/bin EMU=beam PROGNAME=`echo $0 | sed 's/.*\///'` export EMU export ROOTDIR export BINDIR export PROGNAME exec "$BINDIR/erlexec" ${1+"$@"} 这个脚本首先初始化一些环境变量,其中: PROGNAME=`echo $0 | sed ...
参照该文章安装SystemTap and Erlang: a tutorial
今天读到riak_sysmon时,看到列表解析的特殊用法,以前没见过,特做下笔记。 %%-------------------------------------------------------------------- %% @private %% @doc %% Initializes the server %% %% @spec init(Args) -> {ok, State} | %% {ok, State, Timeout} | %% i ...
自己尝试使用erl_eval做一些联系,发掘改模块的功能: [root@dev-emp-com work]# erl Erlang R14B (erts-5.8.1) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false] Eshell V5.8.1 (abort with ^G) 1> Binding1 = erl_eval:new_bindings(). [] 2> Binding2 = erl_eval:add_binding('A', 1, Bindin ...
通过erlang,我们可以使用 {ok, Ts, _} = erl_scan:string(String). 来获取Tokens,然后调用: {ok, Expr} = erl_parse:parse_exprs(Ts). 转换成可以执行的表达式,之后通过 erl_eval:exprs(Expr, Binding). 来执行表达式。 实验步骤如下: 1> F =fun(Str,Binding) -> 1> {ok,Ts,_} = erl_scan:string(Str), 1> io:format("~p~n", [Ts]), ...
今天看到Erlang 动态执行和erlang动态解释, 实验的代码如下: -module(dsl). -compile([export_all]). broker() -> receive {buy, Quantity, Ticker} -> % 向外部系统下单的具体代码放在这里 % Msg = "Order placed: buying ~p shares of ~p~n", io:format(Msg, [Quantity, Ti ...
引用Erlang如何查看gen_server系列的状态 (高级) 引用 gen_server在erlang otp编程中的地位是无可撼动的,几乎都是gen_server或者gen_fsm的模型。那么程序运行起来的时候 我们如何查看gen_server的内部状态呢。有2种方法: 1. 自己写个类似于info这样的函数,来获取状态。 2. 利用系统现有的架构。sasl应用带了一个si的东西 全名是status inspector, 这个东西就是设计来帮用户解决这个问题的。 实验开始: root@nd-desktop:~# cat abc.erl -module(abc). -behaviour( ...
今天看了霸爷的节点间通讯的通道微调和谁引起busy_dist_port之后,自己将两章的内容连起来,组合成一个小程序,通过节点名查到相应的port,然后通过port查到相应的节点名,代码如下: -module(busyPort). -compile([export_all]). start(Node) -> Port = node_port(Node), annotate_port(busy_dist_port, Port, get_node_map()). node_port(Node)-> {_, Owner}=lists:keyfind( ...
Global site tag (gtag.js) - Google Analytics