自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

把握自己。

专注linux、english

  • 博客(46)
  • 资源 (7)
  • 收藏
  • 关注

原创 iphone委托和生命周期

每个iPhone应用程序都有一个UIApplication,UIApplication是iPhone应用程序的开始并且负责初始化并显示UIWindow,并负责加载应用程序的第一个UIView到UIWindow窗体中。UIApplication的另一个任务是帮助管理应用程序的生命周期,而UIApplication通过一个名字为UIApplicationDelegate的代理类来履行这个任务。尽管UI

2012-02-28 23:46:07 2319

原创 C++ 运算符优先级列表

http://www.cppreference.com/operator_precedence.html PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember ac

2012-02-28 10:47:20 1271

原创 设计只能在堆或者栈上创建的类

1,设计只能在堆上分配的类方法:将类的构造函数或者析构函数设置为protected(private会限制继承),迫使类对象在栈的构造时编译出错,并提供destroy接口#include   using namespace std;  class OnlyHeap  {  public:      OnlyHeap()      {

2012-02-27 15:53:02 1297 2

原创 设计一个不能被继承的类

分析:这是Adobe 公司2007 年校园招聘的最新笔试题。这道题除了考察应聘者的C++ 基本功底外,还能考察反应能力,是一道很好的题目。在Java 中定义了关键字final ,被final 修饰的类不能被继承。但在C++ 中没有final 这个关键字,要实现这个要求还是需要花费一些精力。首先想到的是在C++ 中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会自动

2012-02-27 15:18:31 1409

原创 寻找重复的数

