小编pol*_*per的帖子

Erlang AMQP 客户端库

是否有一个与 RabbitMQ 无关的 Erlang AMQP客户端库?

我知道rabbitmq-erlang-client,但我想要一些更解耦的东西......在为Debian存储库打包这些东西,安装等时很痛苦......

erlang amqp rabbitmq

5
推荐指数
1
解决办法
1135
查看次数

主管是否需要开始自己的主管?

假设我有一个主管,我需要start_child为这个主管执行一些。我必须先启动所有启动我的主管吗?或者我可以supervisor:start_child(my_sup,[])不启动 my_sup 吗?

erlang erlang-otp erlang-supervisor

5
推荐指数
1
解决办法
3873
查看次数

为什么 Dialyzer 没有捕捉到这个简单的错误?

Dialyzer 不会发出此函数返回类型不一致的信号:

-spec myfun(integer()) -> zero | one.
myfun(0) -> zero;
myfun(1) -> one;
myfun(2) -> other_number.
Run Code Online (Sandbox Code Playgroud)

但它在最后一行的情况下检测到

myfun(_) -> other_number.
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我相信以上应该是一个非常简单的案例。

谢谢

erlang dialyzer

5
推荐指数
1
解决办法
247
查看次数

为什么两个方法引用被编译到两个不同的地址?

我两次引用相同的方法,但引用不同。看这个例子:

import java.util.function.Consumer;

public class MethodRefTest {
    public static void main(String[] args) {
        new MethodRefTest();
    }

    public MethodRefTest() {
        Consumer<Integer> a = this::method;
        System.out.println(a);
        Consumer<Integer> b = this::method;
        System.out.println(b);
    }

    public void method(Integer value) {

    }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

MethodRefTest$$Lambda$1/250421012@4c873330
MethodRefTest$$Lambda$2/295530567@776ec8df
Run Code Online (Sandbox Code Playgroud)

方法引用只不过是匿名类的语法糖吗?如果不是,我该怎么做才能始终获得相同的方法引用?(除了在字段中存储一次参考以供使用之外。)

(应用:我认为方法引用是观察者实现的一种更漂亮的方式。但是每次使用不同的引用,一旦添加观察者就不可能从可观察者中删除观察者。)

java functional-interface method-reference

5
推荐指数
1
解决办法
386
查看次数

对主管重启策略的名称有何解释?

OTP 主管重启策略名称对我来说似乎很奇怪,可能是因为我的母语不是英语。

