自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 设计模式总结

设计模式可以分为:1.创建型模式:工厂方法模式、抽象工厂模式、建造者模式、单例模式、原型模式2.结构型模式:适配器模式、装饰模式、桥接模式、组合模式、享元模式、外观模式、代理模式3.行为模式:观察者模式、模板方法模式、命令模式、状态模式、职责链模式、解释器模式、中介者模式、访问模式、策略模式、备忘录模式、迭代器模式范围创建型结构型

2020-04-29 16:04:12 94

原创 设计模式-享元模式

享元模式(Flyweight):运用共享技术有效地支持大量细粒度对象。享元对象内部不会随环境变化而改变的共享部分,称为享元对象的内部状态,而随环境改变的状态就是外部状态。 在程序设计中,有时候需要生成大量细粒度的类实例来表示数据。如果发现这些实例除了几个参数外基本都是相同的,可以把那些参数移到类外,在方法调用时将它们传进来,有时就能大幅度减少需要实例化的类的数量。比如:要为用户做如产品展示,博客

2017-04-25 10:43:15 244

原创 设计模式-桥接模式

桥接模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化。桥接模式主要遵循了合成/聚合复用原则:尽量使用合成/聚合,尽量不要使用类继承。 这样有助于保持每个类被封装,并集中在单个任务上,这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物。比如:手机和软件的关系,手机有各种牌子的手机,软件也有不同种类的软件。可以使用桥接模式,将软件从手机里面分离。U

2017-04-24 20:49:04 261

原创 设计模式-单例模式

