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 支持。

相关推荐
李小星同志28 分钟前
高级算法设计与分析 学习笔记6 B树
笔记·学习
霜晨月c39 分钟前
MFC 使用细节
笔记·学习·mfc
Jhxbdks1 小时前
C语言中的一些小知识(二)
c语言·开发语言·笔记
小江湖19941 小时前
元数据保护者,Caesium压缩不丢重要信息
运维·学习·软件需求·改行学it
AlexMercer10121 小时前
【C++】二、数据类型 (同C)
c语言·开发语言·数据结构·c++·笔记·算法
dot.Net安全矩阵1 小时前
.NET内网实战:通过命令行解密Web.config
前端·学习·安全·web安全·矩阵·.net
微刻时光2 小时前
Redis集群知识及实战
数据库·redis·笔记·学习·程序人生·缓存
chnyi6_ya2 小时前
一些写leetcode的笔记
笔记·leetcode·c#
青椒大仙KI113 小时前
24/9/19 算法笔记 kaggle BankChurn数据分类
笔记·算法·分类
liangbm34 小时前
数学建模笔记——动态规划
笔记·python·算法·数学建模·动态规划·背包问题·优化问题