Erlang tip累积

1、erl -detached

  文档中说明daemons 和后台程序时适用,需要在代码中动态拉起node时同样适用,否则会收到terminate erlang 的问题

2 init stop

   可以终止VM,结合rpc:call可结束指定node

3 代码中控制common test

   ct:install 指定config文件,ct:start_interactive(),这个很重要,指定交互模式

4 and/not

   要把左右两边的比较运算符用()括起来

5 wxwidget

   Erlang移植的GUI 库,可以参考  wxwidget官方文档

6 $ 取ascii

   指定char的ascii值,如 $0 为48,在处理 binary时非常有用

7[H|T]的tip

    [H|T]=List常用用法,还可以这样[Key1,_,Key2|T]=List,匹配处符合条件的数据

8 debugger调试gen_server:call

   使用gen_server:call/3,timeout可以使用infinity,默认是5s,基本不够调试

9 debugger 关联其他node

   当VM为daemon时,无法再命令行启动debugger,可以采用rpc:call(Node,debugger,start,[])启动,提示at Node@Host

10 获取gen_server/gen_fsm等OTP process的state

  sys:get_status/1,2,适用于所有OTP的process和基于proc_lib和sys的process

11 如何设置timer

  使用erlang:send_after/3和erlang:start_timer/3而不是timer这个module,timer使用独立的process来管理timer,如果很多的process频繁建立/取消timer可能导致overload

12尾递归

   在尾递归不需要反转的情况效率高于普通递归,其他情况不一定

13 atom, ets 没有自动garbage collection

    需要考虑如何避免没有意义的atom和ets. ets可以显示指定delete

14 binary <<>>格式

   =和<<>>需要用空格分开

15 <<X:7/binary,Y:1/binary>> 无效

   在包含binary的pattern match中必须保证为8的倍数,否则无法解析

16 gen_server:call 远程调用

ServerRef = Name | {Name,Node} | {global,GlobalName} | {via,Module,ViaName} | pid()

  如果需要调用其它node的gen_server发消息,之前以为需要用rpc调用远端gen_server:call,仔细研究函数说明,发现本身支持 {Name,Node}和{global,GlobalName}这两种形式,很方便使用    

17 gen_tcp收到的消息格式

    {tcp, Socket, Data}
    {tcp_closed, Socket}
    {tcp_error, Socket, Reason}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值