自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (15)
  • 收藏
  • 关注

转载 设计模式(11):C++桥接模式

一 作用将抽象部份与它的实现部份分离,使它们都可以独立地变化。将抽象(Abstraction)与实现(Implementation)分离,使得二者可以独立地变化。二 UML类图三 举个栗子#pragma once#include <iostream>class AbstractionImplement {public: virtual ~AbstractionImplement() = default; virtual void operatio

2022-02-13 16:58:12 98

转载 设计模式(9):C++模板方法模式

目录一 作用二 UML类图三 举个栗子一 作用模板方法定义一个操作中的算法骨架,而将一些步骤延迟到子类中实现。模板方法使得子类可以再不改变一个算法的结构即可重新定义该算法的某些特定步骤。通过把不变的行为搬移到基类中,去除了子类的重复代码,提供了一个很好的代码复用解决方案。二 UML类图三 举个栗子//template.h#pragma once#include <iostream>class Template {public: vir

2022-02-12 15:55:06 97

转载 设计模式(8):C++代理模式

目录一 作用二 UML类图三 举个栗子一 作用代理模式也称为委托模式。作用就是找一个对象来替我们访问某个对象。意图:为其他对象提供一种代理以控制对这个对象的访问。二 UML类图Subject:定义RealSubject和Proxy的共用接口,这样就可以在任何使用RealSubject的地方都可以使用Proxy。RealSubject:真实处理业务的角色。Proxy:保存一个引用使得代理可以访问实体。提供一个与Subject的接口相同的接口,这样代理就可以用来代替实体

2022-02-12 15:41:28 127

转载 设计模式(7):C++组合模式(Composite)

目录作用:UML图如下:何时使用组合模式:抽象基类:接口函数:说明:代码如下:作用:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。UML图如下:在Component中声明所有用来管理子对象的方法,其中包括Add、Remove等,这样实现Component接口的所有子类都具备了Add和Remove。这样做的好处就是叶节点和枝节点对于外界没有区别,它们具备 完全一致的行为 接口。但问题也很明

2022-02-12 15:27:29 191

转载 设计模式(6):C++工厂+注册

