
软件工程
文章平均质量分 60
xiaodan007
魔导士
展开
-
关于火牛陷阵的思考
夜读《火牛陷阵》,觉得挺有意思的,整理和分析了下。故事大意:战事发生在即墨(山东青岛的一个区),燕国攻击齐田, 齐田大将田单就集齐一千头牛,把它们打扮起怪样,在尾巴点火, 令牛和士兵一起冲击敌营。 敌营被吓得屁滚尿流,主将被斩杀。齐国打了个大胜仗。问题:牛着火后怎么只向前冲?牛能跑多长距离?敌人为何没有“防护罩”?成功案例:田单“火牛阵”击败五国联军。 王玄策用“火牛阵”一战击溃印度数万象军。 汉尼拔也用过“火牛阵”击败过罗马军队。失败案例:唐房琯使用火牛阵原创 2022-02-09 01:44:19 · 1725 阅读 · 0 评论 -
虚继承与虚函数
#include using namespace std;/*//有时会面临如果不用多继承则结构混乱的问题(结构混乱,例如把某些模块特有的数据和服务放在共有区(例如类变量),这样如果一旦要维护修改,则必须先理清模块间的关系才能,但如果不放在共有区类变量, 则又能长期保存和便于存取。这时可以考虑分类,将通过权限来防止设计上的问题出现,从而提高可维护性)以下是一种方法:原创 2010-04-05 22:19:00 · 606 阅读 · 1 评论 -
23种模式图
23种模式整理:原创 2010-09-06 03:48:00 · 1323 阅读 · 0 评论 -
状态模式2
/***************************** 文件名: 状态模式2* 创建人: 陈泽丹* 创建时间:20100906* 版本: 2.0****************************/#pragma once#include "State.h"class GameModel{public: GameModel():m_bLive(true),m_iSuccees(0){} virtual ~GameModel(){} void BeKill() { m_bLive = fa原创 2010-09-06 14:38:00 · 500 阅读 · 0 评论 -
单例模式
#pragma once#include #include "Singleton.h"using namespace std;class Singleton{public: static Singleton* getSingleton() { if( NULL == g_pSingleton) g_pSingleton = new Singleton(); return g_pSingleton; } static void delSingleton() { if( NULL != g_pSing原创 2010-09-07 12:53:00 · 402 阅读 · 0 评论 -
工厂模式
<br />/****************************<br />* 文件名: 简单工厂模式<br />* 创建人: 陈泽丹<br />* 创建时间:20100907<br />* 版本: 1.0<br />****************************/<br /> <br />#pragma once<br />#include "Product.h"<br /><br />class EasyFactory<br />{<br />public:<br /> Eas原创 2010-09-07 13:01:00 · 443 阅读 · 0 评论 -
变参函数
/***************************** 文件名: 变参函数* 创建人: 陈泽丹* 创建时间:20100908* 版本号: 1.0****************************/#include #include //变参函数所需头文件using namespace std;/* 宏定义#define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) ) #define va_start(ap,v)原创 2010-09-08 13:31:00 · 561 阅读 · 0 评论 -
状态模式
/************************************ 文件名: 状态模式* 创建人: 陈泽丹* 创建时间: 20100904* 反省: 状态中心模块是用来把外部输入的控制和自身达到某条件引起的控制,集中到一块。状态模式宜仅用于状态路径的开闭,至于其它操作,宜交于其它专门类完成。另外, 状态点可能较多,一个简单的方法是在接口类处把全部路径否定了,子类实现时,再需要什么路径开通什么路径。状态中心和状态的交叉引用问题可用前向声明解决(前向声明和其声明的对象所处文件无关)本实例实现状图原创 2010-09-04 05:40:00 · 678 阅读 · 5 评论 -
单例
<br />import java.util.ArrayList;<br />import java.util.Random;<br />class Singleton <br />{<br /> /**<br /> * Singleton<br /> * <br /> */<br /> @SuppressWarnings("finally")<br /> public static boolean Init()<br /> {<br /> boolean bRet = false;<b原创 2011-05-14 19:08:00 · 504 阅读 · 0 评论 -
工厂
import java.util.Random;abstract class UiData { public void DoLogic() { Random pRandom = new Random(); m_iData = pRandom.nextInt(100); pRandom = null; } public abstract void DoView(); protected int m_iData;}class UiView_480_272 extends UiData{ @Override原创 2011-05-14 22:08:00 · 498 阅读 · 0 评论 -
奇怪的私有继承问题
<br />代码:<br /><br />class A<br />{<br />public:<br /> A(){ NULL; }<br /> ~A(){ NULL; }<br />};<br /><br />class B:private A<br />{<br />public:<br /> B(){ NULL; }<br /> ~B(){ NULL; }<br />};<br />class C: public B<br />{<br />public:<br /> C(A* pA)<br />原创 2011-04-02 01:27:00 · 523 阅读 · 1 评论 -
哥离职啦
亲爱的同事们: 亲爱的各位同事,哥要离职啦。由于职业习惯中的“受虐狂”倾向,决定再下江湖,玩玩久违的“碰壁”游戏。当然也不排除另一个理由:遍寻公司,没有找到一个可以暧味的MM,所以另辟战场:)临别山塞《满江红》下: 小小顽童,单枪下天山。夜黑风高玩原创 2011-07-24 12:27:32 · 878 阅读 · 0 评论 -
CreateThread, AfxBeginThread,_beginthread, _beginthreadex的区别
CreateThread是Windows的API函数(SDK函数的标准形式,直截了当的创建方式,任何场合都可以使用),提供操作系统级别的创建线程的操作,且仅限于工作者线程。不调用MFC和RTL的函数时,可以用CreateThread,其它情况不要轻易。在使用的过程中要考虑到进程的转载 2011-07-14 14:26:49 · 484 阅读 · 0 评论 -
a2w_w2a
//20110121 by Clarkclass a2w { wchar_t* buffer;public: explicit a2w(const char* str):buffer(0) { if(NULL != str) { int n = ::MultiByteT原创 2011-01-21 20:14:00 · 1426 阅读 · 0 评论 -
情节链设计3
//--[[ file name : GameEvents.lua author : Clark/陈泽丹 created : 8-30-2011 purpose : 故事情节线//--]]#pragma once#include原创 2011-09-06 00:40:32 · 1271 阅读 · 0 评论 -
命令模式
#include using namespace std;class Command{public: virtual ~Command(){} virtual void Execute(){}protected: Command(){}原创 2011-08-12 01:33:27 · 662 阅读 · 0 评论 -
模板的实现
/******************************************************************** created: 2011/11/13 file base: define file ext: h author: Clark/陈泽丹 purpose: ****************************************原创 2011-11-13 18:41:13 · 485 阅读 · 0 评论 -
多线程同步模板
/************************************************************************/ /* 文件名: 同步类 创建人: Clark/陈泽丹 描述: 特点1,通过继承特化类使内部类Lock的调用不用再去写类型参数。特点2,能过局部变量的构析规则实现对需要的修改资源功能上锁。*/ /原创 2011-11-23 01:28:02 · 576 阅读 · 0 评论 -
类型转换
/************************************************************************/ /* 文件名: 转类形创建人: Clark/陈泽丹 描述: static_cast转换不安全但高效,dynamic_cast转换安全不高效*/ /*****************************原创 2011-11-23 01:52:52 · 488 阅读 · 0 评论 -
关于工厂模式和建造者模式的理解
/******************************************************************** file name : const2buffer.h author : Clark/陈泽丹 created : 2011-11-24***************************************************原创 2011-11-24 01:42:44 · 1961 阅读 · 0 评论 -
一个游戏程序员的学习资源
实践编程中反复迭代,所以学习资料是一回事,须知尽信书不如无书。 一、书籍:算法与数据结构:《数据结构(C语言版)》——严蔚敏、吴伟民 清华出版社我觉得其配套习题集甚至比原书更有价值,每个较难的题都值得做一下。 《Introduction to Algorithms》第二版 中文名《算法导论》关于算法的标准学习教材与工程参考手册,在去年优快云网站上其翻译版竟然评为年转载 2011-11-25 01:00:56 · 2399 阅读 · 0 评论 -
永久改变你写异常安全代码的方式(神奇的Loki::ScopeGuard)
转自 http://blog.youkuaiyun.com/purewinter/article/details/1860875 作者:Andrei Alexandrescu and Petru Marginean原文地址:http://www.ddj.com/cpp/184403758翻译,裁剪,修改:purewinter注:裁剪修改只是为了让更多csdn上的读者不会因为此文太长而放弃阅转载 2011-11-28 12:14:04 · 2003 阅读 · 1 评论 -
回滚操作
/******************************************************************** file name : Tool.h author : Clark/陈泽丹 created : 2011-11-30 工具包: 参照Loki库提供指令封装和提供回滚操作**************************原创 2011-11-30 13:37:23 · 2461 阅读 · 0 评论 -
new跟不new的时间距离
/******************************************************************** file name : new.h author : Clark/陈泽丹 created : 2011-11-29 ********************************************************原创 2011-11-30 14:45:07 · 445 阅读 · 0 评论 -
const2buffer
/******************************************************************** file name : const2buffer.h author : Clark/陈泽丹 created : 2011-1-8 purpose : ****************************************原创 2011-07-17 14:04:06 · 672 阅读 · 0 评论 -
提供常量_转_变量的适配器
/******************************************************************** file name : const2buffer.h author : Clark/陈泽丹 created : 2011-11-9 purpose : 提供常量"转"变量的适配器************************原创 2011-11-10 00:07:49 · 571 阅读 · 0 评论 -
TypeList的威力
在Loki库里通过template struct Typelist{typedef T Head;typedef U Tail;};和#define LOKI_TYPELIST_1(T1) ::Loki::Typelist#define LOKI_TYPELIST_2(T1, T2) ::Loki::Typelist#define LOKI_TY原创 2011-11-12 12:30:47 · 1089 阅读 · 0 评论 -
常量类型转非常量类型
/******************************************************************** file name : CLK.h author : Clark/陈泽丹 created : 2011-11-10 purpose : 常量类型转非常量类型 注意typename的运用*****************原创 2011-11-12 11:53:13 · 799 阅读 · 0 评论 -
模板特化和强制转换的问题
/******************************************************************** file name : CLK.h author : Clark/陈泽丹 created : 2011-11-10 purpose : 模板特化和强制转换问题**********************************原创 2011-11-11 12:03:40 · 639 阅读 · 0 评论 -
C++的局部类
/******************************************************************** file name : CLK.h author : Clark/陈泽丹 created : 2011-11-12 purpose : C++的局部类 好处: 1,可以运用外层的Template参数 2,该类不原创 2011-11-12 02:05:17 · 653 阅读 · 0 评论 -
用低成本的对象来传类型
/******************************************************************** file name : CLK.h author : Clark/陈泽丹 created : 2011-11-10 purpose : 用低成本的对象来传类型 模板函数是没有偏特化的, 但可以用函数重载来实现相同效果。但原创 2011-11-12 02:56:32 · 445 阅读 · 0 评论 -
常量当类型用
/******************************************************************** file name : CLK.h author : Clark/陈泽丹 created : 2011-11-10 purpose : 常数当类型用,特化的函数与模板函数的优先级 通过template使数值能构成一个偏原创 2011-11-12 02:34:15 · 447 阅读 · 0 评论 -
在VC6里把偏特化后的模板类(或者整个模板类族)声明为另一个类的友元的方法
/******************************************************************** file name : CLK.h author : Clark/陈泽丹 created : 2011-11-10 purpose : 时间触发器 (把一个偏特化的模板类声明为另一个类的友元, 折腾了哥一个下午才想到-_-!)原创 2011-11-12 17:53:58 · 1136 阅读 · 0 评论 -
模板的特化,偏特化,实例化
/************************************************************************/ /* 文件名: 模板的特化,偏特化,实例化 创建人: Clark/陈泽丹 描述: 模板特化其实就是模板的特殊处理(调用时需指定类型,然后再特殊问题特殊处理)。 模板偏特化其实就是模板的部份特殊处理(调用时需指定类型,然原创 2011-10-06 03:26:59 · 1892 阅读 · 0 评论 -
C的强制转换和C++的强制转换
C的强制转换:(type) 其中,type为类型描述符,如int,float等。为表达式。经强制类型转换运算符运算后,返回一个具有type类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变,例如: int nVar=0xab65; char cChar=char (nVar); 上述强制类型转换的结果是将整型值0xab65的高端两个字节删掉,将低端两个字转载 2011-11-13 17:26:34 · 1900 阅读 · 1 评论 -
关于Loki库的命令模式的简化版
/******************************************************************** file name : Policy.h author : Clark/陈泽丹 created : 2011-11-30 工具包: **********************************************原创 2011-11-29 02:24:47 · 793 阅读 · 0 评论 -
虚析构函数的传递性问题
#include #include "Policy.h"using namespace std;class Base{public: ~Base(){ cout<<"delete Base"<<endl; }};class A:public Base{public: virtual ~A(){ cout<<"delete A"<<en原创 2011-12-07 14:38:44 · 584 阅读 · 0 评论 -
dynamic_cast的有效性问题
/******************************************************************** file name : CLK.h author : Clark/陈泽丹 created : 2011-12-12 purpose : 测试dynamic_cast的转换有效性 测试结果发现dynamic_cast的只原创 2011-12-12 11:39:28 · 1265 阅读 · 2 评论 -
把"没有同步机制的类型"转成"中心服和代理服有同步机制的类型"
/******************************************************************** file name : ServerType.h author : Clark/陈泽丹 created : 2011-12-20 网游网络通讯经常采用中心服模型: 读: 用户消息->代理服数据->用户端 写: 用户消息-原创 2011-12-20 17:41:04 · 586 阅读 · 0 评论 -
网游服务器节省通讯的方法。
今天发现一个很不错的设计:一直以为网游的设计是类似以下这样的:读: 客户端->服务器->客户端写: 客户端->服务器->客户端现在发现网游的实际设计可能是类似以下这样的:读: 客户端->客户端备份数据->客户端写: 客户端->服务器->更新客户端备份数据->客户端 多了个客户端备份数据有什么坏处和好处呢?坏处:1) 用户所见的未必是最新的原创 2011-12-14 23:28:08 · 517 阅读 · 0 评论