自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (2)
  • 收藏
  • 关注

原创 3d优化总结和一些新思路

3D引擎的优化实现,是个比较大的课题.本文重点针对过去的实践以及关键系统的新思路抛砖引玉做一些总结.一.3D引擎中的多线程加速引擎中的多线程加速,主要有两个方向:密集计算的并行化和渲染层多线程化.

2011-10-14 18:53:04 1254

原创 mmorpg的一些设计随想总结

不知不觉,跟着这个项目开发,已经四年多了。经历了项目的各个阶段,回顾过往,总结下经验.一.开发的原则中什么最重要开发原则有很多,比如编码方面尽量少用goto,静态变量,设计时多用组合等.但是现实是复杂的,总会有些情况要突破原则.那么有什么原则,是可以一贯通用的呢?个人

2011-10-13 14:53:20 1092

原创 内存那些事之野指针

在稍大点的软件工程中,我们经常需要用到基于接口的回调在达到模块解耦/通信的目的.甚至在超大的工程中,类似这样的回调机制比如委托(Delegate)会成为系统重要的基础部件,为分模块的系统开发提供良好的底层支持.       但是随着这样的机制被大量使用,指针的生命周期管理,循

2010-06-01 14:49:00 842

原创 内存那些事之分配优化

对于C++开发而言,内存分配优化几乎每个项目优化的必须课题.其实现方式也是五花八门.本文重点总结下这方面的经验.1.通用分配/释放的优化对于windows应用程序的内存分配 ,从上层往下,以此是malloc/new-->HeapAlloc-->Virtua

2011-10-11 16:18:31 2809

原创 SIMD在图像处理中的应用及汇编优化

一.SIMD思想概述SIMD(Single Instruction Multiple Data ),顾名思义,就是单条指令处理多个数据。比如我们处理BYTE类型的乘法,也是需要32位寄存器来做处理.这样显得有些浪费.实际上我们可以把乘数合并,一次32位的乘法得到两

2011-09-02 17:29:22 4258

原创 多线程典型问题实现总结

多线程编程中,我们会经常碰到一个线程push信息,另外一个线程按照先进先出原则处理的情况.比如多线程资源加载,网络通信等.本文总结了此种情况下的各种解决方案,并给出一个无须加锁的解.一.常用做法   一般来说,会采用队列+lock的方式来实现,大概代码如下:void  sendM

2011-07-19 18:10:53 1668 3

原创 深入广播算法

服务器广播算法     对于MMORPG游戏来说,每个场景的人数可能会以千计,为了服务器性能考量.每个玩家的视野必然要有所限制。本人重点讨论基于此的各种广播算法和优化一.常用算法说明概念说明:实体: 需要服务器管理状态的各种object.比如玩家/NPC/宠物等 广播算法最原始的

2011-07-15 17:57:27 2901

原创 Torque Script入门教程

        一.            基本语法不同1.    字符串的比较.                                                                  C++中可以通过重载运算符实现比较,Torque Script则直接用$=和!$=进行比较,或者通过脚本内置函数strcmp进行比较. 2.    变量表示脚

2007-07-17 09:04:00 3672

转载 directx数学基础

向量(也叫矢量,英文叫vector)  向量就是包含大小(长度)和方向的一个量。向量有2维的,也有3维甚至4维的。在DX的所有结构体中,有一个结构体是用来表示3维向量的,它就是D3DVECTOR,这个结构体很简单,只有三个成员:x、y、z。一般来说,如果不涉及到向量运算的话,用这个结构体来定义一个向量就可以了。我们可以它来表示方向以及顶点在3D世界中的位置等。如果你要对那些向量进行一些运算的话,使

2007-03-29 10:35:00 2302

