关于erlang的-run 的启动参数
在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.) [source] [-bit] [smp::] [async-threads:] [kernel-poll:false] [dtrace] Eshell V5.10.3 (abort with ^G)
> ryng:new_ring([{id, my_ring}]).
{ok,<0.47.>}
> ryng:add_node(my_ring, node0).
ok
> %% weight = : counts as when there's one other node of weight 0
> ryng:add_node(my_ring, node1, ).
ok
> %% weight = , priority = : will only be selected if priority is empty
> ryng:add_node(my_ring, node2, , ).
ok
> ryng:sync_ring(my_ring).
ok
> ryng:node_for(my_ring, erlang:now()).
{ok,node1}
> ryng:node_for(my_ring, erlang:make_ref()).
{ok,node1}
> ryng:node_for(my_ring, random:uniform()).
{ok,node1}
> ryng:list_rings().
{ok,[{ryng_ring_v1,my_ring,sha,,#Fun<ryng.2.107634887>,
,
[{,},
{,}],
[{,},{,}],
,,true,undefined}]}
> ryng:list_nodes(my_ring).
{ok,[{ryng_node_v1,node0,,},
{ryng_node_v1,node1,,},
{ryng_node_v1,node2,,}]}
> ryng:balance_summary(my_ring).
{ok,[{,node0,0.3333333333333333},
{,node1,0.6666666666666666},
{,node2,1.0}]}
> ryng:balance_check(my_ring, ).
{ok,{,,1.281043},
[{node0,,0.333425},{node1,,0.666575}]}
> ryng:del_node(my_ring, node1).
ok
> ryng:sync_ring(my_ring).
ok
> ryng:balance_summary(my_ring).
{ok,[{,node0,1.0},{,node2,1.0}]}
> ryng:balance_check(my_ring, ).
{ok,{,,1.15486},[{node0,,1.0}]}
> ryng:del_node(my_ring, node0).
ok
> ryng:sync_ring(my_ring).
ok
> ryng:balance_summary(my_ring).
{ok,[{,node2,1.0}]}
> ryng:balance_check(my_ring, ).
{ok,{,,1.157669},[{node2,,1.0}]}
> ryng:rm_ring(my_ring).
ok
> ryng:list_rings().
{ok,[]}
而-run ryng manual_start ,我们一般不这么用,而根据erlang shell的解释,-run Mod [Func [Arg1, Arg2, ...]](init flag) 解释为 Makes init call the specified function.
这样我们就明白了,使init调用这个指定函数. 而 这个ryng 模块的 manual_start 函数是干什么的呢?
进入代码看下:
%% @doc Manually start ryng and all dependencies.
-spec manual_start() -> ok.
manual_start() ->
require([crypto, ryng]).
而require/2 这个函数的作用是做什么的呢?
%% @doc Start the given applications if they were not already started.
%% @private
-spec require(list(module())) -> ok.
require([]) ->
ok;
require([App|Tail]) ->
case application:start(App) of
ok -> ok;
{error, {already_started, App}} -> ok
end,
require(Tail).
这样就依次启动了application,通过尾递归实现了。 这样的写法还是不错的,而我们在application启动的时候,一般都直接添加个application启动。
关于erlang的-run 的启动参数的更多相关文章
- erlang启动参数记录
不管在erlang的shell下还是脚本里,启动参数都是非常有用的,抽空儿整理下erlang的常用启动参数: +A size 异步线程池的线程数,范围为0~1024,默认为10 +P Number ...
- 如何查看docker run启动参数命令
通过runlike去查看一个容器的docker run启动参数 安装pip yum install -y python-pip 安装runlike pip install runlike 查看dock ...
- Eclipse启动参数
from 网络 eclipse 启动参数 -clean2013-- : eclipse 启动参数介绍(如添加插件时,如果不显示,则使用eclipse -clean启动) 其实,Eclipse是一个可以 ...
- php配置php-fpm启动参数及配置详解
约定几个目录 /usr/local/php/sbin/php-fpm/usr/local/php/etc/php-fpm.conf/usr/local/php/etc/php.ini一,php-fpm ...
- php-fpm 启动参数及重要配置详解
约定几个目录 /usr/local/php/sbin/php-fpm /usr/local/php/etc/php-fpm.conf /usr/local/php/etc/php.ini 一,php- ...
- linux下php-fpm 启动参数及重要配置
约定几个目录 /usr/local/php/sbin/php-fpm/usr/local/php/etc/php-fpm.conf/usr/local/php/etc/php.iniI. php-fp ...
- NetBeansRCP-添加/修改NetBeans的JVM启动参数
NetBeans运行的速度实在是不敢恭维.还好机器配置还可以,修改其JVM启动参数命令行,以期运行的更加顺畅. 那么如何修改NetBeans IDE的JVM参数呢? 1.到NetBeans IDE的安 ...
- JVM启动参数小结
一:JVM启动参数共分为三类: 其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容: 其二是非标准参数(-X),指的是JVM底层的一些配置参数, ...
- [置顶] linux内核启动1-启动参数(启动参数的获取和处理,分析setup_arch)
最近公司要求调试一个内核,启动时有问题,所以就花了一点时间看看内核启动. 看的过程中总结了一点东西,希望可以帮助大家调试内核. 当我开始看的时候,第一件事是从网上搜集资料,不看不知道,一看吓一跳!牛人 ...
随机推荐
- centOS 7 安装java sdk 并测试是否安装成功
CentOS 6.X 和 7.X 自带有OpenJDK runtime environment (openjdk).它是一个在linux上实现开源的Java 平台. 安装方式: 1.输入以下命令,以 ...
- linux下的用户管理(一)
linux下有三类用户: 1.超级用户:root具有操作系统的一切权限,UID值为0的是超级用户 2.普通用户:只具有操作系统有限的权限,UID是从500到6000范围 3.伪用户:是为了方便系统管理 ...
- 关于platform_device和platform_driver的匹配【转】
转自:http://blog.csdn.net/dfysy/article/details/5959451 版权声明:本文为博主原创文章,未经博主允许不得转载. 说句老实话,我不太喜欢现在Linux ...
- Matcher类详解2-group
Matcher.group是针对()来说的,group(0)就是指的整个串,group(1) 指的是第一个括号里的东西即匹配的第一个子表达式,group(2)指的第二个括号里的东西即匹配的第二个子表达 ...
- 三个div向左浮动不在同一行,向右浮动在同一行的解决办法
前几天在写代码的时候发现了一个问题,问题的大致描述如下: 在一个大的div中,同一行有三个小的div,当三个小的div均向左浮动时,会出现换行问题,均向右浮动时却在同一行. 解决这个问题的方法是在:在 ...
- 吉首大学 问题 L: 小李子的老年生活
时间限制: 1 Sec 内存限制: 128 MB提交: 719 解决: 27 题目描述 小李子有n-1个朋友,分别编号为1..n-1,小李子的编号是n ,小李子的表面朋友的编号会与小李子编号互质 ...
- Interview | Why are manhole covers round and not square or rectangular?
Manholes, which interconnect underground sewerage pipes, and serve as a point of entry for cleaning ...
- 设计模式(1)---Factory Pattern
针对的问题:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行. 第一步:创建接口 //创建一个接口 public interface Shape { pu ...
- Jackson是线程安全的吗
网上说是线程安全的,内部代码用了ThreadLocal.Synchronized这些线程安全类和关键字,可以放心的用. 避免每次使用都new一个,全局配置一个ObjectManager的对象将大大减少 ...
- iOS 定位坐标不准确的相关整理及解决方案汇总
这几天处理定位相关的代码,彻彻底底的被火星坐标恶心到了. 恶心列表 从 CLLocationManager 取出来的经纬度放到 mapView 上显示,是错的! 从 CLLocationManager ...