自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 c++ 服务器程序bug dump

调试服务器程序时最怕遇到需要运行10天半个月才遇到一次的bug,这种bug很难还原现场,同时还要时刻注意服务器是否挂掉。 本文给出一个解决方法可以极大的提高调试效率。 使用本文方法可以在断言失败时自动dump,可用于还原bug环境进行调试。另外崩溃时也会自动记录crash dump。 ...

2014-12-02 14:48:54 1522 0

原创 从深度缓冲里重建位置信息

参考资料 http://blog.csdn.net/shadow_gz/article/details/6394827 http://www.klayge.org/wiki/index.php?title=%E5%BB%B6%E8%BF%9F%E6%B8%B2%E6%9F%93   从pr...

2012-08-17 20:24:54 1307 1

原创 遇到的一个诡异bug

碰撞检测使用的射线与线段求交点。 使用中发现偶尔会出现穿透的情况,找了很久终于找到原因。   其原因在于求出的交点坐标,由于浮点运算的不精确性,会有小数点后5位的微小偏移。 造成交点坐标与水平或垂直的检测线段判断出错(认为交点不在线段上),从而穿透阻挡物。   修改点在直线上的判断条件...

2012-06-11 15:15:04 623 0

原创 设备io的(同步异步io,iocp/epool等),以及iocp 和socket操作(求批判|讨论)

iocp/epool这类东西是用于与设备通信时获取通知。   这里的设备在访问硬盘上的文件就是和文件系统驱动打交道,访问socket时则是和网络驱动(软件->硬件)打交道。   os驱动运行模式一般是发送命令,等待命令完成,获取结果。   层次类似这样 user ------...

2012-03-17 14:58:25 2324 0

原创 算法[草稿]

新算法如下。 1.投影圆心至直线 2.计算投影点是否在l1,l2之间,在的话用点到直线距离==r计算碰撞点,时间 3.如果投影点不在l1/l2之间,计算其与l1,l2距离。 取d=距离较小的一个,判断d和r大小。 4.如果d 算法思路。 圆围绕线段移动一圈,圆心轨迹是一个胶囊体。...

2012-03-11 23:45:02 583 0

原创 线程安全的高效单向链表

