- 博客(17)
- 收藏
- 关注
原创 C++设计模式之 -- 桥接模式 (Bridge)
定义桥接模式(Bridge Pattern) 是指将抽象部分与它的实现部分分离,使它们都可以独立的变化。例如:我们要实现一个对象,用来序列化数据,将数据序列化到磁盘上可能有多重方式,json 格式, XML 格式或者database 等。使用桥接模式,将具体的序列化实现部分分离开来,使得抽象和实现的部分可以独立的变化,增强了代码的扩展性。类图一个典型的桥接模
2015-07-21 20:55:06 798
原创 UML类图以及各种类之间的关系
每次在阅读或者画UML 图的时候,总是对各种类之间的关系区分的不是很清楚,最近在看《大话设计模式》,开篇的介绍非常详细易懂,赶紧整理一下,便于自己记忆。1. 继承关系继承关系表示一个类派生自另外一个类,用来实现多态。使用实线的空心三角形表示。下图所示表示 Bird 类 继承 Animal 类。2. 接口实现接口实现类似于继承,使用虚线的空心三角形箭头表示
2015-07-11 12:05:03 2908
原创 C++设计模式之 —— 原型模式 Prototype
什么是原型模式? 原型模式(Prototype)是指 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 说白了,就是从一个对象创建另外一个同类型的可定制的对象,并且创建的过程隐藏了创建的细节。使得客户端在创建多个对象时更为简洁。 当一个类的构建比较复杂,而我们需要动态的进行创建,只有部分数据需要定制时,原型模式可以在隐藏创建细节的同时很好的确保代码的简洁。举
2015-07-08 21:40:44 1035
原创 C++实现设计模式之 —— 单例模式 Singleton
单例模式是最简单的创建型模式,当某个类只需要唯一的一份实例时,使用单例模式可以确保不会创建多余的实例。在C++ 中,单例模式可以避免全局变量的使用。下面是一个典型的线程安全的单例模式#ifndef Singleton_h__#define Singleton_h__#include //C++11class CSingleton{public: static CSinglet
2015-07-07 20:40:48 568
原创 Virus Shield 遭 google play 下架
一款声称无广告,低电量消耗的Android 手机病毒防护产品 Virus Shield 遭谷歌下架。其原因是该产品并没有提供任何功能。分析人士指出,该产品唯一提供的功能就是当用户点击按钮时改变按钮颜色,假装正在检查系统为用户提供保护。该款没有任何实际功能的产品售价为$3.99美金,并在下架之前已被下载超过1万次,排在google play 前列。这和前两年比较流行的 fake an
2014-04-10 09:00:35 1287
原创 Visual Studio 单元测试 C++ 版 —— 测试已有的工程
1. 简介 软件质量要求的提升迫使码农们越来越重视单元测试,测试驱动开发的观点受到更多人的支持。目前,支持单元测试的第三方框架也非常丰富,就C++而言,有gtest, CppTest 等。 Visual Studio 自带的单元测试框架也非常的便利。之前一直使用 gtest 进行测试,今天小试了一把VS 的测试框架,将配置过程记录下来。2. 如何对 exe 工程进行单元测试 假设已
2013-10-24 15:26:53 7176
原创 C++11 学习笔记(7) —— path, wpath
1. 简介 使用C++编程,经常涉及到对文件的相关操作,例如,判断文件是否存在、获取文件所在的路径名、遍历某个目录下的所有文件、创建新的目录等。在旧风格的C++编程中,一般通过操作系统提供的API、字符串操作等实现上述功能。 C++11 提供的 头文件提供了丰富的文件操作的类和函数。filesystem 库是一个可一直的文件系统操作相关的库,使用POSIX标准表示文件系统的路径
2013-07-02 07:57:23 6469 3
原创 C++11学习笔记(6) —— smart pointer: shared_ptr , auto_ptr
1. 简介C++程序员最痛苦的莫过于对内存的管理,由于没有像C# 和 java的内存回收机制,C++程序员在复杂的程序中容易造成内存的泄露。即使程序员十分小心,异常的产生也有可能会造成部分内存的泄露(由于异常导致delete语句没有机会执行)。为了避免该问题,出现了各种类型的智能指针。只能指针实质就是重载了-> 和 * 操作符的类,由类来实现对内存的管理,确保即使有异常产生,也可以通过智能指针
2013-01-30 14:26:23 5199
原创 C++11学习笔记(5) —— override and final
1.简介C++为我们提供了继承和虚函数的重写特性。 在派生类中,重写虚函数不强制要求使用 virtual 关键字,并且C++并没有要求强制检查虚函数的重写是否真正覆盖了基类的虚函数,因为在派生类中,也可以增添新的虚函数,以供下一级的派生类重写。由于检查的不够严谨,就有可能产生错误。2.有可能产生的错误最常见的错误就是派生类想要重写基类的虚函数,但是由于参数类型的不同,导致结果和预期不同
2013-01-25 10:16:13 2292
原创 C++11学习笔记(4) —— new for loops
1.简介C 语言和C++的for 循环语句的使用方式大家都十分熟悉,如果你了解C#语言,应该对 foreach 的使用方式印象深刻,它简化了 for 循环的书写方式。 C++11 为我们提供了两种类似 foreach 的循环方式,分别是 for 的新用法 和 for each (注意,有空格,不是foreach)2.旧风格的 for int testArray[] = {1, 2,
2013-01-24 17:44:25 3707 1
原创 C++11学习笔记(3)—— enum
1.简介以往的enum类型将枚举成员的作用域暴露在枚举变量之外,用户不需要指定枚举类型就可以直接使用枚举的内容,这就有可能会造成名字的冲突,为了解决该你问题,C++11引入了强类型的枚举类型(strongly typed enums ).2.旧风格的enum#include "stdafx.h"#include using namespace std;enum OldEnu
2013-01-22 22:04:55 2019
原创 通过WinDbg生成dump文件
在Windows开发环境下,通常使用Visual studio完成项目的开发以及调试,很少会用到WinDbg。WinDbg提供了强大的调试功能,在一些情况下,Visual Studio附带的调试工具无法完成调试工作,只有通过WinDbg来完成,例如,对dump文件的分析。1. dump 文件简介dump 文件是指内存转储文件,是系统在程序崩溃时将当前相关内存状态存储到硬盘上的文件,用于对系
2013-01-14 09:37:31 1986
翻译 CAtlRegExp class
CAtlRegExp Class CAtlRegExp 类用于表示并处理正则表达式。模板类,定义如下:template < class CharTraits = CAtlRECharTraits>class CAtlRegExp参数CharTraits字符特征对象.例如, 默认的
2013-01-14 09:35:31 2218
原创 使用 NetShareEnum 遍历本地共享目录需要注意的问题
1 简介Windows提供了NetShareEnum函数用于实现遍历服务器的共享目录,但在实现该功能时发现一个有关UNICODE和ANSI字符串的问题。2. 函数原型简介该函数原型如下:NET_API_STATUS NetShareEnum( LPWSTR servername, DWORD level, LPBYTE* bufptr, DWORD
2013-01-14 09:33:39 3937
原创 不同内存分配方式的区别 VirtualAlloc HeapAlloc malloc new
在进行Windows的学习过程中,经常看到不同的内存分配方式,例如VirtualAlloc, HeapAlloc, malloc和new。它们之间存在一些差异。(1) VirtualAllocPVOID VirtualAlloc(PVOID pvAddress, SIZE_T dwSize, DWORD fdwAllocationType, DWORD fdwProtect)V
2013-01-14 09:31:30 5338
原创 C++11学习笔记(2) —— decltype
1. 简介当我们想要方便的定义一个变量时,可以通过使用 auto 来定义变量,由编译器根据上下文推导出变量类型。但是,当我们想要推导一个表达式的返回结果类型时,auto 就无能为力了。decltype 可以解决该问题。2. 函数返回类型推导使用decltype可以动态获取函数的返回类型,如下所示#includeusing namespace std;int fun1(in
2013-01-14 09:29:22 2015
原创 C++11学习笔记(1) —— auto
C++11 的到来又为C++注入了新鲜的血液,更严格的类型检查,新的功能特性以及新收录的STL,都使得C++11更为安全和高效。笔者将C++11的学习过程记录下来,不对之处还望指正。IDE: vs20121.简介auto是C++早就具备的关键字(局部变量默认定义为auto类型),但是C++11中,auto被赋予了新的含义 —— 定义任意类型2.根据初始化推导类型
2013-01-14 09:27:21 2203 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人