<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wangxy_2012的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wangxy_2012</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wangxy_2012]]></copyright><item><title><![CDATA[设计模式C++实现（15）——观察者模式]]></title><link>https://blog.youkuaiyun.com/wangxy_2012/article/details/52678854</link><guid>https://blog.youkuaiyun.com/wangxy_2012/article/details/52678854</guid><author>wangxy_2012</author><pubDate>Tue, 27 Sep 2016 10:56:15 +0800</pubDate><description><![CDATA[观察者模式：定义对象间的一种一对多的依赖关系，当一个对象的状态发生改变时，所有依赖于它的对象都得到通知并被自动更新。它还有两个别名，依赖(Dependents)，发布-订阅(Publish-Subsrcibe)。可以举个博客订阅的例子，当博主发表新文章的时候，即博主状态发生了改变，那些订阅的读者就会收到通知，然后进行相应的动作，比如去看文章，或者收藏起来。博主与读者之间存在种一对多的依赖关系。下面]]></description><category></category></item><item><title><![CDATA[设计模式C++实现（11）——装饰模式]]></title><link>https://blog.youkuaiyun.com/wangxy_2012/article/details/52678835</link><guid>https://blog.youkuaiyun.com/wangxy_2012/article/details/52678835</guid><author>wangxy_2012</author><pubDate>Tue, 27 Sep 2016 10:55:14 +0800</pubDate><description><![CDATA[装饰模式：动态地给一个对象添加一些额外的职责。就增加功能来说，装饰模式相比生成子类更为灵活。有时我们希望给某个对象而不是整个类添加一些功能。比如有一个手机，允许你为手机添加特性，比如增加挂件、屏幕贴膜等。一种灵活的设计方式是，将手机嵌入到另一对象中，由这个对象完成特性的添加，我们称这个嵌入的对象为装饰。这个装饰与它所装饰的组件接口一致，因此它对使用该组件的客户透明。下面给出装饰模式的UML图。
]]></description><category></category></item><item><title><![CDATA[设计模式C++实现（10）——桥接模式]]></title><link>https://blog.youkuaiyun.com/wangxy_2012/article/details/52678805</link><guid>https://blog.youkuaiyun.com/wangxy_2012/article/details/52678805</guid><author>wangxy_2012</author><pubDate>Tue, 27 Sep 2016 10:53:10 +0800</pubDate><description><![CDATA[软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性：封装、继承、多态，真正领悟设计模式的精髓是可能一个漫长的过程，需要大量实践经验的积累。最近看设计模式的书，对于每个模式，用C++写了个小例子，加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍桥接模式的实现。

       [DP]书上定]]></description><category></category></item><item><title><![CDATA[设计模式C++实现（8）——代理模式]]></title><link>https://blog.youkuaiyun.com/wangxy_2012/article/details/52678778</link><guid>https://blog.youkuaiyun.com/wangxy_2012/article/details/52678778</guid><author>wangxy_2012</author><pubDate>Tue, 27 Sep 2016 10:51:26 +0800</pubDate><description><![CDATA[[DP]上的定义：为其他对象提供一种代理以控制对这个对象的访问。有四种常用的情况：（1）远程代理，（2）虚代理，（3）保护代理，（4）智能引用。本文主要介绍虚代理和智能引用两种情况。

       考虑一个可以在文档中嵌入图形对象的文档编辑器。有些图形对象的创建开销很大。但是打开文档必须很迅速，因此我们在打开文档时应避免一次性创建所有开销很大的对象。这里就可以运用代理模式，在打开文档时，并不]]></description><category></category></item><item><title><![CDATA[设计模式C++实现（4）——单例模式]]></title><link>https://blog.youkuaiyun.com/wangxy_2012/article/details/52678736</link><guid>https://blog.youkuaiyun.com/wangxy_2012/article/details/52678736</guid><author>wangxy_2012</author><pubDate>Tue, 27 Sep 2016 10:48:47 +0800</pubDate><description><![CDATA[UML图：



      代码：



[cpp] view
 plain copy


 print?