作为非常常用的数据结构,单项链表具有表头小,从头结点添加/删除速度快的优点. 常用于无限制长度的数据缓存处理。 比如iocp工作线程缓存输入数据,逻辑线程取缓冲数据做处理后发送到输出缓冲。这里的输入缓冲和输出缓冲就可以用单链表实现。 struct SList{ SList *next; ...

2012-03-11 13:36:56 1387 0

原创 通用C++内存池代码

原理在这里http://blog.csdn.net/kevin_qing/article/details/608891 以前代码找不到了,重写一次。 加上了一些简单的错误检测代码。帮助调试内存问题。 初步代码,还未仔细检查,有bug请留言。   //type and macro...

2012-03-10 21:33:16 1449 2

原创 实时多人在线游戏研究(同步和延迟)

本文讨论实时多人在线游戏的服务器和客户端技术。 实时多人在线游戏主要包括2类,FPS(quake系列,UT系列,CF等),ACT(DNF,龙之谷这类)   其共同特点是需要用户操作尽快的得到体现。并且所有客户端的结果要一致。 同一世界玩家数量较少(这是有原因的,下面讨论),有较真实的物理效...

2012-03-10 15:54:27 2547 0

原创 d3d transform matrix 和 vs 的一点优化

1.顶点坐标变换按照 v.pos*world*view*proj 2.光照可以在model,world或者view space计算,需把顶点坐标和light pos变换到同一坐标系下,再计算光照 3.env map和光照类似,变换的是摄像机位置。 4.软件计算的话,最好变换

2011-09-09 20:55:27 664 0

原创 魔兽争霸地貌拼接方式

先看图片 http://hi.csdn.net/attachment/201109/7/979141_1315404194Eh6m.jpg   每个块的图片由4周围4个脚的地貌计算得出。 算法如下。 1.地貌编号0-5,低编码的可以被高编码的覆盖。 2.每种地形图片中

2011-09-07 22:17:48 1064 0

原创 d3d9中绘制2d元素时提高效率

比如绘制一个rect,通常方法 vertexbuffer->lock(); fillRectVertex(); vertexbuffer->unlock(); setTexture(); drawprimitive();   绘制多个2d元素时效率很低。其原因是lo

2011-08-25 13:25:53 2091 0

原创 栈式虚拟机中间代码编译为x86指令

栈式虚拟机比较好实现,同时指令也较为简单,类似risc   假设虚拟机指令 push i ;//立即数入栈 add  //栈里面最近2元素相加,pop 2后,结果压栈 call  //调用栈顶id指向的函数   //脚本 rotate(0,0,20+time())

2011-08-24 15:30:54 1210 1

原创 c++类的编译器实现方式描述

貌似有些同学还不太明白这个,我试着用c代码描述c++类相关的一些实现方式。   设类abc,bc继承于a,都有个虚函数f(),析构函数为虚 c++代码 //---------A  struct a{  a(){  }  void f(){ printf("cla

2011-08-24 15:04:21 1240 0

原创 raw input 使用上的一些陷阱

rawinput获取数据的2个api getrawinputdata()和getrawinputbuffer() msdn并未说明什么情况下使用哪种api,而一般来说getrawinputdata()就可以获取到数据的,想当然的我们就会认为只需要使用其中一种就可以。 但是实际测试说明光使用ge...

2011-07-30 22:51:31 5866 2

原创 Redhat Linux 9 with pam_radius-1.3.16 bug?

最近试验了一下radius的pam插件.发现在rh9.0下,验证时无响应。server 用saslauthd -a pam然后用testsaslauth -u test -p sss -s testradius后,testsaslauth一直无响应。google发现似乎只有rh9有这个现象。经de...

2006-04-29 13:18:00 1678 0

原创 mysql C API statment and bind 执行查询

#include #include #include typedef std::string string;struct mysql_parm{ string host; string user; string password; string database; string unixsock;...

2006-03-21 13:45:00 2014 0

原创 pthread 学习

编译参数1、-pthread和-lpthread是不同的,如果你自己的代码里面用到了某些多线程相关的结构(最常见的是errno),而不是仅仅简单的调用了几个pthread函数,你就可能不能单纯用-lpthread。 2、只要你系统的gcc里有-pthread选项,就不要用-lpthread,除非你...

2006-03-11 17:51:00 1555 0

原创 RHLinux9 升级2.6.15

下载src,编译.选择了ext3编译入内核 不知道什么原因,编译时GCC coredump了无数次...终于在第n次继续编译后成功了.安装好kernel后启动....先报usb 一堆什么错误,没关系,俺的键盘是ps/2的,用sshe也不需要鼠标...忽略...继续下去,新硬件只找到了我的ps/2鼠...

2006-03-11 00:22:00 1387 0

原创 C++模板来实现一个通用的内存池.

从最简单的入手1.实现一个固定大小的allocator//分配固定大小内存块的模板类,内部缓存算法自己实现了,//我用的是预分配+回收cache链//即分配时先检查回收链有无数据,无的话每次分配n*size个块,然后返回其中一个,直到该块用完后继续分配//释放时直接加入回收链即可//好处是速度够块...

2006-02-25 00:11:00 3073 3

原创 win32界面

界面苦手啊......整理点资料 AdjustWindowRectEx可以根据给定的client RC算出需要建的窗口大小.WTL 的subclasswindow用来子类化窗口主窗口为POPUP的时,需要自己处理WM_CLOSE来destorywindow 后postquitmessage(WTL...

2006-02-24 23:47:00 1746 0

原创 整理的一些东西

1.#pragma message#define $str( L )#L#define $mkstr( M, L )M(L)#define $Line $mkstr( $str, __LINE__ )#define message(x)  message( __FILE__ "(&quo...

2006-02-24 11:53:00 1126 0

原创 C++多参数模板偏特化

多参数模板必须对所有参数才能偏特化,本文给出一种解决特化单个参数的方案例:使用loki中的多线程模板SingleThreaded单线程无需锁ObjectLevelLockable多线程锁单一实例ClassLevelLockable多线程锁类现我希望使用编译时定义的const#ifdef _MTco...

2005-12-22 11:16:00 3079 0

原创 eXCHANGEkEY

S->生成随机密匙 SK CKC->生成非对称密匙CKa&&CKbC :[CKa] -> SS :[encrypto SK use CKa]->CC :[dectypto SK use CKb]C :[encrypto msg use CK]->SS ...

2005-12-19 00:18:00 1268 0

原创 Hook Winsock2.0

修改导入表的方式会使WSAStartUp调用失败,估计是winsock做了检查

2005-12-14 21:39:00 1524 0

原创 C++实现网络服务器命令模式(设计及模板实现)

Client->request Server->response模式的网络服务器中,对应答的处理一般是采用switch模式。此方法比较难于维护,且缺少错误检测。本文采用C++模板实现一套较为通用的服务器命令处理模型。阅读本文你应该对C++模板较为熟悉。ok,进入正题。假定客户命令包头为...

2005-07-10 14:53:00 2637 0

原创 WIN32 API/WTL 学习笔记(消息传递过程)

ToolBar 图片背景透明色是75%灰色RGB(192,192,192)使用派生类控件必须使用SubClassWindow方式消息传递过程分析(除Modal对话框)消息泵:Messageloop::Run {  BOOL bDoIdle = TRUE;  int nIdleCount = 0; ...

2005-07-01 12:47:00 2092 0

原创 RichEdit CTRL

RichEdit 1.0不支持unicode方式,以unicode方式使用的话在计算字符长度时会出错。系统支持版本Windows XP SP1Includes Rich Edit 4.1, Rich Edit 3.0, and a Rich Edit 1.0 emulator.Windows XP...

2005-07-01 12:29:00 1717 0

原创 构造使用类C语言的脚本引擎(5)语法检查,生成语法树,代码生成。

构造使用类C语言的脚本引擎(5)作者 :kevin_qing转贴请注明语法检查,常量合并和生成语法树是在reduce规约函数中实现语法树节点定义struct GTreeNode{uint32_t type; uint32_t value;};struct GTreeNode1:public GTr...

2005-06-24 13:14:00 3152 0

原创 构造使用类C语言的脚本引擎(4)语法分析

构造使用类C语言的脚本引擎(4)作者 :kevin_qing转贴请注明同上一章一样,语法分析部分也不准备使用yacc直接生成代码,而是只使用yacc的生成的分析表。BNF:%token ID IF ELSE SWITCH GOTO RETURN NUMBER STRING MAIN%token A...

2005-06-24 12:36:00 2259 0

原创 构造使用类C语言的脚本引擎(3)词法分析

构造使用类C语言的脚本引擎(3)作者 :kevin_qing转贴请注明现在回到编译器上的构造上。编译分为4个步骤1.预处理在这里我只是替换掉源文件的字符/r->/n/0->0x20 (空格)并且在源文件最后加上/02.词法分析.词法分析主要是将输入流分割为一个个的单词,在这里我并未使用...

2005-06-24 11:47:00 2319 0

原创 构造使用类C语言的脚本引擎(2)实现虚拟机和虚拟机调试

构造使用类C语言的脚本引擎(2)作者 :kevin_qing转贴请注明考虑到脚本编译器部分可以单独作为一个进程实现,并且编译器需要虚拟机对其结果进行调试,目前先从最底层的虚拟机部分开始开发。1.虚拟机结构.考虑到目前不支持内部函数定义,采用寄存器方式,以后扩充栈也较为方便变量寄存器REG[256]...

2005-06-24 11:30:00 3008 3

原创 构造使用类C语言的脚本引擎(1)脚本语法定义

构造使用类C语言的脚本引擎(1)作者 :kevin_qing转贴请注明需求:实现npc逻辑,与游戏(服务器)交互。例如与商人NPC对话打开买卖物品窗口等设计:参考传奇2服务器端脚本后(实现的很烂),定义脚本规则如下:1.采用类C语言,因为熟悉C的人很多,而且C语法较严谨,且使用方便2.数据类型只支...

2005-06-24 10:42:00 2870 1

原创 D3dFvf顶点格式的C++描述(vc.net版)

以下代码在vc 7.1(vs.net2003)下编译通过。使用模板偏特化实现#ifndef _AI_D3DFVF_H_#define _AI_D3DFVF_H_//D3d9Fvf struct generate templates//Author Kevinqing //#include //--...

2004-06-04 15:02:00 1641 0

原创 游戏中限制帧速的新方法

以前很多资料介绍的方法都是使用GetTickCount/或者是多媒体定时器,来轮训时间,精度确实不错。但是这样会造成cpu时间的极大浪费,一个主要表现就是在nt/2000环境中后台程序反应极慢。如果可以使用像win32 waitobject之类的方法来实现,那么在等待时间消息时,线程挂起,cup资...

2001-09-16 02:21:00 2159 1

原创 delete this,dll导出类及如何写plugins(PART III)

3.实现plugins。有了前两章的基础,这个就比较好办了。先了解一点点基本概念:Q:what is pluginsA:就是通过加载不同的dll实现不同的功能,或者附加的功能,典型的如模拟器的各种插件(显示,input...)。Q:why we use pluginsA:主要为了使程序模块化,并且...

2001-07-12 09:48:00 1166 0

原创 delete this,dll导出类及如何写plugins(PART II)

2.dll导出类的几种方法。其实我就知道两种啦,还请大家补充。先看M$使用的方法。struct exports{__declspec(dllexport)exports();__declspec(dllexport)~exports();};exports::exports(){}exports:...

2001-07-12 09:44:00 1151 0

原创 delete this,dll导出类及如何写plugins(PART I)

 1.为什么要使用delete this,以及如何使用。(1)考查这样的情况:有两个对象A,B需要访问同一个多态对象C。因为C一般是通过new 操作构造的,一定要自己释放,但是对象A,B都需要使用它,并且B不知道A什么时候使用完成C,A也不知道B什么时候使用完成C(当然可以用函数通信的方法通知了,...

2001-07-12 09:38:00 1371 0

原创 RLE压缩及优化

简单的说RLE压缩就是将一串连续的相同数据转化为特定的格式达到压缩的目的。下面都对byte流压缩。如输入数据LPBTE pByte={1,1,1,1,1,1};压缩的数据为6,1压缩了4个字符。但是在数据流里面不能直接这么替换,而应该使用特殊的控制字符,否则无法解压。比如pByte={6,1,0,...

2001-02-27 11:07:00 1563 0

转载 即时战略游戏中寻径

即时战略游戏中寻径(Path-finding)算法的原理及实现技术作者:沈璐  前几年,我在学校上学时,经常与同学在宿舍里网络对战“红色警报”,玩多了也一直在探索象“红色警报”这类即时战略游戏背后隐藏的编程奥秘。最近,找到一段空闲时间,终于把以前的想法付诸实施,用VC写了一个即时战略游戏的雏形(执...

2000-08-22 08:54:00 2587 1

原创 16位BIT模式下的ALPHA运算

各位好,16BIT ALPHA运算终于整理出来了,如有不对之处,欢迎大家批评指教。怎么样?还算谦虚吧?好了,言归正传,特效显示中ALPHA融合是应用最多的一种,在D3D中可用到硬件加速,ALPHA融合要比2D下简捷许多。鄙人一直搜索2D下的各种特效运算,现将所见过当中较好的ALPHA运算拿出来,同...

2000-08-10 14:57:00 1944 0

提示
确定要删除当前文章?
取消 删除