游戏行业人心浮躁,静下来学习真心不容易,还好对erlang非常感兴趣。
某一刻我在想,这一行就像武侠江湖,如果没有一两式绝招难以震江湖,
我也不甘平庸,拿着一点薪水每天只能重复无味的业务工作。
职业生涯之所以选择erlang,并不是为了游戏能有多发展,而是深深的被
它的分布式高并发所吸引,因此放弃了专攻Java的netty,选择拥抱erlang。
决心做一件事,多少会有人质疑你的能力,并给于衷心的建议,当我选择
深入mnesia,自己也都觉得很狂妄。不过我会很踏实的去干,mnesia是
erlang的多个应用组合,逐个应用击破,我就不信破不了
(2014年11月10号)
lists函数底层实现总结,很多人看完底层实现就觉得自己会lists应用,我觉得
不是这样,学会使用和性能分析只能说会了40%,只有真正意义上明白lists的
函数封装的思想,这应该需要长期的训练,日常编写的代码尽量朝这方面思考。
如果编写的代码,能把底层和业务分开,这样的一段代码才是正能量的好代码
(2014年11月15号)
看完了ets的用法,我再不在相信项目优先用state还是ets,具体的还是需要看
业务的需求,定制策略然后选择合适的数据结构,一般来说公共的数据可以使
用ets来保存,比如说抢购实时排行等。ets的效率也是非常的高,底层的实现
都是一些复杂优秀的数据结构,查找和删除的都是O(lgn)性能。ets是实现单点
写,多点读的首选数据结构。
(2014年12月3号)
gb_tree 、gb_sets 底层是其实是一颗平衡树,查找和插入的性能都是o(lgn),
lists 插入O(1)查找O(n)。dict插入是O(1)查找O(n/16)。 对比这三种数据结构,
在业务的场景的选择,可以结合业务的需求通过计算性能期望,选取最优结构。
(2014年12月6号)
很久没有作总结了,必须纠正上次总结dict,dict是动态哈希的结构,查找的和
删除的性能均为O(1), 但是需要注意:每次一个槽满了以后,它都是需要去做
均衡,所以性能就降下来了,dict适合小数据,网传的分布式算法就是dict模型。
近期还研究了各种随机算法,走了一波弯路,又回到原点,游戏中的数据量都是
比较小,例:100个物品中随机10个,测试一番后,最暴力的方法确实最优的解。
关于附近的人(地理系统),geohash算法乱搞一番,我的博客上有介绍处理方案。
近期看的最比较爽还算上是平衡树、B树、B+树、红黑树,还算是弄明白了。终
于知道 索引 是如何实现的了,网上的文章很多,都能看的懂,不介绍了。
最后贴上近期的任务书吧,11月28~12月28在学校考试,迄今为止实习有三个半月了,
手上一大波 offer 争取在6月毕业前有突破。加油!-----2015年2月1号
-----------------------------------------
刘志刚(刘志刚) 09:47:26
加快一下熟悉服务器代码的进度,掌握所有的代码和框架
1.10 boss系统(完成)
1.11 gb_trees(完成)
1.12 gb_trees(完成)
1.13 聊天 邮件(完成)
1.14 排行榜(完成)
1.15 竞技场(完成)
1.16 定时器(mod_timer 半天)[附:缓存包处理、队列](完成)
1.17 公会[附:动态哈希dict](完成)
下周
1.19 日志系统(mysql和lager) (完成)
中途:各类随机算法对比、geohash(地理系统)、平衡树、B树、B+树、红黑树、礼包业务(全部完成)
1.20 任务
1.21 好友推荐
1.22 系统公告 (完成)
1.23 组队 (完成)
1.24 副本(这块给3到5天)
-----------------------