小编Che*_* Yu的帖子

如何调整套接字描述符?

在此输入图像描述

我想知道谁来调整套接字描述符的数量?

另外,如何自动关闭有限超时的连接?

rabbitmq

21
推荐指数
2
解决办法
1万
查看次数

如果进程的pid已知,如何查看一个指定的进程消息队列?

在Erlang shell中,flush()可以用来获取shell进程的消息队列.

是否可以通过了解其PID来了解另一个进程的消息队列长度?

erlang

10
推荐指数
1
解决办法
5750
查看次数

什么时候在Erlang中使用throw/1 vs. exit/1 vs. error/1?

今天为了捕获错误问题,我已阅读erlang's错误和错误处理文档.

对于生成的错误类型,有两种类型,一种是exit,另一种是throw.在点击我的源代码之后,throw and exit表达式已经集中了.

两者都相似,似乎只是捕捉匹配表达是不同的.

(emacs@chen-yumatoMacBook-Pro.local)30> catch throw ({aaa}).
{aaa}
(emacs@chen-yumatoMacBook-Pro.local)31> catch exit ({aaa}).
{'EXIT',{aaa}}
(emacs@chen-yumatoMacBook-Pro.local)32> catch gen_server:call(aaa,{aaa}).
{'EXIT',{noproc,{gen_server,call,[aaa,{aaa}]}}}
Run Code Online (Sandbox Code Playgroud)

你能告诉我什么时候使用throw以及何时使用exit?

erlang

8
推荐指数
2
解决办法
1945
查看次数

Emacs:当前缓冲区的编码系统

我已经习惯用pc来开发erlang程序,一个是mac os x 10.6,另一个是mac os x 10.7.

".emacs"两个pc的文件中,它包含以下脚本

;;handle emacs utf-8 input
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
Run Code Online (Sandbox Code Playgroud)

但是当我在一台电脑中输入包含汉字的备注并保存,然后下载到另一台电脑.中文字符无法正确显示.反向操作的相同故事.

我想知道如何检查当前文件的编码类型?有没有命令可以做到这一点?

emacs character-encoding

7
推荐指数
1
解决办法
1864
查看次数

erlang:监视器和'DOWN'消息

仔细研究"gproc"项目的gproc_tests.erl文件时.我找到了以下代码."再见"消息在"erlang:monitor/2"之前发送,我认为有可能不会收到"DOWN"消息.这是对的吗?如果是这样,应该切换两条线,对吧?

t_simple_aggr_counter() ->
    ?assert(gproc:reg({c,l,c1}, 3) =:= true),
    ?assert(gproc:reg({a,l,c1}) =:= true),
    ?assert(gproc:get_value({a,l,c1}) =:= 3),
    P = self(),
    P1 = spawn_link(fun() ->
                gproc:reg({c,l,c1}, 5),
                P ! {self(), ok},
                receive
                {P, goodbye} -> ok
                end
            end),
    receive {P1, ok} -> ok end,
    ?assert(gproc:get_value({a,l,c1}) =:= 8),
    ?assert(gproc:update_counter({c,l,c1}, 4) =:= 7),
    ?assert(gproc:get_value({a,l,c1}) =:= 12),
    P1 ! {self(), goodbye},  %<<===========This line
    R = erlang:monitor(process, P1), %<<======This line
    receive {'DOWN', R, _, _, _} ->
        gproc:audit_process(P1)
    end,
    ?assert(gproc:get_value({a,l,c1}) =:= 7).
Run Code Online (Sandbox Code Playgroud)

erlang

5
推荐指数
2
解决办法
2108
查看次数

什么是gen:开始意义?

在项目gproc的文件gen_leader.erl中,创建了自定义行为.但在下面的陈述中,什么是模块"gen"?我在"erlang文档工具http://www.erlang.org/erldoc "中找不到这个模块?你能给我一些解释吗?