实现动机最近项目中需要用到工厂模式,但是普通的工厂模式面临一个问题,每新增一个派生类,都需要在工厂中加一个case分支,这样就会频繁地修改工厂的代码,而且随着派生类越来越多,case分支也逐渐增多,代码越来越臃肿,对于后期的维护也不友好。下面是一个工厂方法的伪代码:Message* create(int type){ switch (type) { case MSG_PGSTATS: m = new MPGStats; break;

2022-02-12 15:19:42 1139

转载 设计模式(5):C++装饰模式

目录简介动机适用性结构装饰模式的参与者效果注意点实例UML图代码与函数代码总结简介动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式比生成子类更为灵活。动机有时我们希望给某个对象而不是整个类添加一些功能。使用继承机制是添加功能的一种有效途径,但不够灵活,用户不能控制对组件添加功能的方式和时机。一种较为灵活的方式是将组件嵌入另一个对象中,由这个对象添加功能,我们称这个嵌入的对象为装饰。这个装饰与它所装饰的组件接口一致,因此它

2022-02-12 15:14:17 51

转载 设计模式(4):C++适配器模式

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

2022-02-12 15:06:45 80

转载 设计模式(3):C++策略模式

1. 概述策略模式:定义一系列算法,把它们一个个封装起来,使得它们可以相互替换。策略模式使得算法变化可独立于使用它的用户。优点:①算法可以自由切换。②避免使用多重条件判断。③扩展性良好。缺点:①策略类会增多。②所有策略类都需要对外暴露。2. UML类图3. 代码实现//strategy.h#pragma once#include <iostream>class Strategy {public: virtual ~Strategy..

2022-02-12 14:41:54 80

转载 设计模式(2):C++观察者模式

观察者模式(大话设计模式):(又叫发布-订阅模式) 这是一个有意思的模式 定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己 将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相关对象间的一致性,我们不希望为了维护一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便 当一个对象的改变需要同时改变其他对象,而且它不知道具体有多少的对象有待改变,应该考虑使用观

2022-02-12 14:34:54 117

转载 设计模式(1):C++单例模式

文章目录0.导语 1.众所周知的单例 2.懒汉与饿汉 3.多线程加锁 4.双重检查锁模式 5.memory barrier指令 6.静态局部变量 7.Atomic 8.pthread_once 9.总结 10. 参考文献0.导语相信大家面试都逃不开设计模式话题,本节将阐述面试中的最常用的设计模式(单例模式),从分类,线程安全,不基于C++11标准的角度与基于C++11标准的角度,有哪些解决线程安全的单例模式方案,相信认真看完本篇文章,在以后面试中就不用担忧了。1.众所周

2022-02-12 10:29:14 267

转载 Libevent使用例子,从简单到复杂

本文从简单到复杂,展示如何使用libevent。网上的许多例子都是只有服务器端的,本文里面客户端和服务器端都有,以飨读者。        关于libevent编程时的一些疑问可以阅读《libevent编程疑难解答》。假如读者还想了解libevent的具体实现,可以阅读《libevent源码分析》系统文章。初等:客户端代码:#include&lt;sys/types.h&gt; ...

2018-09-11 22:33:45 97

转载 OBS-Studio使用VS2015编译调试

官方编译文档:https://github.com/jp9000/obs-studio/wiki/Install-Instructions#windows-build-directions官方source guide: https://obsproject.com/wiki/Sources-Guide1、我的本机环境     Win10LTSB企业版、VS2015旗舰版2、下载ob...

2018-09-05 22:58:12 920

转载 c++11 静态成员线程安全

c++11 要求保证函数内部静态变量线程安全。实测是保证静态成员构造的时候线程安全。#include &lt;iostream&gt;#include &lt;unistd.h&gt;#include &lt;pthread.h&gt;using namespace std;class Cnum{public: Cnum() { std::co...

2018-08-21 21:52:00 3104

转载 汇编环境搭建(vs2010(2012)+masm32)

我本地使用的环境VS2012(2010)+MASM32,下面的图是在网上找的几个博客拼在一起的,用的是vs2010,但是并不影响。(所有文件我都打包好了,如果懒的话可以直接下载这个包)地址是:http://download.csdn.net/detail/u013761036/9601184   一、安装masm321.下载安装包(http://www.masm32.com/masmd...

2018-08-19 10:58:48 1048 1

转载 让C++回调函数可以同时支持成员函数和静态函数的方法

回调函数是分层软件系统中经常使用的一种技巧,当下层需要调用上层的接口时,一般都使用回调函数来破除循环依赖。在纯C语言环境中,回调函数用起来很简单——一个函数指针而已。但是当大家都用上C++以后,回调函数碰到了点麻烦:很多模块接口都是成员函数,怎么回调?一些较有经验的程序员会说:成员函数也是可以取函数指针的。没错,但是如果当一个事件触发时,需要依次调用很多个模块的接口呢?(这个场景在“观察者”设...

2018-08-09 21:10:41 747

原创 模板与成员函数指针

#include &lt;iostream&gt;#include &lt;list&gt;using namespace std;/*包装类,成员函数指针类型与普通函数指针类型不同,不能在类外直接定义*/template &lt;class T, class _Ty&gt;class CPtrMaker{public:    //自定义成员函数指针类型    typedef...

2018-08-08 21:58:38 911

转载 C/C++语言字符串操作总结大全(超详细)

字符串操作strcpy(p, p1) 复制字符串strncpy(p, p1, n) 复制指定长度字符串strcat(p, p1) 附加字符串strncat(p, p1, n) 附加指定长度字符串strlen(p) 取字符串长度strcmp(p, p1) 比较字符串strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比较指定长度字符串s...

2018-08-06 21:43:20 544

转载 详解C语言可变参数va_list和vsnprintf及printf实现

C语言的变长参数在平时做开发时很少会在自己设计的接口中用到,但我们最常用的接口printf就是使用的变长参数接口,在感受到printf强大的魅力的同时,是否想挖据一下到底printf是如何实现的呢?这里我们一起来挖掘一下C语言变长参数的奥秘。先考虑这样一个问题:如果我们不使用C标准库(libc)中提供的Facilities,我们自己是否可以实现拥有变长参数的函数呢?我们不妨试试。一步一步进入正...

2018-08-06 21:37:11 336

转载 并行计算简介和多核CPU编程Demo

tag:多线程,并行计算,OpenMP,多核编程,工作线程池( 2008.01.19 更新  鉴于读者反映代码阅读困难,重新改写了文章和实现,使文章更易读 )( 2007.09.04 更新  把用事件控制的线程启动更新为临界区的实现 )    2006年是双核的普及年,双核处理器出货量开始超过单核处理器出货量;2006年的11月份Intel开始供货4核;AMD今年也将发布4核,并计划...

2018-08-06 21:31:34 4491

原创 深入理解C++浮点数(float、double)类型数据比较、相等判断

浮点数在内存中的存储机制和整型数不同,其有舍入误差,在计算机中用近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。所以浮点数在运算过程中通常伴随着因为无法精确表示而进行的近似或舍入。但是这种设计的好处是可以在固定的长度上存储更大范围的数。1、将字符串转换为float、double过程存在精...

2018-08-05 18:07:48 281

原创 VC++实现切换按钮

VC++实现切换按钮有时候要实现两个选项的切换,常规做法1是放两个Radio按钮控件,并设置这两个按钮为一组。2是放一个Check按钮控件。但感觉都不是那么理想和直观。有没有更好的实现方式呢?下面将给你介绍一种我自绘的控件,我把它命名为“切换控件”(SwitchButton)。实现的效果如下图实现,给你一个多的选择,以供参考。下面是实现源码:   //////////...

2018-08-05 17:40:04 725

原创 设计模式C++实现(15)——观察者模式

 软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍观察者模式的实现。        观察者模式:...

2018-08-05 17:34:43 87

转载 在DLL间或者DLL与EXE之间传递vector对象或指针的问题

今天在完成一个功能模块时,遇到了一个很棘手的问题,大概是这样的:主模块(EXE)的一个DLL中有一个函数FunA(),该函数需要查询数据库,得到记录集做处理,而数据库的操作又单独封装导出了一个DLL,由于记录集是变长的(不知道有多少记录),所以采用vector对象来传递数据。大概的过程如下:boolFunA_EXE(){vector&lt;T&gt; vecRet;      ...

2018-08-05 17:29:32 733

转载 在用户线程/主线程中推荐MsgWaitForMultipleObjects代替WaitForSingleObject和WaitForMultipleObjects()函数

在多线程编程中,通常都需要线程间的同步,一个线程要等待另一个线程的事件才继续执行,一般的做法是采用WaitForSingleObject和WaitForMultipleObjects()函数来实现。但在实际的应用中,经常出现等待线程卡死的状况,也就是说等待的事件一直无效。为什么事件一直无效呢?很多的情况是等待线程阻塞了另外的线程,使另外的线程无法设置事件有效。为什么会阻塞呢?原因就比较多了,需要...

2018-08-05 17:27:26 218

转载 STL 序列容器和关联容器erase的用法

之前在代码中使用map::erase函数时,误搬了vector::erase的用法,导致Server down掉了,好在在测试环境就及时发现了问题,在上线前进行了补救==。以下总结一下map::erase的正确用法。首先看一下在循环中使用vector::erase时我习惯的用法:for(vector&lt;int&gt;::iterator it = vecInt.begin(); it...

2018-08-05 17:22:09 298

转载 windbg配置符号

转载:https://blog.csdn.net/nui111/article/details/51893019安装与配置windbg的symbol(符号)第一步 是从 http://www.microsoft.com/ddk/debugging 下载最新版本的 WinDBG,因为符号服务器二进制文件是由 WinDBG 小组开发的。您将需要检查是否有 WinDBG更新版本,因为该小组似乎具有相当紧...

2018-06-02 11:07:20 763

原创 Ubuntu安装netdata监控平台

1.安装工具sudo apt install zlib1g-dev gcc make git autoconf autogen automake pkg-config uuid-dev2.下载netdata项目git clone https://github.com/firehol/netdata.git --depth=13.sudo命令执行sudo ./netdata-installer.s...

2018-04-07 20:11:58 2981

转载 Boost程序库完全开发指南-读书笔记

《Boost程序库完全开发指南——深入C++“准”标准库》读书笔记(一)作者:gysutantoman注:文字、程序片段大部分摘录自书中。1.scoped_ptr 1).scoped_ptr所有权严格,不能转让,一旦scoped_ptr获取了对象的管理权,你就无法再从它那里取回来。 2).scoped_ptr对象生命期结束时,析构函数~scoped_ptr()会使用delete操作符回收资源。...

2018-02-10 22:00:37 576

转载 在阿里云ECS里安装Windows 7 32位中文版

目的:安装Windows 7系统,替换原有的Windows 2008系统(原系统不能再用,请注意备份数据)  过程:   001. 查看当前ECS的系统版本信息,Windows 2008 SP2 标准中文版    002. 查看当前系统设备管理器中,网卡的驱动文件存储位置   003. 查看当前系统占用的空间,大概使用了15GB   00

2017-12-17 09:37:58 4411

转载 阿里云服务器ECS Ubuntu16.04-64-bit学习之一:配置桌面

最近想琢磨下服务器,于是在阿里云上申请了一个Ubuntu16.04-64-bit的服务器练练手,第一次弄还是挺麻烦的。想在公网上搭建web服务器,由于直接server不好看出效果,于是小生先安装个桌面环境,下面是从开始到安装好的整个过程步骤。 下图是最终结果:1. 停止正在运行的实例如果你的服务器当前在运行的话那么你需要先停止运行,否则此步骤可以乎略。具体运行状态是否是停止可以

2017-12-10 13:41:15 1720 3

原创 基于0.12内核实验环境搭建方法

1.前提条件:下载Bochs,我的版本为2.3.7在 http://pan.baidu.com/s/1jGqXm0A 下载linux-0.12-080324.zip在 http://pan.baidu.com/s/1o6DPHaU 下载linux-0.00-050613【Bochs模拟环境下运行的软件包】.zip在 http://pan.baidu.com/s/1gdzQNzt 下

2015-11-29 12:05:39 609

原创 网站大全

1、UltraEdit注册:http://jingyan.baidu.com/article/c275f6bad6ee38e33d756700.html

2015-06-07 22:46:42 224

原创 protobuf的安装和使用

链接网站:http://wenku.baidu.com/link?url=X0CbQRkfFWdwEz219RZXI3Q1Esw4eQepWkrrgzKShwugHzxpOsCFuyCVAkGQeTnIJhWR7GmxvHRlEMH446nVFWJqBZvkBrl1JOujhAO86bC

2015-05-19 21:46:54 326

转载 bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory

bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory2012-05-13 11:23 2083人阅读 评论(1)收藏 举报bashfileunixdoslinuxwindows今天在安装jpeglib库的时候,出现了一点点小问题“bash: ./configure:

2014-12-12 11:50:15 738

二进制数据循环缓存队列

构建环形数据,用于接收二进制数据,先进先出

2022-12-11

http/formdata

multipart/form-data主要是为了解决application/x-www-form-urlencoded编码格式在传输大量二进制数据或包含非ASCII字符文本时的低效问题。multipart/form-data的数据由多个part组成,part间通过boundary分隔符进行分割,每个part由header和content组成 multipart/form-data的格式大致为: ----------------------------904587217962624105581666 Content-Disposition: form-data; name=“projectName” testProject ----------------------------904587217962624105581666 Content-Disposition: form-data; name=“clientName” aaa -----------------------------904587217962624105581666

2022-04-10

srs-4.0release.zip

SRS系列-资料

2021-12-19

C++设计模式.rar

C++类设计模式

2021-04-28

Linux利用nc命令监控服务器端口的方法

最近碰到一个项目,前端用apache htttpd进行发布(80端口),通过双机负载均衡转发到后端的两个tomcat进行处理(8081和8082端口),现在需要随时监控这三个端口的情况,一旦down掉需要能够立即告警处理。批量的系统监控比较好的是用nagios软件来实现,这样小项目专门装一个nagios软件,有点繁琐了。在网上查了一些资料,总结实验了一下,可以用简单的nc命令来实现。

2017-11-12

log4cplus封装

log4cplus封装

2017-06-29

log4cplus在VS2015编译

log4cplus在VS2015编译

2017-06-29

ubuntu 15.04开放mysql远程3306端口

ubuntu 15.04开放mysql远程3306端口

2017-06-29

公积金贷款计算公式(杭州)

只需输入你的月缴纳额(12期),即可计算出贷款总额

2017-06-11

svn 一键安装配置

安装SVN程序之后,只需运行./install.sh,即可完成配置,可以实现开机自动启动SVN服务

2017-05-28

SourceInsight配置文件说明

Consolas字体,整体感觉柔和、字体匀称,突出大写,背景淡绿色。有点像VS的感觉。

2016-06-22

linux QT及qtcreator环境搭建

本文介绍linux(ubuntu和centos都可以)下编译安装QT及qtcreator,有具体的操作步骤,很方便搭建,如需要源码,另行联系

2014-09-12

WIN7(32位) 同步MicrosoftActiveSync_6.1_Chs

经过本人测试,是完全可以的,必须是WIN732位才行。如果是win764位,可以有驱动人生来装驱动

2014-09-12

libstdc++.so.6.0.17(x64)

[root@localhost TMP]# ./qt-opensource-linux-x64-5.2.1.run [root@localhost TMP]# /usr/bin/xdg-open: line 402: htmlview: command not found Failed to load core: /opt/Qt5.2.1/Tools/QtCreator/lib/qtcreator/plugins/QtProject/libCore.so: Cannot load library /opt/Qt5.2.1/Tools/QtCreator/lib/qtcreator/plugins/QtProject/libCore.so: (/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /opt/Qt5.2.1/Tools/QtCreator/lib/qtcreator/plugins/QtProject/../.././libQt5CLucene.so.5))

2014-05-06

QT网络通信源码

qt编写的网络通信程序,可实现客户端与服务端的简单通信,客户端可随意设置用户名、ip和端口号,并接受来自服务端的数据。经过本人亲身体验,该程序可作为网络调试工具,也可以稍加改动,变成自己的小项目。不懂的请联系QQ853298070

2014-04-25

空空如也

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

TA关注的人

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