- 博客(203)
- 资源 (69)
- 收藏
- 关注

原创 列出几种软件开发中常见的设计模式并解释
设计模式主要分三个类型:创建型、结构型和行为型。 其中创建型有: 一、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点 二、Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。 三、Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化
2016-08-05 00:12:11
2786
原创 C++设计模式实现--原型模式
一、概述:子类提供返回 本类副本的接口三、优缺点:优点:复制自身。客户不知道需要对象的实际类型,只需知道它的抽象基类即可。(即有继承树的情况)缺点:必须先有一个对象实例(即原型)才能clone。四、代码实现:#include //接口class CPrototype{public:CPrototype(){}virtual ~CPrototype(){}virtual C...
2020-03-11 22:10:58
316
原创 服务程序 WNetAddConnection2 1312
win32程序直接运行的时候正常,在服务程序中调用的时候时候报1312查了很多资料,原因如下:1.安装服务的收收默认是 system用户,tmd这个用户就是用不了!!解决方法:1.服务属性中修改登录账户2.创建服务CreateService的时候写入设定用户和密码...
2019-06-10 15:13:47
2053
1
原创 用微笑面对一切令你烦恼的人或事,不久之后,你会发现令你微笑的人或事变得越来越多了。
用微笑面对一切令你烦恼的人或事,不久之后,你会发现令你微笑的人或事变得越来越多了。
2017-06-09 10:48:44
629
原创 Web service
我认为,下一代互联网软件将建立在Web service(也就是"云")的基础上。我把学习笔记和学习心得,放到网志上,欢迎指正。今天先写一个最基本的问题,Web service到底是什么?一、Web service的概念想要理解Web service,必须先理解什么是Service(服务)。传统上,我们把计算机后台程序(Daemon)提供的功能,称为"服务"(
2017-03-04 22:10:13
487
原创 VC6.0 vs2008 和 VS2010 time_t的一些区别 持续更新
time_t类型。在VC6和 vs2008 下,该类型定义如下:typedef long time_t; /* time value */但在VS2010中定义如下:#ifndef _TIME_T_DEFINED#ifdef _USE_32BIT_TIME_Ttypedef __time32_t time_t; /
2016-12-23 15:35:08
2231
原创 C++ 使用回调函数的方式 和 作用。 持续更新
先看两个demo:一.在类test1中调用函数print() ,把print()的函数指针传递给test1的函数指针参数test1.h:#include #include using namespace std;typedef void (*FUNP)();class test1{public: void fun1(FUNP p) { (*p)(); }};
2016-11-01 23:57:12
15619
原创 VS 查看是否有内存泄露的方法 定位位置
加入下列宏定义:#ifdef _DEBUG#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)#else#define DEBUG_CLIENTBLOCK#endif#define _CRTDBG_MAP_ALLOC#include #include #ifdef _DEBUG#define n
2016-10-27 15:49:35
3187
原创 使用C++11 新特性
VS2010对C++11的支持情况: http://blog.youkuaiyun.com/infoworld/article/details/38337071
2016-10-26 10:35:15
336
原创 软件设计模式--备忘录模式
//P: 就是将零时保存的变量,改成一个类对象变量 = =#include #include using namespace std;//备忘录类class RoleStateMemento{private: int vitality;public: RoleStateMemento(){}; RoleStateMemento(int vit) { this
2016-10-25 17:19:43
407
原创 一个类的实例化对象所占空间的大小
一个类的实例化对象所占空间的大小? 注意不要说类的大小,是类的对象的大小. 首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的。 用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小。 如果 Class A; A obj; 那么sizeof(A)==sizeof(obj) 那么sizeof(A)的大小和成员的大小总和是什么关系呢,很简单,一个对象的大小大于等于所有
2016-10-25 16:37:18
1096
原创 简单 但 容易出错的地方
1. 当使用容器定义指针类型的时候 要注意这个指针指向内容的变化std::vector m_vPath; char str[20] = "hello world"; int main(){ for (int i = 0; i < 2; i++) { m_vPath.push_back(str); strcpy(str,"123455"); }}上面本意是想将字符串"hel
2016-10-24 22:30:33
805
原创 软件设计模式--- 桥接模式
桥接模式:将抽象部分与它的实现部分相分离,他们可以独立变化。合成/聚合复用原则CARP原则:面向对象设计的一个重要原则:尽量使用合成/聚合,尽量不用使用类的继承优点:(1)分离抽象接口及其实现部分。(2)桥接模式有时类似于多继承方案,但是多继承方案违背了类的单一职责原则(即一个类只有一个变化的原因),复用
2016-10-18 23:09:46
987
原创 软件设计模式 --状态模式
#include #include using namespace std;class War; class State { public: virtual void Prophase() {} virtual void Metaphase() {} virtual void Anaphase() {} virtual void En
2016-10-17 22:42:11
597
原创 l线程中 CreateEvent 和 SetEvent及WaitForSingleObject的两种用法
http://www.cnblogs.com/MrYuan/p/5238749.htmlCreateEvent函功能描述:创建或打开一个命名的或无名的事件对象.EVENT有两种状态:发信号,不发信号。 SetEvent/ResetEvent分别将EVENT置为这两种状态分别是发信号与不发信号。 WaitForSingleObject()等待,直到参数所指
2016-10-13 17:33:57
1695
原创 三种工厂模式的使用选择
参考:http://blog.youkuaiyun.com/wyxhd2008/article/details/5597975首先来看看这两者的定义区别:工厂模式:定义一个用于创建对象的借口,让子类决定实例化哪一个类抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类 个人觉得这个区别在于产品,如果产品单一,最合适用工厂模式,但是如果有
2016-10-09 14:58:13
2724
原创 C++中new 一个对象的时候加括号和不加括号的区别 ()
先把结论放上来:加括号调用没有参数的构造函数,不加括号调用默认构造函数或唯一的构造函数,看需求。 (//P:每一个类都存在一个什么都不做的默认构造函数。)C++在new时的初始化的规律可能为:对于有构造函数的类,不论有没有括号,都用构造函数进行初始化;如果没有构造函数,则不加括号的new只分配内存空间,不进行内存的初始化,而加了括号的new会在分配内存的同时初始化为0。
2016-10-09 10:35:06
1823
原创 抽象类不能定于对象,但可以用抽象的类定义指针!
可以用一个抽象类定义一个指向该类的指针,但是不能定义或声明对象。这个中原因就是,定义一个类的对象是,编译器在编译时需要了解类的所有信息以便准确的为要实例化的对象分配内存;由此可见,定义一个类对象是要生成一个类的实例的,而C++规定抽象类是不能实例化的,所以会报出如下错误:error C2259: 'CBase' : cannot instantiate abstract class
2016-10-09 10:07:50
14054
4
原创 软件爱 设计模式--工厂模式(简单工厂,工厂方法,抽象工厂)
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍工厂模式的实现。 工厂模式属于创
2016-10-08 20:36:09
452
原创 软件设计模式 —— 建造者模式
建造者模式的定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示(DP)。《大话设计模式》举了一个很好的例子——建造小人,一共需建造6个部分,头部、身体、左右手、左右脚。与工厂模式不同,建造者模式是在导向者的控制下一步一步构造产品的。建造小人就是在控制下一步步构造出来的//P; 设计方式: 函数的形参用父类,实际传去具体子类#include usi
2016-10-08 15:29:11
580
原创 C++多线程调试和测试的注意事项
在一个程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。利用线程,用户可按下一个按钮,然后程序会立即作出响应,而不是让用户等待程序完成了当前任务以后才开始响应。在上次的帖子聊了C++多线程的跨平台问题,后来感觉意犹未尽。今天顺便说一下开发C++多线程应用程序时,有关调试和测试的一些注意事项。下面这些注意事项主要是针对C++,不过有些对于其它的
2016-10-08 11:26:38
1690
原创 static函数 函数调用缺少参数列表;请使用“&XXX”创建指向成员的指针;类的static成员函数
error C3867: “XXX”: 函数调用缺少参数列表;请使用“&XXX”创建指向成员的指针”的错误如下:class CA{public: CA(); void init(FUNC fun){};};class CB{public: CA A; int B_fun(void *param) { return 0; }public: void test(
2016-10-07 23:31:56
4732
原创 syntax error : unexpected type 'HFONT
1>d:\vs\vc\atlmfc\include\afxbutton.h(183): error C2226: 语法错误 : 意外的“HFONT”类型1>d:\vs\vc\atlmfc\include\afxbutton.h(183): error C2238: 意外的标记位于“;”之前1>d:\vs\vc\atlmfc\include\afxfontcombobox.h(45): wa
2016-10-07 16:26:38
2625
原创 vs2010项目属性配置
vs2010使用方案管理项目,一个解决方案下可包含多个项目。默认情况下,项目属性的设置的目录起点为项目配置文件所在的位置,实际上就是项目头文件和源文件所在的位置。vs2010中默认建立C++项目,则解决方案总目录下包含一个sln和一个项目文件夹,在vs2010编译器中生成debug和release解决方案后,总目录下还会生成对应的debug和release目录,存放最终生成的exe
2016-10-07 09:53:48
482
原创 软件设计模式——享元模式
http://blog.youkuaiyun.com/wuzhekai1985/article/details/6670298 //
2016-10-06 23:56:35
568
原创 设计设计模式——外观模式(Facade Pattern)
概述想想我们小时候玩的四驱车,里面的构造很复杂,马达,舵机,电池组等等,而我们控制它却非常简单,只要打开电池开关,他就可以跑。我们其实不用知道它里面是如何工作,只要知道拨动开关它就可以工作就行了,这个开关其实就四驱车给我们的一个友好的组件,使得我们可以很方便的控制它。外观模式其实定义了一个高层接口,该接口为子系统中的一组接口提供一个一致的界面,使得这一子系统更加容易使用。类图和
2016-10-05 15:59:59
287
原创 软件设计 -- 中介者模式
概述: 假设我们开发一个图片处理软件,里面肯定包括很多相关功能,比如说剪切,旋转,滤镜,美化等等,而我们这些功能所要处理的对象是固定的,就是我们所显示的那张图片。但是我们不能把所有的功能罗列到一个tab上,虽然这样处理方便但是不美观。这是我们可以这样子:用一个中介者类负责所有功能的初始化和具体执行,我们需要功能时直接调用中介者类即可。 中介者模式就是定义一个中介
2016-10-04 20:27:54
455
原创 软件设计模式- 模版方法模式
概述:我们最近在开发一个支持多种压缩类型文件的解压缩且制作成pdf的一个应用。对我们的架构来说我们需要支持多种压缩文件类型,但却有固定的操作顺序(先解压缩,在读取里面的文件分析、制作pdf)。我们抽取他们的共同点:这些操作的固定顺序,把他放到我们的父类里;他们的变化点:这些个具体的操作,去留给不同的子类去实现。这个就是模板方法模式,他定义一个操作中的算法的骨架(例子中的固定的操作
2016-10-04 12:41:35
292
原创 软件设计模式- 命令模式
概述: 我们去餐厅吃饭,我们是通过服务员来点菜,具体是谁来做这些菜和他们什么时候完成的这些菜,其实我们都不知道。抽象之,“菜单请求者”我们和“菜单实现者”厨师,2者之间是松耦合的,我们对这些菜的其他一些请求比如“撤销,重做”等,我们也不知道是谁在做。其实这就是本文要说的Command模式。 将一个请求封装为一个对象,从而使你可用不同的请求对客户进
2016-10-04 10:52:47
262
原创 LT 高质量代码
2016.10.2这两天放假,终于有时间把秦老(科大出身的二十多年的老工程师)的三维项目拿出来看看,再回首才发现秦老的项目真的可当做软件从业人员的参考书,重构后的项目,在架构,各个模块的设计上都是反复的修改提炼,解耦,复用,后期的维护扩展方面都考虑的很细很缜密,高质量代码的工具书。以前一直不明白很为什么那样设计,应该是那时境界不够,直到后来在工作中遇到各种设计上的问题后,现在才发现处处是精髓。也是
2016-10-03 22:50:33
385
原创 clock、GetTickCount的计时 Win7: clock的精度是1ms,但GetTickCou
WinXP:clock、GetTickCount精度一致都是 10ms;也就是10ms以内的变化无法体现出来。 Win7: clock的精度是1ms,但GetTickCount精度是15ms。最近在做服务器响应时间的测试时,开始使用GetTickCount()测出来的 时间差一直是 0;后来改成clock()正常了,发现使用 clock和GetTickCount
2016-09-28 14:16:20
2964
原创 MFC 软件换肤使用 SkinMagic2.21
原来界面:添加效果:SkinMagicTrial.lib、SkinMagicTrial.dll和SkinMagicLib.h
2016-09-28 12:40:57
2668
3
原创 连接oracle 客户端 vs 2010调试 提示“ORA-12154: TNS: 无法解析指定的连接标识符 ”
连接oracle 客户端 vs 2010调试 提示“ORA-12154: TNS: 无法解析指定的连接标识符 ”尼玛调了半天了, HRESULT hrconn = m_pConn.CreateInstance(__uuidof(Connection)); sConn.Format(_T("Provider=OraOLEDB.Oracle;User ID=%s;Passwo
2016-09-07 15:31:44
2110
原创 C++中 引用&与取地址&的区别
一个是用来传值的 一个是用来获取首地址的&(引用)==>出现在变量声明语句中位于变量左边时,表示声明的是引用. 例如: int &rf; // 声明一个int型的引用rf.&(取地址运算符)==>在给变量赋初值时出现在等号右边或在执行语句中作为一元运算符出现时 表示取对象的地址. 在C++中,既有引用又有取地址,好多
2016-09-01 23:39:51
465
原创 智能指针的理解 和 简单实现
Why Smart Pointer?为什么需要智能指针?因为c++的内存管理一直是个令人头疼的问题。假如我们有如下person对象:每个person有自己的名字,并且可以告诉大家他叫什么名字:[cpp]view plaincopy////apersonwhocantellushis/hername.
2016-09-01 23:09:24
786
原创 #pragma once与#ifndef两种防止头文件二次编译的区别
在最开始接触到C语言的时候,看到很多大牛们写的代码里面就有#ifndef #define #endif 这三条语句,当时不明白什么意思,慢慢的后来自己也开始用了,也知道了他们合起来使用时为了防止头文件被二次编译,因为我们曾经写代码的过程中一定遇到过等类似的错误吧。到了学习C++的时候,我们老师给我们看他的代码的时候发现他的头文件里用的是#pragma once,就奇怪这是什么呢?然后私下
2016-08-31 22:32:16
2105
原创 两个类头文件相互包含出现的问题 : 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int本文中,为了叙述方便,把class AClass;语句成为类AClass的声明,把class AClass开始的对AClass的类成员变量、成员函数原型等的说明称为类的定义,而把在CPP中的部分称为类的定义所谓超前引用是指一个类型在定义之前就被用来定义变量和声明函数。一般情况下,C
2016-08-31 00:15:14
2449
原创 变量与类的 声明和 定义 在头文件中的使用
什么是变量?变量或者叫对象,是一个有具名的、可以供程序操作的存储空间。这里具名是指变量是有名字的,可供操作是指能进行加减乘除或者输入输出等操作,存储空间则是指有一块属于它的内存空间。为了便于说明,标题和后面的内容将对象分为两种。对于内置的,文章称作为变量,对于自定义的,称之为对象。第一个问题:在C++中,什么是定义,什么是声明?①定义:用于为变量分配存储空间,还可为变量指定
2016-08-30 23:45:00
6177
SkinMagic 界面皮肤美化库
2016-09-28
智能指针的理解 和 简单实现
2016-09-01
全局 变量 extern
2016-08-30
VS 相对路径的设置 和 测试
2016-08-28
VS2012 Qt5 winpcap win64 抓包工具 http协议 解析
2016-03-25
基本的HTML文本解析器的设计和实现
2016-03-25
VS2012 winpcap 的使用
2016-03-22
vs2010 如何让创建和使用动态链接库(dll)
2015-09-15
MFC 截图 操作详解 dome
2015-09-15
vs2010创建和使用动态链接库(dll)
2015-09-08
PROTELL中画PCB规则
2015-05-11
视频编辑专家Ver 8.0(最新版).rar
2014-11-04
TLP521中文资料
2014-10-31
STM32F10x Flash Programming
2014-10-22
STMF103数据手册.
2014-10-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人