`
wj2me
  • 浏览: 12625 次
  • 性别: Icon_minigender_1
  • 来自: 杜塞尔多夫
最近访客 更多访客>>
社区版块
存档分类
最新评论

Erlang OTP in action读书笔记之第二章

阅读更多
看过第一章,继续第二章,由于有了Erlang的基础知识,这里就简略的翻一遍,作为完整的补充,不过,几位有经验的作者还是讲了不少我原来没留意过的地方,也值得记录一下,这里就只列出来我原来没注意过的觉得还不错的地方,就不做对于基础部分的详细罗列了。

比较实用的有一个是CTRL+G这个功能,可以通常通过两个节点来互相连接控制,比如一个是实际的运行系统的结点,通过这个功能可以达到远程连接控制的目的,不过我在Ubuntu上自带的Erlang上总是出错,普通的Erlang代码上好像没问题,现在想想估计是Ubuntu自带的Erlang省略了一些基本的功能的原因。正常的Erlang代码应该没问题的,因为毕竟公司的Erlang只是对标准Erlang做了几个很小的修改,就可以有那个功能了。

binary要学会使用,很好用,也很有实际的用处,atom注意的就是永远不会garbage回收,所以,注意点使用,别无限创造出来很关键。tuple的元素访问是constant时间的,所以,用tuple会比list访问的时候有效率,所以array库是用tuple来模拟实现的,其实内部多种集合类的数据结构都是用tuple底层实现的,当然了,常用的是record不过本质上是一样的就对了。

list注意连接的顺序,涉及内存构造,小的在左边,千万别++的连个巨大无比的,很慢。一个小的debug的技巧就是前边加个0省得就成了字符串了。

相等,分为严格相等的,和一般相等,不过,重点在于,有经验的人很少用相等,都去用pattern matching了。

函数,不仅名字,还有arity才决定了一个函数,原先不太留意这个概念,写一个抽取函数的函数的时候,只拿名字做参数,结果到后来恍然发现,arity也得参数丢进去,才又把接口通通从get_fun(FunName) 变成了get_fun({FunName, Arity})的形式,第一次的时候是有点忽略了。另外符号的比如++也是函数实现,跟Haskell有点相似的感觉。

shell的编译不同于普通的erlc的编译,很慢很慢,所以不要用shell里的作为时间方面的测量,好像犯过这个毛病,只怪那时候不太知道,所以,测量的话,可以丢入一个module当中,再去做同样的工作就可以了。

变量的命名,也不是越长越好,这点应该后续加以注意,可以参考比如代码大全,里边特意提到变量命名了,也应该参考公司大牛的代码,包括Erlang本身标准库,都是命名,简短清晰很关键,别老像我似的,每次的名字好几个单词长,注意一下。

list的匹配,可以前边几个值单独列出来,就挨个匹配了,简单的例子比如common test匹配_SUITE结尾名字,就那么用的。

确定前边排除了true的时候,后边只有false的时候,也应该显式的标记出来false便于清晰,也便于日后修改的,更明显,而且,不是true的话,防止漏网过去,早出错,早crash便于调试也。

higher order function涉及丢过来的函数不同,就能达到不同的效果,经典的对比可以比较比如strategy pattern就在head first design pattern第一章讲的,无非在OO里就是复合个对象进来达到变化,functional里直接想做什么,就把那个操作作为函数传入,就能够相应的变化了,十分方便,也是更OO的区别和联系的地方了。

预处理的所做,包括了几件事情,比如EUnit就是在预处理的时候插入了需要export的函数,还是有点意思的,可以带上p选项的编译,还能看到预处理之后的结果,更能实际的感受到,毕竟具体的生成出来的代码,比抽象的概念好的多。

process的dictionay简单概括就是不要用,要用后续的可以用ETS存储,不到20个可以list超过20个就ETS划算了,所以ETS也是应该常用的一个实用的工具。

函数的参数不同,形成了不同的函数,这样,简单的参数可以做前端,后边套入复杂的函数,加入一些默认的参数,这个是OTP里常用的技巧,也能帮助达到尾递归的目的,这里对尾递归还是做了相当详细的解释,可以好好看看。当然了,对于企业来说,还是清晰快速,最重要的是能工作就好,毕竟值得优化的地方,少之又少,而且优化一处,可能胜过别处很多小的优化,当然尾递归很重要,别把系统内存耗光才是主要的。
0
0
分享到:
评论

相关推荐

    erlang otp in action 书上的 代码

    erlang otp in action 代码

    erlang otp25 win安装包

    erlang otp25 win安装包

    Erlang and OTP in Action MEAP May 2010

    Erlang and OTP in Action Martin Logan, Eric Merritt, and Richard Carlsson MEAP Began: August 2008 Softbound print: May 2010 (est.) | 500 pages ISBN: 1933988789 Part One: Getting Past Pure Erlang; ...

    erlang-otp-win64位 25.3版本

    总的来说,"erlang-otp-win64位 25.3版本"的安装是部署RabbitMQ等基于Erlang OTP技术的应用的第一步。理解Erlang OTP的特性和RabbitMQ的工作原理,能够帮助开发者更好地利用这些工具构建高效、可靠的系统。在实际...

    Erlang otp_win64_21.2.exe

    Erlang OTP(Open Telephony Platform)是一种开源的编程语言和框架,专为构建高度并发、分布式和容错系统而设计。"Erlang otp_win64_21.2.exe" 是Erlang OTP在Windows 64位平台上的一个特定版本,编号为21.2。这个...

    erlang_otp_win64_25.0

    Erlang OTP (Open Telephony Platform) 是一种高级并发编程语言和框架,主要由瑞典电信设备制造商Ericsson开发,用于构建高度可靠、可扩展和实时的分布式系统。Erlang OTP 25.0是该平台的一个版本,特别针对Windows ...

    Erlang/OTP 26.2.1

    Erlang/OTP 26.2.1,Erlang,OTP,26.2.1

    Erlang-otp_win64_23.0.zip

    Erlang OTP是Erlang编程语言的核心组成部分,它提供了分布式计算、并发处理、热代码升级和容错恢复等一系列强大的功能。在安装RabbitMQ,一个广泛使用的开源消息代理和队列服务器之前,通常需要先安装Erlang环境。...

    ERLANGOTP并发编程实战清晰中文版

    erlang otp学习文档 学习还不错的

    [Erlang] Erlang OTP 并发编程实战 (英文版)

    [Manning Publications] Erlang and OTP in Action (E-Book) ☆ 出版信息:☆ [作者信息] Martin Logan, Eric Merritt, Richard Carlsson [出版机构] Manning Publications [出版日期] 2010年12月05日 [图书...

    Erlang otp_src_20.3.tar.gz

    Erlang OTP 20.3 是一个针对Linux CentOS系统的软件包,主要为开发者提供了一个强大的并发和分布式计算环境。Erlang是一种静态类型的、函数式的编程语言,它以其在处理高并发、容错和实时系统方面的优秀表现而闻名。...

    Erlang/OTP Application完整例子

    Erlang/OTP Application完整例子,含代码和二进制,对于学习Erlang/OTP Application很有帮助。 配套文章http://blog.csdn.net/mycwq/article/details/12610677

    读书笔记:ErlangOTP设计原则中文文档.zip

    读书笔记:ErlangOTP设计原则中文文档

    erlang otp_src_20.2.tar.gz

    Erlang OTP (Open Telephony Platform) 是一个用于构建高度并发、分布式和容错系统的软件框架,由瑞典的Ericsson公司开发。OTP提供了一个强大的编程环境,特别适合于实时通信系统和大规模网络应用。在本场景中,"otp...

    ErlangOTP 21.3.zip

    Erlang OTP(Open Telephony Platform)是一种由Ericsson开发的开源软件框架,主要用于构建高度可扩展、容错性强的分布式系统。OTP 21.3是Erlang的一个特定版本,它包含了Erlang虚拟机(BEAM)、标准库和其他相关...

    Erlang otp_win64_21和22版本 exe

    在Windows 64位平台上,Erlang OTP提供了exe安装程序,如"otp_win64_21.3.exe"和"otp_win64_22.exe",分别代表Erlang OTP的21.3和22两个版本。 1. **Erlang语言特性** - **并发性**:Erlang采用轻量级进程模型,每...

Global site tag (gtag.js) - Google Analytics