随笔分类 - [75]Erlang
-
Erlang千万级用户游戏框架(Openpoker)源码文件分析清单
摘要:Erlang千万级用户游戏框架(Openpoker)源码文件分析清单openpoker源码 erlang写的网游服务器源码,OpenPoker是一个大型多人扑克网游,内建支持了容错能力,负载平衡和无限制的规模大小。本文是openpoker源码文件功能的一个清单式说明:模块名称模块功能说明备注ante.erl仅仅是开始下注的处理,具体的逻辑在betting中barrier.erlbarrier本意屏障bb.erlBot launcherbetting.erlPoker betting logic 下注逻辑处理bits.erl位处理相关操作blinds.erl处理小盲注,大盲注bot.erlAI, 阅读全文
-
Windows下的环境搭建Erlang
摘要:Windows下的环境搭建Erlang一.安装编译器在http://www.erlang.org/download.html下载R16B01 Windows Binary File并安装。二.运行编译器安装完编译器后,打开安装目录下的werl.exe,就可以进入编译器环境。可以通过toolbar:start().来显示toolbar。通过halt()来退出编译器。三.配置编译器用命令init:get_arguments().可以获得编译器的环境配置。[{root,["C:\\PROGRA~2\\ERL510~1.2"]},{progname,["erl" 阅读全文
-
当Erlang遇到Solr
摘要:当Erlang遇到Solr Joe Armstrong的访谈中有一段关于"打开黑盒子"的阐述,给我留下很深的印象:Joe Armstrong在做XWindows开发时没有使用对应的类库,而是在了解XWindows底层实现后选择了直接和套接字通信,"把这20条消息映射到Erlang术语上,变个小魔术,然后可以向窗口直接发送消息,它们就开始执行动作了". [访谈全文] 回到今天的任务:Erlang使用Solr服务?当问题落实到数据通信协议的时候,就豁然开朗了,转换为我们熟悉的技术方案组合.先看下Solr的简介: Solr Solr (pronounced & 阅读全文
-
Erlang Resources 资讯小站
摘要:Erlang Resources 资讯小站好久没有写博客,是懒了吗?不是;前面两个月在紧张地推进一个项目,中间积累了一些RabbitMQ和Erlang的东西;本打算在项目结束之后赶紧总结一下,结果老婆怀孕之后生活节奏大乱:早起做饭,晚上回去做饭,洗刷碗筷,衣服,等忙完了也就精疲力尽了;其实这都无所谓主要是老婆反应有点大,身体很不舒服,看她受罪的样子真恨不能以身相替.这样的情况下,惯例的技术学习时间基本上停掉了,偶尔有几天强打精神看书,效果奇差,不得不调整作息时间,晚上尽可能早睡,早晨早起,每天找到一个小时到办公室,这样每天早晨争取到了黄金1小时;这段时间主要用来看书,吸收新知识,比如看@hua 阅读全文
-
Erlang运行时源码分析之——线程进度机制
摘要:欢迎下载本文精美排版的的pdf版本:http://vdisk.weibo.com/s/oIICP1 概述线程进度跟踪机制(thread progress)是Erts 5.9引入的一个重要的内部改进,如release notes中提到的:The ERTS internal system block functionality has been replaced by new functionality for blocking the system. The old system block functionality had contention issues and complexity i 阅读全文
-
Erlang常见注意事项(Efficiency Guide)
摘要:发现很多大牛也在翻译Erlang/OTP的一些内容,先膜拜一下,可能不小心会重复,但是也只有在翻译过程中才会遇到并且学习到跟自己原想不一样的东西,翻译太菜希望大牛指正。=====================================================================================================Common Caveats(常见注意事项)Erlang/OTP R15B02 Here we list a few modules and BIFs to watch out for, and not only from a . 阅读全文
-
Erlang性能的八个误区
摘要:重新看Erlang的自带文档,发现还是很多细节需要注意的,这里自己翻译一下,也分享一下The Eight Myths of Erlang PerformanceErlang/OTP R15B021 Myth: Funs are slow 函数调用很慢 Yes, funs used to be slow. Very slow. Slower thanapply/3. Originally, funs were implemented using nothing more than compiler trickery, ordinary tuples,apply/3, and a great .. 阅读全文
-
Erlang 杂记 IV
摘要:休假回来,调整一下状态,先把Evernote里面一些比较零散的东西整理出来;过去一个月对于Erlang开发者还是有些惊喜的,比如《Erlang/OTP并发编程实战》终于出版了;比如<Building.Web.Applications.with.Erlang>也可以看到英文版了.下面第一条消息就是关于Erlang的另外一本好书:《Learn You Some Erlang》Learn You Some Erlang 两则 Erlang学习有一个非常棒的网站:http://learnyousomeerlang.com/ 现在有两则关于它的消息: [1] 首先是这本书的Kindle版本, 阅读全文
-
Erlang启动过程分析
摘要:本文从源代码出发简单地分析从在控制台输入erl按下回车到init完成启动步骤的过程。本文分析的环境为Unix环境,Erlang/OTP版本为R15B01,针对的虚拟机为SMP风格的虚拟机(也就是在代码中定义ERTS_SMP宏)。Erlang虚拟机的启动erl实际上是一个shell脚本,设置几个环境变量之后,调用执行erlexec。erlexec的入口点在 otp_src_R15B01/erts/etc/common/erlexec.c 文件。erlexec的main函数首先分析erl传入的参数和环境变量,选择正确版本的beam可执行文件,然后将传入的参数整理好,加入一些默认参数,最后通过系统调 阅读全文
-
Erlang XML处理解决方案
摘要:XML以及相关的XSLT,XPath,XSD工具在数据层面为我们提供了极大的灵活性和便利.我们游戏协议的代码自动生成就是首先使用XSD工具设计了协议的Schema,然后使用.net的xsd工具直接生成实体类,然后就直接在工具中操作对象就可以了,协议的XML文件也可以通过事先的Schema检查来校验数据规范性;Erlang类库提供了对于XML的支持,可能你在STDLIB中并没有找到,这是因为这部分被独立在:http://www.erlang.org/doc/apps/xmerl/index.html 如果已经忘记了XML中常用的概念,最好还是在维基百科中做一下回顾:XMLXHTML DTD(文件 阅读全文
-
列表解析
摘要:原文链接:http://www.erlang.org/doc/efficiency_guide/listHandling.html水平有限,错误之处欢迎指正。5 列表解析5.1 创建一个列表创建列表最好从最后开始,一个元素接一个元素地附加在前面。如果你用++操作符:List1 ++ List2会通过把List1拷贝一份附加在List2前面来创建一个新的列表。看一下lists:append/1或者++在Erlang里是如何实现的,我们可以清楚地看到第一个列表被拷贝。append([H|T], Tail) -> [H|append(T, Tail)];append([], Tail) -&g 阅读全文
-
Erlang Queue
摘要:]}7> queue:in(f,v(6)).{[f,e,d,c,b],[a]}8> queue:in(g,v(7)).{[g,f,e,d,c,b],[a]}9> 出队列通常复杂度也是咋O(1),最差的情况是O(len(Q));对于RearList和FrontList都有数据的情况下,取出一个数据元素仅仅是从FrontList中取出头元素,所以时间复杂度也是1.如果恰好取出了FrontList的最后一个元素,就要做前后端数据元素的转移.%% O(1) amortized, O(len(Q)) worst caseout({[],[]}=Q) -> {empty,Q};ou 阅读全文
-
Erlang ordsets
摘要:[Erlang 0069] Erlang ordsets ordsets是lists实现的有序集合.由于数据元素的变动都会触发重新排序,所以ordsets效率不高,只适用于数据量比较小的场景.ordsets中包含了常见的集合操作:求交集,并集,是否为子集,是否存在交集6> ordsets:intersection([1,2,3,4],[3,4,5,6]).[3,4]7> ordsets:union([1,2,3,4],[3,4,5,6]).[1,2,3,4,5,6]8> ordsets:is_disjoint([1,2,3,4],[3,4,5,6]).false9> o 阅读全文
-
Erlang observer 简单使用
摘要:昨晚的大雨带来今天的凉爽,早睡早起。 这一篇,给大家介绍个Erlang工具:observer。 简介(摘自erlang doc): A GUI tool for observing an erlang system. The observer is gui frontend containing various tools to inspect a system. It displays system information, application structures, process information, ets or mnesia tables and a frontend... 阅读全文
-
Erlang dict
摘要:dict是动态哈希表实现的字典.在接口上和orddict保持一致,在实现上和array动态扩展的思路类似.dict使用的是动态哈希技术实现,理论依据是论文:"The Design and Implementation of Dynamic Hashing forSets and Tables in Icon",论文地址:http://www.2007.cccg.ca/~morin/teaching/5408/refs/a99.pdf数组寻址容易,插入和删除困难;链表寻址困难,插入和删除容易;哈希表插入和删除的时间均取决于查找时间.哈希表在数据和数据存储位置之间建立了确定的函 阅读全文
-
Erlang gb_trees
摘要:gb_trees(GeneralBalanced Trees) 通用二叉查找树,通常被用作有序字典.与普通未平衡二叉树相比没有额外的储存开销,这里所说的额外的存储开销是指是否使用额外的metadata记录节点相关的信息,dict和array的实现就使用了这样的描述信息,换句话说gb_trees是自描述的.性能优于AVL trees.相关论文: General Balanced Treeshttp://www.2007.cccg.ca/~morin/teaching/5408/refs/a99.pdf和proplists,orddict相比它能够支持更大的数据量. 平衡二叉树(又称AVL树) . 阅读全文
-
Efficiency Guide User's Guide -> Common Caveats
摘要:[Erlang-0003][OTP] Efficiency Guide User's Guide -> Common Caveats原文链接:http://www.erlang.org/doc/efficiency_guide/commoncaveats.html(水平有限,错误之处欢迎指正)3 一般说明这里列出一些需要注意的模块和内建函数,这里不只关注性能,还有其他。3.1 timer模块用erlang:send_after/3和erlang:start_time/3创建的定时器,远比timer模块创建的定时器高效得多。timer模块用单独的进程管理定时器,如果大量进程经常性的 阅读全文
浙公网安备 33010602011771号