<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[awk0656897的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/awk0656897</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; awk0656897]]></copyright><item><title><![CDATA[转载：宏定义的极致发挥---让你的普通C++类轻松支持IDispatch自动化接口]]></title><link>https://blog.youkuaiyun.com/awk0656897/article/details/101101291</link><guid>https://blog.youkuaiyun.com/awk0656897/article/details/101101291</guid><author>awk0656897</author><pubDate>Tue, 25 May 2010 12:08:00 +0800</pubDate><description><![CDATA[这篇文章其实有两个主题：一个是充分利用宏的特性把代码最大程度简化；另一个是如何在现有的项目中添加自动化支持。要我说哪一个主题更重要，对不起我也不知道，因为两个主题是紧密关联的，后面的介绍将以宏的使用为主，自动化接口只是宏的一种应用。 
 熟悉MFC和ATL/WTL的人一定都很熟悉它们的消息映射表，利用宏进行填表是一种非常简洁非常优雅的编码方式，通俗易懂维护方便。对于宏来说，使用越...]]></description><category></category></item><item><title><![CDATA[Windows批处理]]></title><link>https://blog.youkuaiyun.com/awk0656897/article/details/101101288</link><guid>https://blog.youkuaiyun.com/awk0656897/article/details/101101288</guid><author>awk0656897</author><pubDate>Tue, 25 May 2010 12:07:00 +0800</pubDate><description><![CDATA[如果在网上搜索可以找“Windows 批处理 命令”或者“Windows bat”

由于最近的项目用到批处理，所以转载一篇bat 语法 命令的文章，权当备份，省略了若干不关键字句

原文地址在这里：
http://www.boofee.net/bigfee/read.php?94

如何创建批处理文件？

不要听了批处理文件就感到很神气，其实这东西很简单的．你...]]></description><category></category></item><item><title><![CDATA[转载：用API OleLoadPicture通过IStream来加载JPG、GIF格式的图片]]></title><link>https://blog.youkuaiyun.com/awk0656897/article/details/101101287</link><guid>https://blog.youkuaiyun.com/awk0656897/article/details/101101287</guid><author>awk0656897</author><pubDate>Mon, 25 Jan 2010 17:43:00 +0800</pubDate><description><![CDATA[OleLoadPicture 函数实际上创建了一个IPicture类型的COM接口对象，然后我们可以通过这个COM接口来操作图片（实际上你也可以用API OleCreatePictureIndirect来加载图片，不过相比而言OleLoadPicture函数简化了基于流的IPicture对象的创建），下面是示例代码：（注：由于只是用来示例，代码中省去了出错情况的处理）


vo...]]></description><category></category></item><item><title><![CDATA[转载：便利的开发工具 CppUnit 快速使用指南]]></title><link>https://blog.youkuaiyun.com/awk0656897/article/details/101101286</link><guid>https://blog.youkuaiyun.com/awk0656897/article/details/101101286</guid><author>awk0656897</author><pubDate>Fri, 22 Jan 2010 09:50:00 +0800</pubDate><description><![CDATA[2003 年 8 月 03 日
本文从开发人员的角度，介绍 CppUnit 框架，希望能够使开发人员用最少的代价尽快掌握这种技术。下面从基本原理，CppUnit 原理，手动使用步骤，通常使用步骤，其他实际问题等方面进行讨论。以下讨论基于 CppUnit1.8.0。
背景
CppUnit 是个基于 LGPL 的开源项目，最初版本移植自 JUnit，是一个非常优秀...]]></description><category></category></item><item><title><![CDATA[【转】Win32下两种用于C++的线程同步类（下）]]></title><link>https://blog.youkuaiyun.com/awk0656897/article/details/101101283</link><guid>https://blog.youkuaiyun.com/awk0656897/article/details/101101283</guid><author>awk0656897</author><pubDate>Tue, 12 Jan 2010 23:06:00 +0800</pubDate><description><![CDATA[Win32 c++ 线程同步 