  • one_for_one:当一个孩子死亡时,它会重新启动该孩子
  • one_for_all:当一个孩子死亡时,它会杀死所有其他孩子并按顺序重新启动它们
  • rest_for_one:当一个孩子死亡时,它会杀死在该死亡孩子之后启动的所有孩子,并按顺序重新启动它们

我试图通过将它们读作句子来理解这些策略名称,例如“重新启动one孩子for one的死亡”。
那么要么one_for_allorrest_for_one对我来说似乎是一个颠倒的名字。( "restart one child for all children's death"??)

为什么这些策略如此命名?

cf erlang 文档one_for_all部分有一个数字说“全对一监督”。这只是一个错字吗?

erlang erlang-otp erlang-supervisor

5
推荐指数
1
解决办法
205
查看次数

Google Pub/Sub 性能(低负载下的延迟)?

我们即将选择 Google Cloud Pub/Sub 作为我们的消息总线。一些消息需要在低延迟持续时间(例如小于 100-200 毫秒)内进行调度。

我在某处读到,在大量消息中,它表现良好,但对于每秒数百条消息等较少数量的消息,Pub/Sub 可能会产生高延迟。

在上一个问题中,主题也不清楚。从 2016 年开始,谷歌云发布/订阅延迟是多少

是否有任何关于 Pub/Sub 延迟和与消息量关系的定义指标?

latency message-queue google-cloud-pubsub

5
推荐指数
1
解决办法
6329
查看次数

为什么我不能在 Windows 中启动一个命名的 Erlang 节点?

我正在尝试使用 Windows XP Home 中的 -sname 选项启动一个命名的 Erlang 节点,但是当我运行 erl 时,它会打印出一条我不明白的长错误消息,然后退出:

> erl -sname allyourcode
{error_logger,{{2009,5,25},{16,20,57}},"Protocol: ~p: register error: ~p~n",["in
                                                                             et_tcp",{{badmatch,{error,econnrefused}},[{inet_tcp_dist,listen,1},{net_kernel,s
                                                                                                                                                 tart_protos,4},{net_kernel,start_protos,3},{net_kernel,init_node,2},{net_kernel,
                                                                                                                                                                                                                      init,1},{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}]}
{error_logger,{{2009,5,25},{16,20,57}},crash_report,[[{initial_call,{net_kernel,
                                                                     init,['Argument__1']}},{pid,},{registered_name,[]},{error_info,{exit,{er
                                                                                                                                           ror,badarg},[{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}},{ancestors,[
                                                                                                                                                                                                                           net_sup,kernel_sup,]},{messages,[]},{links,[#Port,]},{dicti
                                                                                                                                                                                                                                                                                 onary,[{longnames,false}]},{trap_exit,true},{status,running},{heap_size,610},{st
                                                                                                                                                                                                                                                                                                                                                               ack_size,24},{reductions,490}],[]]}
{error_logger,{{2009,5,25},{16,20,57}},supervisor_report,[{supervisor,{local,net
                                                                       _sup}},{errorContext,start_error},{reason,{'EXIT',nodistribution}},{offender,[{p
                                                                                                                                                      id,undefined},{name,net_kernel},{mfa,{net_kernel,start_link,[[allyourcode,shortn
                                                                                                                                                                                                                    ames]]}},{restart_type,permanent},{shutdown,2000},{child_type,worker}]}]}
{error_logger,{{2009,5,25},{16,20,57}},supervisor_report,[{supervisor,{local,ker
                                                                       nel_sup}},{errorContext,start_error},{reason,shutdown},{offender,[{pid,undefined
                                                                                                                                         },{name,net_sup},{mfa,{erl_distribution,start_link,[]}},{restart_type,permanent}
                                                                                                                                        ,{shutdown,infinity},{child_type,supervisor}]}]}
{error_logger,{{2009,5,25},{16,20,57}},std_info,[{application,kernel},{exited,{s
                                                                               hutdown,{kernel,start,[normal,[]]}}},{type,permanent}]}
{"Kernel pid terminated",application_controller,"{application_start_failure,kern
                                                  el,{shutdown,{kernel,start,[normal,[]]}}}"}

Crash dump was written to: erl_crash.dump
Kernel pid terminated (application_controller) ({application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}})
Run Code Online (Sandbox Code Playgroud)

我想包含 erl_crash.dump 文件,但我不知道这样做的好方法,因为它很长。

起初,我以为我遇到了防火墙问题,因为我第一次尝试这样做时,我的防火墙询问我是否会授予不同程序的权限,我做到了;然而,即使在禁用我的防火墙后,我仍然遇到同样的问题。

改用 -name 似乎也无济于事。

windows erlang

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

Erlang Eunit 测试套件的常用设置和拆卸方法

我正在尝试检查我在 MongoDB 中定义的所有索引是否正在被我的应用程序使用,并且没有额外的索引。我有一个实用程序可以为单个Eunit测试套件执行此操作。但是,我的一些组件有多个Eunit测试套件,我想知道是否有办法在调用任何测试套件之前运行通用代码,然后在所有测试套件完成后运行通用拆卸代码。我rebar用来调用Eunit.

提前致谢。

erlang eunit

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

如何删除Erlang中字符串内的周围引号?

我正在使用epgsqlErlang 查询数据库。它返回字符串结果包括它们周围像这样引号:"what_was_in_the_row"。如何在处理结果之前删除这些引号?

string erlang

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

Erlang选择接收机制的细节是什么?

我在文末读过一篇关于Erlang select receive机制的文章,有一个结论:“消息从邮箱移动到保存队列,然后在匹配的消息到达后返回到邮箱”。我已经尝试过文章中显示的示例,但无法得到相同的结果。这是我的代码,我的 erlang/otp 版本是 21。

shell1:
(aaa@HW0003727)1> register(shell, self()).
true
(aaa@HW0003727)2> shell ! c, shell ! d.
d
(aaa@HW0003727)3> process_info(whereis(shell),messages).
{messages,[c,d]}.
(aaa@HW0003727)4> receive a -> 1; b -> 2 end.


shell2:
(aaa@HW0003727)1> process_info(whereis(shell),messages).
{messages,[c,d]}
(aaa@HW0003727)2> process_info(whereis(shell)).          
[{registered_name,shell},
 {current_function,{prim_eval,'receive',2}},
 {initial_call,{erlang,apply,2}},
 {status,waiting},
 {message_queue_len,2},
 {links,[<0.113.0>]},
 {dictionary,[]},
 {trap_exit,false},
 {error_handler,error_handler},
 {priority,normal},
 {group_leader,<0.112.0>},
 {total_heap_size,4212},
 {heap_size,1598},
 {stack_size,30},
 {reductions,13906},
 {garbage_collection,[{max_heap_size,#{error_logger => true,kill => true,size => 0}},
                      {min_bin_vheap_size,46422},
                      {min_heap_size,233},
                      {fullsweep_after,65535},
                      {minor_gcs,1}]},
 {suspending,[]}]
Run Code Online (Sandbox Code Playgroud)

文章。

erlang erlang-otp erlang-shell

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