`
liumengfan
  • 浏览: 32916 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
在看了霸爷的erlang的abstract code之后,自己动手实验了一下,效果如下: [liufan@liufan abstract_code]$ erl -s hello -s erlang halt Erlang R16B01 (erts-5.10.2) [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] "hello world" [liufan@liufan abstract_code]$ cat hello.erl -module(hello). ...
今天实验了一下霸爷博客里的CPU密集型计算, 计算的内容时计算四遍斐波纳妾数列的第四十个元素是多少 代码如下: cpu_intensive.erl -module(cpu_intensive). -compile([export_all]). fib_test() -> fib(40), fib(40), fib(40), fib(40), fib(40). ...
在erl_term.h文件里: #define _TAG_IMMED1_PID ((0x0 << _TAG_PRIMARY_SIZE) | TAG_PRIMARY_IMMED1) #define _TAG_PRIMARY_SIZE 2 #define TAG_PRIMARY_IMMED1 0x3 由上面得到_TAG_IMMED1_PID=0x3(0000 0000 0000 0000 0000 0000 0000 0011) 而判断是否是内部pid的定义是: #define is_internal_pid(x) (((x) & _TAG_IMMED1 ...
今天编译erlang自带的ei_interface的例子时,报错如下 [liufan@liufan src]$ gcc -o extprg -I/usr/local/lib/erlang/lib/erl_interface-3.7.13/include/ -L/usr/local/lib/erlang/lib/erl_interface-3.7.13/lib complex.c erl_comm.c ei.c -lerl_interface -lei /usr/local/lib/erlang/lib/erl_interface-3.7.13/lib/libei.a(ei_pthreads ...
下面引用霸爷的话,给自己做一个笔记 引用inet_drv内部每个socket都有个消息队列, 保持着上层推来的消息. 这个消息队列有上下水位线的. 当消息的字节数目超过了高水位线的时候, inet_drv就把socket标志为busy. 这个busy要到队列的字节数少于 低水位线的时候才解除. 这是未公开的文档,用法参见下面: inet:setopts(Socket, [{high_watermark, 131072}]). inet:setopts(Socket, [{low_watermark, 65536}]).
今天再erlang inline 编译中读到erlang的函数也可以内联编译。 但是内联功能从来不会默认打开的。如果想使用的话,必须显示的在代码里使用-compile()属性。 当再代码里加上-compile(inline).时,编译器会根据自己的规则来决定哪个函数被定义成内联函数,其中有一个因素就是-compile({inline_size, Size}).,默认的size是24,这个size作为一个权重来参与决定某个函数是否被编译成内联的函数。 我们也可以使用 -compile({inline, [test/0, start/1]}). 或者 -compile({inline, [{test ...
今天读到褚霸博客里的gen_tcp:send的深度解刨和使用指南(初稿)时,顺着霸爷的思路,跟着 lib/kernel/src/gen_tcp.erl send(S, Packet) when is_port(S) -> case inet_db:lookup_socket(S) of {ok, Mod} -> Mod:send(S, Packet); Error -> Error end ...

iolist类型

今天读到http://blog.yufeng.info的gen_tcp:send的深度解刨和使用指南(初稿),看到下面这句: 引用 gent_tcp:send的时候数据的格式是iolist. 很多人会误会,特地把iolist特地变成list或者binary. 新生成的binary或者list在send之后要GC回收, 如果频繁的话, 系统的性能损失很大. tcp驱动是支持scatter write的, 最终是调用writev系统调用的.所以我们要充分利用这一特性. 我们从上面的代码可以看出, io是按照这样的规则填充writev向量的: 如果iolist的元素是 1. int, 拷贝. 2. b ...
今天看到ulimit命令,追溯到limits.conf文件,自己大概梳理了一下这个文件的配置,下面是文件自带的注释: # /etc/security/limits.conf # #Each line describes a limit for a user in the form: # #<domain> <type> <item> <value> # #Where: #<domain> can be: # - an user name ...
和epmd相关的环境变量 ERL_EPMD_RELAXED_COMMAND_CHECK ERL_EPMD_PORT ERL_EPMD_ADRESS 相关的使用如下: [liufan@liufan ~]$ export ERL_EPMD_RELAXED_COMMAND_CHECK=TRUE [liufan@liufan ~]$ export ERL_EPMD_PORT=4445 [liufan@liufan ~]$ export ERL_EPMD_ADDRESS=192.168.1.110,192.168.0.108 [liufan@liufan ~]$ erl -sname a ...
使用epmd的-port选项时,实验的例子是: [liufan@liufan ~]$ echo $ERL_EPMD_PORT [liufan@liufan ~]$ export ERL_EPMD_PORT=4444 [liufan@liufan ~]$ epmd -d epmd: Tue Jul 2 05:00:39 2013: epmd running - daemon = 0 epmd: Tue Jul 2 05:01:03 2013: ** got NAMES_REQ epmd: Tue Jul 2 05:01:03 2013: ** sent NAMES_RESP ...
当使用epmd -address时,后面跟的IP_LIST是让epmd监听自己电脑的哪个ip的,例如: [liufan@liufan ~]$ epmd -address 192.168.1.110 -d epmd: Tue Jul 2 04:43:17 2013: epmd running - daemon = 0 epmd: Tue Jul 2 04:43:25 2013: ** got NAMES_REQ epmd: Tue Jul 2 04:43:25 2013: ** sent NAMES_RESP [liufan@liufan ~]$ netstat -an ...

erlang的epmd

epmd有一个-stop的选项,当要是用 $epmd -stop name 的时候,本机启动的第一个erlang shell时要加上-relaxed_command_check选项,例如: erl -sname -epmd "epmd -relaxed_command_check -daemon" 这样的话,就会实现如下效果: [liufan@liufan ~]$ erl -sname a -epmd "epmd -relaxed_command_check -daemon" Erlang R16B01 (erts-5.10.2) [source] ...
Global site tag (gtag.js) - Google Analytics