热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于erlang的run的启动参数

在github上,关于erlang的一致性hash,有erlang-ryng和hash_ring.在这里先聊下erlang-ryng这个.在erlang

在github上,关于erlang的一致性hash,有erlang-ryng和 hash_ring .在这里先聊下erlang-ryng这个. 在erlang-ryng的启动方式上,github上提供了原始的启动方式,即直接在erlang shell下输入 erl -pa ebin -run ryng manual_start

$ erl -pa ebin -run ryng manual_start
Erlang R16B02 (erts
-5.10.3) [source] [64-bit] [smp:2:2] [async-threads:10] [kernel-poll:false] [dtrace]Eshell V5.10.3 (abort with ^G)
1> ryng:new_ring([{id, my_ring}]).
{ok,
<0.47.0>}
2> ryng:add_node(my_ring, node0).
ok
3> %% weight &#61; 1: counts as 2 when there&#39;s one other node of weight 0
3> ryng:add_node(my_ring, node1, 1).
ok
4> %% weight &#61; 0, priority &#61; 1: will only be selected if priority 0 is empty
4> ryng:add_node(my_ring, node2, 0, 1).
ok
5> ryng:sync_ring(my_ring).
ok
6> ryng:node_for(my_ring, erlang:now()).
{ok,node1}
7> ryng:node_for(my_ring, erlang:make_ref()).
{ok,node1}
8> ryng:node_for(my_ring, random:uniform()).
{ok,node1}
9> ryng:list_rings().
{ok,[{ryng_ring_v1,my_ring,sha,
160,#Fun2.107634887>,1461501637330902918203684832716283019655932542976,[{0,487167212443634306067894944238761006551977514325},{1,1461501637330902918203684832716283019655932542976}],[{0,3},{1,1}],16402,20499,true,undefined}]}
10> ryng:list_nodes(my_ring).
{ok,[{ryng_node_v1,node0,
0,0},{ryng_node_v1,node1,0,1},{ryng_node_v1,node2,1,0}]}
11> ryng:balance_summary(my_ring).
{ok,[{
0,node0,0.3333333333333333},{0,node1,0.6666666666666666},{1,node2,1.0}]}
12> ryng:balance_check(my_ring, 1000000).
{ok,{
1000000,1281043,1.281043},[{node0,333425,0.333425},{node1,666575,0.666575}]}
13> ryng:del_node(my_ring, node1).
ok
14> ryng:sync_ring(my_ring).
ok
15> ryng:balance_summary(my_ring).
{ok,[{
0,node0,1.0},{1,node2,1.0}]}
16> ryng:balance_check(my_ring, 1000000).
{ok,{
1000000,1154860,1.15486},[{node0,1000000,1.0}]}
17> ryng:del_node(my_ring, node0).
ok
18> ryng:sync_ring(my_ring).
ok
19> ryng:balance_summary(my_ring).
{ok,[{
1,node2,1.0}]}
20> ryng:balance_check(my_ring, 1000000).
{ok,{
1000000,1157669,1.157669},[{node2,1000000,1.0}]}
21> ryng:rm_ring(my_ring).
ok
22> ryng:list_rings().
{ok,[]}

View Code

 

 而-run ryng manual_start ,我们一般不这么用&#xff0c;而根据erlang shell的解释&#xff0c;-run Mod [Func [Arg1, Arg2, ...]](init flag) 解释为 Makes init call the specified function.

这样我们就明白了&#xff0c;使init调用这个指定函数. 而 这个ryng 模块的 manual_start 函数是干什么的呢&#xff1f;

进入代码看下:

%% &#64;doc Manually start ryng and all dependencies.
-spec manual_start() -> ok.
manual_start()
->require([crypto, ryng]).

而require/2 这个函数的作用是做什么的呢&#xff1f;

%% &#64;doc Start the given applications if they were not already started.
%%
&#64;private
-spec require(list(module())) -> ok.
require([])
->ok;
require([App
|Tail]) ->case application:start(App) ofok -> ok;{error, {already_started, App}} -> okend,require(Tail).

 

 这样就依次启动了application&#xff0c;通过尾递归实现了。 这样的写法还是不错的&#xff0c;而我们在application启动的时候&#xff0c;一般都直接添加个application启动。


转载于:https://www.cnblogs.com/unqiang/p/6086436.html


推荐阅读
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • IB 物理真题解析:比潜热、理想气体的应用
    本文是对2017年IB物理试卷paper 2中一道涉及比潜热、理想气体和功率的大题进行解析。题目涉及液氧蒸发成氧气的过程,讲解了液氧和氧气分子的结构以及蒸发后分子之间的作用力变化。同时,文章也给出了解题技巧,建议根据得分点的数量来合理分配答题时间。最后,文章提供了答案解析,标注了每个得分点的位置。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
author-avatar
不会游泳的鱼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有