- 博客(21)
- 收藏
- 关注
转载 单例模式的研究与改进
转载(Singleton(单例)模式和Double-Checked Locking(双重检查锁定)模式)问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中,会专门有一个日志模块,负责写日志,由于在系统的任何地方,我们都有可能要调用日志模块中的函数,进行写日志。那么,如何构造一个日志模块的实例呢?难道,每次new一个日志模块实例,...
2018-03-27 22:25:00
170
转载 (转发)一个通用的C++ 消息总线框架
注:转自https://www.cnblogs.com/qicosmos/archive/2013/04/28/3048919.html应用开发过程中经常会处理对象间通信的问题,一般都是对象或接口的依赖和引用去实现对象间的通信,这在一般情况下是没问题的,但是如果相互通信的对象很多,可能会造成对象间的引用关系像蜘蛛网一样,这样会导致对象关系很复杂,难以维护的问题,解决这个问题的一个好方...
2018-01-22 21:06:00
636
转载 基于std::mutex std::lock_guard std::condition_variable 和std::async实现的简单同步队列
C++多线程编程中通常会对共享的数据进行写保护,以防止多线程在对共享数据成员进行读写时造成资源争抢导致程序出现未定义的行为。通常的做法是在修改共享数据成员的时候进行加锁--mutex。在使用锁的时候通常是在对共享数据进行修改之前进行lock操作,在写完之后再进行unlock操作,进场会出现由于疏忽导致由于lock之后在离开共享成员操作区域时忘记unlock,导致死锁。针对以上的问...
2017-12-17 11:41:00
236
转载 C++11 使用 std::async创建异步程序
c++11中增加了线程,使得我们可以非常方便的创建线程,它的基本用法是这样的:void f(int n);std::thread t(f, n + 1);t.join();但是线程毕竟是属于比较低层次的东西,有时候使用有些不便,比如我希望获取线程函数的返回结果的时候,我就不能直接通过 thread.join()得到结果,这时就必须定义一个变量,在线程函数中去给这个...
2017-12-17 10:58:00
125
转载 -C++11可变模版参数(转载)
泛化之美--C++11可变模版参数的妙用1概述C++11的新特性--可变模版参数(variadictemplates)是C++11新增的最强大的特性之一,它对参数进行了高度泛化,它能表示0到任意个数、任意类型的参数。相比C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进。然而由于可变模版参数比较抽象,使用起来需要一定的技巧,所...
2017-12-10 21:20:00
385
转载 C++基于范围的for循环性能测试(针对std::vector)
1、代码如下:void output1(int x){ if (x == 10000000) { std::cout << x << std::endl; } }const std::string getCurrentSystemTime(){ auto tt = std::chrono::system_clock::to_time_t (std::chr...
2017-12-03 22:18:00
337
转载 C++ 中std::function 、std::bind的使用和lambda的使用
std::function是可调用对象的包装器;std::bind是将可点用对象和其参数一起进行绑定,且绑定后的结果可以使用std::function对象进行保存,并延迟调用到需要调用的时候;在C++中,可调用实体主要包括函数,函数指针,函数引用,可以隐式转换为函数指定的对象,或者实现了opetator()的对象(即C++98中的functor)。C++0x中,新增加了一个std...
2017-12-03 21:32:00
198
转载 C++ auto 关键字的使用
C++98 auto早在C++98标准中就存在了auto关键字,那时的auto用于声明变量为自动变量,自动变量意为拥有自动的生命期,这是多余的,因为就算不使用auto声明,变量依旧拥有自动的生命期:int a =10 ; //拥有自动生命期auto int b = 20 ;//拥有自动生命期static int c = 30 ;//延长了生命期C++98中的...
2017-11-19 20:12:00
108
转载 C++内存管理解析
本文从内存管理、内存泄漏、内存回收这三个方面来探讨C++内存管理问题。1内存管理伟大的Bill Gates曾经失言: 640K ought to be enough for everybody—Bill Gates 1981程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教...
2017-11-05 12:28:00
132
转载 c++类内存分布解析
首先使用Visual Studio工具查看类的内存分布,如下:先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到所有相关类的内存布局,如果写上/d1 reportSingleClassLayoutXXX(XXX为类名),则只会打出指定类XXX的内存布局。近期的VS版本都支持这样配置。下面可...
2017-11-05 11:09:00
96
转载 一个简单的DLL生成和测试
DLL文件内容:SKLDll.h#ifndef _SKLDLL_H_#define _SKLDLL_H_#ifndef DLL_API #define DLL_API extern "C" __declspec(dllexport) #else #define DLL_API extern "C" __declspec(dllimport) #endif DLL_...
2017-08-26 16:10:00
189
转载 Dllmain的作用
DllMain函数是DLL模块的默认入口点。当Windows加载DLL模块时调用这一函数。系统首先调用全局对象的构造函数,然后调用全局函数 DLLMain。DLLMain函数不仅在将DLL链接加载到进程时被调用,在DLL模块与进程分离时(以及其它时候)也被调用。DLL程序入口点函数:DllMain,注意:大小写是区别的(仅导出资源的DLL可以没有DllMain函数)。函数原型...
2017-08-26 15:23:00
482
转载 Windbg入门
注意:本文省略部分为:1.如何加载系统符号。2.如何开启双机调试。这两部分很重要的。0×1 程序代码为了整体掌握windbg的调试流程。本文实例采用自己编写。好处是可以更为主动的熟悉windbg的调试命令,更加直观的查看windbg的显示结果。0×2 windbg调试入口打开windbg,点击:File->Open Executable,选中编译好的exe文件。...
2017-08-10 19:58:00
831
转载 Builder 设计模式的学习
Buileder(生成器)—对象创建型模式一 意图将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。二 适用性在以下情况使用Build模式:1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。2 当构造过程必须允许被构造的对象有不同的表示时。3 Builder模式要解决的也正是这样的问题: 当我们要创建的对象很...
2017-07-23 21:56:00
95
转载 DICOM简介
背景:DICOM分为两大类(这里只是从DICOM相关从业者日常工作角度出发来分类的):1)DICOM医学图像处理,即DCM文件中具体数据的处理,说图像可能有些狭隘,广义上还包括波形(心电)、视频(超声)等等;2)DICOM网络传输,主要描述信息在医院各系统之间的交互方式及传输格式。一旦解析出DICOM的文件格式其实与常规的图像处理就没有差别。如果仅此而已,可以说跟医疗就没有任何关系,...
2017-07-16 11:02:00
767
转载 QT的信号和槽机制简介
信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念、元对象工具以及在实际使用过程中应注意的一些问题。QT是一个跨平台的C++ GUI应用构架,它提供了丰富的窗口部件集,具有面向对象、易于扩展、真正的组件编程等特点,更为引人注目的是目前Linux上最为流行的KDE桌面环境就是建立在QT库的基础之上。QT支持下列平台:MS/WINDOWS-95、...
2017-06-19 09:09:00
124
转载 Qt架构图及模块分析介绍
1、Qt框架图:2、Qt模块组成通用软件开发模块QtCore核心非图形接口类,为其他模块所调用QtGuiGUI(图形用户接口)功能模块QtMultimedia提供低级多媒体功能支持的类QtNetwork提供对网...
2017-05-18 11:27:00
518
转载 VS2013平台安装Qt插件过程
1、下载所需安装包:Qt5.3、Qt插件下载地址:http://qt-project.org/downloads.qt-vs-addin-1.1.11-opensource.exe 下载地址:http://download.qt.io/official_releases/vsaddin/qt-vs-addin-1.1.11-opensource.exe.mirrorlist...
2017-05-16 13:11:00
443
转载 数据库主从数据一致性的几种解决方案
DB主从一致性的几种解决方法起源现在基本所有的程序中都会用到数据库,而数据库其实就是对所有业务逻辑处理结果的保存,所以不论在什么情况下数据的丢失都不被允许的,最坏的情况也要最小化数据的丢失程度,所以一般情况下,数据源都会至少配有两个节点,一个业务处理使用的节点,一个甚至多个从节点,这些从节点就是我们常说的冷备,业务处理节点(主节点)和备份节点一定的时间间隔内进行数据同步,从而来保...
2017-05-08 17:50:00
119
转载 做自己的PHP语法解释器
PHP关键字异构化实验PHP词法分析和语法分析简单理解PHP代码执行过程:http://blog.youkuaiyun.com/risingsun001/article/details/22888861PHP编译执行基本过程如下图:目前PHP词法分析器采用re2c规则,在PHP源码中的位置是zend/zend_language_scanner.c,它是由词法规则文件z...
2017-05-06 16:13:00
272
转载 C++接口的定义与实现的详细过程
1.接口的定义与实现所谓的接口,即将内部实现细节封装起来,外部用户用过预留的接口可以使用接口的功能而不需要知晓内部具体细节。C++中,通过类实现面向对象的编程,而在基类中只给出纯虚函数的声明,然后在派生类中实现纯虚函数的具体定义的方式实现接口,不同派生类实现接口的方式也不尽相同,从而实现多态。现通过一个简单的实例讲解具体实现步骤(⊙o⊙)。1.1类接口的定义 通常在头文件中...
2017-02-26 11:23:00
149
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人