behaviour_info(callbacks) ->
    [{init,1},
     {elected,2},
     {surrendered,3},
     {handle_leader_call,4},
     {handle_leader_cast,3},
     {handle_local_only, 4},
     {from_leader,3},
     {handle_call,3},
     {handle_cast,2},
     {handle_DOWN,3},
     {handle_info,2},
     {terminate,2},
     {code_change,4}];
behaviour_info(_Other) ->
    undefined.

start_link(Name, [_|_] = CandidateNodes, Workers, 
       Mod, Arg, Options) when is_atom(Name) ->
    gen:start(?MODULE, link, {local,Name}, Mod, %<<++++++ What's the meaning?
          {CandidateNodes, Workers, Arg}, Options).
Run Code Online (Sandbox Code Playgroud)

erlang

4
推荐指数
1
解决办法
910
查看次数

list转换为pid函数list_to_pid/1限制

当测试开源项目'gproc'函数时,我发现list_to_pid对于本地pid是好的,而对于远程pid则不行.我的erlang运行时是R15B.

(dist_test_n2@yus-iMac.local)29> D = list_to_pid("<0.239.0>").
<0.239.0>
(dist_test_n2@yus-iMac.local)30> D == self(). %% equal here
true
(dist_test_n2@yus-iMac.local)31> f(E).
ok
(dist_test_n2@yus-iMac.local)32> E = gproc:where(Name).       
<8969.239.0>
(dist_test_n2@yus-iMac.local)33> F = list_to_pid("<8969.239.0>").
<8969.239.0>
(dist_test_n2@yus-iMac.local)34> F == E. %% not equal here
false
Run Code Online (Sandbox Code Playgroud)

从用户指南有关此功能,没有这样的限制.是bug吗?

erlang

4
推荐指数
1
解决办法
6101
查看次数

如何将远程pid转换为节点名称?

在决定一个客户端参数结构到一个OTPgen_server 时,是否需要将Pid和 都Node name插入到参数结构中?

给定一个遥控器pid,是否可以转换pidnode name?我的意思是完整的节点名称,例如"emacs@yus-iMac.local".

erlang

4
推荐指数
1
解决办法
1385
查看次数

控制rabbitmq'名称'不是'sname'

在狮子OS上,安装后,运行时会发生错误.首先,不使用rabbitmq-env.config file,首先"sudo rabbitmq-server",以下消息显示:

yus-iMac:rabbitmq yuchen$ sudo rabbitmq-server
Activating RabbitMQ plugins ...

********************************************************************************
********************************************************************************

0 plugins activated:

ERROR: epmd error for host "yus-iMac": address (unable to establish tcp connection)
Run Code Online (Sandbox Code Playgroud)

然后我添加rabbitmq-env.conf文件.内容如下:

RABBITMQ_NODENAME=rabbitb@yus-iMac.local

When starting, another error message is given:

yus-iMac:rabbitmq yuchen$ sudo rabbitmq-server
Activating RabbitMQ plugins ...

********************************************************************************
********************************************************************************

0 plugins activated:

{error_logger,{{2012,5,26},{21,47,13}},"Can't set short node name!\n Please check your configuration\n",[]}
Run Code Online (Sandbox Code Playgroud)

我认为该消息意味着无法使用短节点.但我不知道如何控制rabbitmq-server使用name,而不是sname

crash erlang startup rabbitmq osx-lion

4
推荐指数
1
解决办法
3335
查看次数

erlang'basho/lager'日志应用程序,是否可以自定义模块日志级别?

在rabbitmq的源代码中,有一个文件,名为"rabbit_log.erl".它可以自定义不同模块的日志级别.自定义由应用程序环境实现.

例如,在.erlang文件中:

application:set_env(rabbit,log_levels,
        [{default,info},{aaa_connection,error}]).
Run Code Online (Sandbox Code Playgroud)

只有aaa_connection模块会显示"错误"级别,其他模块将显示"信息"级别模块.

我想知道可以在basho/lagerapp中自定义模块的日志级别吗?

erlang logging

4
推荐指数
1
解决办法
811
查看次数