关于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)
最近公司要求调试一个内核,启动时有问题,所以就花了一点时间看看内核启动. 看的过程中总结了一点东西,希望可以帮助大家调试内核. 当我开始看的时候,第一件事是从网上搜集资料,不看不知道,一看吓一跳!牛人 ...
随机推荐
- 数据库一直显示"正在恢复"
restore database [DataBase] with recovery ALTER DATABASE DataBase SET OFFLINE WITH ROLLBACK IMMEDIAT ...
- [LeetCode] Populating Next Right Pointers in Each Node 深度搜索
Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...
- Magenta源代码笔记(3) —— 内存管理【转】
转自:http://blog.csdn.net/boymax2/article/details/52550197 版权声明:本文为博主原创文章,未经博主允许不得转载. Magenta内核支持虚拟地址的 ...
- Understand:高效代码静态分析神器详解(一)【转】
转自:http://www.codemx.cn/2016/04/30/Understand01/ 之前用Windows系统,一直用source insight查看代码非常方便,但是年前换到mac下面, ...
- mac使用matplotlib
mac系统,安装了matplotlib之后, 导入matplotlib.pyplot的时候报错 RuntimeError: Python is not installed as a framework ...
- Django之model F/Q以及多对多操作
model之F/Q操作 F操作,使用查询条件的值 打个比方吧,有一张表,保存着公司员工的工资,公司普涨工资,如何在model中操作,这就用到了F,首先需要导入此模块: from django.db.m ...
- AC日记——[HAOI2007]理想的正方形 P2216
[HAOI2007] 理想的正方形 思路: 正解多个单调队列: 但是我用树套树水了过去: 来,上代码: #include <cstdio> #include <cstring> ...
- bytearray和file的后端上传方式
public static String readAndUpload(String serverpath,String imgid) { if(serverpath==null){ serverpat ...
- Unix/Linux提权漏洞快速检测工具unix-privesc-check
Unix/Linux提权漏洞快速检测工具unix-privesc-check unix-privesc-check是Kali Linux自带的一款提权漏洞检测工具.它是一个Shell文件,可以检测 ...
- metasploit study
load db_trackerdb_nmap -T Aggressive -sV -n -O -v 192.168.0.107 绑定shelluse exploit/windows/smb/ms08_ ...