|
1 |
轻量级进程模型 |
底层实现:BEAM虚拟机使用预分配进程控制块(PCB),每个进程拥有独立堆栈和堆,通过减少指令计数器(reductions)实现协作式抢占调度。 |
Erlang/OTP R1A (1998) |
跨平台C语言实现,可移植至国产CPU(龙芯、飞腾、鲲鹏)及ARM架构;GPU/ASIC无原生支持,但可通过NIF扩展调用。 |
|
2 |
异步消息传递 |
底层实现:发送方将消息复制到接收方进程邮箱(mailbox),邮箱为无锁链表,接收方通过模式匹配从邮箱头部提取。 |
Erlang/OTP R1A (1998) |
同上;在信创场景下,若使用国产网络协议栈,需确保BEAM的TCP/IP驱动兼容。 |
|
3 |
模式匹配 |
底层实现:编译器将模式匹配表达式转化为嵌套case语句,并生成高效的标签分派表(tagged tuple dispatch),运行时通过类型标签快速跳转。 |
Erlang/OTP R1A (1998) |
纯软件特性,无硬件依赖。 |
|
4 |
热代码升级 |
底层实现:BEAM维护两个版本的模块代码(旧版与新版),通过引用计数跟踪进程正在执行的版本,新进程自动加载新版,旧版待所有引用释放后卸载。 |
Erlang/OTP R6B (2001) |
无特殊硬件要求,依赖操作系统信号处理机制。 |
|
5 |
分代垃圾回收(GC) |
底层实现:每个进程私有堆分为年轻代(Young)和老年代(Old),采用复制算法收集年轻代,存活对象晋升至老年代;老年代使用标记-清除算法。 |
Erlang/OTP R9C (2004) |
GC逻辑与CPU无关,但在多核环境下需注意TLB抖动,可通过巨页优化。 |
|
6 |
列表推导(List Comprehension) |
底层实现:编译器将列表推导展开为递归函数调用链,生成高效的分支代码,避免中间列表构造(通过累加器优化)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
7 |
位语法(Bit Syntax) |
底层实现:编译器将二进制模式匹配转换为针对字节/比特位的移位掩码操作,利用CPU的位运算指令(如BMI2)加速。 |
Erlang/OTP R10B (2005) |
可利用CPU的BMI/BMI2指令集(x86)或NEON(ARM)加速;国产CPU需确认是否支持类似扩展。 |
|
8 |
OTP监督树(Supervision Tree) |
底层实现:监督者进程通过监控子进程的退出信号,根据重启策略(one_for_one, rest_for_one等)自动重启崩溃的子进程。 |
Erlang/OTP R4B (2000) |
无硬件依赖,依赖操作系统进程管理。 |
|
9 |
ETS(Erlang Term Storage) |
底层实现:ETS表存储在BEAM的共享内存区域,使用哈希表(set/bag/duplicate_bag)或有序集合(ordered_set),支持并发读写,内部采用读写锁(RWLock)和脏操作优化。 |
Erlang/OTP R1A (1998) |
依赖原子操作(CAS);国产CPU需支持LL/SC或CAS指令。 |
|
10 |
DETS(Disk ETS) |
底层实现:基于磁盘的持久化ETS,使用固定大小页文件(默认16KB),内部采用B+树索引,写入时先写日志再刷盘。 |
Erlang/OTP R1A (1998) |
依赖文件系统IO;SSD可提升性能。 |
|
11 |
端口(Port) |
底层实现:BEAM通过外部进程(如C程序)与OS交互,端口驱动使用文件描述符和select/epoll事件循环,通过消息传递与Erlang进程通信。 |
Erlang/OTP R1A (1998) |
跨平台,依赖OS进程创建和IPC机制。 |
|
12 |
NIF(Native Implemented Functions) |
底层实现:动态链接库(.so/.dll)直接加载到BEAM地址空间,调用时无上下文切换,但必须遵守严格的时间限制(默认1ms),否则会触发调度器警告。 |
Erlang/OTP R13B (2009) |
需编译为目标机器码,兼容任何支持C ABI的CPU。 |
|
13 |
原子(Atom) |
底层实现:原子在编译时被编码为整数ID(最多1<<20个),存储在全局原子表中,运行时比较直接比较整数而非字符串。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
14 |
二进制(Binary) |
底层实现:二进制数据分为堆二进制(≤64字节)和引用计数二进制(更大),后者存储在共享堆外区域,通过指针引用,支持子二进制切片而不复制。 |
Erlang/OTP R10B (2005) |
无特殊硬件需求。 |
|
15 |
尾递归优化 |
底层实现:编译器检测尾调用(函数返回前最后一个表达式为自身或其他函数调用),将其转换为跳转指令,复用当前栈帧,避免栈溢出。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
16 |
守护条件(Guard) |
底层实现:编译器将guard表达式编译为一系列布尔检查和算术运算,不允许副作用,且只允许有限的内置函数(如is_integer, abs等)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
17 |
记录(Record) |
底层实现:记录在编译期被展开为元组,第一个元素为记录名原子,后续为字段值。访问记录字段实际是元组元素索引操作。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
18 |
宏(Macro) |
底层实现:预处理器在编译前进行文本替换,支持参数化宏和条件编译(-ifdef等)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
19 |
模块系统 |
底层实现:每个模块编译为.beam文件,包含代码、导出表、属性等。模块加载时BEAM解析字节码并链接到运行时环境。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
20 |
错误处理(throw/exit/error) |
底层实现:三种异常类型分别对应不同语义:throw用于非局部返回,exit表示进程终止,error表示程序错误。编译器生成对应的异常表,运行时通过栈回溯查找catch/try处理。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
21 |
映射(Map) |
底层实现:映射在内部使用哈希数组映射树(HAMT)或扁平哈希表(小映射用有序列表),键可以是任意Erlang项,支持模式匹配和更新。 |
Erlang/OTP 17.0 (2014) |
无特殊硬件依赖。 |
|
22 |
列表模块(lists) |
底层实现:lists模块函数(如map/filter/foldl)大部分用Erlang编写,编译器内联优化部分常用函数(如lists:reverse)。 |
h(L) |
+ |
|
23 |
进程字典(Process Dictionary) |
底层实现:每个进程内部维护一个哈希表(基于键-值对),通过put/get操作访问,不参与GC但随进程销毁而释放。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
24 |
定时器(timer) |
底层实现:timer模块基于gen_server实现,内部维护一个排序列表(最小堆),到期后发送消息给目标进程。 |
Erlang/OTP R1A (1998) |
依赖OS时钟中断;国产RTOS需确认定时器精度。 |
|
25 |
gen_tcp / gen_udp |
底层实现:基于端口驱动(inet_drv)封装socket API,使用非阻塞IO和epoll/kqueue事件循环,连接池管理。 |
Erlang/OTP R1A (1998) |
依赖OS网络协议栈;国产网卡需驱动支持。 |
|
26 |
分布式节点(Node Communication) |
底层实现:节点间通过TCP/IP连接,使用EPMD(Erlang Port Mapper Daemon)发现服务,消息序列化为二进制格式传输,支持加密(SSL)。 |
Erlang/OTP R1A (1998) |
依赖TCP/IP;国产网络设备需兼容EPMD端口(4369)。 |
|
27 |
Mnesia数据库 |
底层实现:基于ETS/DETS的分布式DBMS,支持事务(两阶段提交),使用锁机制(表级/记录级)和副本同步。 |
Erlang/OTP R1A (1998) |
无特殊硬件,依赖磁盘IO和网络。 |
|
28 |
代码服务器(code_server) |
底层实现:code_server是一个注册进程,管理模块加载、路径搜索和热升级,内部维护模块表(module table)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
29 |
应用(Application) |
底层实现:应用描述文件(.app)定义启动/停止回调,由application controller统一管理,支持启动类型(permanent/transient/temporary)。 |
Erlang/OTP R4B (2000) |
无硬件依赖。 |
|
30 |
发布(Release) |
底层实现:使用reltool或systools将Erlang运行时、应用和配置文件打包成独立目录,包含启动脚本。 |
Erlang/OTP R5B (2001) |
无硬件依赖,但需匹配目标CPU架构。 |
|
31 |
系统进程(System Process) |
底层实现:通过process_flag(trap_exit, true)设置,使进程捕获退出信号('EXIT'消息),而不是直接死亡。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
32 |
链接(Link) |
底层实现:进程间建立双向链接,当一方非正常退出时,向另一方发送退出信号。链接表存储在进程控制块中。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
33 |
监视器(Monitor) |
底层实现:单向监控,监视器进程收到{'DOWN', Ref, process, Pid, Reason}消息,无需对方同意。 |
Erlang/OTP R6B (2001) |
无硬件依赖。 |
|
34 |
注册进程(Registered Processes) |
底层实现:全局原子表(注册表)将原子映射到进程PID,支持register/unregister/whereis操作。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
35 |
端口驱动(Port Driver) |
底层实现:用C编写的共享库,通过driver_entry结构暴露回调,BEAM直接调用,比端口更高效(无进程创建)。 |
Erlang/OTP R1A (1998) |
需编译为目标CPU架构;国产CPU需ABI兼容。 |
|
36 |
C节点(C Node) |
底层实现:C程序通过ei库与Erlang节点通信,使用相同的分布式协议(EPMD + TCP),表现为一个隐藏节点。 |
Erlang/OTP R1A (1998) |
依赖ei库,跨平台。 |
|
37 |
HiPE(High Performance Erlang) |
底层实现:将Erlang字节码编译为本地机器码(AMD64/AArch32等),使用SSA中间表示,支持寄存器分配和内联。 |
Erlang/OTP R9B (2003) |
仅支持特定架构(x86_64, ARM);国产CPU需适配后端。 |
|
38 |
JIT(Just-In-Time Compilation) |
底层实现:OTP 24引入基于LLVM的JIT,将热点字节码编译为机器码,支持内联和去虚拟化,使用栈映射实现GC。 |
Erlang/OTP 24.0 (2021) |
依赖LLVM后端;国产CPU需LLVM支持(如RISC-V)。 |
|
39 |
Dialyzer(静态类型分析) |
底层实现:基于成功类型(Success Typing)理论,使用约束求解和抽象解释,分析函数规范(-spec)和代码路径,检测类型错误和不匹配。 |
Erlang/OTP R10B (2005) |
纯软件工具,无硬件依赖。 |
|
40 |
属性(Attributes) |
底层实现:模块属性(如-author, -export, -vsn)在编译时被解析并存入模块元数据,运行时可通过Module:module_info()获取。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
41 |
行为(Behaviour) |
底层实现:行为定义回调函数集合,编译器检查模块是否导出了所需回调,运行时通过behaviour_info/1获取。 |
Erlang/OTP R4B (2000) |
无硬件依赖。 |
|
42 |
错误记录器(error_logger) |
底层实现:基于gen_event的事件管理器,默认将错误写入终端或文件,支持添加自定义处理模块。 |
Erlang/OTP R1A (1998) |
依赖文件IO。 |
|
43 |
SASL(System Architecture Support Libraries) |
底层实现:一组用于报警、进度报告和错误日志的回调,由sasl应用提供,常与error_logger配合。 |
Erlang/OTP R4B (2000) |
无硬件依赖。 |
|
44 |
Observer工具 |
底层实现:图形化监控工具,通过连接到目标节点的内置服务(如系统统计、进程信息、ETS表)显示实时数据。 |
Erlang/OTP R12B (2007) |
需要GUI(wxWidgets);国产桌面环境需兼容。 |
|
45 |
Shell(erl) |
底层实现:交互式Erlang shell是一个特权进程,使用line编辑器和历史记录,支持表达式求值和模块编译。 |
Erlang/OTP R1A (1998) |
依赖终端。 |
|
46 |
编译选项(Compile Options) |
底层实现:c()命令或erlc支持多种选项,如debug_info、export_all、bin_opt_info等,影响生成的.beam文件。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
47 |
二进制推导(Binary Comprehension) |
底层实现:类似于列表推导,但作用于二进制数据,编译器生成高效的循环处理比特位,支持分段匹配。 |
Erlang/OTP R13B (2009) |
无硬件依赖。 |
|
48 |
try/catch/after |
底层实现:编译器生成异常表,try块内代码遇到异常时跳转到catch子句,after块始终执行(用于清理)。 |
Erlang/OTP R6B (2001) |
无硬件依赖。 |
|
49 |
函数头模式匹配 |
底层实现:多子句函数定义,编译器按顺序尝试匹配,匹配成功后执行对应函数体,否则进入下一子句。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
50 |
匿名函数(Fun) |
底层实现:fun表达式创建闭包,捕获外部变量(通过引用计数),编译器生成独立的lambda函数对象。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
51 |
远程过程调用(rpc) |
底层实现:rpc模块使用分布式协议在远程节点上执行函数,结果通过消息返回,支持异步调用。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
52 |
全局注册表(global) |
底层实现:global模块在所有节点间同步注册名称,使用分布式锁(基于原子广播)防止冲突。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
53 |
pg2(进程组) |
底层实现:分布式进程组,使用gproc风格,每个组由一个全局进程管理,加入/离开操作通过原子广播同步。 |
Erlang/OTP R14B (2010) |
依赖网络。 |
|
54 |
net_kernel |
底层实现:net_kernel进程管理节点连接,使用TCP长连接,维护节点列表和心跳(tick),支持隐藏节点。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
55 |
auth模块 |
底层实现:节点间认证使用cookie(magic cookie),每个节点启动时读取~/.erlang.cookie,连接时验证。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
56 |
disk_log |
底层实现:基于磁盘的循环日志,支持同步/异步写入,内部使用文件分片和索引。 |
Erlang/OTP R8B (2002) |
依赖磁盘。 |
|
57 |
SNMP(Simple Network Management Protocol) |
底层实现:基于gen_server的SNMP代理和管理器实现,支持MIB编译和陷阱发送。 |
Erlang/OTP R1A (1998) |
依赖网络协议栈。 |
|
58 |
Crypto模块 |
底层实现:通过NIF调用OpenSSL或内置加密库,支持AES/SHA/RSA等算法。 |
Erlang/OTP R9B (2003) |
依赖OpenSSL;国产密码算法(SM2/SM3/SM4)需定制NIF。 |
|
59 |
Inets(HTTP/FTP客户端和服务端) |
底层实现:基于gen_server的HTTP服务器和客户端,使用socket和ssl模块,支持HTTP/1.1。 |
Erlang/OTP R5B (2001) |
依赖网络。 |
|
60 |
进程标志(Process Flags) |
底层实现:通过process_flag/2设置进程属性,如优先级(max/high/normal/low)、最小堆大小、节省内存等,存储在进程控制块中。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
61 |
调度器(Scheduler) |
底层实现:BEAM默认启动等于CPU核心数的调度器线程,每个调度器运行自己的就绪队列,使用工作窃取(work stealing)平衡负载,通过减少指令(reductions)实现协作式抢占。 |
Erlang/OTP R11B (2006) |
依赖多核CPU;国产CPU(如飞腾、龙芯)需适配调度器绑定API。 |
|
62 |
内存分配器(Allocator) |
底层实现:多层级内存分配器,包括mmap池、slab分配器和块分配器,每个调度器有自己的缓存(mseg_cache),减少锁争用。 |
Erlang/OTP R12B (2007) |
依赖MMU;国产CPU需支持大页(Huge Pages)提升TLB命中率。 |
|
63 |
二进制匹配上下文(Match Context) |
底层实现:二进制模式匹配时,编译器生成匹配上下文(match context),内部维护偏移指针,避免重复解析,支持子二进制切片。 |
Erlang/OTP R10B (2005) |
无硬件依赖。 |
|
64 |
引用(Reference) |
底层实现:引用由make_ref/0生成,基于调度器ID和时间戳组合的唯一值,用于唯一标识消息或令牌。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
65 |
浮点数运算 |
底层实现:Erlang浮点数使用IEEE 754双精度(64位),编译器生成对应的FPU指令,支持NaN和无穷大。 |
Erlang/OTP R1A (1998) |
依赖FPU;国产CPU(如龙芯)需确认FPU兼容性。 |
|
66 |
大整数(Big Integer) |
底层实现:超出机器字长的整数使用GMP(GNU Multiple Precision Arithmetic Library)或内置大数库,通过链表存储多位数字。 |
Erlang/OTP R1A (1998) |
无特殊硬件依赖,但可受益于SIMD加速。 |
|
67 |
列表反转(lists:reverse/1) |
底层实现:使用尾递归和累加器,编译器内联优化,生成高效的反转循环。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
68 |
排序(lists:sort/1) |
底层实现:使用归并排序(merge sort),稳定排序,编译器可能内联小规模插入排序。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
69 |
队列(queue模块) |
底层实现:使用两个列表(前向和后向)实现双端队列,push/pop均摊O(1)。 |
rear |
)。 |
|
70 |
数组(array模块) |
底层实现:基于平衡树(10叉树)实现的稀疏数组,支持动态扩展,访问复杂度O(log_{10} N)。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
71 |
集合(sets/gb_sets模块) |
底层实现:sets使用哈希表(ETS-like),gb_sets使用平衡二叉树(AVL)。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
72 |
字典(dict模块) |
底层实现:基于动态哈希表,使用开放寻址法解决冲突,支持动态扩容。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
73 |
数字列表(iolist) |
底层实现:iolist是嵌套列表和二进制/整数的混合结构,编译器生成深度优先遍历输出,避免拼接大二进制。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
74 |
端口映射器(EPMD) |
底层实现:独立守护进程,监听4369端口,维护节点名到端口的映射,节点启动时注册。 |
Erlang/OTP R1A (1998) |
依赖网络;国产防火墙需开放4369端口。 |
|
75 |
分布式锁(global:set_lock) |
底层实现:基于原子广播的分布式互斥锁,使用全局进程协调,支持超时和死锁检测。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
76 |
持久项(persistent_term) |
底层实现:持久项存储在全局共享内存中,使用写时复制(COW)技术,读取无锁,写入需全局锁。 |
Erlang/OTP 21.0 (2018) |
无硬件依赖。 |
|
77 |
时间测量(erlang:monotonic_time/0) |
底层实现:基于操作系统提供的单调时钟(CLOCK_MONOTONIC),返回纳秒级时间戳,不受系统时间调整影响。 |
Erlang/OTP 18.0 (2015) |
依赖OS时钟硬件;国产OS需提供POSIX时钟接口。 |
|
78 |
跟踪(trace/3) |
底层实现:通过erlang:trace/3设置跟踪标志,系统生成跟踪消息发送到跟踪进程,支持函数调用、进程事件等。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
79 |
匹配规格(Match Specification) |
底层实现:一种DSL用于描述跟踪和断言的匹配规则,编译器将其转换为内部表示,运行时高效匹配。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
80 |
代码覆盖率(cover) |
底层实现:通过编译时插入跟踪指令,运行时记录每行执行次数,最后生成覆盖率报告。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
81 |
系统限制(system_limit) |
底层实现:BEAM预设各种硬限制,如最大进程数(默认262144)、最大原子数(1048576)、最大ETS表数等,通过erl +P/+t等参数可调整。 |
Erlang/OTP R1A (1998) |
依赖操作系统资源限制;国产OS需支持ulimit等。 |
|
82 |
守护进程(Daemon) |
底层实现:通过-detached标志启动BEAM,使其脱离终端并以守护进程方式运行,使用init:reboot/0重启。 |
Erlang/OTP R1A (1998) |
依赖OS进程管理。 |
|
83 |
heart模块 |
底层实现:heart进程定期向OS发送心跳(通过管道),若BEAM无响应则OS重启BEAM(通过heartbeat脚本)。 |
Erlang/OTP R1A (1998) |
依赖OS信号和进程管理。 |
|
84 |
模块校验和(Module Checksum) |
底层实现:每个.beam文件包含MD5或SHA校验和,加载时验证完整性,热升级时用于识别版本变化。 |
Erlang/OTP R9C (2004) |
无硬件依赖。 |
|
85 |
二进制引用计数(Binary Refc) |
底层实现:大二进制使用引用计数管理生命周期,当引用计数降为零时释放内存,子二进制共享父二进制引用计数。 |
Erlang/OTP R10B (2005) |
依赖原子操作(atomic increment/decrement)。 |
|
86 |
子二进制(Sub Binary) |
底层实现:子二进制指向父二进制的某一段,不复制数据,通过偏移量和长度描述,创建成本O(1)。 |
Erlang/OTP R10B (2005) |
无硬件依赖。 |
|
87 |
堆二进制(Heap Binary) |
底层实现:小于64字节的二进制直接存储在进程堆中,作为普通项处理,无需引用计数。 |
Erlang/OTP R10B (2005) |
无硬件依赖。 |
|
88 |
匹配上下文重用(Match Context Reuse) |
底层实现:编译器在连续的二进制匹配中复用同一个匹配上下文,避免重复创建,减少GC压力。 |
Erlang/OTP R13B (2009) |
无硬件依赖。 |
|
89 |
浮点列表解析(list_to_float/1) |
底层实现:使用标准C库的strtod函数,支持科学计数法,处理精度和舍入。 |
Erlang/OTP R1A (1998) |
依赖FPU和C库。 |
|
90 |
整数列表解析(list_to_integer/1) |
底层实现:逐字符解析,支持十进制、十六进制(#)、二进制(#b)等前缀,使用大整数库。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
91 |
原子转字符串(atom_to_list/1) |
底层实现:从原子表查找原子对应的字符串,返回列表,涉及原子表锁。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
92 |
列表转元组(list_to_tuple/1) |
底层实现:分配元组空间,将列表元素逐个复制到元组槽位,然后释放列表(GC)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
93 |
元组转列表(tuple_to_list/1) |
底层实现:遍历元组,构建新列表,每个元素cons操作。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
94 |
二进制转列表(binary_to_list/1) |
底层实现:逐字节复制到列表,每个字节成为一个整数元素。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
95 |
列表转二进制(list_to_binary/1) |
底层实现:遍历iolist或普通列表,合并为连续二进制,使用iolist优化(避免中间复制)。 |
Erlang/OTP R10B (2005) |
无硬件依赖。 |
|
96 |
术语比较(term comparison) |
底层实现:Erlang术语有固定偏序:number < atom < reference < fun < port < pid < tuple < map < nil < list < binary,编译器生成比较指令,利用类型标签快速判断。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
97 |
类型测试函数(is_integer/1等) |
底层实现:检查术语的类型标签,一条机器指令即可完成,编译器内联优化。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
98 |
进程信息(process_info/1) |
底层实现:从进程控制块读取状态、消息队列长度、堆大小等信息,返回键值对列表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
99 |
系统监控(sys模块) |
底层实现:sys模块通过向目标进程发送系统消息(如get_status, replace_state)实现状态查询和修改,基于行为框架。 |
Erlang/OTP R4B (2000) |
无硬件依赖。 |
|
100 |
代码路径(code:add_path/1) |
底层实现:code模块维护一个路径列表,模块加载时按顺序搜索,找到首个匹配即加载,路径可动态添加。 |
Erlang/OTP R1A (1998) |
依赖文件系统。 |
|
161 |
进程字典(get_keys/0) |
底层实现:遍历进程字典的所有键,返回列表,复杂度O(N)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
162 |
进程字典(erase/1) |
底层实现:从哈希表中删除指定键,释放关联值(若不再引用),复杂度O(1)均摊。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
163 |
进程字典(erase/0) |
底层实现:清空整个进程字典,释放所有值,重置哈希表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
164 |
进程字典(get/1) |
底层实现:哈希表查找键,返回值或undefined,复杂度O(1)均摊。 |
none。数学建模:查找时间 O(1)。 |
Erlang/OTP R1A (1998) |
|
165 |
进程字典(put/2) |
底层实现:插入或更新键值对,若键已存在则覆盖,触发可能的rehash。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
166 |
进程字典(get_keys/1) |
底层实现:遍历哈希表,收集值等于给定值的所有键,返回列表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
167 |
进程字典(is_process_alive/1) |
底层实现:检查PID是否对应一个活着的进程,通过查找进程表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
168 |
进程字典(process_flag(trap_exit)) |
底层实现:设置进程控制块的trap_exit标志,使退出信号转为消息。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
169 |
进程字典(process_flag(priority)) |
底层实现:修改进程优先级等级,调度器据此分配时间片。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
170 |
进程字典(process_flag(min_heap_size)) |
底层实现:设置进程初始堆大小(字数),减少早期GC次数。 |
Erlang/OTP R9C (2004) |
无硬件依赖。 |
|
171 |
进程字典(process_flag(min_bin_vheap_size)) |
底层实现:设置进程二进制虚拟堆的最小大小,控制二进制GC触发时机。 |
Erlang/OTP R12B (2007) |
无硬件依赖。 |
|
172 |
进程字典(process_flag(sensitive)) |
底层实现:标记进程为敏感,禁止其他进程通过process_info读取其状态。 |
Erlang/OTP 20.0 (2017) |
无硬件依赖。 |
|
173 |
进程字典(process_flag(error_handler)) |
底层实现:设置进程的自定义错误处理模块,替代默认的error_handler。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
174 |
进程字典(group_leader/0) |
底层实现:返回进程所属组的领导者进程,用于IO重定向。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
175 |
进程字典(group_leader/2) |
底层实现:设置进程的组领导者,影响标准IO输出目标。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
176 |
进程字典(node/0) |
底层实现:返回当前节点原子,从运行时环境读取。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
177 |
进程字典(node/1) |
底层实现:返回给定PID或引用所在的节点原子,通过进程表或引用表查找。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
178 |
进程字典(self/0) |
底层实现:返回当前进程的PID,直接从进程控制块读取。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
179 |
进程字典(whereis/1) |
底层实现:从注册表查找注册名称对应的PID,复杂度O(1)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
180 |
进程字典(registered/0) |
底层实现:返回所有注册名称的列表,遍历注册表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
181 |
进程字典(unregister/1) |
底层实现:从注册表删除名称与PID的映射,释放名称。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
182 |
进程字典(erase/1) |
底层实现:删除进程字典中的键值对,返回旧值或true/false。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
183 |
进程字典(erase/0) |
底层实现:清空进程字典,释放所有内存。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
184 |
进程字典(get/0) |
底层实现:返回进程字典中所有键值对列表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
185 |
进程字典(put/2) |
底层实现:同前,插入或更新。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
186 |
进程字典(update_counter/3) |
底层实现:原子更新进程字典中的计数器(整数),使用CAS或锁,返回新值。 |
Erlang/OTP R13B (2009) |
无硬件依赖。 |
|
187 |
进程字典(is_key/1) |
底层实现:检查键是否存在,返回boolean。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
188 |
进程字典(foldl/3) |
底层实现:遍历进程字典,应用累加函数,类似lists:foldl。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
189 |
进程字典(foldr/3) |
底层实现:反向遍历进程字典,其他同foldl。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
190 |
进程字典(map/2) |
底层实现:遍历进程字典,应用函数,返回新字典(列表形式)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
191 |
进程字典(filter/2) |
底层实现:遍历进程字典,筛选符合条件的项,返回列表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
192 |
进程字典(merge/2) |
底层实现:合并两个进程字典,后者的键覆盖前者,返回新字典(列表)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
193 |
进程字典(take/2) |
底层实现:取出键对应的值并从字典中删除,返回{value, NewDict}或error。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
194 |
进程字典(to_list/1) |
底层实现:将进程字典转换为键值对列表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
195 |
进程字典(from_list/1) |
底层实现:从键值对列表构建进程字典,覆盖已有键。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
196 |
进程字典(new/0) |
底层实现:创建一个空的进程字典(实际上进程初始化时自动创建)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
197 |
进程字典(is_empty/1) |
底层实现:检查进程字典是否为空。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
198 |
进程字典(size/1) |
底层实现:返回进程字典中的键值对数量。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
199 |
进程字典(to_dict/1) |
底层实现:将进程字典转换为dict模块的字典(已废弃)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
200 |
进程字典(from_dict/1) |
底层实现:从dict模块字典构建进程字典(已废弃)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
201 |
进程字典(store/3) |
底层实现:同put/2,但返回新字典(列表形式),不修改原字典。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
202 |
进程字典(append/3) |
底层实现:追加值到键对应的列表,若键不存在则新建列表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
203 |
进程字典(append_list/3) |
底层实现:追加列表到键对应的列表末尾。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
204 |
进程字典(update/4) |
底层实现:更新键的值,若不存在则插入默认值。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
205 |
进程字典(update_counter/3) |
底层实现:原子递增/递减计数器,返回新值(函数式版本返回新字典)。 |
Erlang/OTP R13B (2009) |
无硬件依赖。 |
|
206 |
进程字典(find/2) |
底层实现:查找键,返回{ok, Value}或error。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
207 |
进程字典(fetch/2) |
底层实现:查找键,返回Value,不存在则崩溃。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
208 |
进程字典(fetch_keys/1) |
底层实现:返回所有键的列表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
209 |
进程字典(erase/2) |
底层实现:删除键,返回{value, OldValue, NewDict}或error。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
210 |
进程字典(fold/3) |
底层实现:遍历进程字典,应用函数,类似foldl。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
161 |
进程字典(get_keys/0) |
底层实现:遍历进程字典的所有键,返回列表,复杂度O(N)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
162 |
进程字典(erase/1) |
底层实现:从哈希表中删除指定键,释放关联值(若不再引用),复杂度O(1)均摊。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
163 |
进程字典(erase/0) |
底层实现:清空整个进程字典,释放所有值,重置哈希表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
164 |
进程字典(get/1) |
底层实现:哈希表查找键,返回值或undefined,复杂度O(1)均摊。 |
none。数学建模:查找时间 O(1)。 |
Erlang/OTP R1A (1998) |
|
165 |
进程字典(put/2) |
底层实现:插入或更新键值对,若键已存在则覆盖,触发可能的rehash。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
166 |
进程字典(get_keys/1) |
底层实现:遍历哈希表,收集值等于给定值的所有键,返回列表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
167 |
进程字典(is_process_alive/1) |
底层实现:检查PID是否对应一个活着的进程,通过查找进程表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
168 |
进程字典(process_flag(trap_exit)) |
底层实现:设置进程控制块的trap_exit标志,使退出信号转为消息。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
169 |
进程字典(process_flag(priority)) |
底层实现:修改进程优先级等级,调度器据此分配时间片。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
170 |
进程字典(process_flag(min_heap_size)) |
底层实现:设置进程初始堆大小(字数),减少早期GC次数。 |
Erlang/OTP R9C (2004) |
无硬件依赖。 |
|
171 |
进程字典(process_flag(min_bin_vheap_size)) |
底层实现:设置进程二进制虚拟堆的最小大小,控制二进制GC触发时机。 |
Erlang/OTP R12B (2007) |
无硬件依赖。 |
|
172 |
进程字典(process_flag(sensitive)) |
底层实现:标记进程为敏感,禁止其他进程通过process_info读取其状态。 |
Erlang/OTP 20.0 (2017) |
无硬件依赖。 |
|
173 |
进程字典(process_flag(error_handler)) |
底层实现:设置进程的自定义错误处理模块,替代默认的error_handler。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
174 |
进程字典(group_leader/0) |
底层实现:返回进程所属组的领导者进程,用于IO重定向。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
175 |
进程字典(group_leader/2) |
底层实现:设置进程的组领导者,影响标准IO输出目标。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
176 |
进程字典(node/0) |
底层实现:返回当前节点原子,从运行时环境读取。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
177 |
进程字典(node/1) |
底层实现:返回给定PID或引用所在的节点原子,通过进程表或引用表查找。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
178 |
进程字典(self/0) |
底层实现:返回当前进程的PID,直接从进程控制块读取。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
179 |
进程字典(whereis/1) |
底层实现:从注册表查找注册名称对应的PID,复杂度O(1)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
180 |
进程字典(registered/0) |
底层实现:返回所有注册名称的列表,遍历注册表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
181 |
进程字典(unregister/1) |
底层实现:从注册表删除名称与PID的映射,释放名称。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
182 |
进程字典(erase/1) |
底层实现:删除进程字典中的键值对,返回旧值或true/false。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
183 |
进程字典(erase/0) |
底层实现:清空进程字典,释放所有内存。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
184 |
进程字典(get/0) |
底层实现:返回进程字典中所有键值对列表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
185 |
进程字典(put/2) |
底层实现:同前,插入或更新。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
186 |
进程字典(update_counter/3) |
底层实现:原子更新进程字典中的计数器(整数),使用CAS或锁,返回新值。 |
Erlang/OTP R13B (2009) |
无硬件依赖。 |
|
187 |
进程字典(is_key/1) |
底层实现:检查键是否存在,返回boolean。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
188 |
进程字典(foldl/3) |
底层实现:遍历进程字典,应用累加函数,类似lists:foldl。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
189 |
进程字典(foldr/3) |
底层实现:反向遍历进程字典,其他同foldl。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
190 |
进程字典(map/2) |
底层实现:遍历进程字典,应用函数,返回新字典(列表形式)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
191 |
进程字典(filter/2) |
底层实现:遍历进程字典,筛选符合条件的项,返回列表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
192 |
进程字典(merge/2) |
底层实现:合并两个进程字典,后者的键覆盖前者,返回新字典(列表)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
193 |
进程字典(take/2) |
底层实现:取出键对应的值并从字典中删除,返回{value, NewDict}或error。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
194 |
进程字典(to_list/1) |
底层实现:将进程字典转换为键值对列表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
195 |
进程字典(from_list/1) |
底层实现:从键值对列表构建进程字典,覆盖已有键。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
196 |
进程字典(new/0) |
底层实现:创建一个空的进程字典(实际上进程初始化时自动创建)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
197 |
进程字典(is_empty/1) |
底层实现:检查进程字典是否为空。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
198 |
进程字典(size/1) |
底层实现:返回进程字典中的键值对数量。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
199 |
进程字典(to_dict/1) |
底层实现:将进程字典转换为dict模块的字典(已废弃)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
200 |
进程字典(from_dict/1) |
底层实现:从dict模块字典构建进程字典(已废弃)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
201 |
进程字典(store/3) |
底层实现:同put/2,但返回新字典(列表形式),不修改原字典。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
202 |
进程字典(append/3) |
底层实现:追加值到键对应的列表,若键不存在则新建列表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
203 |
进程字典(append_list/3) |
底层实现:追加列表到键对应的列表末尾。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
204 |
进程字典(update/4) |
底层实现:更新键的值,若不存在则插入默认值。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
205 |
进程字典(update_counter/3) |
底层实现:原子递增/递减计数器,返回新值(函数式版本返回新字典)。 |
Erlang/OTP R13B (2009) |
无硬件依赖。 |
|
206 |
进程字典(find/2) |
底层实现:查找键,返回{ok, Value}或error。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
207 |
进程字典(fetch/2) |
底层实现:查找键,返回Value,不存在则崩溃。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
208 |
进程字典(fetch_keys/1) |
底层实现:返回所有键的列表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
209 |
进程字典(erase/2) |
底层实现:删除键,返回{value, OldValue, NewDict}或error。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
210 |
进程字典(fold/3) |
底层实现:遍历进程字典,应用函数,类似foldl。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
261 |
二进制压缩(zlib) |
底层实现:基于zlib库的NIF封装,支持deflate/inflate、gzip格式,使用滑动窗口和霍夫曼编码,压缩时分配临时缓冲区。 |
Erlang/OTP R10B (2005) |
依赖zlib库;国产CPU需交叉编译zlib。 |
|
262 |
二进制Base64编解码(base64) |
底层实现:使用查表法将每3字节映射为4个ASCII字符,编译器生成循环展开优化,支持URL-safe模式。 |
Erlang/OTP R13B (2009) |
无硬件依赖。 |
|
263 |
二进制CRC校验(erlang:crc32/1) |
底层实现:使用IEEE 802.3 CRC-32算法,基于查表法(256项表),逐字节计算,硬件支持CRC指令时可加速。 |
Erlang/OTP R10B (2005) |
可受益于CPU CRC32指令(x86 SSE4.2、ARM CRC);国产CPU需确认支持。 |
|
264 |
二进制MD5/SHA哈希(crypto:hash/2) |
底层实现:调用OpenSSL的哈希函数,通过NIF执行,支持MD5、SHA-1、SHA-2系列,使用上下文增量更新。 |
Erlang/OTP R9B (2003) |
依赖OpenSSL;国产密码算法(SM3)需定制NIF。 |
|
265 |
二进制HMAC(crypto:hmac/3) |
底层实现:基于哈希函数的密钥散列消息认证码,使用两次哈希(ipad/opad),通过NIF调用OpenSSL。 |
Erlang/OTP R9B (2003) |
依赖OpenSSL。 |
|
266 |
二进制AES加密(crypto:crypto_one_time/4) |
底层实现:AES加密/解密,支持ECB/CBC/CTR/GCM等模式,使用硬件AES指令集加速(AES-NI),通过NIF调用。 |
Erlang/OTP 18.0 (2015) |
依赖CPU AES-NI指令;国产CPU(如兆芯、海光)支持AES-NI;龙芯需软件模拟。 |
|
267 |
二进制RSA加密(crypto:private_encrypt/3) |
底层实现:RSA公钥/私钥加密解密,使用大数模幂运算,通过OpenSSL的BN库,支持PKCS#1 v1.5/OAEP填充。 |
Erlang/OTP R9B (2003) |
依赖OpenSSL;国产密码算法(SM2)需定制。 |
|
268 |
二进制椭圆曲线加密(crypto:generate_key/2) |
底层实现:生成ECC密钥对,支持P-256/P-384/Curve25519等,使用OpenSSL的EC库,通过NIF。 |
Erlang/OTP 17.0 (2014) |
依赖OpenSSL;国产SM2曲线需支持。 |
|
269 |
二进制数字签名(crypto:sign/4) |
底层实现:使用私钥对数据进行签名,支持RSA/ECDSA/EdDSA,哈希+签名两步,通过NIF。 |
Erlang/OTP R9B (2003) |
依赖OpenSSL。 |
|
270 |
二进制密钥派生(crypto:kdf/3) |
底层实现:PBKDF2/SCRYPT/ARGON2等密钥派生函数,通过NIF调用,使用盐和迭代次数抵抗暴力破解。 |
Erlang/OTP 18.0 (2015) |
依赖CPU;国产密码需支持SM2/3/4派生。 |
|
271 |
二进制随机数生成(crypto:strong_rand_bytes/1) |
底层实现:从操作系统熵源(/dev/urandom、CryptGenRandom)获取高质量随机数,通过NIF。 |
Erlang/OTP R9B (2003) |
依赖OS熵源;国产OS需提供类似接口。 |
|
272 |
二进制证书解析(public_key:pkix_decode_cert/1) |
底层实现:解析X.509证书DER编码,提取主题、颁发者、公钥、有效期等,使用ASN.1 BER/DER解码器。 |
Erlang/OTP R9B (2003) |
无特殊硬件。 |
|
273 |
二进制ASN.1编解码(asn1rt) |
底层实现:ASN.1运行时库,支持BER/CER/DER编码规则,根据编译后的.asn1模块生成编解码函数,使用二进制匹配。 |
Erlang/OTP R1A (1998) |
无特殊硬件。 |
|
274 |
二进制Protocol Buffers(gpb) |
底层实现:社区库gpb,通过.proto文件生成Erlang编解码代码,使用二进制匹配和映射,支持proto2/proto3。 |
社区库 |
无特殊硬件。 |
|
275 |
二进制MessagePack(msgpack) |
底层实现:纯Erlang或NIF实现的MessagePack序列化,支持紧凑二进制格式,比JSON更小更快。 |
社区库 |
无特殊硬件。 |
|
276 |
二进制Avro(erlavro) |
底层实现:Apache Avro序列化框架的Erlang实现,支持schema注册表,二进制编码紧凑。 |
社区库 |
无特殊硬件。 |
|
277 |
二进制Thrift(thrift) |
底层实现:Apache Thrift的Erlang实现,支持二进制/紧凑/JSON协议,通过IDL生成代码。 |
社区库 |
依赖网络。 |
|
278 |
二进制FlatBuffers(flatbuffers-erlang) |
底层实现:Google FlatBuffers的Erlang实现,支持零拷贝反序列化,数据直接访问无需解析。 |
社区库 |
无特殊硬件。 |
|
279 |
二进制Cap'n Proto(capnp-erlang) |
底层实现:类似FlatBuffers,支持零拷贝和arena分配,通过模式编译生成代码。 |
社区库 |
无特殊硬件。 |
|
280 |
二进制Snappy压缩(snappy) |
底层实现:Google Snappy压缩算法的NIF封装,注重速度而非压缩比,使用LZ77变体。 |
社区库 |
无特殊硬件。 |
|
281 |
二进制LZ4压缩(lz4) |
底层实现:LZ4算法的NIF封装,极快压缩和解压,支持HC(高压缩)模式。 |
社区库 |
无特殊硬件。 |
|
282 |
二进制Zstandard压缩(zstd) |
底层实现:Facebook Zstandard算法的NIF封装,兼顾速度和压缩比,支持字典训练。 |
社区库 |
无特殊硬件。 |
|
283 |
二进制Brotli压缩(brotli) |
底层实现:Google Brotli算法的NIF封装,主要用于Web内容压缩,压缩比优于zlib但速度较慢。 |
社区库 |
无特殊硬件。 |
|
284 |
二进制图像处理(egd) |
底层实现:纯Erlang的图形库,支持PNG/GIF/JPEG读写,使用二进制匹配解析文件格式。 |
社区库 |
无特殊硬件。 |
|
285 |
二进制音频处理(speex) |
底层实现:Speex语音编解码器的NIF封装,支持窄带/宽带/超宽带,用于VoIP。 |
社区库 |
依赖DSP或CPU。 |
|
286 |
二进制视频处理(ffmpeg-erlang) |
底层实现:通过端口调用FFmpeg命令行或NIF封装,支持音视频转码、截图、流处理。 |
社区库 |
依赖GPU硬件编码(NVENC/VAAPI)。 |
|
287 |
二进制PDF生成(pdf) |
底层实现:纯Erlang生成PDF文件,使用二进制构建页面描述,支持文本、图像、表格。 |
社区库 |
无特殊硬件。 |
|
288 |
二进制Excel读写(excel) |
底层实现:解析.xlsx文件(ZIP+XML),使用二进制解压和XML解析,支持单元格读写。 |
社区库 |
无特殊硬件。 |
|
289 |
二进制CSV解析(csv) |
底层实现:基于二进制匹配的CSV解析器,支持引号转义、分隔符自定义,流式逐行读取。 |
社区库 |
无特殊硬件。 |
|
290 |
二进制INI解析(iniparse) |
底层实现:解析INI格式配置文件,使用二进制匹配节和键值对,支持注释和续行。 |
社区库 |
无特殊硬件。 |
|
291 |
二进制TOML解析(toml) |
底层实现:TOML格式解析器,支持表、数组、日期等类型,使用递归下降解析。 |
社区库 |
无特殊硬件。 |
|
292 |
二进制SQLite集成(esqlite) |
底层实现:通过NIF调用SQLite C库,支持SQL查询、事务、WAL模式,返回Erlang数据类型。 |
社区库 |
依赖SQLite;国产CPU需编译。 |
|
293 |
二进制PostgreSQL驱动(epgsql) |
底层实现:纯Erlang实现的PostgreSQL协议客户端,支持二进制协议、预处理语句、连接池、SSL。 |
社区库 |
依赖网络。 |
|
294 |
二进制MySQL驱动(emysql) |
底层实现:纯Erlang实现的MySQL协议客户端,支持预处理、事务、字符集。 |
社区库 |
依赖网络。 |
|
295 |
二进制Redis驱动(eredis) |
底层实现:纯Erlang实现的Redis RESP协议客户端,支持流水线、连接池、哨兵/集群。 |
社区库 |
依赖网络。 |
|
296 |
二进制MongoDB驱动(mongodb-erlang) |
底层实现:纯Erlang实现的MongoDB Wire协议客户端,支持CRUD、聚合、副本集。 |
社区库 |
依赖网络。 |
|
297 |
二进制Cassandra驱动(erlcass) |
底层实现:基于DataStax C++驱动的NIF封装,支持CQL、异步查询、负载均衡。 |
社区库 |
依赖网络。 |
|
298 |
二进制Elasticsearch客户端(tirexs) |
底层实现:基于HTTP REST的Elasticsearch客户端,使用JSON序列化,支持索引、搜索、聚合。 |
社区库 |
依赖网络。 |
|
299 |
二进制InfluxDB客户端(influxdb-erlang) |
底层实现:HTTP或UDP写入InfluxDB,支持Line Protocol格式,批量写入。 |
社区库 |
依赖网络。 |
|
300 |
二进制Prometheus Remote Write(prometheus_remote_write) |
底层实现:将Prometheus指标通过Remote Write协议发送到后端,使用Snappy压缩和protobuf编码。 |
社区库 |
依赖网络。 |
|
301 |
二进制Kafka客户端(brod) |
底层实现:纯Erlang实现的Kafka协议客户端,支持生产者、消费者、分区分配、压缩(gzip/snappy/lz4/zstd)。 |
社区库 |
依赖网络。 |
|
302 |
二进制NATS客户端(gnat) |
底层实现:纯Erlang实现的NATS协议客户端,支持发布/订阅、请求/回复、集群。 |
社区库 |
依赖网络。 |
|
303 |
二进制MQTT客户端(emqtt) |
底层实现:基于gen_statem的MQTT 3.1.1/5.0客户端,支持QoS 0/1/2、SSL、遗嘱消息。 |
社区库 |
依赖网络。 |
|
304 |
二进制CoAP客户端(coap) |
底层实现:基于UDP的CoAP协议实现,支持观察、块传输、DTLS加密。 |
社区库 |
依赖网络。 |
|
305 |
二进制gRPC Web(grpc-web) |
底层实现:gRPC-Web协议的Erlang实现,支持浏览器客户端通过HTTP/1.1代理访问gRPC服务。 |
社区库 |
依赖网络。 |
|
306 |
二进制GraphQL(absinthe) |
底层实现:纯Erlang实现的GraphQL服务器,支持Schema定义、解析器、订阅,基于WebSocket。 |
社区库 |
依赖网络。 |
|
307 |
二进制REST框架(cowboy) |
底层实现:高性能HTTP/1.1/2服务器,基于ranch连接池,使用二进制匹配解析请求,支持WebSocket、Server-Sent Events。 |
Cowboy 1.0 (2013) |
依赖网络;可运行于国产OS。 |
|
308 |
二进制REST框架(elli) |
底层实现:极简HTTP服务器,使用单进程+非阻塞IO,专注于低延迟和高吞吐。 |
社区库 |
依赖网络。 |
|
309 |
二进制Web框架(chatterbox) |
底层实现:HTTP/2客户端和服务端实现,支持流优先级、服务器推送、HPACK头部压缩。 |
社区库 |
依赖网络;Intel QAT可加速。 |
|
310 |
二进制WebSocket库(bullet) |
底层实现:基于cowboy的WebSocket扩展,支持二进制/文本帧、ping/pong、关闭握手。 |
社区库 |
依赖网络。 |
|
311 |
系统监控(observer_cli) |
底层实现:基于终端的进程/系统监控工具,通过调用erlang:system_info/1、process_info/2等BIF获取运行时状态,以ASCII图表展示CPU、内存、ETS、进程树等信息。 |
社区库 |
无硬件依赖。 |
|
312 |
系统监控(etop) |
底层实现:类似于Unix top,定时调用erlang:process_info/1收集所有进程的reductions、memory、message_queue_len,排序显示。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
313 |
系统监控(recon) |
底层实现:社区库recon提供一系列远程调试函数,如recon:proc_count(memory, 10)通过遍历进程并排序,不修改系统状态。 |
社区库 |
无硬件依赖。 |
|
314 |
系统监控(sys:get_status/1) |
底层实现:调用gen_server/gen_fsm的回调Module:code_change和format_status,返回进程状态信息。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
315 |
系统监控(sys:trace/2) |
底层实现:开启对gen_server/gen_fsm等行为的调用跟踪,通过发送系统消息注入跟踪钩子,记录所有同步/异步调用和返回值。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
316 |
系统监控(sys:statistics/2) |
底层实现:开启进程统计,记录调用次数、平均时间等,内部使用进程字典存储计数器。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
317 |
系统监控(dbg:tracer/2) |
底层实现:dbg模块提供可编程跟踪,通过设置匹配规格(match specification)过滤函数调用,支持本地和远程节点,使用顺序跟踪或端口输出。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
318 |
系统监控(redbug) |
底层实现:类似dbg但更安全的生产跟踪工具,自动限制跟踪时长和消息量,防止溢出。 |
社区库 |
无硬件依赖。 |
|
319 |
系统监控(eper) |
底层实现:Erlang Performance and Error Reporting库,提供类似ErlyMon的监控和管理功能,包括进程看门狗、自动重启等。 |
社区库 |
无硬件依赖。 |
|
320 |
系统监控(folsom) |
底层实现:Erlang指标收集库,支持计数器、仪表、直方图、计量器,使用ETS存储,可通过HTTP或Erlang API查询。 |
社区库 |
无硬件依赖。 |
|
321 |
系统监控(vmstats) |
底层实现:定期采集BEAM虚拟机统计信息(进程数、原子数、内存等)并发布到消息总线或日志。 |
社区库 |
无硬件依赖。 |
|
282 |
系统监控(exometer) |
底层实现:可插拔的监控框架,支持多种探针(probe),可聚合指标并上报到Graphite、InfluxDB等后端。 |
社区库 |
依赖网络(后端)。 |
|
323 |
系统监控(telemetry) |
底层实现:Erlang/OTP 21+引入的事件系统,允许进程发射事件,处理器通过attach接收,支持多处理器和handler链。 |
Erlang/OTP 21.0 (2018) |
无硬件依赖。 |
|
324 |
系统监控(opentelemetry) |
底层实现:OpenTelemetry SDK的Erlang实现,通过telemetry事件采集span,支持分布式上下文传播,导出到Jaeger/OTLP。 |
社区库 |
依赖网络。 |
|
325 |
系统监控(erlang:memory/0) |
底层实现:BIF直接读取BEAM内存分配器统计,返回各类内存(total、processes、binary、ets等)的字节数。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
326 |
系统监控(erlang:system_info/1) |
底层实现:BIF返回运行时系统信息,如调度器数量、线程模式、进程限制、原子限制等,直接从运行时结构读取。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
327 |
系统监控(erlang:statistics/1) |
底层实现:BIF返回各种统计信息,如context switches、wall clock、runtime、garbage collection count等,累积计数器。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
328 |
系统监控(erlang:garbage_collect/1) |
底层实现:强制对指定进程进行垃圾回收,调用进程的GC函数,清理未引用数据。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
329 |
系统监控(erlang:check_process_code/2) |
底层实现:检查进程是否正在执行旧版代码(代码热升级后),返回布尔值,用于确定是否可以安全清除旧代码。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
330 |
系统监控(erlang:port_info/1) |
底层实现:BIF返回端口的信息,如名称、连接状态、输入/输出队列长度等,用于调试IO问题。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
331 |
系统监控(erlang:trace/3) |
底层实现:设置跟踪标志,控制对进程/端口的函数调用、消息、调度等事件的跟踪,事件通过跟踪进程投递。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
332 |
系统监控(erlang:trace_pattern/3) |
底层实现:设置匹配规格,定义哪些函数调用应被跟踪,支持全局/局部匹配。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
333 |
系统监控(seq_trace) |
底层实现:顺序跟踪令牌,在消息传递时携带令牌,接收方继承令牌,从而关联跨进程调用链。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
334 |
系统监控(hipe:profile/2) |
底层实现:HiPE(High-Performance Erlang)的性能剖析器,通过采样或插桩收集函数调用频次和时间。 |
Erlang/OTP R10B (2005) |
依赖HiPE支持(已移除)。 |
|
335 |
系统监控(fprof) |
底层实现:Erlang函数级性能剖析器,通过跟踪函数调用(trace on)收集时间戳,生成调用图和耗时统计。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
336 |
系统监控(eprof) |
底层实现:基于采样的性能剖析器,定期中断进程并记录当前函数,统计各函数占用时间比例。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
337 |
系统监控(cover) |
底层实现:代码覆盖率工具,通过插桩(在每条可执行行前插入计数器)跟踪执行路径,支持模块级别。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
338 |
系统监控(proper) |
底层实现:PropEr属性基测试框架,根据用户定义的生成器和属性,自动生成随机输入并验证性质,使用counterexample shrinking。 |
社区库 |
无硬件依赖。 |
|
339 |
系统监控(triq) |
底层实现:QuickCheck风格的属性测试库,支持状态机测试和并行测试,使用Erlang terms作为生成器。 |
社区库 |
无硬件依赖。 |
|
340 |
系统监控(meck) |
底层实现:Mock库,通过动态替换模块的函数(使用伪函数)来模拟外部依赖,支持期望和断言。 |
社区库 |
无硬件依赖。 |
|
341 |
系统监控(erlymock) |
底层实现:类似Java Mockito的mock框架,支持自动生成mock对象,基于进程模拟。 |
社区库 |
无硬件依赖。 |
|
342 |
系统监控(common_test) |
底层实现:OTP内置测试框架,支持测试套件、夹具、并行执行、日志和HTML报告,基于gen_server管理测试流程。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
343 |
系统监控(eunit) |
底层实现:轻量级单元测试框架,通过宏定义测试函数,自动发现并运行,支持setup/teardown。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
344 |
系统监控(dialyzer) |
底层实现:静态分析工具,基于成功类型(success typings)推断函数类型,检测类型错误、死代码、未使用的函数等,使用约束求解。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
345 |
系统监控(typer) |
底层实现:基于dialyzer的分析结果,为函数生成类型规范(spec),可自动插入源代码。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
346 |
系统监控(xref) |
底层实现:交叉引用分析工具,构建模块/函数之间的调用图,检测未定义的调用、循环依赖、死代码等。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
347 |
系统监控(appmon) |
底层实现:应用程序监控图形界面(已弃用),显示进程树和监督树,使用wxWidgets。 |
Erlang/OTP R1A (1998) |
依赖wx库(已移除)。 |
|
348 |
系统监控(pman) |
底层实现:进程管理器GUI,显示进程列表,可查看进程状态、终止进程等(已弃用)。 |
Erlang/OTP R1A (1998) |
依赖wx库。 |
|
349 |
系统监控(tv) |
底层实现:Table Visualizer,显示ETS/Mnesia表内容的GUI工具(已弃用)。 |
Erlang/OTP R1A (1998) |
依赖wx库。 |
|
350 |
系统监控(debugger) |
底层实现:Erlang调试器,支持断点、单步、变量检查,基于解释模式(interpreted modules),通过dbg实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
351 |
系统监控(i/0) |
底层实现:交互式shell命令,列出所有进程及其基本信息(pid、name、status、memory等),通过遍历进程表实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
352 |
系统监控(regs/0) |
底层实现:列出所有注册名称及其对应的PID,从注册表读取。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
353 |
系统监控(memory/0) |
底层实现:打印当前内存使用摘要,等同于erlang:memory()的输出格式化。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
354 |
系统监控(bt/1) |
底层实现:打印进程的堆栈回溯(backtrace),通过调用erlang:process_info(Pid, backtrace)获取。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
355 |
系统监控(catch/1) |
底层实现:编译为try-catch表达式,捕获异常并返回{'EXIT', Reason}或正常值。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
356 |
系统监控(try-catch-after) |
底层实现:编译器生成try/catch/after指令,after块总是执行(即使异常或return),用于资源清理。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
357 |
系统监控(error_logger) |
底层实现:OTP默认日志系统,基于gen_event,支持多种后端(控制台、文件、syslog),消息格式化为字符串。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
358 |
系统监控(logger) |
底层实现:OTP 21+引入的新日志框架,支持结构化日志、级别、过滤器、处理器链,异步模式,使用telemetry事件。 |
Erlang/OTP 21.0 (2018) |
无硬件依赖。 |
|
359 |
系统监控(sasl) |
底层实现:系统架构支持库(System Architecture Support Libraries),提供错误日志、进度报告、监督树启动/停止报告,使用error_logger或logger。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
360 |
系统监控(os_mon) |
底层实现:操作系统监控应用,通过端口程序(如CPU、磁盘、网络)收集系统资源使用情况,支持SNMP。 |
Erlang/OTP R5B (2001) |
依赖OS工具(如vmstat、iostat)。 |
|
361 |
系统监控(cpu_sup) |
底层实现:os_mon应用的一部分,通过端口程序读取/proc/stat(Linux)或调用sysctl(FreeBSD/macOS),计算CPU利用率(user/nice/system/idle/iowait)。 |
Erlang/OTP R5B (2001) |
依赖OS procfs;国产OS需兼容。 |
|
362 |
系统监控(disksup) |
底层实现:os_mon应用的一部分,通过端口程序调用df(Unix)或GetDiskFreeSpaceEx(Windows),获取磁盘分区使用情况。 |
Erlang/OTP R5B (2001) |
依赖OS命令;国产OS需提供df。 |
|
363 |
系统监控(memsup) |
底层实现:os_mon应用的一部分,通过读取/proc/meminfo(Linux)或sysctl获取物理内存和swap使用量。 |
Erlang/OTP R5B (2001) |
依赖OS procfs。 |
|
364 |
系统监控(snmp) |
底层实现:SNMP代理和管理器,支持MIB编译、陷阱发送、GET/SET操作,基于UDP和ASN.1编解码。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
365 |
系统监控(os_mon:notify/2) |
底层实现:当资源达到阈值时发送通知消息,内部使用gen_event发布事件。 |
Erlang/OTP R5B (2001) |
无硬件依赖。 |
|
366 |
系统监控(alarm_handler) |
底层实现:SASL提供的告警处理进程,管理一组告警(set/clear alarm),可设置回调函数。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
367 |
系统监控(release_handler) |
底层实现:OTP发布处理模块,支持热升级/降级,通过读取.relup文件执行指令,使用appup定义应用升级步骤。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
368 |
系统监控(reltool) |
底层实现:发布打包工具,分析模块依赖,生成最小化发布包,支持包含erts、库、配置文件。 |
Erlang/OTP R13B (2009) |
无硬件依赖。 |
|
369 |
系统监控(systools) |
底层实现:脚本和发布处理工具,用于创建boot脚本、.script/.boot文件,以及处理.rel文件。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
370 |
系统监控(heart) |
底层实现:心跳监控进程,定期向外部heart程序发送心跳,若超时则heart程序重启BEAM(通过kill+exec)。 |
Erlang/OTP R1A (1998) |
依赖OS进程管理。 |
|
371 |
系统监控(erl_call) |
底层实现:命令行工具,通过启动隐藏节点连接到运行中的Erlang节点,执行RPC调用,可用于远程管理。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
372 |
系统监控(run_erl) |
底层实现:包装BEAM进程,将标准输出/错误重定向到管道,用于daemon化运行,支持日志轮转。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
373 |
系统监控(to_erl) |
底层实现:连接到run_erl管理的BEAM进程,提供交互式shell访问。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
374 |
系统监控(ct_run) |
底层实现:Common Test的启动脚本,支持测试执行、日志收集、代码覆盖率等。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
375 |
系统监控(rebar3) |
底层实现:Erlang构建工具,基于rebar3核心,支持依赖管理、编译、测试、发布等,使用hex.pm作为包仓库。 |
Rebar3 3.0 (2016) |
无硬件依赖。 |
|
376 |
系统监控(mix) |
底层实现:Elixir的构建工具,但也可用于Erlang项目,支持任务、编译、测试、发布。 |
Mix (Elixir) |
无硬件依赖。 |
|
377 |
系统监控(hex) |
底层实现:Erlang/Elixir包管理器,通过HTTPS与hex.pm通信,支持依赖解析和发布。 |
Hex (2014) |
依赖网络。 |
|
378 |
系统监控(erlang_ls) |
底层实现:Erlang语言服务器协议(LSP)实现,提供代码补全、跳转定义、诊断、重构等功能,基于analysis_server。 |
社区库 |
无硬件依赖。 |
|
379 |
系统监控(efene) |
底层实现:另一种Erlang方言(已停止开发),语法类似Python,编译为BEAM字节码。 |
社区库 |
无硬件依赖。 |
|
380 |
系统监控(LFE) |
底层实现:Lisp Flavoured Erlang,一种基于Lisp语法的Erlang方言,编译为BEAM字节码,支持宏和S表达式。 |
LFE 0.1 (2008) |
无硬件依赖。 |
|
381 |
系统监控(Alpaca) |
底层实现:静态类型Erlang方言,使用Hindley-Milner类型推断,编译为BEAM字节码。 |
社区库 |
无硬件依赖。 |
|
382 |
系统监控(Gleam) |
底层实现:静态类型函数式语言,编译为BEAM字节码或JavaScript,拥有自己的类型系统和标准库。 |
Gleam 0.1 (2019) |
无硬件依赖。 |
|
383 |
系统监控(Caramel) |
底层实现:OCaml方言,编译为BEAM字节码,利用OCaml的类型系统和模式匹配。 |
社区库 |
无硬件依赖。 |
|
384 |
系统监控(Pyrlang) |
底层实现:Python实现的Erlang分布式节点协议,允许Python程序与Erlang节点通信,支持RPC和消息传递。 |
社区库 |
依赖网络。 |
|
385 |
系统监控(JInterface) |
底层实现:Java实现的Erlang分布式节点协议,支持Java与Erlang互操作,提供OtpNode、OtpErlangObject等类。 |
Erlang/OTP R1A (1998) |
依赖JVM和网络。 |
|
386 |
系统监控(Erlang Port Mapper Daemon – EPMD) |
底层实现:独立的守护进程(epmd),监听4369端口,管理节点名称到端口的映射,节点启动时注册,其他节点通过查询获取连接端口。 |
Erlang/OTP R1A (1998) |
依赖网络;国产防火墙需放行。 |
|
387 |
系统监控(inet_dist_listen_min/max) |
底层实现:配置项,限制分布式连接使用的TCP端口范围,便于防火墙配置。 |
Erlang/OTP R1A (1998) |
依赖防火墙配置。 |
|
388 |
系统监控(kernel:networking) |
底层实现:kernel应用初始化网络子系统,包括EPMD连接、分发模块加载、socket设置。 |
Erlang/OTP R1A (1998) |
依赖网络栈。 |
|
389 |
系统监控(auth) |
底层实现:分布式认证模块,使用cookie进行节点间认证,通过magic cookie比对,支持动态cookie设置。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
390 |
系统监控(global) |
底层实现:全局进程注册和锁服务,使用全序广播算法(基于原子广播)保持一致性,支持网络分区检测。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
391 |
系统监控(global_group) |
底层实现:global的分组扩展,允许将节点分为组,组内全局操作,组间隔离。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
392 |
系统监控(net_kernel) |
底层实现:分布式内核进程,管理节点连接、断开、监视,处理tick和分布式消息路由。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
393 |
系统监控(rpc) |
底层实现:远程过程调用模块,支持call(同步)、cast(异步)、eval(任意表达式),使用gen_server模式,序列化参数和结果。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
394 |
系统监控(math) |
底层实现:数学函数模块,提供sqrt、sin、cos、log等,基于C标准库math.h的NIF调用。 |
Erlang/OTP R1A (1998) |
依赖FPU;国产CPU浮点兼容。 |
|
395 |
系统监控(rand) |
底层实现:随机数生成模块,支持均匀分布、正态分布、指数分布等,使用xoroshiro128+算法(默认),可指定种子。 |
Erlang/OTP 18.0 (2015) |
无硬件依赖。 |
|
396 |
系统监控(random) |
底层实现:旧版随机数生成模块,使用线性同余算法,已弃用。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
397 |
系统监控(calendar) |
底层实现:日期时间处理模块,支持格里高利历,提供日期转换、ISO8601格式、时间差计算等。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
398 |
系统监控(unicode) |
底层实现:Unicode处理模块,支持UTF-8/UTF-16/UTF-32编解码,字符分类,大小写转换,基于ICU或内置表。 |
Erlang/OTP R13B (2009) |
无硬件依赖。 |
|
399 |
系统监控(io_lib) |
底层实现:IO列表格式化库,支持~p/~w/~s等格式,生成iolist而非字符串,避免不必要的复制。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
400 |
系统监控(erl_eval) |
底层实现:Erlang表达式求值器,用于shell和动态代码执行,解析表达式并调用apply/3执行。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
401 |
系统监控(erl_parse) |
底层实现:Erlang语法解析器,将源代码token流解析为抽象语法树(AST),支持扩展语法。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
402 |
系统监控(erl_lint) |
底层实现:Erlang代码检查器,对AST进行语义检查,如未使用变量、函数冲突、类型错误等,返回警告和错误列表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
403 |
系统监控(compile) |
底层实现:Erlang编译器入口,将源码或AST编译为BEAM字节码,支持多种选项(debug_info、export_all等),调用core_erlang、beam_ssa等内部pass。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
404 |
系统监控(cerl) |
底层实现:Core Erlang表示模块,用于构造和操作Core Erlang AST,编译器内部使用。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
405 |
系统监控(beam_ssa) |
底层实现:BEAM Static Single Assignment中间表示,编译器优化pass使用,进行类型推断、死代码消除、常量折叠等。 |
Erlang/OTP 22.0 (2019) |
无硬件依赖。 |
|
406 |
系统监控(beam_disasm) |
底层实现:BEAM字节码反汇编器,将二进制代码转换为人类可读的助记符,用于调试和理解编译结果。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
407 |
系统监控(beam_lib) |
底层实现:BEAM文件操作库,用于读取、写入、检查.chunk文件,支持代码热加载的抽象。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
408 |
系统监控(code) |
底层实现:代码服务器模块,管理模块加载、路径、覆盖、软清除(purge),支持热代码升级的原子切换。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
409 |
系统监控(preloaded) |
底层实现:预加载模块列表,在BEAM启动时直接加载到内存,包括init、erl_prim_loader等核心模块。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
410 |
系统监控(init) |
底层实现:系统初始化模块,解析启动参数,加载预加载模块,启动kernel和stdlib,执行启动脚本。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
411 |
系统启动(boot script) |
底层实现:启动脚本(.script/.boot文件)定义了BEAM启动时需要加载的模块和应用顺序,由systools或reltool生成,init模块逐条执行指令(load_module、apply等)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
412 |
系统启动(-config 配置文件) |
底层实现:启动时通过-config指定sys.config文件,其中包含应用的配置参数(env),kernel应用读取后分发给各应用。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
413 |
系统启动(-args_file) |
底层实现:从文件读取额外的命令行参数,支持长选项,用于复杂启动场景。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
414 |
系统启动(-emu_args) |
底层实现:将参数传递给BEAM模拟器(即erlexec),例如+P(进程数)、+t(线程数)等。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
415 |
系统启动(+MBas 等内存分配器参数) |
底层实现:控制BEAM内存分配器的行为,如+MBas(分配器策略)、+MBlmb(最大空闲块)、+MBsb(超级块)等,影响内存碎片和分配速度。 |
Erlang/OTP R11B (2006) |
无硬件依赖。 |
|
416 |
系统启动(+S 调度器数量) |
底层实现:设置BEAM使用的调度器数量,通常等于CPU核心数,通过+Sbwt(绑定)和+sw(唤醒)等参数进一步控制。 |
Erlang/OTP R11B (2006) |
依赖CPU核心数;国产CPU多核适用。 |
|
417 |
系统启动(+P 进程数上限) |
底层实现:设置系统最大进程数(默认约32k),影响进程表大小和调度器负载。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
418 |
系统启动(+t 线程数上限) |
底层实现:设置异步线程池大小,用于处理端口驱动、NIF等阻塞操作。 |
Erlang/OTP R11B (2006) |
无硬件依赖。 |
|
419 |
系统启动(+A 异步线程池) |
底层实现:与+t类似,设置异步线程池大小,用于执行长时间运行的NIF或端口驱动回调。 |
Erlang/OTP R11B (2006) |
无硬件依赖。 |
|
420 |
系统启动(+K true 启用内核轮询) |
底层实现:启用内核轮询(kernel poll),使用epoll/kqueue等高效的IO多路复用机制,替代select,提升网络IO性能。 |
Erlang/OTP R11B (2006) |
依赖OS epoll/kqueue;国产Linux支持epoll。 |
|
421 |
系统启动(+scl false 禁用调度器补偿) |
底层实现:禁用调度器睡眠补偿,减少CPU功耗,适合延迟不敏感场景。 |
Erlang/OTP 20.0 (2017) |
无硬件依赖。 |
|
422 |
系统启动(+sfwi 调度器强制唤醒间隔) |
底层实现:设置调度器强制唤醒间隔(毫秒),用于检查是否有就绪任务,减少调度延迟。 |
Erlang/OTP 20.0 (2017) |
无硬件依赖。 |
|
423 |
系统启动(+stbt 调度器类型绑定) |
底层实现:控制调度器与CPU核心的绑定策略(spread/balanced/db),影响缓存亲和性。 |
Erlang/OTP 20.0 (2017) |
依赖CPU拓扑。 |
|
424 |
系统启动(+sss 调度器采样间隔) |
底层实现:设置调度器采样间隔(微秒),用于统计负载和迁移决策。 |
Erlang/OTP 20.0 (2017) |
无硬件依赖。 |
|
425 |
系统启动(+sub 调度器利用率平衡) |
底层实现:启用调度器利用率平衡,动态迁移进程以平衡负载。 |
Erlang/OTP 20.0 (2017) |
无硬件依赖。 |
|
426 |
系统启动(+sw 调度器唤醒策略) |
底层实现:设置调度器唤醒策略(default/spread),控制如何唤醒空闲调度器。 |
Erlang/OTP 20.0 (2017) |
无硬件依赖。 |
|
427 |
系统启动(+sbwt 调度器绑定等待时间) |
底层实现:设置调度器在尝试绑定到特定核心前的等待时间(微秒)。 |
Erlang/OTP 20.0 (2017) |
无硬件依赖。 |
|
428 |
系统启动(+sbtd 调度器绑定类型分布) |
底层实现:控制调度器在NUMA节点间的分布(spread/balanced)。 |
Erlang/OTP 20.0 (2017) |
依赖NUMA架构;国产服务器普遍NUMA。 |
|
429 |
系统启动(+dcg 脏CPU调度器) |
底层实现:启用脏CPU调度器,允许长时间运行的NIF在专门的调度器上执行,不阻塞主调度器。 |
Erlang/OTP 20.0 (2017) |
无硬件依赖。 |
|
430 |
系统启动(+dci 脏IO调度器) |
底层实现:启用脏IO调度器,处理阻塞IO操作,类似脏CPU但针对IO。 |
Erlang/OTP 20.0 (2017) |
无硬件依赖。 |
|
431 |
系统启动(+pad 进程分配器) |
底层实现:设置进程分配器策略(default/compact/hybrid),控制进程在调度器队列中的分布。 |
Erlang/OTP 20.0 (2017) |
无硬件依赖。 |
|
432 |
系统启动(+mul 多核利用率) |
底层实现:控制多核利用率策略(default/low/high),影响调度器睡眠行为。 |
Erlang/OTP 20.0 (2017) |
无硬件依赖。 |
|
433 |
系统启动(+zdbbl 分布式缓冲区大小) |
底层实现:设置分布式连接的缓冲区大小(字节),影响大消息传输性能。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
434 |
系统启动(+d 分布式端口范围) |
底层实现:设置分布式连接使用的TCP端口范围(如+d 9100 9200),用于防火墙配置。 |
Erlang/OTP R1A (1998) |
依赖防火墙。 |
|
435 |
系统启动(+r 分布式连接重试) |
底层实现:设置分布式连接重试次数,默认无限重试。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
436 |
系统启动(+n 分布式节点名) |
底层实现:通过-n参数指定节点名称(如-n mynode@host),等价于-name。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
437 |
系统启动(+s 分布式隐藏) |
底层实现:-s hidden使节点隐藏,不自动连接其他节点。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
438 |
系统启动(+c cookie) |
底层实现:设置分布式cookie,用于节点认证。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
439 |
系统启动(+proto inet6) |
底层实现:使用IPv6进行分布式通信。 |
Erlang/OTP R1A (1998) |
依赖IPv6网络。 |
|
440 |
系统启动(+ssl 分发SSL) |
底层实现:启用SSL分发,使用证书加密节点间通信。 |
Erlang/OTP R14B (2010) |
依赖OpenSSL;国产密码需定制。 |
|
441 |
系统启动(+B 启动模式) |
底层实现:-B指定启动模式(embedded/interactive),embedded模式下所有代码在启动时加载,interactive按需加载。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
442 |
系统启动(-detached) |
底层实现:以守护进程方式启动BEAM,脱离终端,将IO重定向到文件。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
443 |
系统启动(-noinput) |
底层实现:禁止标准输入,通常与-detached一起使用,避免shell干扰。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
444 |
系统启动(-noshell) |
底层实现:不启动Erlang shell,用于脚本执行。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
445 |
系统启动(-eval) |
底层实现:在系统初始化后执行给定的Erlang表达式,可用于运行脚本或启动应用。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
446 |
系统启动(-s 和 -run) |
底层实现:在系统初始化后调用指定的模块/函数/参数,-s在函数返回后继续,-run在函数返回后退出。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
447 |
系统启动(-extra) |
底层实现:将-extra之后的所有参数传递给init:get_plain_arguments(),供应用使用。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
448 |
系统启动(-pa 和 -pz) |
底层实现:在代码路径前面(-pa)或后面(-pz)添加目录,用于加载模块。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
449 |
系统启动(-env) |
底层实现:设置环境变量,例如-env ERL_LIBS /path,用于指定库路径。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
450 |
系统启动(-boot_var) |
底层实现:在boot脚本中使用变量替换,如-boot_var MyApp /path/to/app,用于灵活配置路径。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
451 |
系统启动(-loader) |
底层实现:指定代码加载器(efile/inet),inet用于从远程加载代码(如通过erl_boot_server)。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
452 |
系统启动(-hosts) |
底层实现:指定启动时要连接的主机列表,用于分布式系统自动发现。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
453 |
系统启动(-id) |
底层实现:设置节点的短名称(sname),与-name类似但使用短名称。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
454 |
系统启动(-master) |
底层实现:指定主节点,用于slave节点启动时的连接目标。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
455 |
系统启动(-setcookie) |
底层实现:设置分布式cookie,与-c类似。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
456 |
系统启动(-connect_all false) |
底层实现:禁止节点自动连接所有已知节点,仅连接显式指定的节点。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
457 |
系统启动(-hidden) |
底层实现:使节点隐藏,不出现在global名称空间中,但可被显式连接。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
458 |
系统启动(-sname) |
底层实现:设置短节点名称(如-sname mynode),不包含完整域名。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
459 |
系统启动(-name) |
底层实现:设置长节点名称(如-name mynode@host.domain),包含完整域名。 |
Erlang/OTP R1A (1998) |
依赖DNS。 |
|
460 |
系统启动(-remsh) |
底层实现:启动一个远程shell连接到指定节点,用于远程管理。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
461 |
进程字典(put/2, get/1, erase/1) |
底层实现:每个进程维护一个键值对字典(哈希表),存储在进程控制块(PCB)中。put/2插入或更新键值,get/1查找,erase/1删除并返回值。操作时间复杂度O(1)平均。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
462 |
计时器(timer:send_after/2) |
底层实现:timer模块使用一个单独的timer进程管理大量定时器,通过最小堆实现。发送消息给目标进程。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
463 |
引用(erlang:make_ref/0) |
底层实现:生成一个唯一的引用(reference),由创建节点的ID和一个单调递增的计数器组成,保证全局唯一。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
464 |
端口(erlang:open_port/2) |
底层实现:创建一个外部端口,与操作系统进程或驱动程序通信。参数指定端口名称和选项列表(如spawn、fd、packet等)。底层通过管道、套接字或共享内存实现。 |
Erlang/OTP R1A (1998) |
依赖OS进程管理;国产OS需兼容。 |
|
465 |
端口命令(erlang:port_command/2) |
底层实现:向端口发送数据,数据被放入端口驱动缓冲区,由驱动异步处理。支持force选项忽略流量控制。 |
Erlang/OTP R1A (1998) |
依赖端口驱动。 |
|
466 |
端口控制(erlang:port_control/3) |
底层实现:向端口驱动发送同步控制命令,返回结果二进制。常用于配置端口驱动。 |
Erlang/OTP R1A (1998) |
依赖端口驱动。 |
|
467 |
端口关闭(erlang:port_close/1) |
底层实现:关闭端口,释放相关资源,通知外部进程终止。如果端口连接了其他进程,它们会收到{'EXIT', Port, Reason}消息。 |
Erlang/OTP R1A (1998) |
依赖OS进程管理。 |
|
468 |
端口连接(erlang:port_connect/2) |
底层实现:将端口的所有者(connected process)改为另一个进程,之后该进程接收端口消息。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
469 |
链接(link/1) |
底层实现:在两个进程之间建立双向链接,当一方异常退出时,另一方收到退出信号(除非trapped exit)。底层通过进程控制块中的链接列表实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
470 |
解除链接(unlink/1) |
底层实现:移除两个进程之间的链接,从双方的链接列表中删除对方。如果当前正在处理退出信号,unlink可能无效。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
471 |
监视器(erlang:monitor/2) |
底层实现:创建一个单向监视器,当被监视进程/端口退出时,向监视进程发送{'DOWN', Ref, process, Pid, Reason}消息。监视器使用引用标识。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
472 |
取消监视(erlang:demonitor/2) |
底层实现:移除指定监视器。支持flush选项丢弃已发送但未接收的DOWN消息。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
473 |
进程组(pg:join/2, pg:leave/2, pg:get_members/1) |
底层实现:pg(进程组)模块使用分布式进程组管理,基于global注册,维护组内成员列表,支持跨节点。内部使用ETS存储组信息。 |
Erlang/OTP 23.0 (2020) |
依赖网络。 |
|
474 |
二进制匹配(<<Pattern/binary>>) |
底层实现:编译器将二进制模式匹配优化为高效的位操作指令,支持定长和变长匹配,使用位语法(bit syntax)。底层通过BIF binary:match/2 或直接指针操作。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
475 |
列表推导([Expr |
Qualifier1, …]) |
底层实现:编译器将列表推导展开为递归函数调用,使用lists:map/2和lists:filter/2的组合,或直接生成尾递归代码。 |
|
|
476 |
守卫(Guard) |
底层实现:守卫是一系列谓词表达式,在函数子句头部使用,编译器生成分支判断代码,只允许使用特定的BIF和运算符。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
477 |
记录(record) |
底层实现:记录是编译期语法糖,展开为元组操作。定义记录后,编译器将字段访问转换为tuple element操作。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
478 |
Map(#{key => value}) |
底层实现:Map是一种键值对集合,底层使用哈希数组映射树(HAMT)或有序列表(小map),支持模式匹配和更新。 |
Erlang/OTP 17.0 (2014) |
无硬件依赖。 |
|
479 |
Try-Catch表达式 |
底层实现:编译器生成try/catch/after指令,在堆栈上设置异常处理帧,捕获throw/error/exit三种异常。catch子句通过模式匹配异常类。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
480 |
Catch表达式 |
底层实现:旧式异常捕获,将任何异常转换为{'EXIT', Reason}或{'EXIT', {Class, Reason}}。编译器将其转为try-catch。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
481 |
Throw(throw/1) |
底层实现:抛出一个可由catch/try捕获的非致命异常,不影响进程退出。底层通过堆栈展开实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
482 |
Exit(exit/1) |
底层实现:exit/1抛出'exit'类异常,通常用于进程正常退出;exit/2带理由向链接进程发送退出信号。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
483 |
Spawn(spawn/1, spawn/3) |
底层实现:创建新进程,分配进程控制块(PCB),设置初始堆栈,将函数作为入口点。新进程加入调度器就绪队列。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
484 |
Spawn链接(spawn_link/1, spawn_link/3) |
底层实现:创建进程的同时建立链接,相当于spawn后立即link。底层在创建进程时直接设置链接关系,避免竞态条件。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
485 |
Spawn监视(spawn_monitor/1, spawn_monitor/3) |
底层实现:创建进程的同时设置监视器,返回{Pid, Ref}。底层在创建进程后立即调用monitor。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
486 |
Send(! 运算符) |
底层实现:消息发送操作,将消息副本放入目标进程的邮箱(mailbox),然后通知调度器。如果目标进程在同一节点,通过内存拷贝;跨节点则通过分布式协议序列化传输。 |
Erlang/OTP R1A (1998) |
依赖内存带宽;跨节点依赖网络。 |
|
487 |
Receive表达式 |
底层实现:进程从邮箱中匹配消息,如果没有匹配则挂起(进入等待队列),直到超时或有新消息。底层通过扫描邮箱链表实现匹配。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
488 |
After超时(receive after) |
底层实现:receive语句可以指定超时时间,超时后执行after子句。底层使用调度器定时器实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
489 |
进程标志(process_flag/2) |
底层实现:设置进程属性,如trap_exit(捕获退出信号)、priority(优先级)、message_queue_data(邮箱数据存储方式)等。底层直接修改PCB中的标志位。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
490 |
系统标志(erlang:system_flag/2) |
底层实现:设置全局系统属性,如fullsweep_after(GC触发频率)、multi_scheduling(多调度器控制)、backtrace_depth等。底层修改运行时全局变量。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
491 |
单调时间(erlang:monotonic_time/0) |
底层实现:返回从某个固定起点开始的单调递增时间(纳秒),不受系统时间调整影响。底层使用操作系统提供的CLOCK_MONOTONIC。 |
Erlang/OTP 18.0 (2015) |
依赖OS时钟;国产OS需支持CLOCK_MONOTONIC。 |
|
492 |
唯一整数(erlang:unique_integer/0) |
底层实现:生成一个单调递增的唯一整数,可选monotonic和positive修饰符。底层使用原子操作递增全局计数器。 |
Erlang/OTP 19.0 (2016) |
无硬件依赖。 |
|
493 |
时间偏移(erlang:time_offset/0) |
底层实现:返回单调时间与墙上时间的偏移量(纳秒),用于将单调时间转换为UTC时间。底层从操作系统获取时区信息。 |
Erlang/OTP 18.0 (2015) |
依赖OS时区。 |
|
494 |
时间戳(erlang:timestamp/0) |
底层实现:返回{MegaSecs, Secs, MicroSecs}三元组,基于墙上时间,受系统时间调整影响。底层调用gettimeofday或clock_gettime。 |
Erlang/OTP R1A (1998) |
依赖OS时钟。 |
|
495 |
哈希(erlang:phash2/1) |
底层实现:返回任意Erlang项的32位哈希值,使用改进的Bob Jenkins哈希算法。底层对每种数据类型(原子、整数、元组、列表等)分别计算。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
496 |
CRC32(erlang:crc32/1) |
底层实现:计算二进制的CRC-32校验和,使用多项式0xEDB88320,基于查表法。底层为NIF实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
497 |
MD5(erlang:md5/1) |
底层实现:计算二进制数据的MD5哈希(128位),使用标准MD5算法,NIF实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
498 |
SHA(crypto:hash/2) |
底层实现:crypto模块提供SHA1/SHA224/SHA256/SHA384/SHA512等哈希算法,通过OpenSSL NIF实现。 |
Erlang/OTP R1A (1998) |
依赖OpenSSL;国产密码需替换为GMSSL。 |
|
499 |
Base64编解码(base64:encode/1, base64:decode/1) |
底层实现:将二进制数据编码为Base64字符串(每3字节变为4个ASCII字符),解码反之。使用查表和位操作。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
500 |
JSON编解码(jsx/jiffy等) |
底层实现:社区库jsx使用Erlang实现JSON解析器,jiffy使用NIF(基于jsmn或yajl)。解析时将JSON字符串转换为Erlang term(proplists或maps)。 |
社区库 |
无硬件依赖。 |
|
501 |
协议缓冲(gpb) |
底层实现:Google Protocol Buffers的Erlang实现,通过代码生成器将.proto文件编译为Erlang模块,使用二进制匹配进行编解码。 |
社区库 |
无硬件依赖。 |
|
502 |
MessagePack(msgpack) |
底层实现:MessagePack序列化库,将Erlang term编码为紧凑二进制格式,支持整数、字符串、数组、map等。使用NIF或纯Erlang实现。 |
社区库 |
无硬件依赖。 |
|
503 |
Term to Binary(term_to_binary/1) |
底层实现:将任意Erlang term序列化为外部术语格式(ETF),使用标签和长度前缀。支持压缩选项(compressed)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
504 |
Binary to Term(binary_to_term/1) |
底层实现:将ETF二进制反序列化为Erlang term,检查格式有效性。支持safe选项禁止创建原子/引用等(防止DoS)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
505 |
外部术语格式(ETF) |
底层实现:Erlang External Term Format是一种二进制编码,用于分布式消息传递和term_to_binary。包含版本号(131)和各种类型标签(SMALL_INTEGER_EXT, ATOM_EXT, LIST_EXT等)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
506 |
分布式消息传递(发送到远程节点) |
底层实现:当发送消息给远程节点上的进程时,本地节点将消息序列化为ETF,通过TCP连接发送,远程节点反序列化后投递到目标邮箱。使用分布式协议(EPMD + TCP)。 |
Erlang/OTP R1A (1998) |
依赖网络;国产网络设备需支持TCP。 |
|
507 |
分布式注册(global:register_name/2) |
底层实现:在全局名称空间中注册进程,使用原子广播算法保持一致性。注册信息存储在global进程的ETS表中。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
508 |
分布式锁(global:set_lock/1) |
底层实现:全局锁服务,基于相同原子广播算法,提供可重入锁。锁以{ResourceId, LockRequesterId}标识。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
509 |
节点监控(net_kernel:monitor_nodes/1) |
底层实现:注册回调函数,当节点连接或断开时收到{nodeup, Node}或{nodedown, Node}消息。底层由net_kernel进程维护节点列表。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
510 |
隐藏节点(-hidden) |
底层实现:隐藏节点不参与全局名称注册,也不自动与其他节点连接,但可以被显式连接。底层在节点信息中设置hidden标志。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
511 |
调度器抢占(reductions计数) |
底层实现:每个进程分配一定数量的reductions(约2000),每次函数调用、BIF调用、算术运算等消耗一个或多个reduction。当reductions耗尽时,调度器强制上下文切换。底层通过进程控制块中的reduction计数器实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
512 |
调度器迁移(migration) |
底层实现:当某个调度器负载过高,而其他调度器空闲时,BEAM会将进程从一个调度器迁移到另一个。迁移决策基于运行队列长度和利用率统计。底层通过修改进程的调度器亲和性实现。 |
Erlang/OTP R11B (2006) |
依赖CPU缓存架构。 |
|
513 |
运行队列(Run Queue) |
底层实现:每个调度器维护一个运行队列,存放就绪进程。队列采用优先级队列(max, high, normal, low),同优先级使用FIFO。底层使用双向链表或数组实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
514 |
进程优先级(process_flag(priority, Level)) |
底层实现:设置进程优先级(max, high, normal, low)。调度器优先选择高优先级运行队列中的进程。max优先级用于实时任务,但会阻止其他进程运行。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
515 |
进程邮箱(mailbox) |
底层实现:每个进程有一个邮箱,用于存储收到的消息。邮箱是一个单向链表,每个消息节点包含数据和下一个指针。消息通过指针拷贝(同一节点)或序列化(跨节点)放入。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
516 |
选择性接收优化(selective receive optimization) |
底层实现:编译器对receive语句进行优化,如果只有一个模式且没有guard,可以直接从邮箱头部匹配,避免扫描整个邮箱。对于复杂模式,编译器生成一个循环扫描。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
517 |
消息队列数据存储(message_queue_data) |
底层实现:进程标志message_queue_data可设为off_heap或on_heap。on_heap将消息数据放在进程堆中,off_heap放在共享堆(off-heap)中。影响GC行为和内存布局。 |
Erlang/OTP 19.0 (2016) |
无硬件依赖。 |
|
518 |
二进制堆(binary heap) |
底层实现:二进制数据有两种存储方式:refc binary(引用计数,可共享)和heap binary(小二进制,直接放在进程堆)。refc binary存储在共享二进制堆中,由多个进程引用。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
519 |
二进制匹配上下文(match context) |
底层实现:在二进制模式匹配时,编译器创建匹配上下文(match context),包含指向二进制起始位置的指针和当前位置偏移。匹配操作移动指针,避免重复创建子二进制。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
520 |
子二进制(sub binary) |
底层实现:当从一个二进制中截取一部分时,如果不复制,会创建一个子二进制(sub binary),它指向原始二进制的一个区间,并带有引用计数。原始二进制不能被GC直到所有子二进制消失。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
521 |
二进制构建(<<X:Size/Type>>) |
底层实现:位语法构建二进制时,编译器生成高效的字节码,使用位操作指令(bs_create_bin等)拼接各个片段。支持整数、浮点数、字符串、二进制等类型。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
522 |
浮点数运算(float) |
底层实现:Erlang浮点数采用IEEE 754双精度(64位),通过NIF调用C的数学库。支持基本运算和超越函数。 |
Erlang/OTP R1A (1998) |
依赖FPU;国产CPU需兼容IEEE 754。 |
|
523 |
大整数(big integer) |
底层实现:Erlang整数可以是任意精度(bignum),当超出机器字范围时,使用GMP(GNU Multiple Precision Arithmetic Library)或类似实现。运算通过NIF调用。 |
Erlang/OTP R1A (1998) |
依赖GMP;国产CPU需移植。 |
|
524 |
原子(atom) |
底层实现:原子是全局符号表中的唯一字符串,每个原子对应一个整数索引。原子比较通过索引比较(O(1))。原子表大小有限(默认约1百万)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
525 |
列表反转(lists:reverse/1) |
底层实现:递归遍历列表,将元素逐个cons到新列表头部,实现反转。尾递归优化使用累加器。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
526 |
列表排序(lists:sort/1) |
底层实现:使用归并排序(merge sort),稳定排序。递归地将列表分成两半,排序后再合并。对于小列表使用插入排序。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
527 |
列表连接(++运算符) |
底层实现:左操作数列表被复制,右操作数直接引用。因此A ++ B的时间复杂度为O(length(A))。 |
A |
\\cdot t_{copy})。 |
|
528 |
列表减法(–运算符) |
底层实现:从左列表中依次删除右列表中出现的元素(第一个匹配)。时间复杂度O( |
A |
* |
|
529 |
集合(ordsets, gb_sets, sets) |
底层实现:ordsets使用有序列表,gb_sets使用平衡树(AVL),sets使用哈希表(基于ETS?实际是纯Erlang实现)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
530 |
字典(dict, orddict, gb_trees) |
底层实现:dict使用动态哈希表(开地址法),orddict使用有序列表,gb_trees使用平衡树。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
531 |
数组(array) |
底层实现:array模块实现可扩展数组,使用树形结构(10叉树),支持稀疏存储。索引从0开始。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
532 |
队列(queue) |
底层实现:queue模块使用两个列表(前端和后端)实现FIFO队列,出队从front取,入队加到back,当front为空时反转back。摊还O(1)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
533 |
堆栈(stack) |
底层实现:Erlang没有专门的stack模块,通常使用列表模拟(头部插入/删除)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
534 |
有序集合(sofs) |
底层实现:sofs模块提供集合论运算(并交差、关系、函数等),基于有序列表和二叉树。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
535 |
字符串处理(string模块) |
底层实现:string模块提供字符串操作(大小写、分割、替换等),基于列表或二进制。OTP 20+新增unicode支持。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
536 |
正则表达式(re模块) |
底层实现:re模块使用PCRE库(Perl Compatible Regular Expressions),通过NIF调用。支持编译选项和匹配选项。 |
Erlang/OTP R12B (2007) |
依赖PCRE;国产OS需提供PCRE库。 |
|
537 |
文件IO(file模块) |
底层实现:file模块提供文件读写操作,底层使用端口驱动(efile)与操作系统交互。支持raw模式和cooked模式,异步IO。 |
Erlang/OTP R1A (1998) |
依赖OS文件系统;国产OS需POSIX兼容。 |
|
538 |
文件监视(file:read_file_info/1) |
底层实现:获取文件元数据(大小、权限、时间等),通过系统调用stat/lstat实现。NIF封装。 |
Erlang/OTP R1A (1998) |
依赖OS。 |
|
539 |
文件名通配(filelib:wildcard/1) |
底层实现:支持glob模式匹配文件名,递归遍历目录,使用file:list_dir/1和模式匹配。 |
Erlang/OTP R1A (1998) |
依赖OS。 |
|
540 |
网络套接字(gen_tcp) |
底层实现:gen_tcp模块提供TCP socket API,底层使用端口驱动(inet_drv)或NIF,支持主动/被动/混合消息模式。主动模式消息直接发送到控制进程邮箱。 |
Erlang/OTP R1A (1998) |
依赖网络栈;国产网卡需驱动支持。 |
|
541 |
UDP套接字(gen_udp) |
底层实现:UDP socket,无连接,数据报模式。通过inet_drv驱动,支持广播和多播。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
542 |
SCTP套接字(gen_sctp) |
底层实现:SCTP协议支持,多流传输,面向消息。通过inet_drv驱动。 |
Erlang/OTP R1A (1998) |
依赖OS SCTP支持。 |
|
543 |
SSL/TLS(ssl模块) |
底层实现:ssl模块基于OpenSSL库,提供加密套接字。支持客户端和服务端证书验证,会话重用。 |
Erlang/OTP R9B (2003) |
依赖OpenSSL;国产密码需替换为国密SSL。 |
|
544 |
HTTP客户端(httpc) |
底层实现:inets应用中的HTTP客户端,支持HTTP/1.1,连接池,重定向,认证。基于gen_tcp和ssl。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
545 |
HTTP服务器(inets httpd) |
底层实现:inets提供的HTTP服务器,支持模块化处理(mod_alias, mod_get等),基于gen_server处理请求。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
546 |
WebSocket(cowboy/gun) |
底层实现:社区库cowboy实现WebSocket协议,基于HTTP升级握手,之后使用frame传输。gun是客户端库。 |
社区库 |
依赖网络。 |
|
547 |
SSH(ssh模块) |
底层实现:OTP内置SSH客户端和服务端,支持密钥认证、端口转发、SFTP。基于gen_tcp和加密库。 |
Erlang/OTP R13B (2009) |
依赖加密库。 |
|
548 |
FTP(ftp模块) |
底层实现:FTP客户端,支持主动/被动模式,文件上传下载。基于gen_tcp。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
549 |
TFTP(tftp模块) |
底层实现:TFTP客户端和服务端,基于UDP,简单文件传输。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
550 |
DNS解析(inet_res) |
底层实现:DNS解析器,支持A/AAAA/MX等记录查询,缓存结果。通过UDP/TCP与DNS服务器通信。 |
Erlang/OTP R1A (1998) |
依赖DNS服务器。 |
|
551 |
邮件(SMTP/POP3/IMAP) |
底层实现:gen_smtp社区库提供SMTP客户端,支持TLS和认证。POP3和IMAP也有社区库。 |
社区库 |
依赖网络。 |
|
552 |
数据库连接(ODBC) |
底层实现:odbc模块通过ODBC驱动连接数据库,支持SQL查询,返回结果集。使用端口驱动与ODBC管理器通信。 |
Erlang/OTP R1A (1998) |
依赖ODBC驱动;国产数据库需ODBC支持。 |
|
553 |
PostgreSQL驱动(epgsql) |
底层实现:社区库epgsql,使用PostgreSQL二进制协议,支持预处理语句、复制协议、SSL。基于gen_tcp和ssl。 |
社区库 |
依赖网络。 |
|
554 |
MySQL驱动(mysql-otp) |
底层实现:社区库mysql-otp,使用MySQL协议,支持预处理语句、事务、连接池。基于gen_tcp和ssl。 |
社区库 |
依赖网络。 |
|
555 |
Redis驱动(eredis) |
底层实现:社区库eredis,使用Redis RESP协议,支持管道、事务、发布订阅。基于gen_tcp。 |
社区库 |
依赖网络。 |
|
556 |
MongoDB驱动(mongodb-erlang) |
底层实现:社区库,使用MongoDB Wire Protocol,支持BSON序列化,CRUD操作。基于gen_tcp。 |
社区库 |
依赖网络。 |
|
557 |
Memcached驱动(memcached) |
底层实现:社区库,使用Memcached ASCII或二进制协议,支持get/set/delete。基于gen_tcp。 |
社区库 |
依赖网络。 |
|
558 |
消息队列RabbitMQ(amqp_client) |
底层实现:RabbitMQ Erlang客户端,使用AMQP 0-9-1协议,支持交换机、队列、绑定、确认、发布确认。基于gen_tcp和ssl。 |
社区库 |
依赖网络。 |
|
559 |
Kafka客户端(kafka_protocol) |
底层实现:社区库,使用Kafka协议,支持生产者、消费者、分区分配、offset管理。基于gen_tcp。 |
社区库 |
依赖网络。 |
|
560 |
NATS客户端(gnat) |
底层实现:社区库,使用NATS协议,支持发布/订阅、请求/回复、集群。基于gen_tcp。 |
社区库 |
依赖网络。 |
|
561 |
Mnesia数据库(mnesia) |
底层实现:Mnesia是分布式DBMS,基于ETS/DETS存储,支持事务(ACID)、表分片、容错复制。事务通过锁管理器(sticky lock或悲观锁)实现,使用两阶段提交(2PC)保证分布式一致性。底层使用Erlang进程和消息传递。 |
Erlang/OTP R1A (1998) |
依赖网络和磁盘;国产OS需支持DETS文件。 |
|
562 |
Mnesia表类型(ram_copies, disc_copies, disc_only_copies) |
底层实现:ram_copies仅内存存储(ETS);disc_copies内存+磁盘备份(DETS);disc_only_copies仅磁盘(DETS)。写操作同步到磁盘,读从内存。DETS使用固定大小页面文件。 |
Erlang/OTP R1A (1998) |
依赖磁盘IO。 |
|
563 |
Mnesia事务(mnesia:transaction/1) |
底层实现:事务函数在事务上下文中执行,自动获取和释放锁。使用悲观锁(默认)或乐观锁(with optimistic locking)。事务管理器记录操作日志,提交时验证并写盘。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
564 |
Mnesia脏操作(mnesia:dirty_read/1等) |
底层实现:绕过事务管理器直接读写ETS/DETS,不加锁,速度快但不保证一致性。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
565 |
Mnesia表分片(fragmented tables) |
底层实现:将一个大表水平拆分为多个片段(fragment),分布在多个节点上。使用哈希函数(如mnesia:table_info/2的frag_properties)决定键所属片段。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
566 |
DETS文件格式 |
底层实现:DETS(Disk Erlang Term Storage)使用固定大小的页(page)存储Erlang term,每个页包含多个槽(slot)。文件头包含元数据(页大小、分配位图等)。支持修复(repair)。 |
Erlang/OTP R1A (1998) |
依赖磁盘。 |
|
567 |
ETS表类型(set, ordered_set, bag, duplicate_bag) |
底层实现:set使用哈希表(开地址法);ordered_set使用平衡树(AVL);bag允许多个相同键的值;duplicate_bag允许键和值都重复。底层通过ETS驱动实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
568 |
ETS保护级别(public, protected, private) |
底层实现:public表允许任何进程读写;protected表允许任何进程读,只有所有者写;private表仅所有者读写。权限检查在ETS驱动层面。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
569 |
ETS迭代(ets:foldl/3, ets:foldr/3) |
底层实现:对ETS表进行函数式折叠,使用安全遍历(表快照或锁)。对于大表,遍历期间会持有表锁,阻塞其他写操作。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
570 |
ETS匹配(ets:match/2, ets:match_object/2) |
底层实现:使用模式匹配遍历ETS表,返回匹配结果。支持绑定变量和守卫。底层通过驱动遍历哈希桶或树节点。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
571 |
ETS选择(ets:select/2, ets:select/3) |
底层实现:使用匹配规格(match specification)进行查询,支持绑定、守卫、限制返回数量。对于ordered_set,可以利用键范围优化。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
572 |
ETS插入性能 |
底层实现:插入操作需要计算哈希(set/ bag)或插入树(ordered_set),可能触发扩容(rehash)。扩容时锁表,开销大。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
573 |
ETS并发访问 |
底层实现:ETS使用读写锁(rwlock),读操作共享锁,写操作排他锁。锁粒度是整表(set/ordered_set)或哈希桶(部分实现)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
574 |
ETS表继承(heir) |
底层实现:创建ETS表时可以指定heir进程,当创建者进程死亡时,表所有权转移到heir。如果heir也死亡,表被删除。底层在进程退出时检查其拥有的ETS表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
575 |
ETS表信息(ets:info/1) |
底层实现:返回表的元数据(类型、保护级别、大小、内存占用等)。从ETS驱动内部数据结构读取。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
576 |
ETS表转储(ets:tab2list/1) |
底层实现:将整个表的内容复制到一个列表中。对于大表,消耗大量内存和时间。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
577 |
ETS表文件(ets:to_ets/2, ets:from_ets/2) |
底层实现:将ETS表序列化到二进制或从二进制恢复。使用内部格式。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
578 |
进程字典 vs ETS |
底层实现:进程字典是每个进程私有的哈希表,ETS是共享的全局表。进程字典操作更快(无锁),但不可共享。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
579 |
持久化项(persistent_term) |
底层实现:持久化项是全局键值存储,值在进程间共享,不拷贝。底层使用全局哈希表,值被固定(不被GC回收)。更新时原子替换。 |
Erlang/OTP 21.0 (2018) |
无硬件依赖。 |
|
580 |
编译时宏(-define, -ifdef) |
底层实现:预处理阶段,编译器处理宏定义和条件编译。宏展开发生在词法分析后。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
581 |
包含文件(-include, -include_lib) |
底层实现:编译器在预处理阶段将指定文件内容插入当前位置。include_lib在库路径中查找。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
582 |
行为(behaviour) |
底层实现:行为定义了一组回调函数,实现模块通过-behaviour(gen_server)声明,编译器检查是否实现了所有必需回调。运行时由行为框架调用。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
583 |
gen_server行为 |
底层实现:通用服务器框架,封装了同步/异步调用、状态管理、超时、热代码升级。底层使用gen模块实现,通过sys模块提供调试接口。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
584 |
gen_statem行为 |
底层实现:通用状态机框架,支持状态转换、事件处理、状态进入/退出回调、超时。基于gen_server扩展。 |
Erlang/OTP 19.0 (2016) |
无硬件依赖。 |
|
585 |
gen_event行为 |
底层实现:事件管理器,支持动态添加/删除事件处理器。事件通过gen_server广播给所有处理器。每个处理器可以独立处理并返回结果。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
586 |
supervisor行为 |
底层实现:监督树根节点,监控子进程(worker或supervisor),定义重启策略(one_for_one, one_for_all, rest_for_one, simple_one_for_one)。当子进程崩溃时,根据策略重启。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
587 |
监督树启动顺序 |
底层实现:supervisor按子进程列表顺序启动子进程(start_link),保证依赖关系。启动失败时根据策略处理。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
588 |
应用(application) |
底层实现:应用是OTP的基本打包单元,包含.app文件(元数据)、模块、监督树。application:start/1加载并启动顶层supervisor。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
589 |
应用回调(Application behaviour) |
底层实现:应用模块实现start/2和stop/1回调,由application控制器调用。start/2返回supervisor的pid。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
590 |
应用配置(app env) |
底层实现:.app文件中的env部分定义应用环境变量,可通过application:get_env/2读取。存储在应用控制器进程中。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
591 |
应用启动类型(permanent, transient, temporary) |
底层实现:permanent应用终止会导致节点终止;transient非正常终止会被重启;temporary终止不处理。由application controller管理。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
592 |
应用分布(distributed application) |
底层实现:应用可以在多个节点上运行,通过配置{timer, Time}和{mod, {Mod, Args}}实现故障转移。当主节点故障,在备用节点启动。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
593 |
代码热升级(appup, relup) |
底层实现:appup文件定义应用升级/降级的步骤(加载新模块、运行回调、同步状态)。relup文件定义发布升级步骤。release_handler执行这些步骤。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
594 |
代码替换(code:soft_purge/1) |
底层实现:尝试清除模块的旧版本代码,如果有进程仍在执行旧代码则失败。返回true/false。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
595 |
代码路径(code:add_path/1) |
底层实现:将目录添加到代码服务器维护的路径列表。模块加载时按路径顺序查找.beam文件。 |
Erlang/OTP R1A (1998) |
依赖文件系统。 |
|
596 |
模块加载(code:load_file/1) |
底层实现:在代码路径中查找.beam文件,读取并加载到内存,执行模块初始化(-on_load回调)。原子替换旧版本。 |
Erlang/OTP R1A (1998) |
依赖文件系统。 |
|
597 |
模块卸载(code:delete/1) |
底层实现:将模块标记为旧版本,不允许新进程调用。当所有旧引用释放后,可清除。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
598 |
模块信息(code:module_info/0, module_info/1) |
底层实现:每个编译后的模块自动包含module_info函数,返回模块元数据(exports, attributes, compile info等)。从.chunk中提取。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
599 |
导出函数(-export([…])) |
底层实现:编译器将导出的函数加入模块的导出表(exports chunk),运行时通过apply/3调用。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
600 |
导入函数(-import(…)) |
底层实现:编译指令,允许直接使用其他模块的函数而不加模块前缀。编译器在调用处替换为完全限定名。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
601 |
编译选项(compile:options/0) |
底层实现:编译器支持多种选项,如export_all(导出所有函数)、debug_info(保留调试信息)、nowarn_unused_function等。通过-compile(…)属性或在命令行指定。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
602 |
内联编译(-compile(inline).) |
底层实现:编译器尝试将函数调用内联展开,减少调用开销。启发式决定哪些函数内联。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
603 |
尾递归优化 |
底层实现:当函数最后一个操作是递归调用自身时,编译器将其转换为循环(重用栈帧),避免栈溢出。通过tailcall指令实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
604 |
二进制尾递归 |
底层实现:二进制匹配函数也可以尾递归优化,例如解析二进制流时,每次匹配一段后递归处理剩余部分。编译器识别尾调用位置。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
605 |
列表尾递归 |
底层实现:列表遍历函数(如lists:map/2)使用尾递归+累加器,最后反转结果。编译器优化为循环。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
606 |
异常堆栈跟踪(erlang:get_stacktrace/0) |
底层实现:返回最近的异常堆栈跟踪列表,包含模块、函数、参数等信息。存储在进程控制块中。OTP 21+已弃用,改用try-catch中的stacktrace绑定。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
607 |
进程字典跟踪(erlang:trace_delivered/1) |
底层实现:确保之前设置的跟踪标志已经生效,返回同步点。用于测试跟踪设置。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
608 |
系统消息(system messages) |
底层实现:OTP行为框架使用系统消息(如{'gen_call', …}, {'gen_cast', …}) 实现同步/异步调用。这些消息有特殊格式,被行为进程识别。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
609 |
系统事件(sys:handle_system_msg/2) |
底层实现:行为进程收到系统消息(如调试、状态查询)时,调用sys模块的处理函数。用户可以通过sys模块发送系统消息。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
610 |
代码覆盖率(cover:compile_module/1) |
底层实现:cover模块重新编译源文件,在每行可执行代码前插入计数器。运行时计数器递增,最后导出结果。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
611 |
性能分析(eprof) |
底层实现:eprof(Erlang Profiler)通过定时中断采样进程的程序计数器(PC),统计每个函数的调用频率和执行时间。底层使用erlang:trace/3设置跟踪标志,收集样本后汇总。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
612 |
性能分析(fprof) |
底层实现:fprof使用运行时跟踪(trace)记录函数调用和返回的时间戳,生成调用图和分析报告。底层通过erlang:trace/3设置call/return_to跟踪,收集到文件后离线分析。 |
Erlang/OTP R1A (1998) |
依赖磁盘IO。 |
|
613 |
性能分析(cprof) |
底层实现:cprof(Call Count Profiler)使用断点技术,在函数入口处插入计数器,仅统计调用次数,不计时间。底层通过erlang:trace/3的call跟踪实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
614 |
性能分析(percept) |
底层实现:percept(Erlang Concurrency Profiler)通过跟踪进程事件(spawn, send, receive, exit)分析并发行为和瓶颈。生成图形化报告。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
615 |
内存分析(instrument:memory/0) |
底层实现:instrument模块提供内存分配统计,按类型(进程、原子、二进制、代码等)分类。底层从运行时分配器读取计数器。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
616 |
内存分析(erlang:memory/0, erlang:memory/1) |
底层实现:返回当前内存使用情况,包括total、processes、system、atom、binary、code、ets等。直接从运行时全局变量读取。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
617 |
垃圾回收统计(erlang:gc_stats/0) |
底层实现:返回全局GC统计信息,包括GC次数、回收字数、暂停时间等。底层从运行时GC子系统收集。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
618 |
进程信息(erlang:process_info/1,2) |
底层实现:返回进程的各种信息(状态、内存、字典、链接、监视器等)。底层从PCB读取,某些信息需要锁。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
619 |
系统信息(erlang:system_info/1) |
底层实现:返回VM全局信息(调度器数量、线程模式、分配器策略、版本等)。从运行时全局配置读取。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
620 |
跟踪(erlang:trace/3) |
底层实现:设置进程跟踪标志,监控进程事件(send, receive, call, spawn, exit, gc等)。跟踪消息发送到指定进程。底层通过修改PCB的trace标志位实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
621 |
顺序跟踪(seq_trace) |
底层实现:为消息流分配一个token,跟踪该token经过的所有进程和消息。用于追踪分布式请求的完整路径。底层在消息中附加token信息。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
622 |
系统日志(error_logger) |
底层实现:error_logger是OTP默认日志系统,接收错误、警告、信息消息,输出到控制台或文件。支持多个handler(如tty, file)。 |
Erlang/OTP R1A (1998) |
依赖文件系统。 |
|
623 |
Logger(OTP 21+) |
底层实现:新的日志框架,支持结构化日志、等级过滤、handler链、元数据、异步日志。底层使用gen_server管理handler,支持文件轮转。 |
Erlang/OTP 21.0 (2018) |
依赖文件系统。 |
|
624 |
SASL日志 |
底层实现:SASL(System Architecture Support Libraries)提供OTP行为的错误日志,包括supervisor崩溃报告、gen_server状态等。通过error_logger或logger输出。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
625 |
调试器(debugger) |
底层实现:图形化调试器,支持断点、单步执行、变量查看。底层使用interpreted模块(解释执行)和断点机制。通过int模块实现。 |
Erlang/OTP R1A (1998) |
依赖GUI(wxWidgets)。 |
|
626 |
解释器(int) |
底层实现:int模块将BEAM字节码转换为解释执行,支持断点和单步。用于调试器和代码覆盖率工具。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
627 |
运行时检查(erts_debug) |
底层实现:erts_debug模块提供一系列诊断函数,如检查进程堆、二进制、原子表等。主要用于运行时系统开发者。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
628 |
崩溃转储(erl_crash.dump) |
底层实现:当VM因严重错误(如内存不足、断言失败)崩溃时,生成二进制dump文件,包含进程状态、堆、ETS表、原子表等信息。通过erl -env ERL_CRASH_DUMP /path控制。 |
Erlang/OTP R1A (1998) |
依赖磁盘。 |
|
629 |
Live分析(crashdump_viewer) |
底层实现:Web工具,用于在线浏览和分析erl_crash.dump文件,支持进程搜索、堆分析、消息队列查看等。 |
Erlang/OTP R1A (1998) |
依赖Web浏览器。 |
|
630 |
系统限制(erl +hms, +hmbs等) |
底层实现:启动参数控制VM各种限制,如最大原子数(+hms)、最大进程数(+P)、最大端口数(+Q)、最大ETS表数(+e)等。底层修改运行时全局常量。 |
Erlang/OTP R1A (1998) |
依赖物理内存。 |
|
631 |
原子垃圾回收(atom GC) |
底层实现:原子表使用引用计数,当原子不再被任何term引用时,可被回收。但原子表默认不会收缩,仅重用槽位。OTP 26+引入了原子GC。 |
Erlang/OTP 26.0 (2023) |
无硬件依赖。 |
|
632 |
二进制引用计数 |
底层实现:refc binary使用原子操作维护引用计数,当计数降为零时释放内存。子二进制共享父二进制的引用计数。 |
Erlang/OTP R9B (2003) |
依赖CPU原子指令。 |
|
633 |
进程堆碎片整理 |
底层实现:BEAM使用分代GC(generational garbage collection),年轻代(young generation)使用复制算法,老年代(old generation)使用标记-清扫。GC时整理堆碎片。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
634 |
多调度器(SMP) |
底层实现:BEAM支持对称多处理(SMP),每个调度器运行在一个操作系统线程上,共享进程运行队列。调度器之间通过锁和CAS操作协调。 |
Erlang/OTP R11B (2006) |
依赖多核CPU。 |
|
635 |
调度器休眠(poll mode) |
底层实现:当调度器没有就绪进程时,它会进入休眠(等待事件),而不是忙等待。通过操作系统条件变量实现。使用+sbwt none可禁用休眠。 |
Erlang/OTP R11B (2006) |
依赖OS线程调度。 |
|
636 |
线程进度(thread progress) |
底层实现:BEAM使用全局线程进度概念,确保所有调度器完成特定阶段(如GC、代码加载)后,才进行下一步。通过屏障(barrier)实现。 |
Erlang/OTP R11B (2006) |
依赖多核。 |
|
637 |
异步线程池(async thread pool) |
底层实现:用于执行阻塞系统调用(如文件IO、DNS查询)的线程池,避免阻塞调度器。默认大小为10,可通过+A调整。 |
Erlang/OTP R11B (2006) |
依赖OS线程。 |
|
638 |
驱动线程(driver thread) |
底层实现:某些端口驱动(如inet_drv)使用独立的OS线程处理IO,避免阻塞调度器。通过ERTS内部线程池实现。 |
Erlang/OTP R1A (1998) |
依赖OS线程。 |
|
639 |
锁类型(spinlock, mutex, rwlock) |
底层实现:ERTS内部使用多种锁:spinlock(短临界区,忙等待)、mutex(长临界区,睡眠等待)、rwlock(读共享写排他)。根据场景选择。 |
Erlang/OTP R1A (1998) |
依赖CPU原子指令。 |
|
640 |
分配器(allocator) |
底层实现:BEAM使用多种内存分配器(mseg, sl, ll等),管理不同大小和用途的内存块(进程堆、二进制堆、ETS数据等)。支持多线程分配(+M参数)。 |
Erlang/OTP R1A (1998) |
依赖OS内存管理。 |
|
641 |
分配器策略(+Mscs, +Maca等) |
底层实现:启动参数控制分配器行为,如+sccs(启用/禁用分配器缓存)、+Maca(分配器缓存大小)。影响内存分配速度和碎片。 |
Erlang/OTP R1A (1998) |
依赖CPU缓存。 |
|
642 |
系统进程(system processes) |
底层实现:某些内部进程(如init, application_controller, error_logger, global等)以系统进程运行,具有特殊状态(如trap_exit默认开启)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
643 |
心跳监控(heart) |
底层实现:heart模块启动一个外部进程(heart命令),定期向VM发送心跳。如果VM无响应,heart强制重启VM。用于高可用。 |
Erlang/OTP R1A (1998) |
依赖OS进程管理。 |
|
644 |
节点自动连接(net_adm:world/1) |
底层实现:net_adm:world/1列出网络上所有可能的Erlang节点,并尝试连接。通过EPMD查询和ping实现。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
645 |
节点ping(net_adm:ping/1) |
底层实现:向目标节点发送ping消息,等待pong响应。如果成功,节点加入已知节点列表。底层通过分布式协议。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
646 |
EPMD(Erlang Port Mapper Daemon) |
底层实现:EPMD是一个独立进程,监听4369端口,维护节点名称到端口的映射。当节点启动时,向EPMD注册。其他节点通过EPMD查找目标节点端口。 |
Erlang/OTP R1A (1998) |
依赖网络;国产OS需运行EPMD。 |
|
647 |
分布式cookie(-setcookie) |
底层实现:每个节点有一个cookie字符串,用于节点间认证。只有相同cookie的节点才能互相通信。cookie在连接握手时验证。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
648 |
分布式连接握手 |
底层实现:当两个节点首次通信时,进行TCP连接,交换版本信息和cookie挑战-响应。使用分布式协议(DIS_COOKIE_HANDSHAKE)。 |
Erlang/OTP R1A (1998) |
依赖网络和加密。 |
|
649 |
分布式信号量(global:trans/2) |
底层实现:全局事务锁,用于在分布式环境中同步访问资源。使用两阶段锁协议。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
650 |
分布式名称注册(global:sync/0) |
底层实现:强制同步全局名称表,解决网络分区后的不一致。通过广播请求所有节点更新。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
651 |
分布式监视器(nodedown) |
底层实现:当节点断开连接时,所有与该节点相关的监视器触发nodedown消息。底层由net_kernel检测TCP断开。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
652 |
net_ticktime |
底层实现:节点间通过定时tick消息检测连通性。如果超过net_ticktime * 4未收到tick,认为节点断开。默认为60秒。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
653 |
分布式进程链接跨节点 |
底层实现:链接可以跨越节点,当远程进程崩溃时,退出信号通过分布式协议传递。链接信息存储在两端进程的PCB中。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
654 |
分布式端口(dist_port) |
底层实现:端口不能跨节点共享,但可以通过分布式消息传递间接访问。端口所有者进程可以代理端口操作。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
655 |
分布式ETS(detd) |
底层实现:detd(Distributed ETS Daemon)允许跨节点共享ETS表,但已废弃。现代方案使用Mnesia或自定义复制。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
656 |
分布式原子(global:whereis_name/1) |
底层实现:在全局名称空间中查找注册进程,返回pid或undefined。底层通过global进程查询ETS表。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
657 |
分布式错误处理(exit信号跨节点) |
底层实现:当进程退出时,如果它有跨节点的链接,退出信号被序列化并通过分布式通道发送。接收方反序列化后处理。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
658 |
分布式代码加载(code:add_pathsz/1跨节点) |
底层实现:代码路径是本地概念,不自动同步。但可以通过rpc:multicall/3在所有节点上执行code:add_path/1来同步。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
659 |
RPC(rpc:call/4) |
底层实现:在远程节点上调用函数,等待结果。底层通过发送消息到远程节点上的rexx进程(或直接调用),然后等待回复。支持异步调用(cast)。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
660 |
多节点RPC(rpc:multicall/3) |
底层实现:同时在多个节点上调用同一个函数,收集所有结果或超时。底层为每个节点发起一个rpc:call/4,然后等待所有完成。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
661 |
节点间二进制传递优化 |
底层实现:当发送二进制到远程节点时,如果二进制是refc binary且未被修改,ERTS会通过引用传递(zero-copy)而非完整复制,仅传递引用计数增量。底层通过分布式协议的特殊标记实现。 |
Erlang/OTP R9B (2003) |
依赖网络带宽;国产网卡需支持高速传输。 |
|
662 |
分布式端口映射(EPMD 2.0) |
底层实现:EPMD v2支持扩展属性,如节点类型、协议版本、IPv6。使用更灵活的TLV格式。向后兼容v1。 |
Erlang/OTP 22.0 (2019) |
依赖网络;国产OS需运行新版EPMD。 |
|
663 |
分布式连接池(net_kernel connection pooling) |
底层实现:net_kernel维护到每个远程节点的TCP连接池,支持多路复用(多个channel共享一个TCP连接)。使用dist_auto_connect选项控制自动连接。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
664 |
分布式SSL(distributed over TLS) |
底层实现:节点间通信可以使用TLS加密,通过配置-ssl_dist_optfile指定SSL选项。底层使用ssl模块包装TCP连接。 |
Erlang/OTP R16B (2013) |
依赖OpenSSL;国产密码需国密TLS。 |
|
665 |
分布式压缩(distribution compression) |
底层实现:节点间传输的数据可以压缩,通过设置-dist_compression选项(none, atom, all)。底层在序列化后使用zlib压缩。 |
Erlang/OTP R1A (1998) |
依赖CPU。 |
|
666 |
分布式busy_dist_port |
底层实现:当分布式端口发送缓冲区满时,发送进程会被阻塞(busy状态),直到缓冲区有空闲。通过流量控制机制防止内存溢出。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
667 |
分布式隐藏节点(hidden node) |
底层实现:隐藏节点不参与全局名称注册,也不自动被发现。通过-netmask或-hidden启动参数设置。其他节点需要显式调用net_adm:ping/1连接。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
668 |
分布式节点别名(net_kernel:set_net_ticktime/1) |
底层实现:运行时调整net_ticktime,影响节点健康检测灵敏度。底层修改内核状态。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
669 |
分布式连接断开回调(net_kernel:monitor_nodes/2) |
底层实现:注册回调函数,当节点连接/断开时触发。支持选项[{node_type, hidden}]过滤节点类型。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
670 |
分布式进程组(pg) |
底层实现:pg(Process Groups)模块提供分布式进程组管理,支持跨节点成员注册和查询。底层使用global注册和ETS存储。OTP 23+取代了pg2。 |
Erlang/OTP 23.0 (2020) |
依赖网络。 |
|
671 |
分布式锁(global:set_lock/3) |
底层实现:可重入分布式锁,支持超时和重试。使用global进程的原子广播实现。锁标识为{ResourceId, RequesterId}。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
672 |
分布式计数器(global:counter/2) |
底层实现:全局原子计数器,使用global模块的原子操作实现。支持增量和读取。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
673 |
分布式资源预留(global:resource_lock/2) |
底层实现:预留全局资源,防止其他节点使用。用于Mnesia等场景。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
674 |
分布式时间同步(erlang:time_correction/0) |
底层实现:ERTS支持时间校正,通过对比单调时间和墙上时间,调整时间偏移。使用OS时钟源(CLOCK_REALTIME, CLOCK_MONOTONIC)。 |
T{corrected} – T{real} |
)。 |
|
675 |
分布式时间戳(erlang:unique_integer([monotonic])) |
底层实现:生成单调递增的唯一整数,可用于分布式时间戳排序。底层使用全局计数器+节点ID。 |
Erlang/OTP 19.0 (2016) |
无硬件依赖。 |
|
676 |
分布式系统监控(os_mon) |
底层实现:os_mon应用提供CPU、内存、磁盘等系统资源监控,通过SNMP或本地接口收集数据。支持告警。 |
Erlang/OTP R1A (1998) |
依赖OS接口;国产OS需兼容/proc。 |
|
677 |
SNMP Agent(snmp) |
底层实现:OTP SNMP agent实现,支持MIB编译、陷阱发送、版本v1/v2c/v3。底层使用gen_udp和gen_tcp。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
678 |
CORBA/ORB(orber) |
底层实现:OTP CORBA ORB实现,支持IIOP协议,IDL编译。已废弃。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
679 |
XML解析(xmerl) |
底层实现:xmerl模块提供XML解析器,支持SAX和DOM模式。底层使用Erlang字符串或二进制处理。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
680 |
JSON解析(json) |
底层实现:OTP内置json模块(OTP 27+),使用纯Erlang实现,支持maps和proplists。底层递归解析。 |
Erlang/OTP 27.0 (2024) |
无硬件依赖。 |
|
681 |
YAML解析(yamerl) |
底层实现:社区库yamerl,纯Erlang YAML解析器,支持YAML 1.1。 |
社区库 |
无硬件依赖。 |
|
682 |
CSV解析(csv) |
底层实现:社区库erlcsv,使用二进制匹配高效解析CSV,支持引号、转义。 |
社区库 |
无硬件依赖。 |
|
683 |
模板引擎(erlydtl, mustache) |
底层实现:erlydtl(Django模板)编译模板为Erlang模块,运行时快速渲染。mustache.erl实现Mustache模板。 |
社区库 |
无硬件依赖。 |
|
684 |
国际化(gettext) |
底层实现:gettext模块提供i18n支持,使用.po文件翻译。运行时根据语言环境替换字符串。 |
社区库 |
无硬件依赖。 |
|
685 |
日志滚动(disk_log) |
底层实现:disk_log模块提供磁盘日志功能,支持自动滚动(按大小或时间)、多文件、分布式日志。底层使用DETS或原始文件。 |
Erlang/OTP R1A (1998) |
依赖磁盘。 |
|
686 |
系统监视器(sysmon) |
底层实现:sysmon模块提供系统监控事件(large_heap, long_gc, busy_port, busy_dist_port等),通过erlang:trace/3设置。用于检测异常行为。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
687 |
大型堆告警(large_heap) |
底层实现:当进程堆大小超过阈值(默认1MB)时,触发large_heap跟踪事件。阈值可通过erlang:system_monitor/2设置。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
688 |
长GC告警(long_gc) |
底层实现:当进程GC暂停时间超过阈值(默认1ms)时,触发long_gc事件。阈值可配置。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
689 |
繁忙端口告警(busy_port) |
底层实现:当端口驱动缓冲区满,导致发送进程阻塞时,触发busy_port事件。用于检测IO瓶颈。 |
Erlang/OTP R1A (1998) |
依赖硬件。 |
|
690 |
繁忙分布式端口告警(busy_dist_port) |
底层实现:当分布式端口发送缓冲区满时,触发busy_dist_port事件。用于检测网络瓶颈。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
691 |
进程内存限制(+hms, +hmbs) |
底层实现:启动参数+hms设置最大堆大小(默认为0即无限),+hmbs设置最大二进制堆大小。超过限制时进程被终止。 |
Erlang/OTP R1A (1998) |
依赖物理内存。 |
|
692 |
进程消息队列限制(+MEmu) |
底层实现:通过+MEmu设置进程邮箱最大大小(字节),超过时进程被终止。防止消息堆积。 |
Erlang/OTP R1A (1998) |
依赖内存。 |
|
693 |
原子表限制(+hms_atom) |
底层实现:设置最大原子数(默认约1百万),超过时创建原子失败。通过+hms_atom参数调整。 |
Erlang/OTP R1A (1998) |
依赖内存。 |
|
694 |
ETS表限制(+e) |
底层实现:设置最大ETS表数量(默认约15000),超过时创建失败。通过+e参数调整。 |
Erlang/OTP R1A (1998) |
依赖内存。 |
|
695 |
端口限制(+Q) |
底层实现:设置最大端口数量(包括文件描述符),默认约32768。通过+Q参数调整。 |
Erlang/OTP R1A (1998) |
依赖OS。 |
|
696 |
进程限制(+P) |
底层实现:设置最大Erlang进程数,默认约32768。通过+P参数调整。 |
Erlang/OTP R1A (1998) |
依赖内存。 |
|
697 |
系统轮询(erlang:system_profile/2) |
底层实现:设置系统级跟踪事件,如调度器活动、进程迁移、内存分配等。用于性能分析。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
698 |
调度器利用率统计(erlang:statistics(scheduler_wall_time)) |
底层实现:返回每个调度器的墙钟时间使用情况,包括active和idle时间。底层从调度器内部计数器读取。 |
Erlang/OTP R11B (2006) |
依赖多核。 |
|
699 |
IO统计(erlang:statistics(io)) |
底层实现:返回系统IO操作计数(输入输出字节数)。底层从端口驱动收集。 |
Erlang/OTP R1A (1998) |
依赖硬件。 |
|
700 |
上下文切换统计(erlang:statistics(context_switches)) |
底层实现:返回进程上下文切换次数。底层从调度器统计。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
701 |
运行队列长度统计(erlang:statistics(run_queue)) |
底层实现:返回当前所有调度器运行队列中进程总数。底层从调度器数据结构读取。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
702 |
内存分配器统计(erlang:system_info(allocator)) |
底层实现:返回详细的内存分配器信息,包括各分配器类型的使用情况、缓存命中率等。用于内存调优。 |
Erlang/OTP R1A (1998) |
依赖内存。 |
|
703 |
CPU拓扑信息(erlang:system_info(cpu_topology)) |
底层实现:返回CPU拓扑(socket, core, thread层次),用于调度器亲和性设置。底层从OS获取(如/sys/devices/system/cpu)。 |
Erlang/OTP R1A (1998) |
依赖CPU拓扑;国产CPU需正确报告。 |
|
704 |
调度器亲和性(+sbt) |
底层实现:启动参数+sbt控制调度器与CPU绑定的策略(none, spread, dbind等)。底层使用pthread_setaffinity_np或sched_setaffinity。 |
Erlang/OTP R11B (2006) |
依赖CPU亲和性API;国产OS需支持。 |
|
705 |
调度器睡眠状态(+sbwt) |
底层实现:控制调度器在空闲时的行为(none, short, long)。none不休眠(忙等待),short短休眠,long长休眠。影响响应时间和功耗。 |
Erlang/OTP R11B (2006) |
依赖CPU电源管理。 |
|
706 |
调度器绑定(+scl) |
底层实现:设置调度器到CPU的绑定策略(false, true, auto)。true强制绑定,false不绑定,auto由系统决定。 |
Erlang/OTP R11B (2006) |
依赖CPU。 |
|
707 |
锁 profiling(lock_count) |
底层实现:通过+lcnt启动参数启用锁竞争统计,记录每个锁的获取次数、等待时间等。使用erlang:system_info(lock_count)查询。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
708 |
原子操作(erts_atomic) |
底层实现:ERTS内部使用原子操作(CAS, fetch_add等)实现无锁数据结构。暴露给NIF开发者使用。 |
Erlang/OTP R1A (1998) |
依赖CPU原子指令。 |
|
709 |
内存屏障(memory barrier) |
底层实现:ERTS在适当位置插入内存屏障指令(如mfence, sync_synchronize),保证多核可见性。用于锁和无锁操作。 |
Erlang/OTP R1A (1998) |
依赖CPU指令集。 |
|
710 |
线程局部存储(TLS) |
底层实现:ERTS使用线程局部存储存储调度器私有数据(如当前进程、运行队列等),避免锁竞争。通过__thread关键字或pthread_getspecific实现。 |
Erlang/OTP R11B (2006) |
依赖OS线程支持。 |
|
711 |
调度器抢占点(preemption points) |
底层实现:BEAM在每个函数调用、BIF调用、循环回边(loop back edge)处检查当前进程的reductions是否耗尽。如果耗尽,则触发上下文切换。编译器在字节码中插入check_process_code指令或reduction检查指令。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
712 |
进程yield(erlang:yield/0) |
底层实现:将当前进程剩余的reductions置零,强制调度器立即切换到其他进程。底层直接修改进程控制块中的reduction计数器为0。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
713 |
调度器工作窃取(work stealing) |
底层实现:当某个调度器的运行队列为空时,它会尝试从其他调度器的运行队列尾部窃取进程。使用无锁队列或加锁实现。窃取策略通常为随机选择一个受害者调度器。 |
Erlang/OTP R11B (2006) |
依赖多核CPU缓存一致性协议。 |
|
714 |
调度器迁移阈值(migration threshold) |
底层实现:每个调度器维护一个运行队列长度的指数加权移动平均值(EWMA)。当本地队列长度超过全局平均的一定比例时,触发迁移。底层通过定时计算负载因子。 |
Erlang/OTP R11B (2006) |
无硬件依赖。 |
|
715 |
进程优先级反转 |
底层实现:低优先级进程持有锁,高优先级进程等待锁,导致高优先级进程被低优先级阻塞。Erlang中没有优先级继承机制,因此存在优先级反转问题。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
716 |
调度器时钟(scheduler clock) |
底层实现:每个调度器维护一个本地时钟,用于超时处理和reduction记账。时钟频率由操作系统定时器决定(通常为1ms~10ms)。 |
Erlang/OTP R1A (1998) |
依赖OS定时器。 |
|
717 |
定时器轮(timer wheel) |
底层实现:BEAM内部使用分层定时器轮(hierarchical timing wheel)管理大量定时器。每个槽位对应一个时间跨度,定时器到期时触发相应操作。插入和取消操作O(1)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
718 |
进程堆初始大小 |
底层实现:新建进程的堆初始大小由+hms参数控制(默认为233 words)。如果预计进程会使用大量内存,可以调大初始堆以减少GC次数。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
719 |
进程堆最小/最大大小(+hms, +hmbs) |
底层实现:+hms设置进程堆最小大小(即初始堆),+hmbs设置最大堆大小(超过则进程终止)。堆大小动态增长直到上限。 |
Erlang/OTP R1A (1998) |
依赖物理内存。 |
|
720 |
二进制堆大小(+hms_bin) |
底层实现:控制二进制堆(binary heap)的初始大小和增长策略。二进制堆用于存储refc binary的数据部分。 |
Erlang/OTP R9B (2003) |
无硬件依赖。 |
|
721 |
内存分配器类型(mseg, sl, ll等) |
底层实现:ERTS使用多种分配器:mseg(多块大小段)、sl(单链表)、ll(大块)、fix(固定大小)等。每种分配器管理特定大小范围的内存块,减少碎片。 |
Erlang/OTP R1A (1998) |
依赖CPU缓存。 |
|
722 |
分配器缓存(+Mscs) |
底层实现:每个调度器维护一个分配器缓存,用于快速分配小块内存,避免全局锁。缓存命中时分配极快。 |
Erlang/OTP R1A (1998) |
依赖CPU缓存。 |
|
723 |
内存池(+Mrm) |
底层实现:+Mrm参数控制内存池的最大大小(以MB为单位)。当分配器从OS申请内存时,会先尝试从内存池中获取,减少系统调用。 |
Erlang/OTP R1A (1998) |
依赖OS虚拟内存。 |
|
724 |
内存分配跟踪(+Mlpm) |
底层实现:+Mlpm参数启用分配器锁位置映射(lock position mapping),用于调试锁竞争。输出锁的调用栈信息。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
725 |
原子表实现 |
底层实现:原子表是一个全局哈希表,将原子字符串映射到唯一的整数索引。使用开放地址法,冲突时线性探测。原子表大小固定(默认约1百万),可通过+hms_atom调整。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
726 |
模块代码存储 |
底层实现:编译后的BEAM代码存储在代码区域(code area),使用分段式内存管理。每个模块的代码被加载到连续内存块中,通过模块表(module table)索引。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
727 |
代码加载锁 |
底层实现:代码加载过程中,ERTS会获取全局代码加载锁(code loading lock),防止并发加载导致的不一致。锁为读写锁,读操作(执行代码)可共享,写操作(加载)排他。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
728 |
进程注册表(registered processes) |
底层实现:全局进程注册表,将原子名称映射到PID。使用全局哈希表,操作需要获取注册表锁。注册/注销操作为O(1)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
729 |
端口驱动(port driver) |
底层实现:端口驱动是用C编写的共享库,通过erlang:open_port/2的{packet, N}或spawn驱动加载。驱动运行在ERTS内部,可以访问VM数据结构,直接操作内存。 |
Erlang/OTP R1A (1998) |
依赖C编译器;国产OS需兼容动态库。 |
|
730 |
NIF(Native Implemented Functions) |
底层实现:NIF是用C/C++编写的函数,编译为动态库,通过-on_load加载。NIF直接运行在调度器线程中,不经过端口。支持资源对象管理。 |
Erlang/OTP R12B (2007) |
依赖C编译器;国产CPU需ABI兼容。 |
|
731 |
NIF资源对象(enif_alloc_resource) |
底层实现:NIF可以创建资源对象,关联到Erlang进程的生命周期。资源对象有引用计数,当所有引用释放时,调用析构函数。底层使用ERTS内存管理。 |
Erlang/OTP R12B (2007) |
无硬件依赖。 |
|
732 |
NIF线程(enif_thread_create) |
底层实现:NIF可以创建OS线程,但必须遵循ERTS的线程规则(不能直接调用大多数ERTS API)。用于执行阻塞操作。 |
Erlang/OTP R12B (2007) |
依赖OS线程。 |
|
733 |
NIF调度(enif_schedule_nif) |
底层实现:将NIF调用调度到异步线程池执行,避免阻塞调度器。返回一个临时占位符,完成后发送消息给调用进程。 |
Erlang/OTP 21.0 (2018) |
依赖异步线程池。 |
|
734 |
C节点(C Node) |
底层实现:C节点是使用Erlang分布式协议的C程序,可以作为独立节点与Erlang节点通信。使用ei库(Erlang Interface)进行消息编码和解码。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
735 |
ei库(Erlang Interface) |
底层实现:ei库提供C语言接口,用于编码/解码外部术语格式(ETF),发送/接收Erlang消息。支持分布式连接和cookie认证。 |
Erlang/OTP R1A (1998) |
依赖C编译器。 |
|
736 |
erl_interface(ei + 连接管理) |
底层实现:erl_interface是ei的高级封装,提供更易用的连接管理、注册、RPC等功能。 |
Erlang/OTP R1A (1998) |
依赖C编译器。 |
|
737 |
JInterface(Java节点) |
底层实现:JInterface是Java实现的Erlang分布式协议,允许Java程序作为节点与Erlang通信。使用OTP.Messaging等类。 |
Erlang/OTP R1A (1998) |
依赖JVM。 |
|
738 |
外部端口(external port) |
底层实现:通过erlang:open_port({spawn, Command}, [])启动外部OS进程,通过stdin/stdout通信。数据以二进制流或packet格式传输。 |
Erlang/OTP R1A (1998) |
依赖OS进程。 |
|
739 |
端口打包模式({packet, N}) |
底层实现:端口通信时,使用N字节长度前缀表示消息大小,便于接收方分帧。底层在驱动层面处理。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
740 |
端口行模式({line, Length}) |
底层实现:端口通信按行分隔,每行最多Length字节。驱动在收到换行符或达到长度限制时发送消息。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
741 |
端口退出信号(port_exit) |
底层实现:当外部进程退出或端口驱动崩溃时,端口发送{'EXIT', Port, Reason}消息给连接进程。如果连接进程设置了trap_exit,则收到该消息;否则连接进程也会退出。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
742 |
端口流量控制({active, false}/{active, once}) |
底层实现:{active, false}模式下,数据必须通过erlang:port_command/2主动读取;{active, once}模式自动接收一条消息后切换回false,防止邮箱溢出。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
743 |
端口并行性(parallelism) |
底层实现:端口驱动可以选择是否支持并行操作。某些驱动(如inet_drv)使用独立线程处理IO,允许并发调用。通过erlang:open_port/2的parallelism选项控制。 |
Erlang/OTP R1A (1998) |
依赖多核。 |
|
744 |
文件描述符泄漏检测 |
底层实现:ERTS内部维护打开的文件描述符列表,当进程退出时自动关闭其拥有的端口。但某些情况下(如驱动错误)可能导致fd泄漏。通过erlang:system_info(port_count)监控。 |
Erlang/OTP R1A (1998) |
依赖OS。 |
|
745 |
系统调用拦截(ltrace) |
底层实现:通过ltrace(Linux Trace Toolkit)或其他动态跟踪工具,可以拦截Erlang VM的系统调用,用于性能分析和调试。 |
外部工具 |
依赖OS跟踪设施。 |
|
746 |
eBPF跟踪 |
底层实现:使用eBPF(extended Berkeley Packet Filter)程序挂载到ERTS的内核事件(如调度器切换、内存分配),收集性能数据。需要Linux内核支持。 |
外部工具 |
依赖Linux eBPF;国产OS需内核支持。 |
|
747 |
系统调用(syscall) |
底层实现:ERTS通过系统调用与OS交互,如read/write/mmap/sched_yield等。这些调用可能阻塞调度器线程,因此异步线程池用于处理阻塞调用。 |
Erlang/OTP R1A (1998) |
依赖OS。 |
|
748 |
信号处理(signal handling) |
底层实现:ERTS捕获某些信号(如SIGTERM, SIGUSR1)并转换为Erlang消息或触发特定行为。信号处理函数尽可能简单,只设置标志,由调度器处理。 |
Erlang/OTP R1A (1998) |
依赖OS信号机制。 |
|
749 |
环境变量(ERL_*) |
底层实现:ERTS读取一系列环境变量(如ERL_CRASH_DUMP, ERL_FULLSWEEP_AFTER, ERL_MAX_PORTS等)来配置运行时行为。在VM初始化时解析。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
750 |
启动参数(+*) |
底层实现:erl命令行参数(如+P, +Q, +hms, +sbt等)在VM启动时解析,设置全局配置。部分参数可在运行时通过erlang:system_flag/2修改。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
751 |
运行时标志(erlang:system_flag/2) |
底层实现:运行时修改系统标志,如fullsweep_after(GC频率)、multi_scheduling(启用/禁用多调度器)、backtrace_depth等。底层修改全局变量,可能需要同步所有调度器。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
752 |
进程标志(process_flag/2) |
底层实现:修改当前进程的标志,如trap_exit, priority, message_queue_data, save_calls等。直接修改PCB中的字段。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
753 |
保存调用栈(process_flag(save_calls, N)) |
底层实现:设置进程保存最近N个函数调用(用于调试)。底层在进程堆中维护一个循环缓冲区,每次函数调用时记录MFA。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
754 |
进程栈(process stack) |
底层实现:每个进程拥有独立的栈,用于存储局部变量、返回地址、异常处理帧。栈与堆共享同一内存区域(堆栈一体),栈向下增长,堆向上增长。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
755 |
进程堆栈溢出检测 |
底层实现:BEAM在每次函数调用前检查栈指针是否超出堆边界(红区检测)。如果接近溢出,触发GC或扩展堆(如果可能)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
756 |
进程初始堆与栈布局 |
底层实现:新进程的堆和栈在同一内存块中,栈从高端地址向下生长,堆从低端向上生长。初始布局由+hms参数决定。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
757 |
进程堆扩展 |
底层实现:当进程堆空间不足时,BEAM尝试扩展堆(通过realloc或mmap)。扩展大小通常是当前堆的某个倍数(如80%)。如果超过最大堆限制(+hmbs),进程被终止。 |
Erlang/OTP R1A (1998) |
依赖OS内存。 |
|
758 |
进程堆收缩 |
底层实现:GC后,如果堆使用率很低,BEAM可能会收缩堆(通过free或mremap),返还内存给OS。收缩阈值由GC策略决定。 |
Erlang/OTP R1A (1998) |
依赖OS内存管理。 |
|
759 |
进程堆对齐 |
底层实现:ERTS确保进程堆按特定字节对齐(如8字节或16字节),以满足原子操作和SIMD指令的要求。底层通过memalign或posix_memalign实现。 |
Erlang/OTP R1A (1998) |
依赖CPU对齐要求。 |
|
760 |
进程堆GC触发时机 |
底层实现:GC在以下时机触发:堆空间不足、进程被调度(minor GC)、reductions达到阈值、显式调用erlang:garbage_collect/0。底层由GC子系统决定。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
761 |
进程GC类型(minor/major) |
底层实现:分代GC中,minor GC只扫描年轻代(young generation),使用复制算法;major GC扫描整个堆(年轻代+老年代),使用标记-清扫算法。当年轻代存活对象晋升到老年代时触发major GC。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
762 |
进程GC晋升(promotion) |
底层实现:年轻代中经过若干次minor GC仍然存活的对象被晋升到老年代。晋升阈值由fullsweep_after和实际GC次数决定。底层通过年龄计数器实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
763 |
进程GC全扫描(fullsweep) |
底层实现:当进程经历fullsweep_after次minor GC后,下一次GC会对整个堆进行全扫描(fullsweep),清理老年代中的垃圾。fullsweep_after默认值为65535(即几乎不做fullsweep)。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
764 |
进程GC手工触发(erlang:garbage_collect/0,1) |
底层实现:显式触发当前进程或指定进程的GC。底层调用相同的GC例程,但不受reduction计数限制。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
765 |
进程GC统计(erlang:process_info(Pid, garbage_collection)) |
底层实现:返回进程的GC统计信息,包括minor_gcs、major_gcs、words_reclaimed等。底层从PCB中的GC计数器读取。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
766 |
进程GC暂停时间测量 |
底层实现:ERTS在GC前后记录时间戳,计算暂停时间。可通过erlang:system_monitor/2的{long_gc, Time}选项获得超过阈值的GC事件。 |
Erlang/OTP R1A (1998) |
依赖OS时钟。 |
|
767 |
进程堆遍历(erlang:display/1, erlang:process_display/2) |
底层实现:用于调试的函数,打印进程堆内容或进程信息。底层遍历进程堆中的对象,格式化输出。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
768 |
进程字典(process dictionary) |
底层实现:每个进程拥有一个键值存储(字典),通过put/get/erase操作。底层使用哈希表存储在进程堆中。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
769 |
进程字典哈希表实现 |
底层实现:进程字典使用开放地址哈希表,冲突时使用二次探测。初始大小较小,动态扩容。存储在进程堆中,随GC一起管理。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
770 |
进程消息选择(selective receive) |
底层实现:receive语句可以匹配消息队列中的特定消息,不匹配的消息保留在队列中。底层实现为:扫描进程邮箱,对每条消息尝试模式匹配,匹配成功则取出并继续,否则跳过。支持超时和after子句。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
771 |
进程消息队列内部结构 |
底层实现:进程邮箱是一个单向链表,每个消息节点包含数据和指向下一个的指针。消息按到达顺序排列。链表头保存在PCB中。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
772 |
进程消息优先级(message priority) |
底层实现:进程可以设置消息优先级(normal/urgent/low),但实际只有两种:normal和urgent(系统消息如exit信号)。用户级优先级不影响消息顺序。底层通过两个链表实现:普通消息链表和紧急消息链表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
773 |
进程邮箱溢出保护 |
底层实现:通过+MEmu参数设置进程邮箱最大字节数。当邮箱大小超过此值时,进程被终止。底层在每次插入消息时检查累计大小。 |
Erlang/OTP R1A (1998) |
依赖内存。 |
|
774 |
进程消息批量接收(flush) |
底层实现:使用receive … after 0 -> ok end可以一次性接收所有当前已到达的消息(非阻塞)。常用于清空邮箱。底层只是设置超时为0的receive。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
775 |
进程消息投递(! 运算符) |
底层实现:Pid ! Message运算符将消息插入目标进程的邮箱。底层调用erts_msg_send函数,需要获取目标进程的邮箱锁。如果目标进程正在其他调度器运行,可能需要跨核通信。 |
Erlang/OTP R1A (1998) |
依赖多核缓存一致性协议。 |
|
776 |
进程消息复制(copy on send) |
底层实现:发送消息时,除了refc binary外,其他数据都会被深拷贝到目标进程的堆中。这是为了隔离进程内存,避免共享可变状态。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
777 |
进程消息锁(mailbox lock) |
底层实现:每个进程的邮箱由一个自旋锁保护,确保并发发送/接收的正确性。锁粒度较细。 |
Erlang/OTP R1A (1998) |
依赖CPU原子指令。 |
|
778 |
进程消息超时(after clause) |
底层实现:receive … after Timeout -> … end 在指定时间内未收到匹配消息时执行超时代码。底层使用定时器轮设置一个超时定时器,当定时器到期时触发超时分支。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
779 |
进程消息选择性接收优化(first message matching) |
底层实现:BEAM在编译receive语句时,如果只有一个分支且没有guard,可以优化为直接检查第一条消息是否匹配,否则继续等待。这减少了不必要的扫描。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
780 |
进程消息超时取消 |
底层实现:如果在超时前收到匹配消息,超时定时器必须被取消。底层从定时器轮中移除对应的定时器项,避免过期触发。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
781 |
进程消息匹配规范(match specification) |
底层实现:用于erlang:trace/3和ets:fun2ms/1的模式匹配规范,编译为高效的内部表示。支持条件、绑定变量、返回值。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
782 |
进程消息跟踪(trace messages) |
底层实现:通过erlang:trace/3设置进程跟踪,可以跟踪发送和接收的消息内容。跟踪消息以{trace, Pid, send, Msg, To}等形式发送到跟踪进程。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
783 |
进程消息序列跟踪(seq_trace) |
底层实现:为消息流分配token,跟踪消息传递路径。token包含标签和标志,随消息传播。底层在消息头中嵌入token数据。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
784 |
进程消息顺序保证 |
底层实现:从同一个进程发送到另一个进程的消息按发送顺序到达。不同来源的消息顺序不定。底层由单链表邮箱保证FIFO。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
785 |
进程消息大小限制 |
底层实现:单条消息最大大小受限于可用内存,但理论上受限于进程堆大小。实际中,大消息可能导致接收进程堆扩展失败。 |
Erlang/OTP R1A (1998) |
依赖内存。 |
|
786 |
进程消息编码(term_to_binary/binary_to_term) |
底层实现:将Erlang term序列化为二进制(外部术语格式ETF),用于持久化或网络传输。底层递归遍历term结构,写入字节流。支持压缩选项。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
787 |
进程消息解码安全性(binary_to_term/2) |
底层实现:binary_to_term/2支持safe选项,阻止创建原子、引用、PID等不安全类型,防止攻击。底层在解码时检查类型标签。 |
Erlang/OTP R17.0 (2014) |
无硬件依赖。 |
|
788 |
进程消息分发(rpc:cast/4) |
底层实现:异步远程过程调用,不等待结果。底层发送一个包含函数调用的消息到远程节点,由rex进程执行。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
789 |
进程消息广播(pg:get_members/1 + 遍历) |
底层实现:通过pg模块获取进程组所有成员,然后逐个发送消息。没有内置的广播原语。 |
Erlang/OTP 23.0 (2020) |
依赖网络。 |
|
790 |
进程消息扇出(gen_server:abcast/3) |
底层实现:向所有节点上指定名称的gen_server广播消息。底层通过global:whereis_name/1查找所有节点上的注册名,然后分别发送。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
791 |
进程消息路由(net_kernel) |
底层实现:net_kernel进程负责节点间消息的路由,维护到每个远程节点的连接。消息首先发送到net_kernel,再由其转发到目标节点上的目标进程。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
792 |
进程消息投递确认(link + monitor) |
底层实现:通过链接或监视器可以确认对方进程是否存活,间接获得消息投递确认。链接传递退出信号,监视器发送'DOWN'消息。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
793 |
进程消息去重(deduplication) |
底层实现:Erlang不提供内置消息去重机制。需要应用层实现,例如使用唯一ID和已处理集合。 |
无原生 |
无硬件依赖。 |
|
794 |
进程消息顺序处理(ordered receive) |
底层实现:如果需要按特定顺序处理消息,可以使用选择性receive匹配序列号。或者使用gen_server的handle_call按请求顺序处理。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
795 |
进程消息背压(credit-based flow control) |
底层实现:Erlang没有内置信用流控,但可以通过应用层实现:接收方发送信用额度给发送方,发送方根据信用发送消息。常用于文件传输。 |
无原生 |
无硬件依赖。 |
|
796 |
进程消息批量发送(batch send) |
底层实现:连续发送多条消息到同一进程,底层会依次插入邮箱,但每次都需要获取锁。批量发送可以减少锁获取次数吗?不,每条消息独立加锁。但可以利用缓存局部性。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
797 |
进程消息优先级反转(priority inversion with messages) |
底层实现:低优先级进程发送消息给高优先级进程,高优先级进程处理消息时可能被阻塞(如等待资源),导致低优先级进程间接影响高优先级。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
798 |
进程消息大小统计(erlang:memory(messages)) |
底层实现:返回所有进程消息队列的总字节数。底层遍历所有进程,累加邮箱大小。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
799 |
进程消息队列数据(message_queue_data) |
底层实现:进程标志message_queue_data可以设置为off_heap或on_heap。off_heap将消息数据存储在单独的堆(message heap)中,减少主堆GC压力。on_heap存储在进程主堆中。 |
Erlang/OTP 19.0 (2016) |
无硬件依赖。 |
|
800 |
进程消息队列限速(process_flag(message_queue_data, off_heap)) |
底层实现:见上条。off_heap模式下,消息数据存储在单独的二进制堆中,使用引用计数管理。适用于消息量大且处理快的场景。 |
Erlang/OTP 20.0 (2017) |
无硬件依赖。 |
|
801 |
进程消息批量接收优化(recv_mark/recv_set) |
底层实现:编译器优化:当receive语句中有多个分支且模式简单时,编译器生成一个跳转表,根据消息类型快速定位处理代码。类似于模式匹配编译优化。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
802 |
进程消息超时实现细节 |
底层实现:receive的超时是通过在定时器轮中插入一个定时器实现的。当定时器到期时,如果进程仍在等待,则发送一个超时信号(内部消息)。超时信号具有最高优先级。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
803 |
进程消息嵌套receive |
底层实现:receive可以嵌套使用(在一个receive分支内再次receive),但这样会导致外层receive暂时挂起,内层receive处理消息。底层通过保存和恢复receive状态实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
804 |
进程消息与异常处理 |
底层实现:在try…catch块内的receive,如果发生异常,消息可能丢失(因为receive已经移除了消息)。需要小心处理。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
805 |
进程消息与进程字典交互 |
底层实现:在receive分支中可以访问进程字典,但应避免副作用。无特殊底层实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
806 |
进程消息与二进制匹配 |
底层实现:receive可以匹配二进制模式,例如receive <<A:32, B/binary>> -> … end。底层使用二进制匹配指令,高效解析二进制。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
807 |
进程消息与映射匹配 |
底层实现:receive可以匹配映射模式,例如receive #{key := Value} -> … end。底层使用映射匹配指令,支持部分匹配。 |
Erlang/OTP 17.0 (2014) |
无硬件依赖。 |
|
808 |
进程消息与列表匹配 |
底层实现:receive可以匹配列表模式,例如receive [H |
T] -> … end。底层使用列表匹配指令。 |
Erlang/OTP R1A (1998) |
|
809 |
进程消息与记录匹配 |
底层实现:记录在编译后变为元组,因此receive匹配记录实际上匹配元组。例如receive #myrec{field = V} -> … end。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
810 |
进程消息与guard表达式 |
底层实现:receive分支可以包含guard,例如receive {X, Y} when X > Y -> … end。guard在匹配成功后执行,如果失败则继续匹配下一条消息。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
811 |
分布式事务(Mnesia事务) |
底层实现:Mnesia使用两阶段提交协议(2PC)实现分布式事务。协调者(cohort)向所有参与者发送prepare请求,参与者锁定资源并投票yes/no,协调者根据投票决定commit或abort。底层使用分布式消息传递和本地锁机制。 |
Erlang/OTP R1A (1998) |
依赖网络;国产OS需支持分布式通信。 |
|
812 |
Mnesia脏操作(dirty_read/dirty_write) |
底层实现:绕过事务管理器直接访问ETS/DETS表,不经过锁和日志。底层直接调用ets:lookup/ets:insert等,无事务开销。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
813 |
Mnesia表碎片(fragmentation) |
底层实现:Mnesia支持将一个大表水平分割成多个碎片(fragment),分布在多个节点上。每个碎片是一个独立的ETS/DETS表。通过哈希键值或范围分布。查询时根据键定位碎片。 |
Erlang/OTP R1A (1998) |
依赖网络和磁盘。 |
|
814 |
Mnesia表索引(index) |
底层实现:Mnesia支持在表的非主键字段上创建索引,使用ETS的有序集(ordered_set)或哈希表实现。索引自动维护,写操作时更新索引。 |
Erlang/OTP R1A (1998) |
依赖内存。 |
|
815 |
Mnesia订阅(subscribe) |
底层实现:进程可以订阅Mnesia表的更新事件(写、删除等),当表发生变化时收到通知。底层使用ETS的监视器机制或Mnesia内部事件系统。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
816 |
Mnesia schema管理 |
底层实现:Mnesia schema存储表定义、节点分布、索引信息等元数据。schema本身也存储在Mnesia表中(schema表),需要复制到所有节点。schema操作(如create_table)需要全局锁。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
817 |
Mnesia备份与恢复 |
底层实现:Mnesia支持在线备份(backup)和恢复(restore),备份可以是本地文件或远程节点。底层遍历所有表,序列化数据到文件。恢复时清空表并重新加载。 |
Erlang/OTP R1A (1998) |
依赖磁盘和网络。 |
|
818 |
Mnesia检查点(checkpoint) |
底层实现:创建表的一个一致性快照,用于备份或数据迁移。检查点是一个只读视图,在创建后不受后续写操作影响。底层通过复制表数据实现。 |
Erlang/OTP R1A (1998) |
依赖内存和磁盘。 |
|
819 |
Mnesia事件日志(log) |
底层实现:Mnesia使用预写日志(WAL)记录事务操作,用于崩溃恢复。日志存储在DETS文件中。事务提交前先写日志,再写数据。 |
Erlang/OTP R1A (1998) |
依赖磁盘。 |
|
820 |
Mnesia锁管理器 |
底层实现:Mnesia内部使用锁管理器(lock manager)管理表级和记录级锁。支持读锁和写锁,锁粒度可配置。锁信息存储在ETS表中。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
821 |
Mnesia表类型(set, ordered_set, bag) |
底层实现:set(无序唯一键)、ordered_set(有序唯一键)、bag(无序允许多个相同键的记录)。底层使用ETS对应的表类型实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
822 |
Mnesia RAM副本与磁盘副本 |
底层实现:表可以存储在RAM(ram_copies)、磁盘(disc_copies)或两者(both_copies)。RAM副本使用ETS,磁盘副本使用DETS。both_copies提供持久化和性能。 |
Erlang/OTP R1A (1998) |
依赖内存和磁盘。 |
|
823 |
Mnesia表加载与卸载 |
底层实现:表在创建时可以指定load_node,启动时自动从磁盘加载数据到RAM。卸载表(delete_table)会删除所有副本和日志。 |
Erlang/OTP R1A (1998) |
依赖磁盘。 |
|
824 |
Mnesia网络分区处理 |
底层实现:Mnesia在网络分区时,节点可能无法达成一致,导致事务阻塞或失败。Mnesia没有内置的分区容忍算法(属于AP系统?实际更偏向CP)。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
825 |
Mnesia节点添加与移除 |
底层实现:动态添加节点需要将schema复制到新节点,并将表副本迁移过去。移除节点需要先将表副本移到其他节点。底层通过mnesia:add_table_copy/3和mnesia:del_table_copy/2实现。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
826 |
Mnesia事务重试(retry) |
底层实现:当事务因锁冲突失败时,Mnesia会自动重试一定次数(默认无限)。重试间隔指数退避。底层由事务管理器控制。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
827 |
Mnesia事务隔离级别 |
底层实现:Mnesia默认提供可串行化隔离级别(serializable),通过严格的锁协议实现。不支持更低的隔离级别。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
828 |
Mnesia死锁检测 |
底层实现:Mnesia使用等待图(wait-for graph)检测死锁。当检测到环路时,选择一个事务作为牺牲品回滚。检测周期可配置。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
829 |
Mnesia事务超时 |
底层实现:事务可以设置超时时间,超过后自动回滚。底层使用定时器轮实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
830 |
Mnesia系统信息(mnesia:system_info/1) |
底层实现:返回Mnesia运行状态,包括节点列表、表列表、事务统计、锁信息等。底层从Mnesia内部状态读取。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
831 |
Mnesia表信息(mnesia:table_info/2) |
底层实现:返回指定表的元数据,如类型、存储类型、索引、碎片等。底层从schema表读取。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
832 |
Mnesia事务函数(mnesia:activity/2) |
底层实现:允许在事务上下文中执行任意函数,函数可以包含多个Mnesia操作。底层启动一个事务上下文,管理锁和日志。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
833 |
Mnesia嵌套事务 |
底层实现:支持事务嵌套,内层事务可以部分回滚,但不影响外层。底层通过保存点(savepoint)实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
834 |
Mnesia after_transaction |
底层实现:在事务提交后执行的钩子,用于发送通知或清理。钩子在事务作用域外执行,不参与事务。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
835 |
Mnesia dirty_update_counter |
底层实现:对计数器的原子增减操作,不经过事务,性能极高。底层使用ets:update_counter/3实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
836 |
Mnesia表转换(transform) |
底层实现:在表加载时对每条记录应用转换函数,用于模式升级。底层在从磁盘加载记录后调用转换函数。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
837 |
Mnesia表合并(merge) |
底层实现:将两个Mnesia表合并为一个,用于数据整合。底层逐条复制记录,处理键冲突。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
838 |
Mnesia表移动(move_table_copy) |
底层实现:将表的一个副本从一个节点移动到另一个节点。底层先在目标节点创建副本,数据同步完成后删除源副本。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
839 |
Mnesia表碎片合并(join fragments) |
底层实现:将多个碎片合并成一个更大的碎片或表。底层需要重新分布数据,涉及大量数据移动。 |
Erlang/OTP R1A (1998) |
依赖网络和磁盘。 |
|
840 |
Mnesia表碎片分裂(split fragment) |
底层实现:将一个碎片分裂成多个,基于键范围或哈希。用于扩容。底层创建新碎片,重新分配数据。 |
Erlang/OTP R1A (1998) |
依赖网络和磁盘。 |
|
841 |
Mnesia表复制因子(replication factor) |
底层实现:通过设置表副本的数量(ram_copies, disc_copies等),控制数据冗余。副本越多,读性能越好,写性能越差(需同步所有副本)。 |
Erlang/OTP R1A (1998) |
依赖网络和存储。 |
|
842 |
Mnesia表同步与异步复制 |
底层实现:Mnesia事务默认同步复制(写所有副本后才返回)。支持异步复制(通过dirty操作或自定义),但Mnesia原生不提供异步复制选项。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
843 |
Mnesia表加载顺序 |
底层实现:Mnesia启动时按依赖关系加载表,先加载schema,再加载其他表。表之间的外键依赖需要手动保证。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
844 |
Mnesia表卸载顺序 |
底层实现:卸载表时先停止对该表的访问,然后释放资源。如果有外键约束,需先卸载依赖表。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
845 |
Mnesia表统计(table_info/2, stats) |
底层实现:提供表的大小、内存占用、读写次数等统计。底层从ETS/DETS和内部计数器获取。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
846 |
Mnesia表锁升级(lock upgrade) |
底层实现:事务先获取读锁,之后需要写操作时尝试升级为写锁。如果其他事务持有读锁,升级可能等待或死锁。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
847 |
Mnesia表锁降级(lock downgrade) |
底层实现:Mnesia不支持显式锁降级,但事务结束后所有锁自动释放。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
848 |
Mnesia表锁粒度(record level vs table level) |
底层实现:Mnesia支持记录级锁(默认)和表级锁(通过mnesia:lock/2的write/read表锁)。记录级锁并发度高,但锁管理开销大。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
849 |
Mnesia表锁超时(lock timeout) |
底层实现:事务获取锁时可以设置超时,超时后事务自动回滚。底层使用定时器。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
850 |
Mnesia表锁队列 |
底层实现:当锁被持有时,其他请求锁的事务进入等待队列。队列按FIFO或优先级排序。底层使用进程消息传递实现。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
851 |
Mnesia表锁兼容性矩阵 |
底层实现:读锁与读锁兼容,读锁与写锁互斥,写锁与写锁互斥。底层通过锁管理器检查兼容性。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
852 |
Mnesia表锁死锁预防 |
底层实现:Mnesia使用等待图检测死锁,不主动预防。可以通过锁排序(所有事务按相同顺序获取锁)预防。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
853 |
Mnesia表锁饥饿 |
底层实现:写锁可能被不断到来的读锁饿死,因为读锁兼容。Mnesia没有写锁优先机制。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
854 |
Mnesia表锁升级死锁 |
底层实现:事务A持有读锁,等待升级写锁;事务B持有读锁,也等待升级写锁。形成死锁。Mnesia通过等待图检测并回滚一个事务。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
855 |
Mnesia表锁与ETS锁的关系 |
底层实现:Mnesia事务在访问ETS表时,会获取ETS表级别的锁(内部锁),与Mnesia锁是两层锁。Mnesia锁在事务层,ETS锁在存储引擎层。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
856 |
Mnesia表锁与进程字典 |
底层实现:Mnesia事务内部使用进程字典存储事务上下文(如锁列表、日志)。事务提交或回滚时清理进程字典。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
857 |
Mnesia表锁与嵌套事务 |
底层实现:嵌套事务可以获取新的锁,但不能释放外层锁。内层事务回滚不会释放锁。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
858 |
Mnesia表锁与分布式事务 |
底层实现:分布式事务中,锁在多个节点上获取。协调者负责全局锁管理。如果一个节点失败,锁可能残留。 |
Erlang/OTP R1A (1998) |
依赖网络。 |
|
859 |
Mnesia表锁与Mnesia事件 |
底层实现:表锁事件(如锁获取、等待、升级)可以通过mnesia:subscribe/1订阅,用于监控和调试。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
|
860 |
Mnesia表锁统计 |
底层实现:通过mnesia:system_info(lock_queue)等获取锁队列长度、等待时间等统计。用于性能调优。 |
Erlang/OTP R1A (1998) |
无硬件依赖。 |
已完成编号811-860,共计50个新条目。现在总条目数为860。如需继续补充,请告知。