上一篇中我介绍了一种通过封闭Critical Section对象而方便的使用互斥锁的方式，文中所有的例子是两个线程对同一数据一读一写，因此需要让它们在这里互斥，不能同时访问。而在实际情况中可能会有更复杂的情况出现，就是多个线程访问同一数据，一部分是读，一部分是写。我们知道只有读-写或写-写同时进行时可能会出现问题，而读-读则可以同时进行，...]]></description><category></category></item><item><title><![CDATA[[转]Win32环境下两种用于C++的线程同步类（上）]]></title><link>https://blog.youkuaiyun.com/awk0656897/article/details/101101280</link><guid>https://blog.youkuaiyun.com/awk0656897/article/details/101101280</guid><author>awk0656897</author><pubDate>Tue, 12 Jan 2010 22:59:00 +0800</pubDate><description><![CDATA[注： 开发者在线 Builder.com.cn 更新时间:2007-12-23作者：songthin 来源: 优快云
本文关键词： 线程同步类 c++ Win32 
线程同步是多线程程序设计的核心内容，它的目的是正确处理多线程并发时的各种问题，例如线程的等待、多个线程访问同一数据时的互斥，防死锁等。Win32提供多种内核对象和手段用于线程同步，如互斥量、信号量、事件、临界区等。所不...]]></description><category></category></item><item><title><![CDATA[存储过程实现：Split字符串获得数组的数据集合]]></title><link>https://blog.youkuaiyun.com/awk0656897/article/details/101101282</link><guid>https://blog.youkuaiyun.com/awk0656897/article/details/101101282</guid><author>awk0656897</author><pubDate>Wed, 14 Oct 2009 14:59:00 +0800</pubDate><description><![CDATA[问题提出：在存储过程中如何将字符串："A,B"和"12,23"中的字符按照","分割出来，并转换成数据集。解决方法：CREATE PROCEDURE [dbo].[SplitNamesAndLevels]@Names nvarchar(max),@Levels nvarchar(max),@Tag nvarchar(32) --分割符asbegindeclare @Table tabl...]]></description><category></category></item><item><title><![CDATA[小记：正确使用游标]]></title><link>https://blog.youkuaiyun.com/awk0656897/article/details/101101279</link><guid>https://blog.youkuaiyun.com/awk0656897/article/details/101101279</guid><author>awk0656897</author><pubDate>Wed, 14 Oct 2009 14:52:00 +0800</pubDate><description><![CDATA[declare @Id intdeclare item_cursor cursor local forSELECT A.IdFROMA open item_cursorFETCH NEXT FROM item_cursor INTO @Idwhile @@FETCH_STATUS = 0begin ...................]]></description><category></category></item><item><title><![CDATA[Declare 临时表]]></title><link>https://blog.youkuaiyun.com/awk0656897/article/details/101101266</link><guid>https://blog.youkuaiyun.com/awk0656897/article/details/101101266</guid><author>awk0656897</author><pubDate>Wed, 14 Oct 2009 14:37:00 +0800</pubDate><description><![CDATA[最近在写存储过程时遇到在存储过程中创建临时表的问题。以下是网上大侠们对临时表的总结。转自：http://it.hexun.com/2008-07-08/107274086.html；http://blog.163.com/zhengweisincere/blog/static/498446492009625749522/表变量
变量都以...]]></description><category></category></item><item><title><![CDATA[[转] 浅析.NET中的Serialization]]></title><link>https://blog.youkuaiyun.com/awk0656897/article/details/101101263</link><guid>https://blog.youkuaiyun.com/awk0656897/article/details/101101263</guid><author>awk0656897</author><pubDate>Sat, 15 Aug 2009 15:55:00 +0800</pubDate><description><![CDATA[Serialization的概念 Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=1403819Serialization是.NET中一种实现对象持久性（Persistent）的机制。它是一个将对象中的数据转换成一个单一元素（通常是Stream）的过程。它的逆过程是Deserialization。Serialization...]]></description><category></category></item><item><title><![CDATA[5、始终为自定义的类或结构提供ToString()]]></title><link>https://blog.youkuaiyun.com/awk0656897/article/details/101101272</link><guid>https://blog.youkuaiyun.com/awk0656897/article/details/101101272</guid><author>awk0656897</author><pubDate>Wed, 12 Aug 2009 22:10:00 +0800</pubDate><description><![CDATA[ToString()方法：是获取对象的字符串表示的一种便捷方式。为了方便用户，我们应该给自定义类重写ToString()函数，使ToString()的返回值更加贴近类对象的意义。如果不重写ToString()函数会怎样？众所周知，在.net环境下，所有的类都继承自System.Object类，如果不重写ToString()函数，自然会调用Object类的ToString()函...]]></description><category></category></item><item><title><![CDATA[4、尽量使用条件属性（Conditional Attribute）而不是#if/#endif预处理]]></title><link>https://blog.youkuaiyun.com/awk0656897/article/details/101101276</link><guid>https://blog.youkuaiyun.com/awk0656897/article/details/101101276</guid><author>awk0656897</author><pubDate>Mon, 10 Aug 2009 22:01:00 +0800</pubDate><description><![CDATA[对于这条规则我们一般关心得比较少，只有在系统调试时用得比较多。在讲这条规则之前让我们来了解下“什么是条件属性”。
对于.net初学者，当第一次遇到函数上面加一对“[]”中括弧时，一定觉得很陌生。如下所示：
 [assembly: AssemblyTitle("dd")]
