- 浏览: 342326 次
- 性别:
- 来自: 福建福州
最新评论
-
jw72jw:
最后这个是打表求值
LUA源码分析三:table分析(1) -
dyllove98:
"一些非常重要的问题,涉及面少。那这个时候,我更崇尚 ...
乱写:团队里的独裁和民主一点看法 -
jvmlover:
被踩10次了,什么思想感情啊。
LUA源码分析三:table分析(1) -
chenchenfly99:
chenchenfly99 写道
MMO游戏终极内测开服一周,问题记录 -
chenchenfly99:
...
MMO游戏终极内测开服一周,问题记录
文章列表
今天项目里的一个错误被揪出来了。
C=客户端
S=服务器
首先C选择一个点,发包给S;S收到后开始模拟行走,同时C也在行走,也就是说是两边都在各自模拟。起先这样设计的意图有两个
1)减少客户端的发包量,类似的 ...
strtok三段代码分析
- 博客分类:
- C/C++
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亲缘。。
这算fread的BUG吗吗吗
- 博客分类:
- C/C++
环境: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 ...