* apply(M,F,A)要比直接调用调用对应的方法M:F(A1,A2...)要慢6~10倍,尽量避免使用
* BIFs是built-in functions的缩写代表这些方法是Erlang运行时系统的一部分
```erlang
%% binary_to_list VS bitstring_to_list
1> A = <<1:2, 23:6>>.
<<"W">>
2> B = <<1:2, 23:5>>.
<<55:7>>
3> binary_to_list(A).
"W"
4> binary_to_list(B).
** exception error: bad argument
in function binary_to_list/1
called as binary_to_list(<<55:7>>)
5> bitstring_to_list(A).
"W"
6> bitstring_to_list(B).
[<<55:7>>]
```

```erlang
statistics(wall_clock).
{11405766,266}
返回指定类型的系统参数,当Type为wall_clock时,返回Erlang虚拟机运行至今所度过的时间和上次执行statistics(wall_clock)到这次执行之间的时间(精确到毫秒级)。
performs CPU time measurements
context_switches||exact_reductions||garbage_collection||io||reductions||run_queue||runtime||scheduler_wall_time||wall_clock
make_tuple( 2,“1” )
{“1”, “1”}
localtime().
now().
localtime_to_universaltime({{1996,11,6},{14,45,17}}).
{{年月日},{时分秒}}
获取8小时时差的时间
list_to_existing_atom()
tuple_size/1
byte_size/1
bit_size/1
round(10.5) -> 11,
trunc( 10.5 ) -> 10
abs( -10 ) -> 10
12.8 rem 3 = 2.
8 div 3 = 2.
get_stacktrace().
查看最近的栈跟踪信息,栈跟踪信息包含当前调用函数的返回信息
system_info( process_limit ).
系统允许创建的进程上限
scheduler_id -> cpu 核心
schedulers
process_count
process_limit
processes_used
info
memory(processes||total)
node().
nodes().
nodes(hide).
apply(Module, Fun, Arg).
user_default.erl
user_default.erl
hello() -> "hello word!".
放入加载路径后,user_default模块中的任何函数可以直接调用而不需要给出模块名
put( key, value ) -> value||undefined
get( key ) -> value||undefined
float_to_list(7.12, [{decimals, 4}]).
binary_to_integer(<<"10204">>). 10204
integer_to_binary(10204). <<"10204">>
"7.1200"
> float_to_list(7.12, [{decimals, 4}, compact]). "7.12"
> float_to_binary(7.12, [{decimals, 4}]). <<"7.1200">>
> float_to_binary(7.12, [{decimals, 4}, compact]). <<"7.12">>
raise(Class, Reason, Stacktrace) -> no_return()
Types:
Class = error | exit | throw
Reason = term()
Stacktrace = raise_stacktrace()
raise_stacktrace() = [{module(), atom(), arity() | [term()]} |{function(), [term()]}]
| [{module(), atom(), arity()
| [term()],[{atom(), term()}]}
| {function(), [term()], [{atom(), term()}]}]
disconnect_node( Node() ).
强制断开一个节点的链接
garbage_collect(pid(0,12571,0)).
强制GC
make_ref()
通过引用来保证请求和响应包是同一个会话 make_ref() ,它在一个节点的生命周期内几乎是唯一的,2的28次方调用后才会重复
erlang:process_info(pid(0,12571,0)).
查看进程的详细信息
binary_part(Subject, PosLen) -> binary(). binary_part(Subject, Start, Length) -> binary().
binary_part( <<1,2,3,4,5>>, {0,2} ). -> <<1,2>>.
exit(whereis(Regname), kill).
杀进程
```
- 1.学习
- 1.1安装与运行环境
- 1.2编辑器、集成开发环境与其它工具
- 1.3代码编译运行
- 2.基础
- 2.1 Erlang终端
- 2.2 基础语法
- 2.2.1 异常处理
- 2.3 数据类型
- 2.4 操作符
- 2.5 模块属性
- 3.库函数
- 3.1 常用模块
- 3.2 OTP模块
- 3.2.1 函数
- 3.2.2 receive
- 3.2.3 .app.src文件
- 3.2.4 _app.erl
- 3.2.5 _sup.erl
- 3.2.6 gen_server
- 3.2.7 gen_fsm
- 3.3 erts
- 3.3.1 init
- 3.3.2 BIF
- 3.3.3 NIF
- 3.4 kernel
- 3.4.1 code_server
- 3.4.2 inet
- 3.4.3 net_kernel
- 3.4.4 net_adm
- 3.4.5 error_logger
- 3.4.6 global
- 3.4.7 application
- 3.5 stdlib
- 3.5.2 array
- 3.5.4 base64
- 3.5.5 binary
- 3.5.6 c
- 3.5.8 calendar
- 3.5.9 code
- 3.5.11 dict
- 3.5.12 erl_
- 3.5.13 file
- 3.5.14 filelib
- 3.5.15 gb_trees
- 3.5.16 gb_sets
- 3.5.17 gen_tcp
- 3.5.18 gen_server
- 3.5.19 httpc
- 3.5.20 init_parse
- 3.5.21 init
- 3.5.22 inet
- 3.5.23 io
- 3.5.24 lists
- 3.5.25 maps
- 3.5.26 os
- 3.5.27 ordsets
- 3.5.28 proplists
- 3.5.29 queue
- 3.5.30 qlc
- 3.5.31 re
- 3.5.32 random
- 3.5.33 rfc4627-json
- 3.5.34 string
- 3.5.35 ssh
- 3.5.36 soft
- 3.5.37 sets
- 3.5.38 supervisor
- 3.5.39 tuple
- 3.5.40 timer
- 3.5.41 unicode
- 3.5.42 cpu
- 3.5.43 math
- 3.5.44 zip
- 3.5.45 shell
- 3.6 SASL
- 3.7 asn1
- 3.8 compiler
- 3.9 tools
- 3.10 OS_Mon
- 3.11 crypto
- 3.12 Port
- 4.工具
- 4.1 Erlang预处理器
- 4.2 Erlang节点
- 4.3 Erlang多节点
- 4.3.1主从节点
- 4.4 Epmd
- 4.5 断点工具
- 4.6 dialyzer
- 4.7 dbg-debug 模块
- 4.7.1 dbg
- 4.8 Erlang跟踪工具
- 4.9 etop
- 4.10 profiling
- 4.10.1 fprof
- 4.10.2 eprof
- 4.10.3 cprof
- 5.进阶
- 5.1 TCP粘包、大小端
- 5.2 rebar发布系统
- 5.3 ErlangVM 心跳
- 5.4 Erlang GC
- 5.5 Erlang Time
- 5.6 Erlang 启动
- 5.6.1 SASL配置
- 5.7 Erlang系统限制
- 6.项目
- 6.1 the_seed
- 6.2 network
- 6.3 parse_tool
- 6.4 cache
- 7.项目研究
- 7.1 Mnesia
- 7.1.1 Mnesia模式
- 7.1.2 Mnesia操作
- 7.1.3 Mnesia增删改查
- 7.1.4 Mnesia过载分析
- 7.1.5 Mnesia高级特性
- 7.1.6 分布式
- 7.1.7 Mnesia表分片
- 7.1.8 Mnesia锁
- 7.1.9 dets
- 7.1.10 ets
- 7.2 Ejabberd
- 7.2.1 mod_echo.erl
- 7.2.2 hooks for module developers
- 7.2.3 Events list
- 7.3 cowboy
- 7.4 rebar
- 7.4.1 rebar Wiki
- 7.4.2 rebar.config.script
- 7.5 RIAK CS
- 7.6 Leofs
- 7.6.1 简介
- 8.资料整理
- 8.1 资料
- 8.1.1 Erlang的调度原理
- 8.1.2 虚拟机代码执行原理
- 8.1.3 SMP
- 8.2 杂记
- 8.2.1 设计