erlang (erlang 操作模块)学习笔记(四)

map_size

Erlang 复制代码
1> map_size(#{a=>1, b=>2, c=>3}).
3

返回一个整数,即键值对的数量

max

Erlang 复制代码
2> max(1, 2).
2
3> max(1.0, 1).
1.0
4> max(1, 1.0).
1
5> max("abc", "b").
"b"

返回 Term1 和 Term2 中最大的值。如果这些项与 == 运算符,Term1 是 返回。

min

Erlang 复制代码
6> min(1, 2).
1
7> min(1.0, 1).
1.0
8> min(1, 1.0).
1
9> min("abc", "b").
"abc"

返回 Term1 和 Term2 中的最小值。如果这些项与 == 运算符,Term1 是 返回。

pid_to_list

Erlang 复制代码
10> erlang:pid_to_list(self()).
"<0.79.0>"

返回与文本对应的字符串 Pid 的表示。

processes

Erlang 复制代码
11> processes().
[<0.0.0>,<0.1.0>,<0.2.0>,<0.3.0>,<0.4.0>,<0.5.0>,<0.6.0>,
 <0.7.0>,<0.10.0>,<0.42.0>,<0.44.0>,<0.46.0>,<0.47.0>,
 <0.49.0>,<0.50.0>,<0.51.0>,<0.52.0>,<0.53.0>,<0.54.0>,
 <0.55.0>,<0.56.0>,<0.57.0>,<0.58.0>,<0.59.0>,<0.60.0>,
 <0.61.0>,<0.62.0>,<0.63.0>,<0.64.0>|...]

返回对应于 本地节点上当前存在的所有进程。请注意,退出进程存在,但不是活动进程。 也就是说,is_process_alive/1 对于正在退出的进程返回 false,但其进程标识符是 part 从进程返回的结果/0。

put

Erlang 复制代码
12> X = put(name, walrus), Y = put(name, carpenter),
12> Z = get(name),
12> {X, Y, Z}. 
{undefined,walrus,carpenter}

将新的 Key 添加到进程字典中, 与值 Val 关联,并返回 undefined。如果 Key 存在,则旧的 value 被删除并替换为 Val,并且 该函数返回旧值。平均时间 此函数当前实现的复杂度为 O(1),最坏情况下的时间复杂度为O(N), 其中 N 是流程中的项数 字典。

registered

Erlang 复制代码
14> registered().
[kernel_safe_sup,kernel_sup,user,global_name_server,
 global_group,file_server_2,standard_error,kernel_refc,
 logger_sup,logger_std_h_default,erts_code_purger,
 code_server,erl_signal_server,erl_prim_loader,logger_proxy,
 application_controller,init,inet_db,socket_registry,logger,
 rex,logger_handler_watcher,standard_error_sup,user_drv]

返回已使用 register/2 注册的名称列表。

round

Erlang 复制代码
15> round(42.1).             
42
16> round(5.5).
6
17> round(-5.5).
-6
18> round(36028797018963969.0).
36028797018963968

通过舍入 Number 返回一个整数,在最后一个示例中,round(36028797018963969.0) 的计算结果为 36028797018963968。这样做的原因是 数字 36028797018963969.0 无法表示 与浮点值完全相同。相反,float 文本是 表示为 36028797018963968.0,这是最接近的数字 这可以完全表示为浮点值。

self

Erlang 复制代码
19> self().
<0.79.0>

返回调用进程的进程标识符。

setelement

Erlang 复制代码
20> setelement(2, {10, green, bottles}, red).
{10,red,bottles}

返回一个元组,该元组是参数 Tuple1 的副本,其中由整数参数 Index 指定的元素(第一个元素是索引为 1 的元素)替换为 argument 值。

size

Erlang 复制代码
21> size({morni, mulle, bwange}).
3
22> size(<<11, 22, 33>>).
3

返回元组中的元素数或 二进制或位串中的字节,对于位字符串,将返回整字节数。 也就是说,如果位数 在位串中不能被 8 整除,则得到 字节数向下舍入。

spawn

Erlang 复制代码
24> spawn(speed, regulator, [high_speed, thin_cut]). 
<0.105.0>
25> =ERROR REPORT==== 1-Feb-2024::22:04:13.252000 ===
Error in process <0.105.0> with exit value:
{undef,[{speed,regulator,[high_speed,thin_cut],[]}]}

返回启动者 启动的新进程的进程标识符 Module:Function 在 Args 中的应用。error_handler:undefined_function(模块, 如果 Module:Function/Arity 不存在(其中 Arity 是 Args 的长度),则新进程将评估 Function, Args)。错误处理程序 可以重新定义。如果 error_handler 未定义,或者用户已定义 重新定义了默认error_handler,其替换为 undefined,则发生原因为 undef 的故障。

split_binary

Erlang 复制代码
25> B = list_to_binary("0123456789").
<<"0123456789">>
26> byte_size(B).
10
27> {B1, B2} = split_binary(B,3).
{<<"012">>,<<"3456789">>}
28>  byte_size(B1).
3
29> byte_size(B2).
7

返回一个元组,其中包含作为结果的二进制文件 将 Bin 拆分为两部分 位置位置 这不是破坏性操作。手术后, 总共有三个二进制文件。

statistics

Erlang 复制代码
30> statistics(garbage_collection).
{538,586822,0}

返回有关垃圾回收的信息,对于某些实现,此信息可能无效。

Erlang 复制代码
31> erlang:statistics(microstate_accounting).
[#{counters =>
       #{aux => 0,check_io => 0,emulator => 0,gc => 0,other => 0,
         port => 0,sleep => 0},
   id => 4,type => scheduler}, 
 #{counters => #{aux => 0,check_io => 0,...},
   id => 6,type => dirty_cpu_scheduler},
 #{counters => #{aux => 0,...},id => 5,...},
 #{counters => #{...},...},
 #{...}|...]

