- 博客(12)
- 资源 (5)
- 收藏
- 关注
原创 关于浮点数的小常识
浮点数不能直接用==来判断是否相等,但可以用来确定大小。确定两个浮点数相等和精确度有关。可以用标准C99提供的几个精度常量来判断是否相等。float.hFLT_EPSILON float精度DBL_EPSILON double精度LDBL_EPSILON long double精度 如: bool DoubleEquel(double a, double b)
2011-05-27 17:23:00 1114 2
原创 记录:gcc的一些宏
<br />gcc -dM -E - < /dev/null<br />可以查看各种宏,比如__linux__, __amd64__之类的。
2011-05-26 12:42:00 1098
原创 记录:几类协议的区分
<br />REQ(REQuire): 请求类协议,一般是client主动发起。<br />RES(RESponse): 回应类协议,对REQ的一个回应,带有处理结果的数据包。<br />ACK(ACKnowledge): 确认类协议,对REQ的一个回应,与上面的区别是数据包中只有确认序号之类的东西,没有其他内容。<br />NTS(NoTiCE): 通知类协议,这类协议,接收者无须回应(RES或ACK)。
2011-05-25 11:10:00 1188
原创 网游服务器和内存碎片
<br />这个看似一个很简单的概念,但有些细节可能会漏掉。<br /> 直接用默认的new(malloc)/delete(free),如果C库内部没有用一个memory pool,kernel肯定会出现碎片。有的C库如果提供一个<br />公用memory pool有没有意义呢?个人认为意义不大,这种情况下,kernel碎片消失了,但C库的pool还是会出现碎片。问题没得到根本<br />的解决,只是碎片从地方转移到另外一个地方而已。有人也有可能实现一个自己的公共的memory po
2011-05-20 10:05:00 2045
原创 Herm Timer Heap和Timer Wheel介绍
Herm实现了自己的两种类型的Timer,Heap和Wheel。Timer主要有三种操作,AddTimer, CheckTimout和RemoveTimer。Timer Heap性能是O(log2n) O(1) O(log2n)Timer Wheel全是O(1), 首选。 Timer Heap大致实现方法是基于最小堆。1. 检查堆的root节点,如果没超时,结束;有超时,加入p
2011-05-19 22:42:00 1843
原创 Herm Timer Heap和Timer Wheel介绍
<br />Herm实现了自己的两种类型的Timer,Heap和Wheel。Timer主要有三种操作,AddTimer, CheckTimout和RemoveTimer。<br />Timer Heap性能是O(log2n), O(1), O(1)<br />Timer Wheel全是O(1), 首选。<br /><br /><br />Timer Heap大致实现方法是基于最小堆。<br />1. 检查堆的root节点,如果没超时,结束;有超时,加入pending execute list,重新调整堆;
2011-05-19 22:42:00 1605
原创 ProtocolBuffer的.NET版本
<br />这个可以支持C#,这样C#也可以方便使用protocolbuffer了。<br />http://code.google.com/p/protobuf-net/
2011-05-14 22:17:00 1179 1
转载 google ProtoBuf开发者指南
ProtoBuf开发者指南译者:gashero目录1 概览 1.1 什么是protocol buffer1.2 他们如何工作1.3 为什么不用XML?1.4 听起来像是为我的解决方案,如何开始?1.5 一点历史2 语言指导 2.1 定义一个消息类型2.2 值类型2.3 可选字段与缺省值2.4 枚举2.5 使用其他消息类型2.6 嵌套类型2.7 更新一个数据类型2.8 扩展2.9 包2.10 定义服务2.11
2011-05-14 22:14:00 1429 2
原创 MMORPG无缝大地图服务器架构设计总结
<br />地图分进程架构和无缝大地图单进程架构<br />有的游戏服务器,一个进程处理一张或多张地图上的逻辑,进入到不同进程的地图,数据须要一个进程间同步的过程。简单合理的同步做法是,先将数据同步到一个公共服务器;进入到目标进程后,再从公共服务器拉取本角色的最新数据。可以参考 http://blog.csdn.net/herm_lib/archive/2011/05/01/6381872.aspx 中的logicsvr1 dbproxy logicsvr2的关系。<br /> <br />分进程架构有他的
2011-05-12 13:23:00 8436 2
原创 一种全局对象ID生成方法
网游中,角色ID、公会ID和道具ID等一般设计成全局唯一。这样做,一个便于跟踪这些对象的生存状态;另外一个是合区不会产生冲突。用大区ID+大区内服务器ID+时间+生成序列生成一个64bits的数字作为全局ID,其中0表示非法的ID。 globalID = cl
2011-05-05 21:57:00 2119
原创 记录一下,gvim配置文件
<br />set guifont=courier_new:h14<br />set nu!<br />colorscheme desert<br />syntax enable<br />syntax on<br />set tags=tags;<br />set autochdir<br />let Tlist_Show_One_File=1<br />let Tlist_Exit_OnlyWindow=1<br />let g:winManagerWindowLayout='FileExplorer|
2011-05-04 10:29:00 1104
原创 大型MMO-SNS类游戏服务器架构
SNS类型的游戏和RPG类的网游有一些不同的特点,而这些特点会导致这类游戏的后台架构和RPG网游的后台架构存在一些区别。SNS类型的游戏一般有以下的特点:(1)所有的玩家角色可能存在交互 SNS类型的游戏一个玩家角色会找他的好友或者其他任何一个毫无关系的玩家角色进行某种逻辑上的互动。(2)这类游戏玩家角色一般是看不见的(3)玩家角色在线或离线状态比较模糊
2011-05-01 15:14:00 9679 6
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人