自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 memcpy一块内存到vector中

typedef struct { int x; int y; }Point; Point* p = new Point[3]; for (int i = 0; i < 3; i++) { p[i].x = i * 2; p[i].y = i * 2 + 1; } vector<Point> vec(3); //vec一定要预留足够大才行 memcpy...

2021-02-05 10:10:05 627

原创 设计模式-迭代器模式

迭代器(Iterator)模式的定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。该模式在现代c++中已经过时。伪代码如下:#include <QCoreApplication>#include <iostream>using namespace std;template <typename T>class Iter...

2020-02-02 09:48:28 154

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

中介者(Mediator)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。#include <QCoreApplication>#include <iostream>using namespace std;class Person;class ...

2020-02-01 09:30:22 134

原创 设计模式-解析器模式

解释器(Interpreter)模式的定义:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释一个特定的上下文。#include <QCoreApplication>#include <iostream>#include <map&g...

2020-01-31 09:12:42 130

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

访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。#include <QCoreApplication>#include <iostream>usi...

2020-01-30 09:30:08 81

原创 设计模式-职责链

职责链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。#include <QCoreApplication>#include <iostream>#include <str...

2020-01-29 10:14:48 87

原创 设计模式-组合模式

组合(Composite)模式的定义:有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。#include <QCoreApplication>#include <iostream>#include <list>using namespace std;cla...

2020-01-28 09:19:43 62

原创 设计模式-状态模式

状态(State)模式的定义:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。#include <QCoreApplication>#include <iostream>using namespace std;class NetworkState{public: NetworkState* ...

2020-01-27 10:48:15 86

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

备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。#include <QCoreApplication>#include <iostream>#include <string>using namespace std;c...

2020-01-26 11:55:49 116

原创 设计模式-享元模式

享元(Flyweight)模式的定义:运用共享技术来有効地支持大量细粒度对象的复用。它通过共享已经存在的又橡来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。#include <QCoreApplication>#include <iostream>#include <map>using namespace std;...

2020-01-26 10:33:33 76

原创 设计模式-原型模式

原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节#include <QCoreApplication>#include <iostream>using namespace std;clas...

2020-01-25 20:26:51 85

原创 设计模式-桥接模式

桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。#include <QCoreApplication>#include <iostream>#include <string>using namespace std;class MessageIm...

2020-01-25 19:48:24 103

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

观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。#include <QCoreApplication>#include <iostream>#include <list>using nam...

2020-01-24 08:46:58 132

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

模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。#include <QCoreApplication>#include <iostream>using namespace std;class DrinkTem...

2020-01-23 19:30:05 132

原创 设计模式-策略模式

策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理#include <QCoreApplication>#include <iostream>using n...

2020-01-23 19:10:19 92

原创 设计模式-命令模式

命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。#include <QCoreApplication>#include <iostream>#include <string>#include <queue...

2020-01-23 18:58:17 87

原创 设计模式-装饰模式