问题:有101个数,为[1,100]之间的数,其中一个数是重复的,如何寻找这个重复的数,其时间复杂度和空间复杂度是多少?解:假设这101个数存放在Data[101]的数组中int Data[101];for (int i = 0 ; i{Data[i] = i;}Data[100] = 6;//假设是这些数据,并将最后一个设计为重复的数,当然也可以是其它数据,此处便

2012-02-27 15:07:54 2948

原创 如何做一个好的技术型领导

对于程序员来说,大部分公司都提供了多条职业发展方向:1. 技术型路线:编程高手、技术专家、架构师2. 管理型路线:项目经理、部门主管、总裁3. 复合型路线:技术总监、CTO4. 特长型路线:销售顾问、培训讲师这些路线,看起来很清晰明了。但对大部分26 – 32岁的程序员来说,如何发展,究竟该走哪条路,内心可能都存在彷徨与纠结。技术和管理,有如鱼和熊掌,不可兼得,这是寓言里的警示

2012-02-27 13:47:39 1700 2

原创 map和hash_map的区别

这里列几个常见问题,应该对你理解和使用hash_map比较有帮助。4.1 hash_map和map的区别在哪里?构造函数:hash_map需要hash函数、等于函数;map只需要比较函数(小于函数). 存储结构:hash_map采用hash表存储,map一般采用红黑树(RB Tree)实现。因此其内存数据结构是不一样的。4.2 什么时候需要用hash_map,什么时候需要用map?

2012-02-26 20:42:29 2286

原创 boost bimap 学习笔记

bimap是boost中很重要的一个容器,可以进行双向的查找和替换,这样弥补了如果map和multimap需要找到data所对应的键值。循环遍历元素,才能找到相应的键值,再删除,最后替换的不足。但是boost的模板源编程又有着先天的缺点,就是编译错误不容易找到,编译时间有点长。但是如果长期使用boost,知道常见的错误,这个缺点还是可以慢慢克服的;虽然编译时间是有点长,但是比起自己一行一行

2012-02-24 14:50:05 5844

原创 std::find ,set.find, multiset.find, map.find和multimap.find算法总结

这几天对到底选用哪个容器,用哪种形式的find函数有一些迷惑的地方。工作之后,花些时间对这些常用的东西做一个总结,方便以后翻阅所用。1.通用std::find 函数例子1:// find example#include #include #include usingnamespacestd; intmain () { intmyints[] =

2012-02-24 14:46:07 3938

原创 设计模式——响应链模式

首先纠正国人的错误翻译, Responsibility 虽然字典里翻译为职责,然而确是由Response派生出来的词,结合此模式的原意,故此处应该翻译为响应更合适,或者说,垃圾字典里至少也应添加"响应"作为另一中文词.软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个

2012-02-23 11:28:37 2076 2

原创 Windows线程函数概述 - 《C++编程艺术》

Windows提供了多组支持多线程的应用程序接口(API)函数。许多读者已经对Windows提供的多线程函数有一定程度的了解,但是对于那些不熟悉这些的读者,本章提供了这些函数的概述。记住,Windows提供了许多其他的基于多线程的函数,这些函数需要您自己去探索。为了使用Windows的多线程函数,必须在程序中包含。3.4.1 线程的创建和终止Windows API提供了CreateTh

2012-02-23 10:24:44 2450

原创 何时适合使用单例模式

单例模式也是一种比较常见的设计模式,它到底能带给我们什么好处呢?其实无非是三个方面的作用:第一、控制资源的使用,通过线程同步来控制资源的并发访问;第二、控制实例产生的数量,达到节约资源的目的。第三、作为通信媒介使用,也就是数据共享,它可以在不建立直接关联的条件下,让多个不相关的两个线程或者进程之间实现通信。比如,数据库连接池的设计一般采用单例模式,数据库

2012-02-22 22:31:28 2854

原创 VC防止窗口和控件闪烁的方法总结

1、 将 Invalidate()替换为 InvalidateRect()   Invalidate()会导致整个窗口的图象重画,需要的时间比较长,而 InvalidateRect()仅仅重画 Rect 区域内的内容,所以所需时间会少一些。虫虫以前很懒,经常为一小块区域的重画就调用 Invalidate(),不愿意自己去计算需要重画的 Rect,但是事实是,如果你确实需要改善闪烁的情况,计

2012-02-22 14:40:30 1849

原创 COM Hook原理

掌握C++对象模型底层知识的人都知道,C++利用虚函数的机制来实现运行期的多态。例如一个类申明如下: class A{public:    A(){}    ~A(){}    virtual void f1(){ printf("Founction f1 called\n"); }    virtual void f2(){ printf(

2012-02-22 14:35:30 2562

原创 控制台窗口界面的编程控制

文本界面的控制台应用程序开发是深入学习C++、掌握交互系统的实现方法的最简单的一种手段。然而,Visual C++的C++专用库却没有TC所支持的文本(字符)屏幕控制函数,为此本系列文章从一般控制步骤、控制台窗口操作、文本(字符)控制、滚动和移动、光标、键盘和鼠标等几个方面讨论控制台窗口界面的编程控制方法。  在众多C++开发工具中,由于Microsoft本身的独特优势,选用Visual

2012-02-21 18:02:59 7668 2

原创 浅谈HOOK

摘要: 本文针对HOOK技术在VC编程中的应用进行讨论,并着重对应用比较广泛的全局HOOK做了阐述。  一、引言  Windows操作系统是建立在事件驱动机制之上的,系统各部分之间的沟通也都是通过消息的相互传递而实现的。但在通常情况下,应用程序只能处理来自进程内部的消息或是从其他进程发过来的消息,如果需要对在进程外传递的消息进行拦截处理就必须采取一种被称为HOOK(钩子)的技术。钩

2012-02-21 18:01:29 5648

原创 这就是COM组件

Author: ume Date:2012-02-21   自从微软推出.NET以来,COM技术就渐渐淡出人们的视野,然而这并不意味COM不再发挥作用,相反,COM非常重要。可以说.NET的实现离不开COM的支撑。COM是好东西,但是它太难了,不利于产品推广,于是微软只能在之上增加一层封装从而提高产品的易用性。对COM有所了解是很有必要的,希望这篇文章给你带来一点启发。1. C

2012-02-21 16:30:36 2238 1

原创 设计模式与多线程——用命令模式来设计多线程架构

下载源代码 图一 图二毫无疑问,多线程会增加写代码的难度。在有并发处理的情况下,debug变得更困难,代码中的临界区必须得到保护,共享的资源也得管理好。当然,通过增加程序运行的线程数带来的结果是:效率可以大大提高。从一个程序员的角度来说,处理线程是很令人头疼的——一些奇怪的现象在Debug时反而捕捉不到;有些Bug不能重现,只偶尔才会弹出错误提示;更糟的是,有时程序

2012-02-21 16:02:56 2446

原创 跨平台网络库的设计

近期在开发一个跨平台的网络库,其目的是为了封装网络底层细节,对外提供一个简易的接口,在这里记载一下设计思路。    网络游戏服务器通常需要2种网络IO:一种是面向大量客户端连接的高连接数的网络IO,一种是服务器间的低连接数,高吞吐量的网络IO,后一种网络IO比较简单,可采取阻塞或者异步的网络IO模型。第一种通常需要采用IOCP,epoll等支持高并发的网络模型。开发目标1:封装

2012-02-20 16:37:27 1688

原创 Base64介绍

什么是Base64? 按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列 的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not

2012-02-20 16:29:56 1261

原创 C++通用事件支持宏

#ifndef _EVENT_SUPPORT_H_#define _EVENT_SUPPORT_H_//#ifdef _DEBUG//#ifdef DEBUG_NEW//#define new DEBUG_NEW//#endif//#endif#include "windows.h"#include #ifndef TXTRACEinline void TXTRACE(

2012-02-20 14:26:44 1354

原创 VC使用CRT调试功能来检测内存泄漏

C/C++ 编程语言的最强大功能之一便是其动态分配和释放内存,但是中国有句古话:“最大的长处也可能成为最大的弱点”,那么 C/C++ 应用程序正好印证了这句话。在 C/C++ 应用程序开发过程中,动态分配的内存处理不当是最常见的问题。其中,最难捉摸也最难检测的错误之一就是内存泄漏,即未能正确释放以前分配的内存的错误。偶尔发生的少量内存泄漏可能不会引起我们的注意,但泄漏大量内存的程序或泄漏日益增多的

2012-02-17 14:25:35 1345

原创 使用VC++和CRT库定位和排除内存泄漏

介绍:  动态分配、回收内存是C/C++编程语言一个最强的特点,但是中国哲学家孙(Sun Tzu,我不知道是谁?那位知道?) 指出,最强的同时也是最弱的。这句话对C/C++应用来说非常正确,在内存处理出错的地方通常就是BUGS产生的地方。一个最敏感和难检测的BUG就是内存泄漏-没有把前边分配的内存成功释放,一个小的内存泄漏可能不需要太注意,但是程序泄漏大块内存,或者渐增式的泄漏内存可能引起的现

2012-02-17 10:47:08 1905

原创 ACE反应器(Reactor)模式

1.ACE反应器框架简介反应器(Reactor):用于事件多路分离和分派的体系结构模式通常的,对一个文件描述符指定的文件或设备, 有两种工作方式: 阻塞与非阻塞。所谓阻塞方式的意思是指, 当试图对该文件描述符进行读写时, 如果当时没有东西可读,或者暂时不可写, 程序就进入等待状态, 直到有东西可读或者可写为止。而对于非阻塞状态, 如果没有东西可读, 或者不可写, 读写函数马上返

2012-02-16 23:59:02 1895

原创 ACE前摄器Proactor模式

当 OS 平台支持异步操作时,一种高效而方便的实现高性能 Web 服务器的方法是使用前摄式事件分派。使用前摄式事件分派模型设计的 Web 服务器通过一或多个线程控制来处理异步操作的完成。这样,通过集成完成事件多路分离(completion event demultiplexing)和事件处理器分派,前摄器模式简化了异步的 Web 服务器。异步的 Web 服务器将这样来利用前摄器模式:首先让

2012-02-16 23:53:44 1888

原创 深入探讨MFC消息循环和消息泵

首 先,应该清楚MFC的消息循环(::GetMessage,::PeekMessage),消息泵(CWinThread::PumpMessage)和 MFC的消息在窗口之间的路由是两件不同的事情。在MFC的应用程序中(应用程序类基于CWinThread继承),必须要有一个消息循环,他的作用是从应用程序的消息队列中读取消息,并把它派送出去(::DispatchMessage)。而消息路由是指消息派送

2012-02-15 23:42:23 1983

原创 Windows消息队列,UI线程,窗口以及消息处理方式总结

1.窗口   Windows程序是由一系列的窗口构成的,每个窗口都有自己的窗口过程,窗口过程就是一个拥有有固定 Signature 的 C函数,具体格式如下:   LRESULT CALLBACK WindowProc(HWND hwnd,       UINT uMsg,       WPARAM wParam,       LPARAM lParam   );

2012-02-15 23:33:13 4502 1

原创 模板实现的通用工厂方法模式

1.工厂方法(Factory Method)模式工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。工厂方法模式结构示意图工厂方法模式是简单工厂模

2012-02-15 22:38:32 1143

原创 多继承的构造顺序

构造对象的规则需要扩展以控制多重继承。构造函数按下列顺序被调用:  (1)任何    虚拟基类的构造函数按照它们被继承的顺序构造;(#add 即声明顺序)  (2)任何非虚拟基类的构造函数按照它们被继承的顺序构造;  (3)任何成员对象的构造函数按照它们声明的顺序调用;  (4)类自己的构造函数。  例如:    //**********************

2012-02-15 22:17:24 2018

原创 对象池的实现

为了提高new对象的速度,工程师们提出了对象池的解决方案。即一次性分配大量的空间,供开发者创建对象使用;当分配的大量空间不够时,再次分配大量的空间。嗯,这种方式,在内存池中是没有问题的。但是,由于对象构造时需要执行构造函数,析构时需要执行析构函数,这时就需要一种特殊的方式来解决在已经分配了的空间上执行构造函数。这,就是placement new。示例:char *

2012-02-15 21:56:57 945

原创 使用dbghelp获取调用堆栈--release下的调试方法学

当软件作为release模式被发布给用户时,当程序崩溃时我们很难去查找原因。常见的手法是输出LOG文件,根据LOG文件分析程序崩溃时的运行情况。我们可以通过SEH来捕获程序错误,然后输出一些有用的信息作为我们分析错误的资料。一般我们需要输出的信息包括:系统信息、CPU寄存器信息、堆栈信息、调用堆栈等。而调用堆栈则是最有用的部分,它可以直接帮我们定位到程序崩溃时所处的位置(在何处崩溃)。(codep

2012-02-14 22:53:22 2317

原创 STL容器typedef命名规范

STL广泛用于C++程序,其中容器提供各种可选数据结构,极大方便了功能实现。在使用容器时,最好不要直接用诸如vector m_vecB;的方式,而应该先typedef一种类型出来,(切忌过度typedef容器的iterator,增加阅读负担)具体原因可参见《Effective STL》第二条。建议typedef 命名后缀为,如XxxVec,XxxList,XxxMap等。切忌什么纯大写+下划线,看

2012-02-14 10:49:23 3497 1

原创 基于ActiveX控件的DirectX游戏开发

平常开发DirectX游戏基本是用SDK或者MFC,关于两者的开发想必大家都有了很多的了解,但是基于ActiveX控件的DirectX游戏开发网上并不多见,近日有兴趣研究了一下,小有成果,不敢独享,小附文章,希望能起到抛砖引玉的功效。       我选用WIN2K+VC6+DirectX8作为开发平台,首先创建MFC ActiveX ControlWizard,假设工程名为DIG(因为在做一个

2012-02-12 23:12:28 2877 1

原创 用ATL建立轻量级的COM对象

本文假设你熟悉C++和COM。摘要:    ATL——活动模板库(The Active Template Library),其设计旨在让人们用C++方便灵活地开发COM对象。ATL本身相当小巧灵活,这是它最大的优点。用它可以创建轻量级的,自包含的,可复用的二进制代码,不用任何附加的运行时DLLs支持。    由于COM技术良好的口碑,越来越多的程序员已经走进或正在走进COM的编程世

2012-02-09 14:40:46 1893

原创 解说Win32的窗口子类化

下载本文的配套源代码也许你需要一个特殊的Edit来限制浮点数的输入,但是现有的Edit却并不能完成这项工作——因为它只能够单纯的限制大小写或者纯数字。当你在论坛上求救的时候,某个网友告诉你:“用子类化。”你也许会在看到一线曙光的同时多出了一连串的问题:何为子类化?子类化的原理是什么?如何实现子类化?下面就让我从一个简单的C++程序开始,一步步解开你的疑团吧。  首先,我为你列出以下这个

2012-02-08 11:10:48 1077

原创 使用WTL写Windows程序简单示例

#include atlbase.h>CComModule _Module;#include atlwin.h>class CMainFrame:public CWindowImplCMainFrame, CWindow, CFrameWinTraits>{public:    BEGIN_MSG_MAP(CMainFrame)        MESSAGE_HAN

2012-02-07 13:30:03 1436

原创 Win32 关键点总结

一 窗口和消息1 前缀 前缀全称释义CSclass style类风格选项CWcreate windows创建窗口选项DTdraw text绘制文本选项IDIIcon ID图

2012-02-07 11:07:03 3382

原创 MMORPG 游戏服务器端设计

之前有过一篇介绍游戏服务器端的博文http://blog.csdn.net/liuxialong/archive/2011/06/12/6539762.aspx但是篇幅太长,而且过于关注细节,适合深读。这里给出一种宏观把握MMORPG服务器设计的文章,适合入门,读完后对服务器端的设计能有大概的掌握,方便对感兴趣的部分进行深入了解。1、首先是常见的服务器端结构,其中包

2012-02-07 10:48:15 2948 1

原创 GameByro渲染系统剖析

引言:GameByro作为一款次世代引擎,使用了复杂的材质系统,用来满足各种各样的需求。材质代表了物体受到光照后所呈现出的质感,而这种质感在计算机图形学中需要着色代码来完成,所以当前流行的图形引擎设计是使用被渲染对象的材质与shader相关联,GameByro也不例外。GameByro的材质系统可以通过shade tree生成shader程序,增强了应用程序层对可编程渲染管线的控制能力。

2012-02-04 21:08:48 1270 2

原创 gb的渲染中的几个类

文章学自于:http://www.cppblog.com/rise-worlds/archive/2009/04/22/80688.htmlgb的渲染中的几个类:RenderFrame RenderStepRenderClickRenderView**************************************************************

2012-02-04 18:07:54 1149 1

网络游戏客户端编程 随书code 全

vs2008编译, 方便下载, 是学习网络游戏编程的好的代码

2012-01-07

C++ BOOST 库中文指南

官方文档中文翻译版,亲手制作,绝对珍藏。

2010-12-22

\超级好的ogre的教程

Pro OGRE 3D Programming 中文翻译版本0.2.0

2009-11-12

数据结构实验课的全部源程序

全部程序都有顺序和链式存储两种,有线性表操作,栈队列的应用,稀疏矩阵的存储和转置,二叉树的实现和运算,线索二叉树的实现和运算,哈夫曼树的实现和运算,图的实现和运算,最小生成树,最短路径,拓扑排序,各种查找算法,各种排序算法,哈希表查找的实现和运算,下吧,疯狂的下吧,太好的资源了

2009-08-31

effective c++

c++经典著作effective c++,描述了c++在实际运用中应该遵循的一般性准则50条。

2009-08-27

清华大学c语言PPT

最全的JDK1.5帮助文档,支持类和方法的搜索。

2009-07-24

空空如也

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

TA关注的人

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