![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
erlang
Anasterian
erlang 手游服务器开发人员一枚
积累中:)
展开
-
erlang edoc 使用教程
edoc使用文档 org文档生成的默认方法为application(Application::atom()) -> okEquivalent to application(Application, []).application(Application::atom(), Options::proplist()) -> okapplication(Application::原创 2013-11-22 15:28:45 · 2362 阅读 · 0 评论 -
erlang file 追加写
erlang 进行文件操作{ok, Write} = file:open("test.txt",[write]),io:format(Write, "~s", ["string"] ).但是这样做每次读都会覆盖文件内容{ok, Write} = file:open("test.txt",[append]),io:format(Write, "~s", ["string"]原创 2014-12-10 20:04:55 · 1881 阅读 · 0 评论 -
erlang 压缩zlib
一:写在之前今天和同事讨论偶然提到了,代码中注释掉的压缩方法,想了想好像还没有看过压缩相关的内容一位同事提出了,之前他们项目因为压缩崩溃过一次,这更激起了自己兴趣,晚上看了会,记录下一些心得二:简介erlang提供了一个压缩模块 zlib那么,什么是zlib?wiki 连接点这里wiki中的简介zlib is a software lib原创 2015-01-04 21:02:22 · 1727 阅读 · 0 评论 -
erlang http linux curl 返回空的问题
curl 返回结果为空,但是相同的url在浏览器上正常返回可能原因是erlang 编写的http服务器返回结果没有添加http头。将内容添加Http头代码如下encode_http_bin(List) -> Head = io_lib:format("HTTP/1.1 200 OK\r\n" "Content-Type: text/plain\r\n"原创 2015-06-15 15:33:27 · 1917 阅读 · 0 评论 -
erlang eride 配置 lager
项目最近使用lager管理日志linux 下配置很方便,在rebar.config下添加 {parse_transform, lager_transform}即可erlide比较纠结打开project -> prop -> erlang compiler(部分版本需要打开 erlang -> building)可以看到里面有一行叫做 global parse transf原创 2015-08-28 11:28:39 · 1066 阅读 · 0 评论 -
erlang gen:tcp 消息堆积问题
一:问题上一次服务器上线,碰到了个问题,玩家进程在gen_tcp:send时消息堆积,有十多个玩家消息堆积了5W+条,服务器内存过大二:原因我们追一下gen_tcp:send的代码send(S, Packet) when is_port(S) -> case inet_db:lookup_socket(S) of {ok, M原创 2015-08-19 18:07:01 · 2156 阅读 · 0 评论 -
Erlang的调度原理
http://www.cnblogs.com/zhengsyao/p/how_erlang_does_scheduling_translation.html转载 2015-10-10 10:20:02 · 462 阅读 · 0 评论 -
erlang R16B02 服务器进程消失问题
一:问题某个版本发布后,我们发现服务器进程会莫名其妙的消失掉,没有erl_crash文件,但是有core_dump文件生成,并且只有线上服会出现,内网怎么样也没有gdb core_dump文件后发现是 Module.c这个文件中 加载模块的时候出问题找了很多人包括stack maillist 上提问,最终大家讨论可能是R16B02的一个bug二:解决囧 我这个水原创 2015-11-28 15:47:30 · 529 阅读 · 0 评论 -
log4erl输出error_logger
一:写在之前接收的代码竟然不能直接输出异常,这个在调试上面不能忍啊。项目用的log4erl,快上线了,也不能大刀阔斧的修改为lager,就研究了下如何让log4erl输出 error_logger二:实现首先要明白error_logger 是怎么输出出来的erlang 启动sasl会启动一个叫做error_logger的 gen_event ,这原创 2015-12-29 17:50:03 · 994 阅读 · 0 评论 -
erlang 面试题
一 :写在之前项目不稳定,最近经常跑出去面试,啊,像我这样水平的人自然经常被拒绝,写一些面试经常问的erlang方面的问题,方便大家二:总体上总体上很多问题都是 几位大牛博客上的东西,还有工作上设计的一些问题,所以面试前最好过一遍博客三;具体问题1:erlang:now() 与 os:timestamp() 区别 余峰的博客2: erlan原创 2015-11-28 16:07:32 · 6222 阅读 · 1 评论 -
erlang dialyzer 两个脚本
1:build_dialyzerset HOEM=E:\dialyzer --build_plt -r "erts\ebin位置" "kernel\ebin位置" "stdkub\ebin位置" "sasl\ebin位置" "crypto\ebin位置"2:run_dialyzerset HOEM=E:\dialyzer --get_warnings 要分析的ebin文件夹原创 2014-12-23 20:03:06 · 585 阅读 · 0 评论 -
erlang xref使用记录
一:xref是什么偶然间看到知乎一篇回答https://www.zhihu.com/question/34500981有哪些好用的库,看到有一个分析错误的库,类似diaylazer,就拿下来看看有什么区别二:使用过程1:拉取 github clone https://github.com/inaka/xref_runner 编译2:使用 我是用控原创 2016-02-22 16:01:33 · 1104 阅读 · 0 评论 -
Erlang gen_tcp相关问题汇编索引
余峰大大的博客地址,比较早的了,转载做个记录http://blog.yufeng.info/archives/2688转载 2016-05-25 16:52:45 · 454 阅读 · 0 评论 -
erlang启动过程分析
原文地址 http://www.cnblogs.com/zhengsyao/archive/2012/08/15/Erlang-otp_start_up.html附:这个博主研究了很多底层相关点的知识。看了以后会收获很多转载 2016-05-13 18:35:09 · 354 阅读 · 0 评论 -
ubantu 安装erlang18.0 记录
装的真让人抓狂,找到个简便些的方法1:下载编译好的 deb文件点击这里2:运行dpkg -i deb文件名称可能遇到的错误(1)依赖关系缺失接着运行 sudo apt-get install -f (2) 之前有erlang旧版本没卸载 运行 sudoapt-get purge erlang再运行sud原创 2016-01-08 20:27:33 · 754 阅读 · 0 评论 -
提高gen_server call 一个小技巧
刚刚突然收到一条建议一般我们写 gen_server handle call会这么写handle_call(call, _From, State) -> Result = compute(State), %%compute 获取为一个耗时操作 {reply, Result State}.简单的通过计算返回state中的某个数据如果compute为原创 2014-12-25 21:11:24 · 1294 阅读 · 1 评论 -
erlang 格式化输出
erlang经常需要将文字打印在控制台/文件中查看。。io:format("~-20s", [String]) 这样可以保证打印出来的文字等宽便于查看可以看到是等宽的输出还有一种是取前x位 可以看到字符串被截取了用法解释在io:format的文档中有The general format of a control sequence is ~F.P.原创 2014-12-09 20:59:17 · 1406 阅读 · 0 评论 -
游戏服务器心跳包的作用
一 引之前看代码没仔细,一直以为我们的心跳包就是为了防止socket自动断开连接直到同事刚刚讲,这个超时是我们自己设置的啊....socket本身就是长连接accept(Socket) -> Ref = prim_inet:async_recy(Socket, 5, 600) receive {ine原创 2014-12-25 20:16:24 · 6519 阅读 · 0 评论 -
erlide 脆弱的环境配置
换了个win8重新折腾了一下erlang的环境erlide各种脆弱的配置,记录下来,以后自己肯定也用得到的1:可以打开文件,但是自己的配色全不见了 打开 workspace\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.ui.prefs 里面可以看到各种配色原创 2013-11-24 21:20:31 · 935 阅读 · 0 评论 -
erlang 游戏服务器 缓存策略
1:什么是缓存 在数据库与服务器逻辑之间加入的数据层2:作用 减少数据库操作 服务器使用mysql作为数据库,mysql每秒钟并发数量有限,所以我们要减少mysql的操作。3:erlang的缓存 erlang 在内存中可用 进程字典/ gen state / ets 储存变量,理论上三种方式都可以作为缓存原创 2014-11-18 20:39:27 · 2891 阅读 · 2 评论 -
erlang ets heir read_concurrency
ets heir 当前ets 进程销毁后,会将数据发送至read_concurrency原创 2014-11-25 17:14:42 · 1225 阅读 · 0 评论 -
erlang iolist
erlang的io_list到底是什么格式?官方文档翻了半天没搞清楚,后来在yufeng博客中找到一段1. []2. binary3. 列表, 每个元素是int(0-255)或者binary或者iolist,其中binary是指 bitsize % 8 == 0 ,int 是0-255原文ok一切明了 然后我就联想到,gen_tcp:send原创 2014-11-26 19:48:11 · 984 阅读 · 0 评论 -
erlang gen_server start
gen_server start_linkstart_link(Module, Args, Options) -> Resultstart_link(ServerName, Module, Args, Options) -> ResultTypes:ServerName = {local,Name} | {global,GlobalName} | {via,Module,Via原创 2014-11-27 19:28:30 · 822 阅读 · 0 评论 -
erlang lists:keyfind的一个小坑
测试代码如下Key = 2/2,FindReuslt = lists:keyfind(Key, 1, [{1, 1}],case FindReuslt of {Key, Value} -> find; false -> not_findend.这段代码会报没有匹配的错误原因是 Key = 2/2 其实 Key被赋值为原创 2014-11-21 19:41:56 · 3220 阅读 · 0 评论 -
erlang win8.1中erlide 智能提示失效解决方法
一时兴起换了win8.1结果发现erlide的智能提示基本失效研究了半天解决方法如下在设置content assist中 最下面有一个选项 when 。将其设置成erlang edirot就可以了。。原创 2013-11-21 15:17:15 · 867 阅读 · 0 评论 -
erlang io:format 远程打印信息
-module(test).-compile([export_all]).r() -> io:format("group leader:~p~n", [erlang:group_leader()]), io:format("node:~p~n", [node()]), erlang:group_leader(whereis(user), self()), io:for原创 2014-11-24 19:33:25 · 1199 阅读 · 0 评论 -
elang 游戏 生成全局id
一:全局Id是什么游戏内的玩家/物品/坐骑等世界唯一id二:为什么不用数据库自增id数据库自增id可定制性比较差当合服时,无论1服,2服 在数据库中玩家id都是 1-xxxxx 递增, 合服时如何处理这部分是个大问题所以我们选择自己生成id三:生成方式ets 有一个函数是 update_counter 解释如下,update_counte原创 2014-12-16 21:21:06 · 1852 阅读 · 0 评论 -
erlang eclipse erlide 常见的一些问题
一:写在之前昨天手贱。。。尝试了下erlide里面code inspection下面的功能,点了以后立刻卡死。重启后eclipse也打不开了。更换工程目录才好。。。所以记录下几个出问题的环节二:可能问题。1:安装了 16b03-1,15b03-1等带后缀的erlang otp版本这个折腾了我好久,还查看了eride的源码,发现里面有一句使用的是 类似字符串分原创 2015-01-07 20:42:26 · 592 阅读 · 0 评论 -
erlang fun 函数匹配
之前一直以为 erlang fun函数只能这么写Fun = fun(Num) -> Num end. 直到被教育了,原来还可以这样Fun = fun(0) -> 0; fun(Num) -> Num end.这样就可以更方便原创 2015-01-28 09:15:31 · 931 阅读 · 1 评论 -
erlang战斗系统设计
一 需求播放回合制,外加插入式手操战斗大致流程如下,1:战斗开始前单位S1与S2 称之为精灵1,2放完增益/减益技能后退场,战斗进入循环2:每个循环中按照站位顺序1-12号单位依次释放技能3:每个单位都可以手动释放技能,释放的技能插入下一个行动之前,比如1号位行动期间,3号位释放了一个主动技能,那么1号位行动后会直接播放3号位释放的技能4:当一方全部死亡,或者轮数大原创 2014-12-01 21:16:37 · 1403 阅读 · 0 评论 -
erlang element 与匹配
r16添加了新的获取tuple第n个元素的函数element(N, Tuple) -> term()Types:N = integer() >= 11..tuple_size(Tuple)Tuple = tuple()Returns the Nth element (numbering from 1) of Tuple.> element(2, {a, b, c}).b原创 2014-12-22 20:17:18 · 2156 阅读 · 0 评论 -
erlang 游戏目录结构 (大坑待填)
一:为什么讲目录结构目录结构可以反映出游戏服务器的设计思路,比如进程的划分,功能之间的交互等等二:写在之前预计会讲三个项目的目录结构,分别是我们自己的,最近组内新进高手带来的,从隔壁项目组取经过来的交流过程中确实发现我们的很多不足三:自己正在用的结构原创 2014-12-18 20:28:35 · 975 阅读 · 2 评论 -
ubantu 配置 erlang 18.0 + emacs + autocomplete
一:写在之前环境。。为毛又是环境,折腾二:安装增强功能又碰到问题了 The headers for the current running kernel were not found.执行sudo apt-get install dkms build-essential linux-headers-$(uname -r)后再安装,如果还不行可能是 vbox 与增强功能版原创 2016-08-02 09:09:04 · 466 阅读 · 1 评论