装饰(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。装饰(Decorator)模式的主要优点有:采用装饰模式扩展对象的功能比采用继承方式更加灵活。 可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。其主要缺点是:装饰模式增加了许多子类,如果过度使用会使程序变得很复杂。#inclu...

2020-01-22 10:04:39 95

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

适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。#include <QCoreApplication>#include <iostrea...

2020-01-22 09:02:53 82

原创 设计模式-外观模式

外观模式:一组具有类似功能的类群。使用场景:如ktv模式,在唱k的时候需要打开电视,关掉灯,打开音响。打开麦克风,打开dvd。每个操作都是一个小系统,外观类就是唱k。通过唱k类调用各个系统。#include <QCoreApplication>#include <iostream>using namespace std;class System1{pub...

2020-01-21 08:55:25 129

原创 设计模式-代理模式

为其他对象提供一种代理以控制对这个对象的访问。在某些情况下。一个对象不适合或者不能直接引用另一个对象。代理在它们中起到中介的作用。常见代理:代理服务器,缓冲服务器#include <QCoreApplication>#include <iostream>using namespace std;class AbstractInterface{public:...

2020-01-21 08:14:40 90

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

建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。建造者(Builder)模式的主要角色如下。产品角色(Product):它是包含多个组成部件的复杂对象,由具体建造者...

2020-01-20 14:42:11 62

原创 设计模式-抽象工厂模式

抽象工厂(AbstractFactory)模式的定义:是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。抽象工厂不满足开闭原则。在实际需求中,一个工厂,不可能都只生产一种产品。还是以水果为例,苹果,香蕉是水果。但是中国香蕉和日本香蕉,中国苹果和日本苹果就不一样。这时候需要抽象出一个工厂,既可以生产香蕉,又可以生产苹果...

2020-01-20 09:52:00 81

原创 设计模式-工厂方法模式

工厂方法模式:在简单工厂的基础上,抽象出工厂类。每创建一个类,创建对应的工厂优点:用户添加新的产品的时候,只需要添加具体的产品类和对应的具体工厂类,无需对原工厂进行修改,符合开闭原则 2.用户只需要知道工厂的名称能得到对应的产品。缺点:类的个数成倍增加,增加维护成本#include <QCoreApplication>#include <iost...

2020-01-20 08:46:03 93

原创 接口隔离原则

接口隔离原则(Interface Segregation Principle,ISP)要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。以学生成绩管理程序为例一般包含插入成绩、删除成绩、修改成绩、计算总分、计算均分、打印成绩信息、査询成绩信息等功能,如果将这些功能全部放到一个接口中显然不太合理,正确的做法是将它们分别放在输入模块、统计模块和打印模块等 3...

2020-01-19 15:58:40 84

原创 里氏替换原则

子类可以扩展父类的功能,但不能改变父类原有的功能。也就是说:子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。关于里氏替换原则的例子,最有名的是“正方形不是长方形”。当然,生活中也有很多类似的例子,例如,企鹅、鸵鸟和几维鸟从生物学的角度来划分,它们属于鸟类;但从类的继承关系来看,由于它们不能继承“鸟”会飞的功能,所以它们不能定义成“鸟”的子类。同样,由于“气球鱼”不会游泳,...

2020-01-19 15:48:13 86

原创 单一职责原则

单一职责原则:应该有且仅有一个原因引起类的变更(There should never be more than one reason for a class to change)参考链接:https://www.jianshu.com/p/c1073bd9b080

2020-01-19 15:24:32 76

原创 依赖倒置原则

依赖倒置原则(Dependence Inversion Principle,DIP)是 Object Mentor 公司总裁罗伯特·马丁(Robert C.Martin)于 1996 年在C++Report 上发表的文章。依赖倒置原则的原始定义为:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象(High level modules shouldnot ...

2020-01-13 20:43:27 115

原创 合成复用原则

合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚合复用原则(Composition/Aggregate Reuse Principle,CARP)。它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。#include <QCoreApplication>#include <iostream&gt...

2020-01-11 21:32:09 191 1

原创 迪米特法则

迪米特法则:最少知识法则。如用户找房,不需要自己找,让中介帮你找。用户只需要告诉中介需要什么样的房子。#include <QCoreApplication>#include <iostream>#include <vector>#include <string>using namespace std;class Abstrac...

2020-01-11 20:51:46 75

原创 开闭原则

开闭原则:对扩展开放,对修改关闭。增加功能是通过添加代码实现的,而不是通过修改原有代码实现的。示例代码:#include <QCoreApplication>#include <iostream>using namespace std;class AbstractCalculator{public: virtual int GetResult(...

2020-01-10 19:21:09 94

原创 设计模式-简单工厂模式

简单工厂模式:自己在写业务函数的时候或者类创建对象的时候,不想创建,只想用。优点:客户端和实现类解耦 对于创建复杂的情况,不需要考虑缺点:1.简单工厂模式,增加新的功能是通过修改源代码实现,不符合开闭原则2.这个工厂类的职责过重,如果该类出问题,会影响该很多许多使用该工厂的模块#include <QCoreApplication>#include <i...

2020-01-09 21:44:44 73

原创 设计模式-单例模式

单例模式:这个系统中只有一个对象的类。如windows的任务管理器,数据库对象。单例模式的分为饿汉式和懒汉式。懒汉式: 发现没有对象再构造,碰到多线程是不安全的饿汉式: 先构造对象,对于构造对象比较积极(推荐)单例的释放:单例不需要考虑释放,如果要释放的话,可以返回引用。单例类的构建要点:构造函数要私有 私有的当前类的指针变量(引用) 提供静态的对外接口。获取单例对象 ...

2020-01-09 21:08:55 62

原创 docker-machine常用操作

docker-machine在安装docker之后,并没有安装,所以需要自己安装 docker-machine --help //查看docker-machine帮助文档 docker-machine create --driver virtualbox test //创建一台名...

2019-12-31 20:29:05 87

原创 docker常用操作

#docker服务systemctl start docker //启动docker服务,安装完docker需要启动服务才能执行docker命令systemctl stop docker //关闭docker服务#仓库docker login //登陆docker hub,需要先在docker hub上注册账号,拉取...

2019-12-31 20:07:09 96

原创 docker简介

docker是一个go语言写的c/s架构程序。dockerd是docker的服务器程序,docker是客户端程序。我们输入的docker命令都是发送给dockerd后台程序执行的。docker-machine 在虚拟主机上安装 docker 的工具。并可以使用 docker-machine 命令来管理主机。安装 docker-machine 之前你需要先安装 docker.docker-c...

2019-12-31 18:39:28 199 1

原创 linux下Qt5.7源码编译

有时候,可能需要用Qt编写服务端,但是又没有界面,只能通过源码编译的方式进行安装。以下记录了我在阿里云上编译qt源码的步骤。之前编译过几次,感觉比较容易踩坑,故此,记录一下。1.从http://download.qt.io/archive/qt/下载源码,我下的版本是:qt-everywhere-opensource-src-5.7.0.tar.gz2.解压压缩包,进入文件夹,查看READ...

2019-12-27 22:11:51 1068

原创 未定义的引用

.在编译程序的时候,有时候会出现“未定义的引用的错误”,这常常是由于找不到函数的定义造成的。1.可以在pro配置文件上加上动态链接库的路径2.添加默认动态链接库。之前在centos7上编译了一个第三方库。正常编译运行。但是隔了一段时间时候发现用到该库的程序编译不过去了。报的是“未定义的引用”。检查了一下配置。以及配置路径下的文件,发现确实是存在这个动态链接库的。找了好久才发现。默认的c...

2019-03-03 11:41:19 20555 1

原创 vld使用

vld是一款免费的Visual C++内存分析工具,下面来介绍一下怎么在qt中使用vld。1.下载。去官网http://vld.codeplex.com/下载,我下的是2.5.1版本2.安装。在安装目录下找到vld.lib文件。有32位和64位的注意位数。复制到qt安装目录的lib文件夹中  复制vld安装目录下include文件夹中的文件vld.h和vld_def.h到qt安装目录的

2017-10-30 21:01:52 3586

原创 Qt设置任务栏图标

在做qt界面的时候发现。一个应用程序启动会在窗口会默认在任务栏显示一个图标。如果还有一个窗口继承于这个窗口。那么任务栏的图标只有一个。如果创建的窗口的时候不是继承于原先已经存在的窗口,那么就会在任务栏生成图标。这样的话,一个应用程序在任务栏显示多个图标,很不美观。如果只想在任务栏显示一个图标,可以设置其他的窗口,继承于第一个窗口。或者设置窗口的属性,setWindowFlags(Qt:

2017-10-13 14:35:25 2291

原创 Qt生成Makefile

1.新建项目文件夹。把源码放在文件夹中2.$qmake -project //生成.pro文件3.qmake  //生成Makefile

2017-09-28 11:16:24 3118

空空如也

空空如也

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

TA关注的人

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