.net框架提供了一个特性：属性（Attribute），注意：此属性非彼属性（proper...]]></description><category></category></item><item><title><![CDATA[3、尽量采用as操作符而不是旧式C风格做强制类型转换]]></title><link>https://blog.youkuaiyun.com/awk0656897/article/details/101101273</link><guid>https://blog.youkuaiyun.com/awk0656897/article/details/101101273</guid><author>awk0656897</author><pubDate>Fri, 07 Aug 2009 20:35:00 +0800</pubDate><description><![CDATA[C#是一种强数据类型语言。（一种总是强制类型定义的语言。如果你有一个整数，如果不显示地进行转换，你不能将其视为一个字符串。）好的编程习惯提醒我们要尽量避免使用强制转换，但是有的时候我们是无法避免的。
强制转换适用情况：源变量和目标变量兼容。即使这样也存在数据丢失的风险，因为目标变量的类型大小比源变量小或者目标变量是源变量的一个基类。
在c#里，你有两种方法来实现强制转化：
A、采用...]]></description><category></category></item><item><title><![CDATA[2、创建常量时尽可能使用readonly，而不是const]]></title><link>https://blog.youkuaiyun.com/awk0656897/article/details/101101269</link><guid>https://blog.youkuaiyun.com/awk0656897/article/details/101101269</guid><author>awk0656897</author><pubDate>Thu, 06 Aug 2009 18:51:00 +0800</pubDate><description><![CDATA[const float _pi = 3.1415926f;
 readonly float _r = 20.23;
Const常量是编译时常量，也就是说当CLR编译器将const常量编译成中间语言IL(Intermediate Language )语言时，IL直接用const常量的值来替代了程序中对该常量的引用。
编译时常量的优缺点：
优点：效率高
缺点：可扩...]]></description><category></category></item><item><title><![CDATA[1、尽可能使用属性（Property），少使用字段（Field）实现对数据的访问]]></title><link>https://blog.youkuaiyun.com/awk0656897/article/details/101101268</link><guid>https://blog.youkuaiyun.com/awk0656897/article/details/101101268</guid><author>awk0656897</author><pubDate>Wed, 05 Aug 2009 19:28:00 +0800</pubDate><description><![CDATA[1、property本质上是两个函数set和get，在访问数据时可以对数据进行检查和操作，而field不支持；a、property实现安全检测在对数据进行检测时，当数据不符合条件时，最好以抛异常的形式来处理，不要给数据设置默认值。如下例所示。当给Name赋空值时，如果给_name数据设置默认值NoName，这是相当危险的。试想我们现在有两个...]]></description><category></category></item></channel></rss>