![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
erlang相关
建筑师阿干
这个作者很懒,什么都没留下…
展开
-
Erlang 基础学习 1
Erlang Day 1 基础• 容错,在多核CPU上性能好,因为share nothing,因此并发特别好,concurrency oriented programming• erlang 支持任意长度的整数计算,不会溢出• module 和 function名字都必须是小写• 变量必须以大写字母开头• 变量实际上是不变的(常量),就和代数(Algebra)一样• 变量的声明周期是在声明的那个代...2008-09-16 02:55:49 · 87 阅读 · 0 评论 -
erlang 中case语句的使用
在erlang中,至少有三种可互换的流程控制方式:函数声明上的pattern match,case语句,if语句 这里讲将case语句和函数声明上的pattern match的区别。 case语句的格式如下: case conditional-expression of Pattern1 -> expression1, expression2, .. ;, ...2009-07-07 13:16:30 · 1208 阅读 · 0 评论 -
并不是所有的时候都应该选择尾递归
要实现一个函数,参数是一个list,结果是将list里每个数字都+1,返回一个新的list,会怎么实现呢? 看代码,哪个函数性能最好?(除了add2,因为他的结果是不正确的)-module(t).-compile(export_all).add1([]) -> [];add1([H|T]) -> [H+1|add1(T)].add2(R) -&g...2009-07-08 17:06:56 · 119 阅读 · 0 评论 -
在ubuntu上编译erlang with wx
因为ubuntu维护的erlang版本太旧,因此从某时开始,我就开始自己维护我使用的erlang版本,下载源代码来编译 以前编译的时候总是有odbc和wx两个无法链接,因为不使用到,也就忽略过去了,这次因为想看看debugger的东西,需要wx支持,才去想办法编译wx的driver,不过碰到一些问题,留给大家 首先,下载了源代码,configure一下,发现无法link odbc和...2009-07-12 09:10:40 · 126 阅读 · 0 评论 -
erlang中的message发送的几个事实
这个世界是并行的,我们每个人都有自己的思想,你没法知道我想什么,只能我告诉你。 在erlang的世界里,每个进程有自己的状态(其实就是那些传来传去的参数,不考虑进程字典这个不干净的东西好了),无法直接将一个进程的状态分享给其他进程,只能通过消息,发送到对方的邮箱里去,看他啥时候有空处理一下。 erlang里发消息很简单 PID ! Message,就可以了,PID是一种数据类型...2009-07-13 17:59:07 · 297 阅读 · 0 评论 -
erlang programming 比programming erlang这本书好
这两本书我都是看英文pdf的,看了TheBook之后,没啥感觉,就是介绍性质的,现在在看TheOtherOne,看了一部分,大概1/4,感觉很不错,很实在,很多东西完全是一些实际经验,而不是简单的介绍功能。 估计和作者的经历很相关,Joe 就是一个布道者,要向大家介绍erlang,推广erlang,erlang能这样,能那样,有这个,有那个,这里好,那里好;而Francesco他们呢,纯粹...2009-07-15 16:38:17 · 214 阅读 · 0 评论 -
erlang 程序性能优化挑战
OpenPoker的作者Joel Reymont发起的挑战,优化一个程序的性能,问题在这里,还有这里,过程应该比较有意思,看了他的程序,似乎和我想要的一个东西比较想,要好好看看,哈哈。...2009-07-20 12:03:31 · 275 阅读 · 0 评论 -
为啥我的erlide超慢无比?
为啥我的erlide超慢无比? 刚下载的一个eclipse 3.5 platform,相当干净,然后就直接安装的一个erlide,版本是0.6.5 用的是刚下载的jdk 1.6.0_15,系统是ubuntu 9.10 beta,erlang也是最新的R13B01 使用的时候很卡,动一下,卡一下,动一下,卡一下 谁知道是为啥呢?咱就想不明白了。...2009-08-06 16:08:04 · 92 阅读 · 0 评论 -
erlang.org似乎挂了
从昨天起,erlang.org就无法访问了,ping能ping通,telnet erlang.org 80也能连上,但是GET /就无相应 还好,我以前把所有的manual pdf都下载了下来,不然没文档看了,哎,还是在线的方便啊...2009-08-17 11:38:47 · 199 阅读 · 0 评论 -
erlang 新书 "OTP and Erlang in Action"
一本新书,似乎还未完成,见 http://pokingarounderlang.wordpress.com/2009/08/17/otp-and-erlang-in-action/http://www.manning.com/logan/ 开始期待,看了Progrmming Erlang 和Erlang Progrmming(还没看完),感觉实践中还是需要一些指导,特别是OTP部分...2009-08-17 17:40:40 · 93 阅读 · 0 评论 -
不错的erlang tutorial
http://learnyousomeerlang.com/ 写道 This guide is intended to be read by beginners, but if you're average or somewhat advanced you can probably learn a few things too! 作者写的很生动,很形象,比较适合初学者。...2009-08-19 09:41:01 · 101 阅读 · 0 评论 -
erlang 中带下划线变量的使用
在erlang里'_'是一个特殊的变量(其实erlang里不应该叫“变”量,照顾习惯,姑且这么叫吧),它可以代替任何东西,在match的时候非常有用,例如:{A, _, [B|_], {B}} = {abc, 23, [22, 23], {22}} 这样,就是把_当作一个占位符,表示,match的时候这里有一个值,但是我不关心他是什么 在erlang里,使用下划线'_'开头的变量名...2009-07-03 15:39:58 · 359 阅读 · 0 评论 -
37signals 也开始使用erlang了
http://www.37signals.com/svn/posts/1728-nuts-bolts-campfire-loves-erlang一方面说明erlang越来越受重视了,erlang的优势也被更多的人认可另一方面,技术的选择越来越丰富了啊,作为rails的最初的作者,去选择erlang,只能说明erlang在这方面是有非常独到的优势啊 另:campfire是一个在线的实...2009-05-15 13:27:03 · 116 阅读 · 0 评论 -
Erlang 基础学习 11 Programming with Sockets
Day 11 Programming with Sockets• gen_tcp 和 gen_udp 两个包使用TCP• 从服务器取数据• 1. {ok,Socket}=gen_tcp:connect(Host,Port,Params)• 2. ok = gen_tcp:send(Socket,Data).• 3.receive_data,处理两种包{tcp,Socket,...2008-09-27 09:46:43 · 132 阅读 · 0 评论 -
Erlang 基础学习 2 简单的程序
Erlang Sequential ProgrammingModules• 存放在.erl的文件里,需要先编译才能运行• 代码的基本单元,所有的函数都存在module里• Bogdan’s Erlang Abstract Machine• 在erlang shell 中,使用c(module_name).来编译和装载一个module• 看代码-module (geometry).-expor...2008-09-16 07:49:06 · 130 阅读 · 0 评论 -
Erlang 基础学习 3 异常处理
Erlang Day 3 异常处理• 三种方式可以抛出异常• exit(Why). 将广播一条消息{EXIT,Pid,Why}给所有链接到当前进程的进程• throw(Why). 抛出一个异常,一般文档里需要描述,由调用者去决定catch或者忽略• erlang:erro(Why). 一般是内部错误try FuncOrExpressionSequence of Pattern1 [when ...2008-09-17 08:09:05 · 101 阅读 · 0 评论 -
Erlang 基础学习 4 Advanced Sequential Programming
Day 4 Advanced Sequential Programming• BIF Build-In Functions,是在虚拟机里实现的,用erlang很难实现的功能,例如tuple_to_list,time等• Binaries 中的整数只能在0-255• term_to_binary,binary_to_term,list_to_binary• 位操作• M = <<X:3,...2008-09-17 08:11:58 · 96 阅读 · 0 评论 -
Erlang 基础学习 5 编译和运行
如何退出erlang 的shell• ^G + d • ^C + a• erlang:halt(). 暴力退出,很快,但是如果打开了一个很大的数据库的话,下次启动可能要作recover• q(). 或者init:stop(). 将关闭所有打开的文件,停止数据库,按次序停止所有的OTP程序修改开发环境• 代码查找路径(类似于classpath),可以通过code:get_path().查看当前的路径...2008-09-17 09:40:55 · 410 阅读 · 0 评论 -
Erlang 基础学习 6 Concurrent Programming
好戏开始了Erlang 的程序由很多process组成,这些process和人很象:• 都有自己的一份memory,并且不会互相影响• 如果要影响别人的memory,都必须明确告诉对方,比如发个消息(说句话)啥的• 当然,说了别人不一定听,还得确认一下,哥们,明白了么?• 这些process如果挂了,会在最后吼出来:考,老子被零除!啊!• 这样,其他的process就会知道,哦,谁谁谁挂了。• 还...2008-09-18 06:14:17 · 124 阅读 · 0 评论 -
Erlang 基础学习 7 Errors in Concurrent Programs
Linking Processes• 进程可以调用link(Pid)来创建连接,连接之后,当一个进程死掉,另一个进程会收到一个exit的消息• 如果进程不处理这个exit消息,默认情况下也会退出• 这个连接工作在本地,也可以工作在多个节点上on_exit 处理器on_exit(Pid, Fun) -> spawn(fun() -> process_flag(trap_e...2008-09-19 03:48:01 · 116 阅读 · 0 评论 -
Erlang 基础学习 8 Distributed programming
Distributed Programming为啥需要分布式的程序?• 性能,可以把程序的不同部分跑在不同的机器上• 可靠性,我们可以构建一种容错机制,如果一台机器挂了,可以把他的工作交给其他机器去完成• 伸缩性,如果向上扩展的话,再好的机器也有个头,但是我们可以向外扩展,添加新的机器进来提高计算能力这里会介绍两种分布式的实现方式• 1. 分布式的erlang,提供一种机制让erlang程序运行在...2008-09-25 06:22:35 · 116 阅读 · 0 评论 -
erlang manual supervisor 翻译(未完成)
MODULEsupervisorMODULE SUMMARY通用监控行为模块DESCRIPTION这是用来实现监控者的一个模块,用来监控其他称之为子进程的进程。一个子进程可以是一个工作进程或者同样是一个监控进程。工作进程一般是用gen_event,gen_fsm或者gen_server实现的。使用本模块实现的监控者将会有一套标准的接口函数,其中包含了用来跟踪和报错的功能。监控者...2009-04-15 15:06:31 · 120 阅读 · 0 评论 -
Erlang 基础学习 9 Interfacing Techniques
• Erlang和外部程序的交互通过一种叫port的技术来通信,为了保证安全,外部进程的crash不会影响到erlang的vm本身• 具体过程是这样的• 1. 首先通过open_port来启动外部程序,并绑定一个erlang进程在这个port上• 2. 这个绑定的进程拥有所有和外部程序的接口,所有和外部程序的交互都通过他来走• 3. 绑定的进程和外部程序之间是通过二进制流来交互的Ports• Po...2008-09-26 02:39:42 · 72 阅读 · 0 评论 -
Erlang 基础学习 10 Programming with Files
文件操作函数库的组织方式• file 模块,打开关闭,读写,列目录,等等基本操作• filename 模块,一致的处理不同平台上的文件名• filelib 模块,是file模块的一个扩充,大多是用file模块的函数编写• io 模块,提供一些函数来处理已打开的文件,比如分析文件内容,将格式化的数据写入文件等读取文件的不同方式• 文件内容都是由一些字节组成,这些内容是什么含义完全取决于怎么处理• 例...2008-09-27 02:07:17 · 80 阅读 · 0 评论 -
读了一下hotwheels的代码
上次提到的一个挑战,公开出来的一些代码,这两天抽时间仔细读了一下,感觉对OTP了解更多了(以前没怎么接触过完整的应用),下面是一些阅读笔记和简单的分析 hotwheels 程序入口 hotwheels,启动app hotwheels,通过hotwheels.app查看入口模块,app的入口模块hotwheels_app,作为一个application,定义了几个子进程:* ...2009-08-31 11:56:09 · 248 阅读 · 0 评论