基础知识
文章平均质量分 68
xoyojank
来如流水兮逝如风,不知何处来兮何所终
展开
-
给C++初学者的50个忠告
1.把C++当成一门新的语言学习(和C没啥关系!真的。); 2.看《Thinking In C++》,不要看《C++变成死相》; 3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看; 4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,转载 2006-11-30 22:59:00 · 2040 阅读 · 1 评论 -
微软研究院Detour开发包之API拦截技术
我们截获函数执行最直接的目的就是为函数增添功能,修改返回值,或者为调试以及性能测试加入附加的代码,或者截获函数的输入输出作研究,破解使用。 通过访问源代码,我们可以轻而易举的使用重建(Rebuilding)操作系统或者应用程序的方法在它们中间插入新的功能或者做功能扩展。然而,在今天这个商业化的开发世界里,以及在只有二进制代码发布的系统中,研究人员几乎没有机会可以得到源代码。本文主要讨论De转载 2008-04-03 20:28:00 · 3488 阅读 · 1 评论 -
VC++的链接错误LNK2005
作者: Jerry Cat时间: 2006/04/19链接: http://www.cppblog.com/jerysun0818/archive/2006/04/19/5913.html编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误。弄清楚它形成的原因,就可以轻松解决它了。 造成LNK2005错误主要有以下几种情况:1.重复定义全局变量转载 2008-01-09 13:54:00 · 2051 阅读 · 0 评论 -
完整的CJK Unicode范围(5.0版)
原文链接:http://blog.oasisfeng.com/2006/10/19/full-cjk-unicode-range/ 注:在绝大多数应用场合中,我们可以仅用(1)、(2)、(3)、(4)、(5)的集合作为CJK判断的依据。1)标准CJK文字http://www.unicode.org/Public/UNIDATA/Unihan.htmlCode poi转载 2008-12-10 14:39:00 · 4617 阅读 · 0 评论 -
字符编码简介:ASCII,Unicode,UTF-8,GB2312
1. ASCII码# I, l: i4 J6 /$ C+ C1 e3 [6 P我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。: U2转载 2008-12-16 11:51:00 · 2979 阅读 · 1 评论 -
VS2005中Nebula3数据类型的调试信息显示
用过VS2003的应该知道, STL的容器调试起来非常麻烦, 因为调试时显示的信息非常不直观VS2005引入一个autoexp.dat, 可以定义数据在调试时显示的格式详细介绍可以参考:Writing custom visualizers for Visual Studio 2005这里暂时给出一些Nebula3相关的格式定义:这些放到[AutoExpand]字段下面:;---原创 2009-08-04 23:15:00 · 2227 阅读 · 0 评论 -
设计模式
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。 GoF的“设计模式”是第一次将设计模式提升到理论高转载 2010-01-23 14:21:00 · 1838 阅读 · 1 评论 -
五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种(http://www.opensource.org/licenses/alphabetical)。我们在常见的开源协议如BSD, GPL, LGPL,MIT等都是OSI批准的协议。如果要开源自己的代码,最好也是选择这些被批准的开源协议。这里我们来看五种最常用的开源协议及它们的适用转载 2010-03-21 13:35:00 · 1834 阅读 · 0 评论 -
C++ 中的反射
http://msdn.microsoft.com/zh-cn/library/y0114hz2.aspx 更新:2007 年 11 月反射允许在运行时检查已知数据类型。例如,反射允许使用给定程序集中的数据类型的枚举,并且可以发现给定类或值类型中的成员。无论类型是否已知或者在编译时被引用,都是如此。这使反射成为开发和代码管理工具的一项有用功能。请注意,所提供的程序转载 2010-04-08 09:21:00 · 1885 阅读 · 5 评论 -
关于Singleton
这东西可能每个引擎里都有吧, 不管它是宏还是模板.用宏的人可能觉得模板编译慢, 另外不想多继承用模板的人可以觉得宏丑陋, 不利于调试不管哪种方式, 个人觉得这个东西总比全局变量好这里说说几种常见的情况:最简单的这是一种偷懒的做法, 访问时自动创建template class Singleton{public: static T* GetInstance() { static T singleton; return &singleton; }};优点: 使用方便原创 2011-03-19 17:41:00 · 2288 阅读 · 0 评论 -
在C#中派生C++的抽象类
目前看到了几种选择:SWIG这个叫做"director"的机制不是真正的派生, 只是看起来像而已C#里的类只是包装了一个C++对象的指针, 所有调用都是通过P/Invoke完成的, 实际上是两个不同的对象CXXI通过改变C++对象的vtable实现派生通过DLL(so)的导出方法名来取得函数指针通过解析GCCXML来生成C++类的C#声明MSVC的支持还没有完成, 可以参考这个去完善: Inher原创 2012-04-11 09:56:46 · 2445 阅读 · 0 评论 -
GameEntity&Component
UpdateEntity的不同功能的更新频率可以不一致, 比如渲染60FPS, 逻辑15FPS更新频率可以做LOD处理, 如500米开外的更新频率可以设置为1FPS更新可以多线程化, 但是目前很少有人实现, 主要是复杂度与性价比的问题Component优点可复用, 为数据驱动提供基础节省资源, Entity只包含它所需要的功能, 省要不必要的CPU计算和内存占用可以运行时动态增加/删除Compon原创 2012-04-12 11:23:00 · 3321 阅读 · 0 评论 -
Lua: 好的, 坏的, 和坑爹的
在我使用Lua编程整整9个月后, 是时候停下来反省一下这段经历了. 过去了几年里, 我使用了各式各样的语言:Perl (soaplite.com, 还有其它的项目, 包括我现在的咨询工作), C (DHCPLite 和 ping-pong juggling robot), JavaScript (Google Maps相关经验 和 canvas), MATLAB (ping-pong juggli翻译 2013-10-16 00:42:55 · 21203 阅读 · 3 评论 -
DirectX in C++/CLI
昨天熟悉了一下怎么使用CLR, 今天就在里面写个3D程序试试注意, 这个DirectX是Native DirectX, 不是Managed DirectX, 更不是什么XNA-_- 其实很简单嘛....没遇到什么困难就弄出来了那些控件基本上你想用什么事件/属性找找MSDN就能找出来, 汗~~~真是人性化啊 至于遇到什么问题了的话, 冒似在CLR类嵌入NativeC++的类的原创 2008-11-02 21:52:00 · 3266 阅读 · 11 评论 -
把C++/CLI委托传入本地代码
<br />参考: http://resnikb.wordpress.com/2009/05/18/passing-ccli-delegate-to-native-code/<br /> <br />C++/CLI可以直接执行C++, 这个没有问题, 那么反过来呢?<br />比如底层C++进行一项任务, 完成了需要通知上层的C++/CLI, 总不能在上面不停地查询吧?<br />通常这是通过回调来实现的, 说漂亮点就是观察者模式, 说成.net的就是委托.<br />而委托, 本质是就是函数指针. 以前也原创 2010-10-13 11:26:00 · 4963 阅读 · 1 评论 -
C++与Flash的交互
研究Flash嵌入游戏中的可行性.......渲染问题已解决事件响应已解决下面是C++与Flash AS的交互, 以MFC为例:1. 新建一个MFC Dialog程序2. 添加一个Flash控件 3. 把Flash控件添加一个变量 4. 在OnInitDialog()中添加载.swf文件// CCppFlashDlg 消息处理程序原创 2008-10-22 10:12:00 · 27773 阅读 · 11 评论 -
钩子(Hook)专题
目录 基本概念 运行机制 钩子类型 作者 基本概念钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。钩子实际上是一个处理消转载 2008-03-19 16:07:00 · 3012 阅读 · 0 评论 -
C++资源之不完全导引
1,前言 无数次听到“我要开始学习C++!”的呐喊,无数次听到“C++太复杂了,我真的学不会”的无奈。Stan Lippman先生曾在《C++ Primer》一书中指出“C++是最为难学的高级程序设计语言之一”,人们常将“之一”去掉以表达自己对C++的敬畏。诚然,C++程序设计语言对于学习者的确有很多难以逾越的鸿沟,体系结构的庞大,应接不暇并不断扩充的特性……除此之外,参考资料之多与冗杂使它转载 2007-12-17 09:55:00 · 2412 阅读 · 0 评论 -
OGRE中用到的设计模式
1. 单例模式(Singleton) 2. 工厂方法(Factory Method) 3. 适配器模式(Adapter) 4. 桥接模式(Bridge) 5. 职责链模式(Chain of Responsibility) 6. 迭代器模式(Iterator)Ogre::VectorIterato原创 2008-03-04 12:58:00 · 6656 阅读 · 0 评论 -
Java程序员的存储过程
原文:http://www.onjava.com/pub/a/onjava/2003/08/13/stored_procedures.html by Nic Ferrier 本文阐述了怎么使用DBMS存储过程。我阐述了使用存储过程的基本的和高级特性,比如返回ResultSet。本文假设你对DBMS和JDBC已经非常熟悉,也假设你能够毫无障碍地阅读其它语言写成的代码(即不是Java的语言),但是转载 2006-11-30 23:51:00 · 1325 阅读 · 0 评论 -
java中日期如何进行加减运算???
Date date = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.DATE, 30);//加30天 System.out.println(cal.getTime());// 结束日期原创 2006-12-01 00:15:00 · 2577 阅读 · 0 评论 -
Strus常见错误及原因分析
本篇文章包含了在用Struts开发web应用时经常碰到的一些异常和错误,根据异常或错误信息本身,经常可以找到潜在的错误发生原因。下面列出了一些Struts的常见错误和异常,并给出了一些可能发生此类错误或异常的原因。有的后面有相关连接,你可以通过它找到更多的信息。Cannot retrieve mapping for action 异常 javax.servlet.jsp.JspE转载 2006-12-01 00:19:00 · 1803 阅读 · 0 评论 -
C++ STL简介
作者:怒火之袍一、STL简介STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。 STL的代码从广义上讲分为三类:algorithm转载 2006-12-01 00:25:00 · 1527 阅读 · 0 评论 -
C/C++中枚举类型(enum)
如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。 举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔合中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它! enum box{pencil,pen};//这里你就定义转载 2006-12-01 00:46:00 · 3151 阅读 · 0 评论 -
java关于23种设计模式之泡MM版(推荐)[转]
创建型模式 1、FACTORY——追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及原创 2007-03-04 15:40:00 · 1899 阅读 · 0 评论 -
socket编程模型
最先出现的是阻塞模型,这个模型是讲解计算机网络时被作为例子介绍的,也是最简单的。其基本原理是:首先建立一个socket连接,然后对其进行操作,比如,从该socket读数据。因为网络传输是要一定的时间的,即使网络通畅的情况下,接受数据的操作也要花费时间。对于一个简单的单线程程序,接收数据的过程是无法处理其他操作的。比如一个窗口程序,当你接收数据时,点击按钮或关闭窗口操作都不会有效。它的缺点显而易见,转载 2007-03-19 23:00:00 · 2624 阅读 · 0 评论 -
指针详解
1、什么是指针 指针是一种数据类型,与其它的数据类型不同的是指针是一种“用来存放地址值的”变量。举一个简单的例子:如果定义了一个整型变量,根据整型变量的特点,它可以存放的数是整数。如:int a; a=100; 这样就把整型常量赋给了变量a。但是如果写成这样:a=123.33;就会出问题,最后输出变量a的值结果是123。现在说到指针,其实地址值也是一个整型数,如某某变量的地址值为36542,说明转载 2007-03-22 23:54:00 · 1529 阅读 · 0 评论 -
WinSock学习笔记(一)
Socket(套接字)◆先看定义:typedef unsigned int u_int;typedef u_int SOCKET;◆Socket相当于进行网络通信两端的插座,只要对方的Socket和自己的Socket有通信联接,双方就可以发送和接收数据了。其定义类似于文件句柄的定义。◆Socket有五种不同的类型:1、流式套接字(stream socket)定义:#def原创 2007-03-25 22:04:00 · 1226 阅读 · 0 评论 -
VC中Unicode字符串的处理
Unicode :宽字节字符集 1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数? 可以调用Microsoft Visual C++的运行期库包含函数_mbslen来操作多字节(既包括单字节也包括双字节)字符串。 调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。转载 2007-04-26 23:42:00 · 4517 阅读 · 0 评论 -
C++风格的强制转换
看起来,使用C风格的强制转换可以把想要的任何东西转换成合乎心意的类型。那为什么还需要一个新的C++类型的强制转换呢?新类型的强制转换可以提供更好的控制强制转换过程,允许控制各种不同种类的强制转换。C++里有4种不同类型的强制转换操作,取决于要强制转换的东西:static_cast、const_cast、reinterpret_cast和dynamic_cast。C++强制转换操作与传统的强转载 2007-10-14 14:48:00 · 2968 阅读 · 0 评论 -
Lua的调试
改BUG改到脚本里,郁闷了,没法调试google一下,找到了云风大牛上的一个Lua调试器看了一下,估计转内网我也不会用通常没法单步调试的程序我都是LOG/TRACE本想用Lua的print来着,可是游戏的控制台里愣是没有,汗~最后想了想,注册了一个C++函数:void LuaTrace( const char* text ){ Assert( NULL != text &&原创 2007-11-12 04:56:00 · 1883 阅读 · 3 评论 -
游戏配置序列化
游戏中提供很多可供配置的设置,有利用适应多种不同的硬件配置,也有利于适应用不同玩家的操作习惯.如果每次进游戏的话都要重设一次,这显然就失去了配置的意义,不如用一个适用范围比较广的默认值算了.所以,配置需要保存.windows中就有众多的的ini文件,还有一些软件会把信息存入注册表.但是,当配置信息较多或是对安全性有所考虑时,这就不太适合了.而且,解析ini文件(或XML)等文本格式的配置,原创 2007-12-05 22:28:00 · 1748 阅读 · 2 评论 -
超级方便的boost安装方法
去http://www.boost-consulting.com/products/free 下载BoostPro 1.34.1 Installer (188K .exe) 安装选择一个下载站点: 选择要安装的库类型: 安装完后在VC中进行目录设置后就可以使用啦原创 2008-03-04 12:55:00 · 3266 阅读 · 2 评论 -
关于中文文本的截取
从Java转到C++后,对于它的字符串处理能力抱怨了好久这不,非Unicode下对字符串进行截取有时会出现乱码,因为把一个汉字是两个字节,如果拆开了就显示不正确了IsDBCSLeadByteThe IsDBCSLeadByte function uses the ANSI code page to determine whether a specified byte is potentia原创 2008-03-04 12:57:00 · 1874 阅读 · 0 评论 -
多线程调用的封装技巧
很多时候, 我们想把一项操作放入后台线程去执行, 可能是为了提高操作体验(UI表现的流畅), 或者是性能(充分利用多核的计算能力)等为了方便, 我在这里先定义一个简化的线程模型:所有的操作都定义为命令(Command)后台线程监听一个命令队列, 如果有命令就执行, 没有就等待如果收到结束通知, 则结束该线程比如我们有两种操作:void PrintA(){ printf("thread[%原创 2014-02-27 00:33:21 · 4266 阅读 · 3 评论