DreamWorks

Never say Never。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2013年7月30日

摘要: 代码在VC++ 6.0通过编译 1 //InitilizeFactory.h 2 #ifndef __INITILIZEFACTORY__ 3 #define __INITILIZEFACTORY__ 4 5 #include 6 using namespace std; 7 8 class Car{ 9 public:10 virtual void info()=0;11 };12 13 14 15 #include 16 17 class Toyota:public Car{18 public:19 virtual void info(){20 cou... 阅读全文

posted @ 2013-07-30 00:22 _Babyface 阅读(209) 评论(0) 推荐(0) 编辑

摘要: 源代码在VC++ 6.0通过编译 1 //SingletonHeader.h 2 #include 3 #include 4 #include 5 6 class Logger{ 7 public: 8 static const std::string kLogLevelDebug; 9 static const std::string kLogLevelInfo;10 static const std::string kLogLevelError;11 12 static Logger& instance();13 14 //Logs ... 阅读全文

posted @ 2013-07-30 00:20 _Babyface 阅读(173) 评论(0) 推荐(0) 编辑

2013年7月29日

摘要: C++ACE实现通用的服务器C/S架构通信程序ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework),在其中实现了许多用于并发通信软件的核心模式。ACE提供了一组丰富的可复用C++ Wrapper Facade(包装外观)和框架组件,可跨越多种平台完成通用的通信软件任务,其中包括:事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、消息路由、分布式服务动态(重)配置、并发执行和同步,等等。ACE的目标用户是高性能和实时通信服务和应用的开发者。它简化了使用进程间通信 阅读全文

posted @ 2013-07-29 21:10 _Babyface 阅读(938) 评论(0) 推荐(0) 编辑

摘要: 1 //我们假设客户端的代码如下(为代码直观,省去所有错误检查,以下同): 2 #include 3 #include 4 #define SERVER_ADDRESS "137.117.2.148" 5 #define PORT 5150 6 #define MSGSIZE 1024 7 #pragma comment(lib, "ws2_32.lib") 8 int main() 9 { 10 WSADATA wsaData; 11 SOCKET sClient; 12 SOCKADDR_IN serv... 阅读全文

posted @ 2013-07-29 20:46 _Babyface 阅读(723) 评论(0) 推荐(0) 编辑

2013年7月28日

摘要: final在java中使用比较多,主要使用在三个方面:1、修饰变量,保证变量不能被改变,类似C++中的const2、修饰方法,保证方法不能被覆盖,类似C++中用static修饰的方法3、修饰类,保证类不能被继承,是终态类static在java中的使用1、修饰变量,一般使用static final联合表示,表示一个不能被修改的全局变量。2、修饰方法,属于独立该类的任何对象,被类的实例共享,用类名直接访问,其与非静态方法的区别:对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这 阅读全文

posted @ 2013-07-28 23:55 _Babyface 阅读(293) 评论(0) 推荐(0) 编辑

摘要: 为什么需要线程池目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有一个共同点,就是单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。传 统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创建一个新的线程,由该线程执行任务。任务执行完毕后,线程退出,这就是是“即时创建,即 时销毁”的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次数极其频繁,那么服务器将处于 不停的创建线程,销毁线程的状态。我们将传统方案中的线程执行过程分为三个过程:T1、T2、T3。T1:线程创建时间T2:线程执行时间 阅读全文

posted @ 2013-07-28 23:38 _Babyface 阅读(367) 评论(0) 推荐(0) 编辑

摘要: 对于普通类型的对象来说,它们之间的复制是很简单的,例如:int x=8;int y=x;而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 1 #include 2 using namespace std; 3 4 class CExample { 5 private: 6 int a; 7 public: 8 CExample(int b) 9 { a=b;}10 void Show ()11 {12 cout 2 using namespace std; 3 4 cl... 阅读全文

posted @ 2013-07-28 00:57 _Babyface 阅读(220) 评论(0) 推荐(0) 编辑

摘要: C++中的继承关系容易导致二义性,但是使用虚基类能够避免二义性,其源码如下 1 class Anamal{ 2 public: 3 virtual void eat() = 0; 4 virtual void sleep(){ 5 cout<<"ZZZZZZZZZZZZZ........"<<endl; 6 } 7 }; 8 class Dog:public virtual Anamal{ 9 public:10 virtual void eat(){11 cout<<"Dog eat food"<<end 阅读全文

posted @ 2013-07-28 00:40 _Babyface 阅读(147) 评论(0) 推荐(0) 编辑

2013年7月25日

摘要: C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的 成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技 术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一个清晰的剖析。言归正传,让我们一起进入虚函数的世界。虚函数表对C++ 了解的人都应该知道虚函数(Virtual 阅读全文

posted @ 2013-07-25 20:29 _Babyface 阅读(190) 评论(0) 推荐(0) 编辑

2013年7月23日

摘要: //堆排序---大根堆//此过程只排出第一个大根堆void HeapAdjust(int data[],int s,int m){ //data[s..m]组成的元素序列中,除data[s]之外,其余元素均满足堆定义 //调整data[s]的位置,使之成为大根堆 int j,t; t = data[s]; //备份元素data[s],找到合适的位置后再插入 for (j=2*s+1;j=0;--i) //把data调整成大根堆 HeapAdju... 阅读全文

posted @ 2013-07-23 18:22 _Babyface 阅读(124) 评论(0) 推荐(0) 编辑