`
文章列表
    今天项目里的一个错误被揪出来了。 C=客户端 S=服务器 首先C选择一个点,发包给S;S收到后开始模拟行走,同时C也在行走,也就是说是两边都在各自模拟。起先这样设计的意图有两个 1)减少客户端的发包量,类似的 ...
    unsigned char map[32]; /*str:原始字符串,ctrl:分割字符串*/ /* Set bits in delimiter table */ do { map[*ctrl >> 3] |= (1 << (*ctrl & 7)); } while (*ctrl++); while ( (map[*str >> 3] & (1 << (*str & 7))) &am ...
一些开发制度的思考   经历过几家游戏公司,稍微总结了下一些项目开发流程,并且根据此提供一些自己的看法。当然我没有读过特别的管理书籍,或者敏捷开发之类的,纯粹是自己的想法。 经历过一家小公司,里面一个游戏项目程序就一个人,负责所有的东西和各种接口(因为有和平台合作),这个就不细说了; 经历过一家中小公司,基本是一个人负责多块,如果负责的块出问题也是属于你管(只要你人还在或者没人交接你的工作) 经历过一家大公司,模式比较有意思,不同的周期换了2-3种。规律性如下: 1期:轮转制,原则上每个人都可以负责不同的模块,以增强熟悉度 2期:通过指派的功能来开发。原则上不 ...
模仿linux内核下的slab而写。一些地址页面做了些新的工作。 高效性没什么可说的,页面,cache命中,CPU亲缘。。    
环境:VC2008 SP1       ReadMe.txt内容:1111;2222;3333;     const int BUFFER = 1024*20; int _tmain(int argc, _TCHAR* argv[]) { char buffer[BUFFER]; memset(buffer, 0, BUFFER); FILE *pFile; pFile = fopen("ReadMe.txt", "r"); if(NULL==pFile) { ...
  第二天 早上爬了几次才起来。一路小跑,买完包子后在车站等车。今天北京突然降温,全身冰冷,也就口里的包子有点热气。车来得还算快,几分钟后,一辆公交夹着滚滚灰尘而来。冰冷的天气,一大早上就滚滚的灰尘,赶紧封好包子口,合上嘴巴,闭着眼睛往上跳吧。。。 第一场 nginx的应用 是来自淘宝的一位技术专家。所表现出来的技术非常浓厚。 nginx我不是太熟悉,一些东西记录得可能有误。 1年就消化掉nginx10万源码的作者; 通过自己实现一套脚本的简单标记,来实现从 nginx 直接存取 mysql/PostgreSQL/sqlite/drizzle 数据库,memcached ...
ECUG:http://ecug.org/2010:home     简单的记录,里面的很多点扯出来都能扯一篇出来。   第一日 9点总算及时赶到,签到等扒拉扒拉。以下记录分段式,按笔记本上的稍做整理。不过,去这种大会前,能有20%值得听的就很满足了。 这个是前提 第一场 生不逢时的 WEB OS 大概说了之所以10年发展的WEB OS失败原因有终端不统一,用户体不对(连入网络基本都在电脑)。 作者介绍了他们公司失败的WEB OS架构   前端 html,css,flash   后段 数据持久化,mysql 然后巴拉巴拉了大堆,结果就是WEB OS失败了 ...
李开复老师的创新工场出的一个项目较豌豆夹,网络上许多人很不以为是,搞了半天才搞了这么个东西?想谈谈我的看法: IT业和传统行业不同,传统业的一些东西,比如吃的,穿的非常注重实用感(大众阶层).如果你产品的质 ...
今年对内核的slab,timer有了很深入的了解,并且有机会在windows下都重写了一次。slab的文章忘记发了,好像是网络上已经有很全的版本了,想主要说下timer,也就是俗称的定时器。 以前写过一个普通的定时器,简单来说就是串成 ...
以在背包、仓库中操作物品为例 维护到一份代码看到如下的流程: 假设现在我在背包中把物品从A格子移动到B鸽子 已经有的关键字: 物品类型:普通,特殊,消耗。。。等等 放入函数:使用物品类型掩码判断 (1,2表示步骤) C1:从落点范围判断是否合法(比如背包格子是1-20,仓库是40-60)。如果满足,发送要移动的包给服务器。这时候UI不做更新,即不执行实际的更新函数 S1:收到包进行校验,比如是否能存放,如果是装备则如何如何(放入函数)。同步计算完后,发送确认包给C C2:收到后执行实际的更换操作,更新(放入函数) 维护的需求如下,任务物品不能放入仓库,并且给玩家提示。 ...
随手涂鸦的:   // HellowTest2008.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "CLock.h" /* V1表示旧的数据,V2表示扩充的数据 旧数据nVersion表示为0, 扩充数据nVersion表示为1 */ struct Role1 { int V1n1; int V2n1; }; struct Role2 { int V2n1; int V1n1; }; class CRole { pu ...
随手涂鸦的: // HellowTest2008.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "CLock.h" /* V1表示旧的数据,V2表示扩充的数据 旧数据nVersion表示为0, 扩充数据nVersion表示为1 */ struct Role1 { ...
起因是因为今天组里有个同事在设计链表erase接口的时候出了点问题。不敢说哪种好哪中坏,先贴代码比较下:遍历删除。 linux下的 list_for_each_safe(p, listhead...) //p是迭代节点,listhead表示要遍历的节点头 { if( ..... ) { list_delete(p); } }   stl下的 std::list< int> List; std::list< int>::iterator itList; ...
比较简单的一篇文章。本来是有些地方没想明白,想分析一下。结果写着写着就明白了,才发现如此简单。留之 ~   简单的定义 我对一些专业的名词不怎么熟悉,没有很系统的学习过,所以先稍微解释下我的一点概念上的认识: 看见过很多类似的词,比如 高速缓存分配、内存对象池、对象池、连接池等等。 我觉得一个池已经带有高速的意义了,所以很少加上高速的称呼; 而内存对象池和对象池,对象的意义太广,包括了资源和内存,更适用一种后缀符的修饰。而资源更倾向一个抽象层的分配性,内存是一种本质上的空间申请。可以称线程对象池,连接对象池,而直接称对象池有点不明所指; 资源池是一个抽象的概念,比如线程池,连接 ...
1.线程间   HANDLE WINAPI CreateThread( __in LPSECURITY_ATTRIBUTES lpThreadAttributes, __in SIZE_T dwStackSize, __in LPTHREAD_START_ROUTINE lpStartAddress, __in LPVOID lpParameter, __in DWORD dwCreationFlags, __out LPDWORD lpThreadI ...
Global site tag (gtag.js) - Google Analytics