//Singleton.h  
class Singleton    
{  
public:  
    static Singleton* GetInstance();  
private:  
    Singleton() {}  ]]></description><category></category></item><item><title><![CDATA[设计模式C++实现（3）——适配器模式]]></title><link>https://blog.youkuaiyun.com/wangxy_2012/article/details/52678691</link><guid>https://blog.youkuaiyun.com/wangxy_2012/article/details/52678691</guid><author>wangxy_2012</author><pubDate>Tue, 27 Sep 2016 10:46:30 +0800</pubDate><description><![CDATA[DP上的定义：适配器模式将一个类的接口转换成客户希望的另外一个接口，使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。它包括类适配器和对象适配器，本文针对的是对象适配器。举个例子，在STL中就用到了适配器模式。STL实现了一种数据结构，称为双端队列（deque），支持前后两段的插入与删除。STL实现栈和队列时，没有从头开始定义它们，而是直接使用双端队列实现的。这里双端队列就扮演了适配器的角]]></description><category></category></item><item><title><![CDATA[设计模式C++实现（2）——策略模式]]></title><link>https://blog.youkuaiyun.com/wangxy_2012/article/details/52678658</link><guid>https://blog.youkuaiyun.com/wangxy_2012/article/details/52678658</guid><author>wangxy_2012</author><pubDate>Tue, 27 Sep 2016 10:45:27 +0800</pubDate><description><![CDATA[策略模式是指定义一系列的算法，把它们一个个封装起来，并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。也就是说这些算法所完成的功能一样，对外的接口一样，只是各自实现上存在差异。用策略模式来封装算法，效果比较好。下面以高速缓存（Cache）的替换算法为例，实现策略模式。

       什么是Cache的替换算法呢？简单解释一下， 当发生Cache缺失时，Cache控制器必须选择C]]></description><category></category></item><item><title><![CDATA[设计模式C++实现（1）——工厂模式]]></title><link>https://blog.youkuaiyun.com/wangxy_2012/article/details/52678614</link><guid>https://blog.youkuaiyun.com/wangxy_2012/article/details/52678614</guid><author>wangxy_2012</author><pubDate>Tue, 27 Sep 2016 10:42:40 +0800</pubDate><description><![CDATA[软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性：封装、继承、多态，真正领悟设计模式的精髓是可能一个漫长的过程，需要大量实践经验的积累。最近看设计模式的书，对于每个模式，用C++写了个小例子，加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍工厂模式的实现。

       工厂模式属于创]]></description><category></category></item><item><title><![CDATA[﻿﻿﻿﻿﻿﻿﻿﻿vc ppt]]></title><link>https://blog.youkuaiyun.com/wangxy_2012/article/details/13998349</link><guid>https://blog.youkuaiyun.com/wangxy_2012/article/details/13998349</guid><author>wangxy_2012</author><pubDate>Fri, 01 Nov 2013 11:38:05 +0800</pubDate><description><![CDATA[VC6.0控制PPT很方便，网上的代码也很多，到了.NET，操作office的方式有所改进，完全按6.0的方式会出很多问题，根据做的有关用VS2008操作PPT的工作，整理一下。


开始是要用VS2005的，发现问题很多，似乎根本都调不了，改到2008后很快就能运行了，按理说两个应该是差不多的，不知道2005出什么问题了。现在用2008操作PPT：

首先创建一个MFC的对话框程序，如]]></description><category></category></item><item><title><![CDATA[堆和栈 内存]]></title><link>https://blog.youkuaiyun.com/wangxy_2012/article/details/9465859</link><guid>https://blog.youkuaiyun.com/wangxy_2012/article/details/9465859</guid><author>wangxy_2012</author><pubDate>Thu, 25 Jul 2013 11:08:56 +0800</pubDate><description><![CDATA[堆和栈的区别
    一、预备知识—程序的内存分配
    一个由c/C++编译的程序占用的内存分为以下几个部分
    1、栈区（stack）— 由编译器自动分配释放 ，存放函数的参数值，局部变量的值等。其操作方式类似于数据结构中的栈
    2、堆区（heap） — 一般由程序员分配释放， 若程序员不释放，程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事，分配方式倒是类似于链]]></description><category></category></item><item><title><![CDATA[PreTranslateMessag和WindowProc]]></title><link>https://blog.youkuaiyun.com/wangxy_2012/article/details/8575228</link><guid>https://blog.youkuaiyun.com/wangxy_2012/article/details/8575228</guid><author>wangxy_2012</author><pubDate>Thu, 07 Feb 2013 10:18:11 +0800</pubDate><description><![CDATA[MFC中PreTranslateMessage是GetMessage(...)函数的下一级操作，即GetMessage(...)从消息队列中获取消息后，交由PreTranslateMessage（）处理，若其返回FALSE则再交给TranslateMessage和DispatchMessage处理（进入WindowProc）；

如果用SendMessage, 则消息直接交到PreTransl]]></description><category></category></item><item><title><![CDATA[__declspec(dllexport) & __declspec(dllimport)]]></title><link>https://blog.youkuaiyun.com/wangxy_2012/article/details/8191672</link><guid>https://blog.youkuaiyun.com/wangxy_2012/article/details/8191672</guid><author>wangxy_2012</author><pubDate>Fri, 16 Nov 2012 17:09:36 +0800</pubDate><description><![CDATA[__declspec(dllexport) & __declspec(dllimport)