原创 c++ stl的复用

 1.大小写不敏感的string类..可以看一下char_traits的定义,仿照定义一个自己的模版类,改写static bool __cdecl eq(const _Elem& _Left, const _Elem& _Right) {   if(_Left == _Right) return true;  else{   _Elem maxElem = max(_Left, _

2007-03-14 11:47:00 1157

原创 递归函数汇总(二)

2.求集合的冥集   代码:void GetPowerSet1(int i,char a[],char b[],int n){    //功能:求以数组a中元素为集合中元素的集合的冥集    int j;    if(i==n-1)   {    b[n]=/0;    for(j=0;j    if(b[j]!= ) cout     cout   }    else    {     

2006-12-01 11:47:00 1205

原创 递归函数汇总(一)

  1.  给你一个二维数组(矩阵)大小不定 里面都是0或1  ,方阵 n*n 解析成一维数组 维数n    算法:先找到全为0 的列 然后把这列放到一维数组的第一个位子 然后在二维数组中把相应的行全部清零 继续.比如 二位数组中第一列全为0 那么就把1(列标号)放入一维数组的第一个位置 然后把二位数组中第一行全部清零 然后再接着找全为0 的列 但是这个时候就不考虑第一列 因为第一列已经排完了  

2006-12-01 11:42:00 1072

原创 利用thunk实现类非静态函数成为回调函数

 首先建一个基于MFC对话框的工程.在dlg类中插入如下代码:class CTestTimer01Dlg : public CDialog{//........... private:  BYTE  m_codeCmd[10] ; //代码命令        //mov 地址        //jmp 地址  void _InitCodeCmd(DWORD dwpThis, DWO

2006-11-30 10:53:00 1619

原创 用程序修改 系统属性

总的原理 就是利用 FindWindow函数找到相关窗口句柄,然后自动实现选择或去掉某些属性并确定的操作。。 UINT   k=WinExec("rundll32.exe   shell32.dll,Control_RunDLL   desk.cpl",SW_SHOW);    if(k    {    CString   x;    x.Format("%d",k);    Messag

2006-04-19 12:51:00 1177

原创 COM的由来(二)

上一次说到了virtual void *Dynamic_Cast(const char *pszTypeName)=0; 函数而实际中的COM却是这样的:HRESULT  QueryInterface(const  GUID & iid,void  ** ppObj) =0;这里引入了GUID,即Globally   Unique  Identifier,即全球唯一标识符,来确定组件的

2006-04-07 20:47:00 1037

原创 COM的由来(一)

为了达到组件复用,让我们看看为什么COM才是最好的选择.1.写成一个类,通过复制.h,.cpp文件到达组件复用     缺点很明显,如果该类有什么变化,所有相关的组件都要复制一次,当相关的组件很多的时候,累人还容易出错误.2.以.lib发布类库   每次改变都需要相关组件重新编译。当项目越来越大(编译一次都要半个小时),会极大的影响效率.一般只需要把变更比较少,用的比较多的类做成静态库即可

2006-04-07 10:37:00 1130

原创 字符串处理

最近工作中一直接触GDI+,总是需要为了转换字符串花费不少功夫,写了一个简易的字符串辅助类去对字符串进行转化处理. //字符串辅助类//在各种字符串之间转换(追求的是高效率的内存利用率)//在速度方面欠佳(可以牺牲部分内存去提高速度)class CStringHelper{ void *m_pData;             //内存地址 int   m_iMaxMemSize;    

2006-03-30 16:27:00 1825

转载 介绍 Nutch 第一部分:抓取

by Tom White01/10/2006 Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。可以为什么我们需要建立自己的搜索引擎呢?毕竟我们已经有google可以使用。这里我列出3点原因: 透明度:Nutch是开放源代码的,因此任何人都可以查看他的排序算法是如何工作的。商业的搜索引擎排序算法都是保密的,我们无法知道为什么搜索出来

2006-01-16 09:53:00 1050

转载 部分文章

如何截获Oracle数据库连接密码?J2EE WEB技术学习windows中的调试http://blog.csdn.net/bz201/archive/2005/12/02/542430.aspx

2005-04-10 18:30:00 859

原创 虚函数的总结

1。虚函数的定义     虚函数是为了更好的实现OO思想的多态性而引入的,即当父类指针指向不同的对象(属于子类或父类)时,调用的将是对象所属类定义的该函数的版本。也就是说同一语句在不同环境下产生不同的效果。下面是验证代码:#include class myParentsClass{    public:    myParentsClass()    {        cout    }      

2005-04-10 17:30:00 896

AI luaDemo

基于lua协程的AI架构 主要是验证想法.

2016-01-20

thread_nolock

多线程无锁的测试代码,以及其他解决方案的代码对比

2011-07-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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