自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux定时器

timerfd是linux提供的定时器机制,基于文件描述符,定时器精度最高可达纳秒级别,可以利用 select()、poll()和 epoll()对 timerfd 文件描述符进行监控。如果定时器到期,会将对应的文件描述符标记为可读。接口包括定时器创建、启动定时器、关闭定时器和删除定时器。系统调用 timerfd_settime()可以配备(启动)或解除(停止)由文件描述符 fd 所指代的定时器。timerfd_create()创建的定时器使用完毕后,应调用 close()关闭相应的文件描述符,以便于。

2022-12-09 22:21:10 1047 1

原创 3.9 状态模式(行为)

说明:来源培训讲义资料目录状态模式1、概念2、 角色和职责3、案例状态模式1、概念  State模式也叫状态模式,是行为设计模式的一种。State模式允许通过改变对象的内部状态而改变对象的行为,这个对象表现得就好像修改了它的类一样。  状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转译到表现不同状态的一系列类当中,可以把复杂的判断逻辑简化。2、 角色和职责Context:用户对象  拥有一个State类型的成员,以标识对象的当前状态;Stat

2022-01-04 10:11:16 106

原创 3.10 解释模式(行为)

说明:来源培训讲义资料目录解释模式1、概念2、角色和职责3、案例解释模式1、概念2、角色和职责Context  解释器上下文环境类。用来存储解释器的上下文环境,比如需要解释的文法等。AbstractExpression   解释器抽象类。ConcreteExpression  解释器具体实现类。3、案例#include <iostream>using namespace std;#include "string"class Context{publi

2022-01-04 10:11:03 129

转载 3.8 访问者模式(行为)

说明:来源培训讲义资料目录访问者模式1、概念2、角色和职责3、优缺点4、案例访问者模式1、概念  Visitor模式也叫访问者模式,是行为模式之一,它分离对象的数据和行为,使用Visitor模式,可以不修改已有类的情况下,增加新的操作角色和职责。2、角色和职责抽象访问者(Visitor)角色:  声明了一个或者多个访问操作,形成所有的具体元素角色必须实现的接口。具体访问者(ConcreteVisitor)角色:  实现抽象访问者角色所声明的接口,也就是抽象访问者所声明的各个访问操作。

2022-01-04 10:10:37 78

原创 3.7 备忘录模式(行为)

说明:来源培训讲义资料目录备忘录模式1、概念2、角色和职责3、应用场景4、案例备忘录模式1、概念  Memento模式也叫备忘录模式,是行为模式之一,它的作用是保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态。2、角色和职责Originator(原生者)  需要被保存状态以便恢复的那个对象。Memento(备忘录)  该对象由Originator创建,主要用来保存Originator的内部状态。Caretaker(管理者)   负责在适当的时间保存

2022-01-03 22:47:47 75

原创 3.6 观察者模式(行为)

说明:来源培训讲义资料目录观察者模式1、概念2、角色和职责3、典型应用4、案例观察者模式1、概念  Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态。  Observer模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步。2、角色和职责Subject(被观察者)  被观察的对象。当需要被观察的状态发生变化时,需要通知队列中所有观察者对象。Subject需要维持(添加,删除,通知)一个观察者

2022-01-03 22:43:01 103

原创 3.5 中介者模式(行为)

说明:来源培训讲义资料目录中介者模式1、概念2、角色和职责3、案例中介者模式1、概念  Mediator模式也叫中介者模式,是由GoF提出的23种软件设计模式的一种。Mediator模式是行为模式之一,在Mediator模式中,类之间的交互行为被统一放在Mediator的对象中,对象通过Mediator对象同其他对象交互,Mediator对象起着控制器的作用。2、角色和职责  GOOD:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示的相互引用,从而降低耦合;而且可以独立地改变它

2022-01-03 22:38:38 76

原创 3.4 策略模式(行为)

说明:来源培训讲义资料目录策略模式1、概念2、角色和职责3、策略模式优缺点4、案例策略模式1、概念  Strategy模式也叫策略模式是行为模式之一,它对一系列的算法加以封装,为所有算法定义一个抽象的算法接口,并通过继承该抽象算法接口对所有的算法加以封装和实现,具体的算法选择交由客户端决定(策略)。Strategy模式主要用来平滑地处理算法的切换 。2、角色和职责Strategy:  策略(算法)抽象。ConcreteStrategy  各种策略(算法)的具体实现。Context  

2022-01-03 22:32:17 72

原创 3.3 责任链模式(行为)

说明:来源培训讲义资料目录责任链模式1、概念2、角色和职责3、责任链优缺点4、案例责任链模式1、概念  Chain of Responsibility(CoR)模式也叫职责链模式或者职责连锁模式,是行为模式之一,该模式构造一系列分别担当不同的职责的类的对象来共同完成一个任务,这些类的对象之间像链条一样紧密相连,所以被称作职责链模式。  例1:比如客户Client要完成一个任务,这个任务包括a,b,c,d四个部分。首先客户Client把任务交给A,A完成a部分之后,把任务交给B,B完成b部分,…,

2022-01-03 22:27:44 63

原创 3.2 命令模式(行为)

说明:来源培训讲义资料目录命令模式1、概念2、角色和职责3、案例命令模式1、概念  Command模式也叫命令模式 ,是行为设计模式的一种。Command模式通过被称为Command的类封装了对目标对象的调用行为以及调用参数。  在面向对象的程序设计中,一个对象调用另一个对象,一般情况下的调用过程是:创建目标对象实例;设置调用参数;调用目标对象的方法。  但在有些情况下有必要使用一个专门的类对这种调用过程加以封装,我们把这种专门的类称作command类。  整个调用过程比较繁杂,或者存在多处这

2022-01-03 22:21:10 162

原创 3.1 模板模式(行为)

说明:来源培训讲义资料目录模板模式1、概念2、应用场景3、角色和职责4、案例模板模式1、概念  Template Method模式也叫模板方法模式,是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。2、应用场景Template Method模式一般应用在具有以下条件的应用中:具有统一的操作步骤或操作过程具有不同的操作细节存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同总结:  在抽象类中统一操作

2022-01-03 22:11:25 54

原创 2.7 享元模式(结构型)

说明:来源培训讲义资料目录享元模式1、概念2、角色和职责3、案例享元模式1、概念  Flyweight模式也叫享元模式,是构造型模式之一,它通过与其他类似对象共享数据来减小内存占用。2、角色和职责抽象享元角色:  所有具体享元类的父类,规定一些需要实现的公共接口。具体享元角色:  抽象享元角色的具体实现类,并实现了抽象享元角色规定的方法。享元工厂角色:  负责创建和管理享元角色。使用场景:  是以共享的方式,高效的支持大量的细粒度的对象。3、案例#include <

2022-01-03 21:50:03 49

原创 2.6 外观模式(结构型)

说明:来源培训讲义资料目录外观模式1、概念2、角色和职责3、案例外观模式1、概念   Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种。Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界面被称作facade。2、角色和职责Façade  提供一个外观接口,对外,它提供一个易于客户端访问的接口,对内,它可以访问子系统中的所有功能。。Clients  调用者。通过Facade接口调用提供某功能的内部类群。Sub

2022-01-03 21:43:09 51

原创 2.5 桥接模式(结构型)

说明:来源培训讲义资料目录桥接模式1、概念2、角色和职责3、案例桥接模式1、概念  Bridge 模式又叫做桥接模式,是构造型的设计模式之一。  Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。  它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。2、角色和职责Client  Bridge模式的使用者Abstraction  抽象类接口(接

2022-01-03 12:31:36 68

原创 2.4 组合模式(结构型)

说明:来源培训讲义资料目录组合模式1、概念2、角色和职责3、案例组合模式1、概念  Composite模式也叫组合模式,是构造型的设计模式之一。通过递归手段来构造树形的对象结构,并可以通过一个对象来访问整个对象树。2、角色和职责Component(树形结构的节点抽象)为所有的对象定义统一的接口(公共属性,行为等的定义)提供管理子节点对象的接口方法[可选]提供管理父节点对象的接口方法Leaf (树形结构的叶节点)Component的实现子类Composite(树形结构的枝节点)

2022-01-02 11:28:38 75

原创 2.3 适配器模式(结构型)

说明:来源培训讲义资料目录适配器模式adapter1、概念2、角色和职责3、案例适配器模式adapter1、概念  Adapter模式也叫适配器模式,是构造型模式之一,通过Adapter模式可以改变已有类(或外部类)的接口形式。2、角色和职责适用于:  是将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。3、案例#include <iostream>using namespace std;class Current18

2022-01-02 10:49:20 411

原创 2.2 装饰模式(结构型)

说明:来源培训讲义资料目录装饰模式1、概念2、类图角色和职责3、案例装饰模式1、概念  装饰( Decorator )模式又叫做包装模式。通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案。  装饰模式就是把要添加的附加功能分别放在单独的类中,并让这个类包含它要装饰的对象,当需要执行时,客户端就可以有选择地、按顺序地使用装饰功能包装对象。2、类图角色和职责适用于:  装饰者模式(Decorator Pattern)动态的给一个对象添加一些额外的职责。就增加功能来说,此模

2022-01-01 09:50:52 136

原创 2.1代理模式(结构型)

说明:来源培训讲义资料目录代理模式1、概念2、类图角色和职责案例1案例2代理模式1、概念  Proxy模式又叫做代理模式,是构造型的设计模式之一,它可以为其他对象提供一种代理(Proxy)以控制对这个对象的访问。   所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理。2、类图角色和职责subject(抽象主题角色):  真实主题与代理主题的共同接口。RealSubject(

2021-12-31 17:07:49 86

原创 1.6 原型模式(创建)

说明:来源培训讲义资料目录原型模式1概念2 案例原型模式1概念  Prototype模式是一种对象创建型模式,它采取复制原型对象的方法来创建对象的实例。使用Prototype模式创建的实例,具有与原型一样的数据。1)由原型对象自身创建目标对象。也就是说,对象创建这一动作发自原型对象本身。2)目标对象是原型对象的一个克隆。也就是说,通过Prototype模式创建的对象,不仅仅与原型对象具有相同的结构,还与原型对象具有相同的值。3)根据对象克隆深度层次的不同,有浅度克隆与深度克隆。角色和职责

2021-12-31 16:33:53 79

原创 1.5建造者模式(创建)

说明:来源培训讲义资料目录建造者模式5.1概念5.2 角色和职责5.3适用情况:5.4 创建者模式和工厂模式的区别5.5案例建造者模式5.1概念  Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。   Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。  对象的创建:Builder模式是为对象的创建而设计的模式, 创建的是一个复合对象,被创建的对象为

2021-12-31 15:50:57 81

转载 1.4 抽象工厂模式(创建)

说明:来源培训讲义资料创建型模式 4-抽象工厂模式抽象工厂4.1概念4.2产品族和产品等级结构4.3模式中包含的角色及其职责4.4案例抽象工厂4.1概念  抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。4.2产品族和产品等级结构备注:  工厂模式:要么生产香蕉、要么生产苹果、要么生产西红柿;但是不能同时生产一个产品组。  抽象工厂:能同时生产一个产品族。===》抽

2021-12-31 15:27:25 62

原创 1.3 工厂模式(创建)

说明:来源培训讲义资料创建型模式 3-工厂模式3 工厂模式3.1概念3.2类图角色和职责3.3工厂方法模式和简单工厂模式比较3 工厂模式3.1概念  工厂方法模式同样属于类的创建型模式又被称为多态工厂模式 。工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。  核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。3.2类图角色和职

2021-12-31 15:18:23 60

原创 1.2 简单工厂模式(创建)

说明:来源培训讲义资料创建型模式 2-简单工厂模式2 简单工厂模式2.1什么是简单工厂模式2.2模式中包含的角色及其职责2.3案例2.4练习2 简单工厂模式2.1什么是简单工厂模式  简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。2.2模式中包含的角色及其职责1.工厂(Creator)角色  简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。2.抽象(Pr

2021-12-31 15:06:50 49

转载 1.1 单例模式(创建)

创建型模式11 单例模式1.1 概念1.2 为什么使用单例模式1.3 实现单例步骤常用步骤1.4 饿汉式单例和懒汉式单例1.5 多线程下的懒汉式单例和饿汉式单例1.6 多线程下懒汉式单例的Double-Checked Locking优化1.7 程序并发机制扩展阅读1.8 总结1 单例模式1.1 概念  单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。  GoF对单例模式的定义是:保证一个类、只有一个实例存在,同时提

2021-12-31 14:33:49 153

转载 设计模式基础

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-12-31 11:05:14 262

原创 linux常用内容

文件及目录treelscdpwdmkdir rmdir touch rmcpcat more less head taillnwc od du dfwhich文件用户相关whoamichmodchown chgrp --超级用户才能使用查找 检索findgrep磁盘管理(U盘)mountumount...

2021-11-08 23:02:27 37

原创 linux ls -l 文件类型参数

这里写目录标题介绍二级目录三级目录介绍二级目录三级目录

2021-11-08 22:24:00 299

原创 Linux 系统目录结构

Linux 系统目录结构登录系统后,在当前命令窗口下输入命令:ls / 如下图所示:树状目录结构:以下是对这些目录的解释:/bin:  bin是Binary的缩写, 这个目录存放着最经常使用的命令。/boot:  这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev :  dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。/etc:  这个目

2021-11-06 14:14:08 41

原创 排序

// test.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include "stdio.h"#define __FLAG_void printfarray(int array[], int icount){ if (array == NULL || icount == 0) return; for (int i = 0; i < icount; i++) { std::cout <&

2021-03-09 22:49:25 61

转载 c++ 左右值 左值引用 右值引用 常量引用以及move语义

目录一、左值和右值二、左值引用三、常量左值引用四、右值引用五、move语义一、左值和右值1、左值:具有存储性质的对象,要占用内存空间、内存地址;位于赋值运算符左边时可以赋值(同时也可以用在右边)2、右值:没有存储性质的对象, 也就是临时对象。位于赋值运算符左边时不可赋值。int a = 10;int b = 20;int *pFlag = &a;vector<int> vctTemp;vctTemp.push_back(1);string str1 = "hello "

2021-03-04 18:59:44 652 1

原创 c/c++复杂指针相关声明

目录指针数组数组指针指针函数函数指针复杂的声明指针数组  首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身的大小决定,每一个元素都是一个指针,在32 位系统下任何类型的指针永远是占4 个字节。它是“储存指针的数组”的简称char *arr[4] = {"hello", "world", "shannxi", "xian"};数组指针  首先它是一个指针,它指向一个数组。在32 位系统下任何类型的指针永远是占4 个字节,至于它指向的数组占多少字节,不知道,具体要看数组大小。它是“指

2021-03-04 12:30:41 214 1

原创 c++类型转换 static_cast reinterpreter_cast dynamic_cast const_cast

目录1、static_cast2、reinterpreter_cast3、dynamic_cast4、 const_cast5、转换的格式6、一般结论C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。1、static_cast  静态类型转换。如int转换成char。编译的时c++编译器会做类型检查,基本类型能转换 但是不能转换指针类型2、reinterpreter_cast  重新解释类型;不同类型之间,进行强制类型转换,用reinterpret_cast<>() 进

2021-03-03 11:40:17 165

原创 mysql插入批量数据

目录一、建表二、编写随机函数三、创建存储过程四、调用存储过程五、删除某个表上的所有所有一、建表dept 部门表CREATE TABLE `dept` (`id` INT(11) NOT NULL AUTO_INCREMENT,`deptName` VARCHAR(30) DEFAULT NULL,`address` VARCHAR(40) DEFAULT NULL,ceo INT NULL ,PRIMARY KEY (`id`)) ENGINE=INNODB AUTO_INCREMEN

2021-03-02 11:19:39 86

转载 c++常用容器比较

目录1. vector的特点内存特点: 内存空间连续,随机访问效率高。插入删除:插入或者删除某个元素,需要将现有元素进行复制,移动。   如果vector中存储的对象很大,或者构造函数复杂,则在对现有元素进行拷贝时开销较大,因为拷贝对象要调用拷贝构造函数。对于简单的小对象,vector的效率优于list。vector在每次扩张容量的时候,将容量扩展2倍,这样对于小对象来说,效率是很高的。应用场景:vector适用于对象数量少,简单对象,随机访问元素频繁。支持高效的随机访问和尾端插入、删除操作,其它

2021-01-26 14:33:52 366

原创 vs2017下boost库编译

目录下载编译下载下载:http://www.boost.org  这里我用的是windows,选择的是boost_1_75_0.zip。linux可以选择后缀为tar.gz和其他的。  下载后解压,目录如下图编译说明   Boost库大多数组件不需要编译链接,在源码里直接包含头文件即可。例如,如果要使用boost::tribool,只需要在c++源文件中添加include语句(当然,可能还需要" using namespace boost;"):#include <boost

2021-01-22 10:56:06 952

原创 mysql 常用时间函数

CURRENT_DATE (  ) 当前日期curdate()mysql> select current_date(),curdate();±---------------±-----------+| current_date() | curdate() |±---------------±-----------+| 2020-11-03 | 2020-11-03 |±---------------±-----------+CURRENT_TIME ( 

2020-11-03 12:03:33 206

原创 centos7安装mysql8

目录安装前准备下载安装安装前准备1.查看已经安装的mysql[ll@ll ~]$ rpm -aq | grep mysqlqt-mysql-4.8.5-13.el7.x86_64akonadi-mysql-1.9.2-4.el7.x86_642.卸载旧的版本rpm -e mysql --nodeps --allmatches (不理会依赖关系,删除所有上一步查出来的相同的mysql)[root@ll ll]# rpm -aq | grep mysqlqt-mysql-4.8.5-

2020-10-27 22:09:22 111

原创 VS2019 内存泄漏检测工具VLD(Visual Leak Detector)

目录一.下载安装二.使用一.下载安装下载地址安装:接受协议,一直下一步就可以了二.使用  通常安装完成后,会自动将其include目录添加到VS的附加安装目录,将其静态库目录(lib目录)添加到VS的附加库目录,无需手动添加include目录和lib目录。但在项目中经常不会安装,而是拷贝一份包含目录使用。头文件库文件目录工程右键 “属性”–>“配置属性”->“VC++目录”–>“包含目录” 添加…\include目录工程右键 “属性”–>“配置属性”->“V

2020-10-27 15:22:24 2297 3

原创 内存映射读文件

目录封装类调用封装类class CmyFileMap{public: CmyFileMap() { m_szPath = ""; m_pdata = NULL; }; CmyFileMap(CString szpath) { m_szPath = szpath; m_pdata = NULL; } void* start(CString szpath) { m_szPath = szpath; if (m_szPath == "") { return NULL; }

2020-10-27 09:49:56 82

原创 UML图

目录概述二级目录三级目录概述UML(United Modeling Language, 统一建模语言): 是一种基于面向对象的可视化建模语言UML 采用了一组形象化的图形(如类图)符号作为建模语言, 使用这些符号可以形象地描述系统的各个方面UML 通过建立图形之间的各种关系(如类与类之间的关系)来描述模型UML图分为用例视图(用例)、设计视图(类,对象)、进程视图(序列,协作,状态,活动)、实现视图(构件)和拓扑视图(部署),又可以静动分为静态视图和动态视图二级目录三级目录...

2020-10-26 14:39:32 457

空空如也

空空如也

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

TA关注的人

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