__declspec(dllexport)
声明一个导出函数，是说这个函数要从本DLL导出。我要给别人用。一般用于dll中 
省掉在DEF文件中手工定义导出哪些函数的一个方法。当然，如果你的DLL里全是C++的类的话，你无法在DEF里指定导出的函数，只能用__declspec(dllexpor]]></description><category></category></item><item><title><![CDATA[SQL语句]]></title><link>https://blog.youkuaiyun.com/wangxy_2012/article/details/8187214</link><guid>https://blog.youkuaiyun.com/wangxy_2012/article/details/8187214</guid><author>wangxy_2012</author><pubDate>Thu, 15 Nov 2012 16:03:21 +0800</pubDate><description><![CDATA[SQL语句的添加、删除、修改多种方法




SQL语句的添加、删除、修改虽然有如下很多种方法，但在使用过程中还是不够用，不知是否有高手把更多灵活的使用方法贡献出来？

添加、删除、修改使用db.Execute(Sql)命令执行操作
╔----------------╗
☆ 数据记录筛选 ☆
╚----------------╝
注意：单双引号的用法可能有误(没有测式)]]></description><category></category></item><item><title><![CDATA[pragma     预处理指令详解]]></title><link>https://blog.youkuaiyun.com/wangxy_2012/article/details/7998959</link><guid>https://blog.youkuaiyun.com/wangxy_2012/article/details/7998959</guid><author>wangxy_2012</author><pubDate>Thu, 20 Sep 2012 10:04:49 +0800</pubDate><description><![CDATA[pragma     预处理指令详解         
        在所有的预处理指令中，#Pragma     指令可能是最复杂的了，它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。]]></description><category></category></item><item><title><![CDATA[MFC DLL类型]]></title><link>https://blog.youkuaiyun.com/wangxy_2012/article/details/7998894</link><guid>https://blog.youkuaiyun.com/wangxy_2012/article/details/7998894</guid><author>wangxy_2012</author><pubDate>Thu, 20 Sep 2012 09:53:44 +0800</pubDate><description><![CDATA[虽然能用DLL实现的东西都可以用COM来实现，但DLL的优点确实不少，它更容易创建。本文将讨论如何利用MFC来创建不同类型的DLL，以及如何使用他们。

一、DLL的不同类型
    使用MFC可以生成两种类型的DLL：MFC扩展DLL和常规DLL。常规DLL有可以分为动态连接和静态连接。Visual C++还可以生成WIN32 DLL，但不是这里讨论的主要对象。
1、MFC扩展DLL]]></description><category></category></item><item><title><![CDATA[VC多线程编程]]></title><link>https://blog.youkuaiyun.com/wangxy_2012/article/details/7751322</link><guid>https://blog.youkuaiyun.com/wangxy_2012/article/details/7751322</guid><author>wangxy_2012</author><pubDate>Mon, 16 Jul 2012 14:17:23 +0800</pubDate><description><![CDATA[VC多线程编程（一）




一、问题的提出
编写一个耗时的单线程程序：
　　新建一个基于对话框的应用程序SingleThread，在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮，ID为IDC_SLEEP_SIX_SECOND，标题为“延时6秒”，添加按钮的响应函数，代码如下：
void CSingleThreadDlg::OnSleepSixSecond()]]></description><category></category></item><item><title><![CDATA[const用法]]></title><link>https://blog.youkuaiyun.com/wangxy_2012/article/details/7744530</link><guid>https://blog.youkuaiyun.com/wangxy_2012/article/details/7744530</guid><author>wangxy_2012</author><pubDate>Mon, 16 Jul 2012 14:00:30 +0800</pubDate><description><![CDATA[const用法详解

面向对象是C++的重要特性.  
但是c++在c的基础上新增加的几点优化也是很耀眼的
就const直接可以取代c中的#define
以下几点很重要,学不好后果也也很严重

const
1. 限定符声明变量只能被读
  const int i=5;
  int j=0;
  ...
  i=j; //非法，导致编译错误
  j=i; //合法
2.]]></description><category></category></item><item><title><![CDATA[C++内存管理]]></title><link>https://blog.youkuaiyun.com/wangxy_2012/article/details/7744575</link><guid>https://blog.youkuaiyun.com/wangxy_2012/article/details/7744575</guid><author>wangxy_2012</author><pubDate>Mon, 16 Jul 2012 13:59:31 +0800</pubDate><description><![CDATA[内存管理是C++最令人切齿痛恨的问题，也是C++最有争议的问题，C++高手从中获得了更好的性能，更大的自由，C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨，但内存管理在C++中无处不在，内存泄漏几乎在每个C++程序中都会发生，因此要想成为C++高手，内存管理一关是必须要过的，除非放弃C++，转到Java或者.NET，他们的内存管理基本是自动的，当然你也放弃了自由和对内存的支配权，还放弃了C]]></description><category></category></item></channel></rss>