- 博客(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
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人