返回输入, 这是总字节数 通过端口接收,并输出, 这是输出到端口的总字节数。

Erlang 复制代码
32>  statistics(reductions).
{444785,444785}

返回有关减少的信息

Erlang 复制代码
33> statistics(runtime).
{3453,3453}

返回有关运行时的信息(以毫秒为单位)。这是所有线程的运行时总和 在 Erlang 运行时系统中,因此可以更大 比挂钟时间。

Erlang 复制代码
37> Ts1 = lists:sort(erlang:statistics(scheduler_wall_time)), ok.
ok
38> lists:map(fun({{I, A0, T0}, {I, A1, T1}}) ->                 
38> {I, (A1 - A0)/(T1 - T0)} end, lists:zip(Ts0,Ts1)).           
[{1,6.608032257562958e-4},
 {2,0.0},
 {3,0.0},
 {4,0.0},
 {5,0.0},
 {6,0.0},
 {7,0.0},
 {8,0.0},
 {9,0.0},
 {10,0.0},
 {11,0.0},
 {12,0.0},
 {13,0.0},
 {14,0.0},
 {15,0.0},
 {16,0.0},
 {17,0.0},
 {18,0.0},
 {19,0.0},
 {20,0.0},
 {21,0.0},
 {22,0.0},
 {23,0.0},
 {24,0.0}]

您可以使用scheduler_wall_time来计算 调度程序利用率。首先,对值进行采样 由 erlang:statistics(scheduler_wall_time) 返回。一段时间后,用户拍摄另一个快照并计算 每个调度程序的调度程序利用率。

term_to_binary

Erlang 复制代码
39> Bin = term_to_binary(hello).
<<131,100,0,5,104,101,108,108,111>>
40> hello = binary_to_term(Bin).
hello

返回一个二进制数据对象,该对象是根据 Erlang 外部对 Term 进行编码的结果 术语格式。这可以用于各种目的,例如, 以有效的方式将术语写入文件,或发送 Erlang 术语对某种类型的通信渠道不是 由分布式 Erlang 支持。

相关推荐
幼儿园老大*29 分钟前
走进 Go 语言基础语法
开发语言·后端·学习·golang·go
Selina K32 分钟前
shell脚本知识点记录
笔记·shell
44 分钟前
开源竞争-数据驱动成长-11/05-大专生的思考
人工智能·笔记·学习·算法·机器学习
ctrey_1 小时前
2024-11-4 学习人工智能的Day21 openCV(3)
人工智能·opencv·学习
啦啦右一1 小时前
前端 | MYTED单篇TED词汇学习功能优化
前端·学习
霍格沃兹测试开发学社测试人社区1 小时前
软件测试学习笔记丨Flask操作数据库-数据库和表的管理
软件测试·笔记·测试开发·学习·flask
今天我又学废了2 小时前
Scala学习记录,List
学习
幸运超级加倍~2 小时前
软件设计师-上午题-16 算法(4-5分)
笔记·算法
王俊山IT2 小时前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
Mephisto.java3 小时前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka