自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (4)
  • 收藏
  • 关注

原创 小软件基础骨架

#include <iostream>#include <memory>using namespace std;// 组件struct ComBase { // 展开UI面板 virtual void show() = 0;};///////////////////////////////////////////////////////////////////////////struct ComA : public ComBase { virtu.

2020-07-25 16:48:07 148

原创 基于Boost::Asio的定时器模块

timer.hpp#include <list>#include <memory>#include <mutex>#include <boost/asio.hpp>#include <boost/asio/deadline_timer.hpp>typedef boost::system::error_code boost_error_code;using namespace boost::asio;using namespac

2020-06-12 16:38:17 400

原创 C++流日志的简单实现

头文件 logger.h :#ifndef LIM_LOGGER_INCLUDE#define LIM_LOGGER_INCLUDE#include <iostream>#include <sstream>#include <memory>// 强枚举类型,阻止普通变量代入enum class LOGGER_LEVEL { LOGGER_INFO, LOGGER_DEBUG, LOGGER_ERROR, LOGGER

2020-06-05 11:07:08 735

原创 C++设计模式——观察者模式

观察者模式在GOF的《设计模式:可复用面向对象软件的基础》一书中对观察者模式是这样说的:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。当一个对象发生了变化,关注它的对象就会得到通知;这种交互也称为发布-订阅(publish-subscribe)。目标是通知的发布者,它发出通知时并不需要知道谁是它的观察者。再说说上面的数据和图之间的关...

2020-01-17 16:37:05 292 1

原创 C++设计模式——状态模式

前言在实际开发中,我们经常会遇到这种情况;一个对象有多种状态,在每一个状态下,都会有不同的行为。那么在代码中我们经常是这样实现的。typedef enum tagState{ state, state1, state2}State; void Action(State actionState){ if (actionState == st...

2020-01-17 16:36:59 279

原创 C++设计模式——访问者模式

访问者模式在GOF的《设计模式:可复用面向对象软件的基础》一书中对访问者模式是这样说的:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由地演化。该模式的目的是要把处理从数据结构分离出来。访问者模式让增加新的操作很容易,因为增加新的操作就意味着增加一个新的访...

2020-01-17 16:36:50 149

原创 C++设计模式——策略模式

策略模式在GOF的《设计模式:可复用面向对象软件的基础》一书中对策略模式是这样说的:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。该模式使得算法可独立于使用它的客户而变化。策略模式为了适应不同的需求,只把变化点封装了,这个变化点就是实现不同需求的算法,但是,用户需要知道各种算法的具体情况。就像上面的加班工资,不同的加班情况,有不同的算法。我们不能在程序中将计算工资的算法进行...

2020-01-17 16:36:47 153

原创 C++设计模式——模板方法模式

模板方法模式在GOF的《设计模式:可复用面向对象软件的基础》一书中对模板方法模式是这样说的:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的接口即可重定义改算法的某些特定步骤。我结合我在实际开发项目中的一个例子来说说这个模板方法模式吧。我们曾经做过一款产品,这个产品类似于一个云端的文件管理客户端。对于这样的一个客户端,由于其云端的...

2020-01-17 16:36:43 152

原创 C++设计模式——备忘录模式

备忘录模式在GOF的《设计模式:可复用面向对象软件的基础》一书中对备忘录模式是这样说的:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。有时有必要记录一个对象的内部状态。为了允许用户取消不确定的操作或从错误中恢复过来,需要实现检查点和取消机制,而要实现这些机制,你必须事先将状态信息保存在某处,这样才能将对象恢复到它们先前...

2020-01-16 17:45:59 116

原创 C++设计模式——中介者模式

前言我们都知道,这个国际政治是一门很深的学问,不玩政治的人是搞不懂的。那么多的国家,国家之间的关系又及其复杂;就好比现在,美国和中国有经济利益关系,美国又和日本有盟友关系,朝鲜又和中国有说不清道不明的关系;这些复杂的关系,稍微处理不好,就可能引发局部战争,更有可能引发第三次世界大战。如果出现了国与国之间出现了利益纠纷,那么该怎么办呢?这个时候,联合国出现了。联合国就是一个处理国与国之间纠纷的中...

2020-01-16 17:45:50 120

原创 C++设计模式——迭代器模式

前言最近非常感伤,总是怀念大学的日子,做梦的时候也常常梦到。梦到大学在电脑前傻傻的敲着键盘,写着代码,对付着数据结构与算法的作业;建立一个链表,遍历链表,打印链表。现在把那个时候声明的链表的头文件拿出来看看:typedef struct tagNode{ int value; tagNode *pPre; tagNode *pNext;}Node; ...

2020-01-16 17:45:44 117

原创 C++设计模式——解释器模式

解释器模式在GOF的《设计模式:可复用面向对象软件的基础》一书中对解释器模式是这样说的:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。就如上面说的那个游戏,我输入up walk ...

2020-01-16 17:45:38 209

原创 C++设计模式——命令模式

什么是命令模式?在GOF的《设计模式:可复用面向对象软件的基础》一书中对命令模式是这样说的:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。在OOP中,一切都是对象,将请求封装成对象,符合OOP的设计思想,当将客户的单个请求封装成对象以后,我们就可以对这个请求存储更多的信息,使请求拥有更多的能力;命令模式同样能够把请求发送者和接...

2020-01-16 17:45:27 135

原创 C++设计模式——职责链模式

什么是职责链模式?在GOF的《设计模式:可复用面向对象软件的基础》一书中对职责链模式是这样说的:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,直到有一个对象处理它为止;如下图:对于每个角色,他们都有他们的职责;当我提交了休假申请时,项目经理需要判断,看看自己能否处理,如果休假超过了2个小时,那么项目经理就不能处理了;项目经理将这个请求提交...

2020-01-16 17:45:21 167

原创 C++设计模式——代理模式

什么是代理模式?在GOF的《设计模式:可复用面向对象软件的基础》一书中对代理模式是这样说的:为其他对象提供一种代理以控制对这个对象的访问。结合上面的游戏代理的例子和下面的图,我们来进行分析一下。以前你是这样玩游戏:现在有了游戏代理,你是这样玩游戏:代理服务器干了什么?它代替你去和游戏服务器进行交互。它访问游戏服务器的速度比你使用校园网访问游戏服务器的速度快很多。所以,你的游戏延...

2020-01-16 17:45:15 137

原创 C++设计模式——外观模式

前言在实际开发时,面对一个大的系统,总是会将一个大的系统分成若干个子系统,等子系统完成之后,再分别调用对应的子系统来完成对应的整体功能,这样有利于降低系统的复杂性;最终进行实现某个具体的功能时,我们将对应的子系统进行组合就好了;但是,子系统那么多,关系那么复杂,组合形成一个完整的系统,是存在难度的。我们在使用visual studio进行编译C++代码时,你只是在菜单中选择了Build,然...

2020-01-16 17:45:03 267

原创 C++设计模式——享元模式

什么是享元模式?在GOF的《设计模式:可复用面向对象软件的基础》一书中对享元模式是这样说的:运用共享技术有效地支持大量细粒度的对象。就如上面说的棋子,如果每个棋子都new一个对象,就会存在大量细粒度的棋子对象,这对服务器的内存空间是一种考验,也是一种浪费。我们都知道,比如我在2013号房间和别人下五子棋,2014号房间也有人在下五子棋,并不会因为我在2013号房间,而别人在2014号房间,...

2020-01-16 17:45:01 101

原创 C++大数运算

#include <cstring>#include <string>#include <iostream>using namespace std;constexpr auto MAXN = 9999;constexpr auto MAXSIZE = 1000;constexpr auto DLEN = 4;class BigN{priv...

2020-01-16 17:44:41 1683

原创 C++设计模式——装饰模式

前言在实际开发时,你有没有碰到过这种问题;开发一个类,封装了一个对象的核心操作,而这些操作就是客户使用该类时都会去调用的操作;而有一些非核心的操作,可能会使用,也可能不会使用;现在该怎么办呢?将这些非核心的操作全部放到类中,这样,一个类就包含了很多核心的操作和一些看似有关,但是又无关的操作;这就会使核心类发生“爆炸”的现象,从而使核心类失去了一定的价值,也使使用核心类的客户在核心操作和非核...

2020-01-12 18:26:55 204

原创 C++设计模式——组合模式

问题描述上图,是一个公司的组织结构图,总部下面有多个子公司,同时总部也有各个部门,子公司下面有多个部门。如果对这样的公司开发一个OA系统,作为程序员的你,如何设计这个OA系统呢?先不说如何设计实现,接着往下看,看完了下面的内容,再回过头来想怎么设计这样的OA系统。什么是组合模式?在GOF的《设计模式:可复用面向对象软件的基础》一书中对组合模式是这样说的:将对象组合成树形结构以...

2020-01-12 18:26:04 125

原创 C++设计模式——桥接模式

问题描述现在要去画一个图形,图形有长方形、圆形和扇形等等;而图形又可以加上不同的颜色,然后,我们就可以画出红色的长方形,绿色的长方形;红色的圆形,绿色的圆形等等。而这种图形的形状在变化,图形的颜色也在变化,当使用代码去实现时,如何面对这种多方面的变化呢?这就要说到今天的桥接模式了。什么是桥接模式?对于上述的图形与颜色的问题时,很多时候,我们让各个图形类继承颜色类,比如:cl...

2020-01-12 18:25:00 174

原创 C++设计模式——原型模式

什么是原型模式?在GOF的《设计模式:可复用面向对象软件的基础》中是这样说的:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。这这个定义中,最重要的一个词是“拷贝”,也就是口头上的复制,而这个拷贝,也就是原型模式的精髓所在。举一个最简单的例子来说明原型模式:记得上小学的时候,老师把需要做的课外习题写到黑板上,而下面的我们都要把这些题抄写到自己的本子上,回家做好,第二天交上来...

2020-01-12 18:23:41 138

原创 C++设计模式——建造者模式

建造者模式在GOF的《设计模式 可复用面向对象软件的基础》中是这样说的:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。这句话,似懂非懂的。一个复杂对象的创建,其通常是由很多的子对象构成;如果一个对象能够直接就创建好了,那么也不会称之为复杂对象。由于项目中需求的变化,这个复杂对象的各个部分经常会发生剧烈的变化,但是,不管怎么变化,将它们组合在一起,组成一个复杂的对...

2020-01-12 18:22:32 161

原创 C++设计模式——单例模式

问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中,会专门有一个日志模块,负责写日志,由于在系统的任何地方,我们都有可能要调用日志模块中的函数,进行写日志。那么,如何构造一个日志模块的实例呢?难道,每次new一个日志模块实例,写完日志,再delete,不要告诉我你是这么干的。在C++中,可以构造一个日志模块的全局变量,那么在任何地方就都可以用...

2020-01-12 18:20:53 127

原创 C++设计模式——抽象工厂模式

问题描述之前讲到了C++设计模式——工厂方法模式,我们可能会想到,后期产品会越来越多了,建立的工厂也会越来越多,工厂进行了增长,工厂变的凌乱而难于管理;由于工厂方法模式创建的对象都是继承于Product的,所以工厂方法模式中,每个工厂只能创建单一种类的产品,当需要生产一种全新的产品(不继承自Product)时,发现工厂方法是心有余而力不足。举个例子来说:一个显示器电路板厂商,旗下的显示器电...

2020-01-12 18:18:28 164

原创 C++设计模式——工厂方法模式

问题描述之前讲到了C++设计模式——简单工厂模式,由于简单工厂模式的局限性,比如:工厂现在能生产ProductA、ProductB和ProductC三种产品了,此时,需要增加生产ProductD产品;那么,首先是不是需要在产品枚举类型中添加新的产品类型标识,然后,修改Factory类中的switch结构代码。是的,这种对代码的修改,对原有代码的改动量较大,易产生编码上的错误(虽然很简单,如果工...

2020-01-12 18:17:40 195

原创 C++设计模式——简单工厂模式

问题描述之前在公司做了一个windows 8平台的阅读器。首先,需要将电子书中的内容渲染到屏幕上,而电子书每一页都包含各种各样的内容,比如:图形、图像和文字等等;不同的内容,就是不同的对象;在将不同的内容渲染到屏幕上之前,就需要new操作,建立不同的对象,然后再在屏幕上进行描绘。这个时候,就需要进行很多new操作,new操作分布在代码的不同地方,管理起来很麻烦,而且也很乱,到后期扩展和维护的时...

2020-01-12 18:16:49 98

原创 C++设计模式——适配器模式

生活中的适配器买笔记本电脑,买手机时,都有一个电源适配器,电源适配器又叫外置电源,是小型便携式电子设备及电子电器的供电电压变换设备,常见于手机,笔记本电脑上。它的作用是将家里的220V高电压转换成这些电子产品能工作的5V~20V左右稳定的低电压,使它们能正常工作。就是说,如果没有这个电源适配器,我们的手机和电脑就不能进行充电了。之前同事去日本出差,由于工作需要,就将自己的笔记本带过去了。到...

2020-01-12 18:13:07 207

原创 avl tree

#ifndef_AVL_TREE_HPP_#define_AVL_TREE_HPP_#include<iomanip>#include<iostream>usingnamespacestd;template<classKeyType>classAVLTreeNode{public:Key...

2020-01-12 14:34:55 138

原创 boost+soci+sqlite3编译教程

准备boost库1)、在boost官网(https://www.boost.org/)下载最新boost源码。2)、解压源码zip文件,执行其中的bat文件,得到b2.exe。3)、使用vs命令行工具cd进源码根目录(用管理员权限运行)。4)、执行以下命令(可以同时启用4个cmd窗口):b2installstage--toolset=msvc-14.0--sta...

2019-11-04 10:19:28 1495

原创 基于Boost::Asio的高性能服务器封装---windows、linux、mac跨平台支持!(C++11、14、17)

直接上代码:/*** @file z_asio.h* @the header file of C++ network.* @author dqsjqian Mr.Zhang* @mail [email protected]* @date May 19 2019*/#pragma once#include <algorithm>#include <memo...

2019-05-19 14:27:56 1878

原创 基于C++11标准库的动态线程池,支持随时调整大小、暂停、重启、关闭等操作,支持等待任务执行结果

作者申明:1、以下线程池方案由本人(大谦世界)原创,公开且共享,转载请注明出处。2、若用于实际工作中,产生的bug后果自负,本人概不负责!3、方案实现可能并不完善,懂行的自然看得出来,后续可能会对部分接口重写。4、对于方案代码的注释说明比较完善,懂的自然懂,不懂的注释再多也没用。 众所周知,C/C++标准库没有线程池,且似乎直到21标准仍然没有。因此,本人设计...

2018-09-02 16:54:31 2611 1

高速文件加解密工具(可作为私人文件、文件夹保险箱)

内部基于C++11线程设计了高并发线程池,采用本人独家设计的edm加解密算法,可以实现对文件的高速加解密,1秒加解密3万小文件,5000大文件。软件使用密码:0101 。 注意:工作强大,乃双刃剑,是利是弊取决于使用者,请勿用于破坏计算机,否则后果自负! (如果运行时提示缺少xxx.dll ,请自行安装 vc++2015运行时)

2018-07-13

发邮件小工具

基于C++11 tcp/ip实现的一个邮箱发送工具,为控制台应用程序,可以正常的发出邮件,并且还可以添加附件,功能强大,欢迎体验。(如果运行时提示缺少xxx.dll ,请自行安装 vc++2015运行时)

2018-07-13

U盘量产工具

U盘呗写保护怎么办???不要怕,本软件十分强大,可将一切写保护的U盘恢复出厂设置,恢复正常!

2014-11-24

空空如也

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

TA关注的人

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