自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 设计模式实现(二十四)---访问者模式(Visitor)

访问者模式(Visitor),表示一个作用于某对象结构中的

2014-08-17 13:58:05 572 1

原创 菱形继承二义性解决方法--虚拟继承

//虚拟继承是为了解决多重继承而出现的,比如/* A / \ B C \ / D如果直接class A{};class B : public A{}class C : public A{}class D : public B, public C{}那么在创建D的对象时候,将会生成2个A对象,1个B对象,1个C对象

2014-08-14 21:36:14 656

原创 公有继承、私有继承、保护继承的测试

测试代码如下,分析见注释#include using namespace std;class Base{private: int m_private;public: int m_public;protected: int m_protectd;};class PublicChild : public Base //在公有继承中,父类中除了私有的成员变量及成员函数,其他

2014-08-14 20:10:56 409

原创 单类及继承类的构造函数、赋值函数、拷贝构造函数等测试

先看测试代码#includeusing namespace std;class A{public: A() { cout << "A Constructor!" <<" Address :"<< this << endl; } A(int i) { cout << "A Constructor with Para!"<<" Address :"<< this

2014-08-14 20:08:36 379

原创 设计模式实现(二十三)--- 解释器模式(interpreter)

解释器模式(interpreter),给定一个语言,定义它的

2014-08-14 11:10:02 329

原创 设计模式实现(二十二)--- 享元模式(Flyweight)

享元模式(Flyweight),运用共享技术有效地支持大量细粒度的对象。

2014-08-13 13:19:16 346

原创 设计模式实现(二十一)---中介者模式(Mediator)

中介者模式(Mediator):用一个中介对象来分装一系列的对象交互。中介者

2014-08-12 12:10:50 349

原创 设计模式实现(二十)---职责链模式(Chain of Responsibility)

职责连模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并

2014-08-12 10:12:15 275

原创 设计模式实现(十九)---命令模式(Command)

命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。

2014-08-12 08:49:46 315

原创 设计模式实现(十八)---桥接模式(Bridge)

对象的继承关系是在编译时就定义好了,所以无法在运行时改变从父类继承的实现。子类的实现与它的父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。当你需要复用子类时,如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并最终限制了复用性。

2014-08-12 07:53:34 351

原创 设计模式实现(十七)---单例模式(SingleTon)

单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它

2014-08-04 20:04:57 308

原创 pthread-win32配置方法及pthread_mutex测试

1.下载pthreads-w32-2-8-0-release.exe下载地址:ftp://sourceware.org/pub/pthreads-win322. 安装pthreads-w32-2-8-0-release.exe       双击pthreads-w32-2-8-0-release.exe,点击Browse选择安装到的目录,然后点击Extract解

2014-08-04 19:01:53 1712

原创 设计模式实现(十六)---迭代器模式(Iterator)

迭代器在比较高级的语言如Java,C#,C++中都已经集成进语言中,所以平时使用的并不过。学习该设计模式

2014-08-01 21:43:27 367

原创 设计模式实现(十五)--- 组合模式(Composite)

组合模式(Composite),将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。何时使用组合模式:当你发现需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑用组合模式了。组合模式这样就定义了包含人力资源部和财务部这些基本对象和分公司、办

2014-08-01 20:13:35 336

原创 设计模式实现(十四)--- 备忘录模式(Memento)

备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以讲该对象恢复到原先保存的状态。

2014-08-01 18:29:56 356

原创 设计模式实现(十三)--- 适配器模式(Adapter)

适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的哪些类可以一起工作。系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。在GoF的设计模式中,对适配器模式讲了两种类型,类适

2014-07-31 13:20:04 445

原创 设计模式实现(十二)--- 状态模式(State)

状态模式(state):当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂的情况(也就是if过于多的情况)。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。当然,如果这个状态判断很简单,那么就没必要使用状态模式了。。。感觉这个设计模式有点作孽啊,用了设计模式比直接if判断还

2014-07-31 09:52:08 314

原创 设计模式实现(十一)--- 抽象工厂模式(Abstract Factory)

因为客户的需求变化,在设计系统项目的时候有时候会更换数据库,如果数据库的实现单纯根据数据库单独实现,没有考虑到以后的复用的话,那么在下一个类似的系统但使用不同的数据库项目时,需要修改大量的代码才可以实现功能。我们可以根据抽象工厂模式,将不同的数据库系统分别做成不同的类,都继承自同一个父类。那么在以后的项目中就可以利用多态的特性,调用父类工厂指针生成对应的数据库对象,来满足功能要求。抽象

2014-07-31 09:41:35 330

原创 设计模式实现(十)--- 观察者模式(Observer)

观察者模式:顶一了一种一堆多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。观察者与通知者,你中有我,我中有你。为了降低偶尔,针对抽象进行抽象。将抽象类的指针或者引用作为成员变量,这样就可以充分的利用多态的性质。观察者的特点:将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相关对象间的一致

2014-07-30 17:58:42 347

原创 设计模式实现(九)--- 建造者模式(Builder)

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示的意图时,我们需要应用一个设计模式,“建造者模式(Builder)”,又叫生成器模式。建造者模式可以讲一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。如果我们用了建造者模式,那么用户就只需指定需要建造的类型可以得到它们,而具体建造的过程和细节就不需要知道了。

2014-07-29 21:06:14 411