单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点单例模式主要就是要只能生成一个实例,因此把构造函数设置为private,调用静态函数GetInstance来生成实例。 单例模式一般有懒汉模式和饿汉模式的做法。 一般的单例模式:class Singleton {private: Singleton() {} static Singleton*

2017-04-24 15:18:06 371

原创 设计模式-组合模式

组合模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。比如:一个公司,它有一个总公司,下面还有许多子公司。每个公司都有自己的财务部、人力资源部等。对于总公司来说,不论是子公司,还是财务部、人力资源部,都是它的部门。整个公司的部门拓扑图就是一个树形结构。 UML: //抽象公司类class Compa

2017-04-23 19:36:18 297

原创 设计模式-备忘录模式

备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。在以后可以将该对象恢复到原先保存的状态。比如:我们在玩游戏时会保存游戏的进度,之后可以重新载入进度。这里的进度其实就是游戏的内部状态,我们可以在外部保存这个状态,需要时再恢复。 UML: //备忘录类class Memento {public: int m_vit;

2017-04-23 11:03:00 214

原创 设计模式-适配器模式

适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。它使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式主要用在希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。 比如:在一个球队中有本土球员和外籍球员。由于语言不通,所以需要一个翻译作为适配器,让外籍球员与本土球员可以一起工作。 UML: //抽象球员类class Player

2017-04-21 10:28:28 255

原创 设计模式-建造者模式

建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式主要用于创建一些复杂的对象,这些对象内部构建间的顺序通常是稳定的,但构建内部会有不同的变化。用户不需要建造的具体过程和细节,只需指定需要构建的类型。 UML: //抽象类class PersonBuilder {public: virtual void Bui

2017-04-20 20:38:04 203

原创 设计模式-外观模式

外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。比如:投资者之前购买股票,因此需要了解各种股票的信息。现在改为购买基金,就只需要了解一个基金,而不用关心基金中具体有哪些股票·。 UML: //股票1class Stock1 {public: void Buy() {

2017-04-20 08:59:47 240

原创 设计模式-模板方法模式

模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。比如:现在网上投简历,网站会提供一个简历框架,每个人需要根据这些框架填写简历。 UML: //简历class Resume {protected: virtual void SetPersonalInfo() {} vir

2017-04-19 19:37:31 247

原创 设计模式-原型模式

原型模式(Prototype):用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。原型模式的clone()函数,对于c++来说其实就是拷贝构造函数,要注意是否需要深拷贝。 例子:在制作简历的时候我们会先制作一份模板,然后在复印这份模板,但是针对不同的公司侧重点可能不同,因此需要对简历的某些地方进行修改。UML: //工作经历class WorkExperice {pri

2017-04-19 15:00:44 465

原创 设计模式-代理模式

代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问例子:一个追求者通过一位代理人去追求一个女生,在客户端并不需要知道追求者的存在 UML: //抽象类class Gift {public: virtual void GiveDolls() = 0; virtual void GiveFlowers() = 0; virtual void

2017-04-18 20:15:09 285

原创 设计模式-装饰模式

装饰模式(Decorator):动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。装饰模式把类中的装饰功能从类中搬移去除,并把每个要装饰的功能放在单独的类中,用这个类包装要装饰的对象。因此在客户端可以有选择的、按顺序包装对象。例如:对一个人进行装扮,可以用不同的服饰进行不同的打扮。 UML: //抽象类class Person {publi

2017-04-18 09:33:59 259

原创 设计模式-策略模式

策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。比如:超市会进行普通收费,打折,满减等活动,并且这些算法会经常变化。 UML: 与工厂模式不同之处在于:工厂与每个子类关联,并生成子类的实例。客户端需要知道这些具体的子类和工厂类。 而策略模式直接与抽象类关联,客户端通过固定的接口获得结果,只需要知

2017-04-17 20:34:08 286

原创 设计模式-工厂模式

工厂模式主要有简单工厂模式、工厂方法模式和抽象工厂模式 简单个工厂模式: 比如要创建一个计算器实现加减乘除,就可以建立各种运算工厂 UML: //抽象运算类class Operation { public: virtual double GetResult(double A, double B) { return 0; }};//加法类class Operat

2017-04-17 09:40:11 218

原创 设计模式-访问者模式

访问者模式(Visitor):表示定义一个作用与某对象结构中的各元素的操作。它使可以在不改变各元素的类的前提下定义作用于这些元素的新操作。UML: class Man;class Woman;//抽象状态类class Action {public: virtual void GetManConclusion(Man *man) {} //男人反应 v

2017-04-16 19:07:48 170

原创 设计模式-命令模式

命令模式(Command):将一个请求封装为一个对象,从而可以用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤销的操作。例子:服务员接受各种订单命令,并可以对订单排队或者撤销,再将订单给厨师执行 UML: //烤肉串者class Barbecuer {public: void BakeMutton() { cout <<"烤

2017-04-14 10:01:29 206

原创 设计模式-状态模式

状态模式(State):当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。状态模式主要用在:当控制一个对象状态变换的条件表达式过于复杂的情况,把状态的判断逻辑转移到表示不同状态的一系列类中,就可以把复杂的判断逻辑简化。 例子:一个员工在一天中根据时间不同或工作完成情况会有不同的状态,如果把这些状态全部写在一个类中,判断逻辑会很复杂。 UML: clas

2017-04-13 20:24:28 207

原创 设计模式-观察者模式

观察者模式,又叫发布-订阅(Publish/Subscribe)模式:定义了一种一对多的依赖关系,让多个观察对象同时监听某个主题对象。这个主题对象在状态发生变化时,会通知多有观察者对象,使他们能自动更新自己。观察者模式一般用在:当一个对象的改变同时需要改变其他对象,而且它不知道具体有多少对象待改变时。 例子:公司通过秘书通知部分员工开会,秘书状态改变,员工将收到通知。当然老板也可以通知开会,所以

2017-04-13 10:10:00 266

原创 设计模式-职责链模式

职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。职责链模式好处在于可以简化对象之间的相互连接,它们只需保持一个指向其后继者的引用,而不需保持它所有的接受者的引用。 比如:一个员工的所有请求都只需告诉经理,如经理不能解决则交由总监解决。而不需

2017-04-12 19:37:11 228

原创 设计模式-中介者模式

最近在学习设计模式,之前都是看一遍,后来就忘了。所以还是决定记录一下 主要是学习大话设计模式这本书,把里面例子用c++重新写一遍 另外http://blog.csdn.net/column/details/design.html这个博主写得也不错,也参考一下。 中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以

2017-04-12 10:33:28 353 1

原创 MySQL学习(八)

fawefwffffffffffffffffffff杭州

2017-03-01 16:30:11 182

原创 MySQL学习(七)

全文本搜索MySQL两个最常使用的引擎为MyISAM和InnoDB,前者支持全文本搜索,而后者不支持。、1.启用全文本搜索支持一般在创建表时启用全文本搜索。CREATE TABLE语句接受FULLTEXT子句,它给出被索引列的一个逗号分隔的列表。2.进行全文本搜索使用两个函数Match()和Against()执行全文本搜索Match()指定被搜索的列Against(

2017-03-01 10:40:28 231

原创 MySql学习(六)

使用子查询子查询:即嵌套在其他查询中的查询select cust_name,cust_contactfrom customerswhere cust_id IN (select cust_id from orders where order_num IN (select order_num

2017-02-28 15:50:39 236

原创 MySql学习(五)

汇总数据1.聚集函数:运行在行组上,计算和返回单个值的函数Avg()函数:select avg(prod_price) AS avg_pricefrom productswhere vend_id = 1003;Avg()函数只用于单个列,要获得多个列的平均值,必须使用多个Avg()函数Avg()函数忽略值为NULL的行Count函数:select count(

2017-02-28 10:20:05 166

原创 MySql学习(四)

创建计算字段1.拼接字段:将值联结到一起构成单个值,使用concat()函数select concat(vend_name, '(', vend_country, ')')from vendorsorder by vend_name;使用RTrim()去掉值右边所有空格,LTrim()去掉值左边所有空格,Trim()去掉左右两边空格select concat(vend_name, '(',

2017-02-28 09:35:13 244

原创 MySql学习(三)

使用通配符进行过滤通配符:用来匹配值的一部分的特殊字符搜索模式:由字面值、通配符或两者组成的搜索条件在搜索子句使用通配符,必须使用LIKE操作符。LIKE指示MySQL,后跟的搜索模式利用通配符匹配而不是相等匹配进行比较1.%通配符,表示任何字符出现任意次数select prod_id,prod_namefrom productswhere prod_name LIKE 'je

2017-02-27 19:26:08 250

原创 MySql学习(二)

数据过滤1.使用where子句制定搜索条件select prod_name,prod_pricefrom productswhere prod_price = 2.50;where操作符支持 =, , >=, between操作符select prod_name,prod_pricefrom productswhere prod_price 不匹配检查select prod_name,

2017-02-27 15:38:28 215

原创 MySql学习(一)

1.检索Select检索列:select prod_namefrom products;select prod_id,prod_name,prod_pricefrom products;检索所有列:select *from products; 检索不需要的列会降低性能检索不同的行:使用Distinct关键字,值返回不相同的值select distinct vend_idfro

2017-02-27 11:18:28 268

findFiles_V0.1.0.7z

windows下扫描指定文件夹下的文件,可以暂停,停止和重新开始,使用多线程工程,里面有dll的源码

2020-05-12

空空如也

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

TA关注的人

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