原创 设计模式实现(八)--- 外观模式(Facade)

外观模式的目的是降低类与类之间的耦合性,在我们了解外观模式前先学习下迪米特法则。

2014-07-29 19:42:32 316

原创 设计模式实现(七)--- 模板方法模式(Template Method)

概述:如果继承有意义,就应该要称为子类的模板,所有重复的代码都应该上升到父类中区,而不是让每个子类都一一重复。当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理。模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可定重定义该算法的某些特定步骤。

2014-07-29 16:41:17 341

原创 设计模式实现(六)--- 原型模式(Prototype)

原型模式(Prototype),是原型实例制定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节。

2014-07-29 15:34:29 343

原创 设计模式实现(五)--- 工厂方法模式(Factory Method)

简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。但是在需要为工厂新加功能的时候,就不得不更改工厂中的代码,增加实例化该功能类的判断条件。违背了开放-封闭原则(对外扩展开放,对内修改封闭)。

2014-07-28 20:37:15 354

原创 设计模式实现(四)--- 代理模式(Proxy)

代理模式UML图及一般实现方法:

2014-07-28 16:40:07 333

原创 设计模式实现(三)---装饰模式

装饰者模式实现概要#include #include //Component类class Component{public: virtual void Operation() = 0;};//ConcreteComponent类class ConcreteComponent : public Component{public: void Operation(){prin

2014-07-25 09:58:37 442

原创 设计模式实现(二)---策略模式、策略模式与简单工厂模式结合使用

策略模式(Strategy): 它定义了算法家族,分别

2014-07-24 19:23:02 599

原创 设计模式实现(一)---简单工厂模式

简单工厂模式的作用是将逻辑功能部分(算法)与界面功能部分(客户端)的代码逻辑功能部分(算法部分)

2014-07-24 18:38:02 304

原创 数据结构与算法分析学习笔记--第五章--排序

本文就将列出希尔排序、插入排序、堆排序、归并排序及快速排序的

2014-07-24 18:29:56 389

原创 优先队列(堆序结构)

/*二叉堆:结构性质: 是一个被完全填满的二叉树,有可能的例外是在底层,底层上的元素从左侧到右侧填入。 这样的树称为完全二叉树。(copmlete binary tree) 容易证明一颗高为h的完全二叉树有2^h到2^(h+1) - 1个节点。 因为完全二叉树很有规律,所以它可以用一个数组表示,不需要指针。对于数组中任一位置i上的元素, 其左儿子在位置2i上,其右儿子在左儿子后

2014-07-21 18:15:52 363

原创 c++ Primer 学习笔记 第九章----顺序容器

1.容器容纳特定类型对象的集合

2014-06-25 17:56:29 362

原创 c++primer 4 学习笔记--第7章

7.2.  非const引用形参只能与完全同类型的非const对象关联,而const引用形参可以进行类型转换

2014-06-25 14:29:25 316

转载 C++空类默认函数

原地址:http://blog.sina.com.cn/s/blog_5f76aaf20100cwlj.htmlcutex的博客定义一个空的C++类,例如class Empty{}一个空的class在C++编译器处理过后就不再为空,编译器会自动地为我们声明一些member function,一般编译过去就相当于class Empty{pu

2014-06-24 17:35:17 362

原创 进程并发执行问题

目的与要求:了解并行程序的高级语言表示与

2014-06-22 20:59:22 5486

原创 数据结构与算法分析学习笔记--第五章--散列---分离链接法

在散列表中,如果当一个元素被插入时,另一个元素已经存在(散列值相同,也就是键相同),那么就会产生

2014-06-13 21:56:17 406

原创 进程控制与调度

目的与要求:理解进程切换过程;理解进程调度原因及调度切换时机

2014-06-13 16:38:44 1998

原创 操作系统学习笔记------进程描述与进程状态变化

进程控制块PCB的组织方式  1)线性表方式:不论进程的状态如何,将所有的PCB连续地存放在内存的系统区。这种方式适用于系统中进程数目不多的情况。 2)索引表方式:该方式是线性表方式的改进,系统按照进程的状态分别建立就绪索引表、阻塞索引表等。 3)链接表方式:系统按照进程的状态将进程的PCB组成队列,从而形成就绪队列、阻塞队列、运行队列等

2014-06-11 21:43:16 952

原创 数组指针,指针数组

#include int main(){ static int m[3][4] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };/* 定义二维数组m并初始化*/ int(*p)[4];//数组指针 p是指针,指向一维数组,每个一维数组有4个int元素 int i, j; int *q[3];//指针数组 q是数组,数组元素是指针,3个int指针

2014-06-10 17:02:44 335

原创 数据结构与算法分析学习笔记--第四章AVL树

#include using namespace std;templateclass AVL_Node{public: AVL_Node *m_left; AVL_Node *m_right; T m_data; unsigned int m_hight;public: //构造函数 AVL_Node(T data = T(), AVL_Node *left = NULL,

2014-06-07 16:40:01 445

转载 struct pollfd

struct pollfd2010年04月15日 星期四 下午 03:59int poll (struct pollfd *fds, size_t nfds , int timeout);struct pollfd {int fd;        /* 文件描述符 */short events; /* 等待的事件 */short revents; /*

2014-06-07 14:59:48 943

空空如也

空空如也

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

TA关注的人

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