自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

在水一方

河图洛书

  • 博客(142)
  • 资源 (9)
  • 收藏
  • 关注

原创 二维图形的几何变换

1、基本几何变换及变换矩阵基本几何变换都是相对于坐标原点和坐标轴进行的几何变换,有平移、比例、旋转、反射和错切等。1.1 平移变换是指将p点沿直线路径从一个坐标位置移到另一个坐标位置的重定位过程。他是一种不产生变形而移动物体的刚体变换(rigid-body transformation),如下图所示。 图1-1 平移变换    推导:    求得平移变换矩阵如下:

2014-06-22 12:08:11 28849 5

原创 Windows窗口映射api

1. SetMapModeint SetMapMode(  HDChdc,        // handle to device context  intfnMapMode   // new mapping mode);该函数设置指定DC的映射模式,映射模式是指页空间到设备控件的单位转换以及设备空间的坐标原点。映射模式含义MM

2014-06-22 11:28:40 2324

原创 C++编译期的类型测试

编译期的类型测试一、使用模板特化机制如比较两个类型是否一致:VC8及以后版本支持了type traits机制:add_const Class            // Makes const type from type.add_cv Class               // Makes const/volatile type from type.

2014-06-21 20:34:21 2101

原创 大数据量下的ListCtrl

在windows程序开发中,如果使用了List显示数据,但是目标数据量很大,List性能就会变得很慢,刷新一次需要几秒甚至几十秒的时间,若解决此问题,可使用VirtualList技术 - 即带LVS_OWNERDATA样式的List control。1、创建创建时指定LVS_OWNERDATA样式,即在调用CreateWindow或CreateWindowEx时指定。注:1)不支持动态

2014-06-21 20:33:00 5083

原创 Windows的窗口刷新机制相关

Windows的窗口刷新机制1、Windows的窗口刷新管理窗口句柄(HWND)都是由操作系统内核管理的,系统内部有一个z-order序列,记录着当前窗口从屏幕底部(假象的从屏幕到眼睛的方向),到屏幕最高层的一个窗口句柄的排序,这个排序不关注父窗口还是子窗口。当任意一个窗口接收到WM_PAINT消息产生重绘,更新区域绘制完成以后,就搜索它的前面的一个窗口,如果此窗口的范围和更新区域有交

2014-06-21 20:30:27 7783

原创 C++并发编程框架--并发运行时

并发运行时是 C++ 并发编程框架。并发运行时可简化并行编程,并帮助您编写可靠、可伸缩且具有响应能力的并行应用程序。并发运行时提高了抽象级别,因此您不必管理与并发相关的基础结构详细信息。利用并发运行时,还可以指定满足应用程序服务质量要求的计划策略。并发运行时为同时运行的应用程序和应用程序组件提供了一致性和可预见性。协作任务计划和协作阻止是并发运行时优点的两个示例。并发运行时使用协作任务计划

2014-06-21 20:23:37 4972 1

原创 重学设计模式 - Command(命令)模式 - 行为型

1、意图将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录日志;以及支持可撤销的操作。2、动机有时必须向某对象提交请求,但并不知道关于被请求的操作(或请求的接受者)的任何信息。提交一个请求的对象仅需要知道如何提交它,而不需知道该请求将会被如何执行。3、适用性COMMAND模式是回调机制的一个面向对象的替代品。在不同的时刻指定、排列和执行请

2012-07-15 10:56:59 1142

原创 重学设计模式 - Chain of Responsibility(责任链)模式 - 行为型

1、意图使多个对象都有机会处理请求,从而避免请求的发送者和接收者间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。2、动机给多个对象“处理一个请求”的机会,从而解耦发送者和接收者。该请求沿对象链传递,直啊到有一个对象处理它。从第一个对象开始,链中收到请求的对象要么亲自处理它,要么转发给下一个候选者。请求发送者并不明确地知道哪一个对象将会处理它

2012-07-08 16:19:45 1517 1

原创 重学设计模式 - Proxy(代理)模式 - 结构型

1、意图为其他对象提供一种代理以控制对这个对象的访问2、动机为了只有在确实需要这个对象时才对它进行创建和初始化。提高程序响应速度。3、适用性远程代理(Remote Proxy) 为一个对象在不同的地址空间提供局部代表。虚代理(Virtual Proxy)为开销很大的对象创建代理,使之可以按需创建。保护代理(Protection Proxy) 控制对原始对象的

2012-07-07 07:15:27 1566

原创 MFC窗口创建、销毁消息流程

Windows消息处理机制MFC应用程序中处理消息的顺序 1. AfxWndProc()该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc2.AfxCallWndProc()该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数3.WindowProc()该函数负责发送消息到O

2012-06-30 16:17:42 1535

原创 重学设计模式 - Flyweight(享元)模式 - 结构型

1、意图运用共享技术有效地支持大量细粒度的对象2、动机Flyweight模式描述了如何共享对象,使得可以细粒度地使用它们而无需高昂的代价。3、适用性Flyweight模式的有效性很大程度上取决于如何使用它以及在何处使用它。一个应用程序使用了大量的对象;完全由于使用了大量的对象,造成很大的存储开销;对象的大多数状态都可变为外部状

2012-06-30 16:11:20 1507

原创 重学设计模式 - Composite(组合)模式 - 结构型

1、意图将对象组合成树形结构以表示“部分 - 整体”的层次结构,Composite使得用户对单个对象和组合对象的使用具有一致性。2、动机在图形应用程序中,用户可以使用简单的图元组件组合成较大的组件,这些组件又可以组合成更加复杂的组件。Composite描述了如何使用递归组合,使得用户不必对这些类进行区别。它的关键是一个抽象类,既可以代表简单的图元,又可以代表图元的组合。

2012-06-25 16:02:59 1185

原创 重学设计模式 - Prototype模式

1、意图用原型实例指定创建对象的种类,并且通过“拷贝这些原型”创建新的对象。2、问题当一个系统应该独立于它的产品创建、构成和表示时;当要实例化的类是在运行时指定时(如动态装载);为了避免创建一个与产品类层次平行的工厂类层次时;当一个类的实例只能有几个不同状态组合中的一种时。3、解决方案创建产品时,根据原型参数,克隆一个新产品。4、通用结构5、参与

2012-05-23 14:45:05 1993

原创 重学设计模式 - Builder模式

1、意图将一个复杂对象的构建与它的表示分离开,使得同样的构建过程可以创建不同的表示。2、问题创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式。构造过程必须允许被构造的对象有不同的表示。3、解决方案将复杂对象的构造方法独立出来。4、通用结构5、参与者builder:为创建一个Product的各个部件指定抽象接口。Con

2012-05-22 11:39:21 1236

原创 重学设计模式 - Factory Method模式

1、意图定义一个创建对象的接口,让子类决定实例化哪一个类。Factory Method模式使一个类的实例化延迟到子类。2、问题一个类需要实例化另一个类的派生类。但不知道是哪一个。Factory Method允许派生类进行决策。3、解决方案派生类对实例化哪个类和如何实例化做出决策。4、通用结构 5、参与者Product:定义将被

2012-05-21 15:54:28 1341

原创 重学设计模式 - Object Pool模式

1、意图在创建对象比较昂贵,或者对于特定类型能够创建的对象数目有限制时,管理对象的重用。2、问题对象的创建和/或管理必须遵循一组定义明确的规则集。通常这些规则都与如何创建对象、能够创建多少个对象和在已有对象完成当前任务时如何重用它们等等相关。3、通用结构4、解决方案在需要一个Reusable对象时,Client调用ReusablePool的A

2012-05-20 14:52:27 4414 1

原创 重学设计模式 - Double-Checked Locking模式

1、  意图多线程中,创建线程安全的单件模式。2、  问题多线程中,Singleton模式并不总是正常工作的。3、  解决方案在检查到null或实例未创建之后进行“同步”,然后再检查一次,确保实例尚未创建4、  效果Singleton模式的变体,优化掉不必要的锁定,这种同步检查最多进行一次,因此不会成为瓶颈。5、

2012-05-20 11:48:27 2705

原创 重新设计模式 - Singleton模式

1、意图保证一个类仅有一个实例,并提供一个访问它的全局访问点。2、工作原理用一个特殊方法来实例化所需的对象。其中最关键的就是这个方法:调用这个方法时,检查对象是否已经实例化。如果已经实例化,该方法仅返回对该对象的一个引用。如果尚未实例化,该方法实例化该对象并返回对此新实例的一个引用。为了确保这是实例化此类型对象的唯一方法,将这个这个类的构造函数定义为保护或者私有的。

2012-05-20 10:19:15 1368

原创 重学设计模式 - Abstract Factory模式

1、意图提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。2、适用性以下情况可用Abstract Factory 模式:一个系统要独立于它的产品的创建、组合和表示时。一个系统要有多个产品系列中的一个来配置时。当你要强调一系列相关产品对象的设计以便进行联合使用时。当你提供一个产品类库,而只想显示它们的接口而不是实现时。

2012-05-18 18:02:28 1337

原创 重学设计模式 - Template Method模式

1、TemplateMethod模式简介Template Method是一个旨在帮助我们在抽象层次从一组不同的步骤中概括出一个通用过程的模式。《设计模式》一书中对Template Method模式的意图数这样的:定义一个操作中算法的骨架,而将一些步骤延迟到子类中。不改变算法的结构而重定义它的步骤。Template Method模式适用于存在几个互不相同但概念上相似的过程。每个过程的变化是互

2012-05-13 17:47:03 1385

原创 重学设计模式 - Observer模式

1、Observer模式  《设计模式》一书中对Observer模式的意图是这样叙述的:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新。  Observer模式并不是只要在对象间存在依赖关系时就要使用。例如,假设在一个票据处理系统中,有一个Tax对象处理缴税问题,显然当票据的项目增加时,Tax对象必须得到通知以便重新计算税额。但这并不

2012-05-13 16:51:37 1228

原创 重学设计模式 - Decorator模式

1、     Decorator模式简介  《设计模式》一书中对Decorator模式的意图是这样叙述的:动态的给一个对象添加一些额外的职责。就增加功能来说,Decorator模式比生成子类更为灵活。  Decorator模式的工作原理是:可以创建始于Decorator对象(负责新功能的对象)终于原对象的一个对象“链”。实现方法:将原对象作为新对象的成员。  如上图中Dec

2012-05-13 10:15:01 1920

原创 重学设计模式 - Bridge模式

1、Bridge模式简介所谓Bridge就是连接两处的通道。《设计模式》一书对Bridge模式的意图是这样叙述的:“将抽象与实现解耦,使它们都可以独立地变化。” 2、Bridge模式关键特征 意图将一组实现与另一组使用它们的对象分离。问题一个抽象类的派生类必须使用多个实现,但不能出现类数量爆炸性增长

2012-05-01 08:59:09 1201

原创 重学设计模式 - Strategy模式

1、Strategy模式简介《设计模式》一书中对Stragety模式的意图是这样叙述的:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。Strategy模式使算法可独立于使用它的客户而变化。 Strategy模式以下面几条原则为基础:1)  对象都具有职责;2)  这些职责不同的具体实现是通过多态的使用完成的;3)  概念上相同的算法具有多个不

2012-04-29 15:39:54 1765

原创 重学设计模式 - Adapter模式

1、Adapter模式简介Adapter就是一个目标不能直接拿来使用,需要转换。如电源适配器…《设计模式》一书中对Adapter模式的意图是这样叙述的:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的类可以一起工作。2、Adapter模式关键特征 意图使控制范围之外的一个原有对象与某个接口

2012-04-29 09:16:09 1543

原创 重学设计模式 - Facade模式

1、     Facade模式简介Façade在建筑领域的意思是:(掩饰真相的)门面,也就意味着,如果你想探究更细节的真相就需要经过Façade。《设计模式》一书中对Façade模式的意图是这样叙述的:为子系统中的一组接口提供一个统一接口。(提供一个门面,掩饰真相。)Façade模式定义了一个更高层次的接口,使子系统更加容易使用。2、     Facade模式关键特征

2012-04-29 08:39:32 2705

原创 C++多线程技术--API

1. windows API相关常用的线程函数更多详见MSDN--Process and Thread Functions1.1. CreateThread     CreateThread将在主线程的基础上创建一个新线程,大致做如下步骤:    1)在内核对象中分配一个线程标识/句柄,可供管理,由CreateThread返回    2)把线程退出码置为STILL_ACTIVE

2012-04-26 14:57:18 3080

原创 boost笔记:智能指针--概述

boost::scoped_ptrhttp://www.boost.org/doc/libs/1_49_0/libs/smart_ptr/scoped_ptr.htm  scoped_ptr用于确保能够正确地删除动态分配(new)的对象。scoped_ptr永远不能被复制或被赋值!因此scoped_ptr拥有它所指向的资源的所有权,并永远不会放弃这个所有权。scoped_ptr构造时即

2012-04-26 10:52:35 1708

原创 数据结构与算法面试题汇编(2)- 海量数据处理

1、从海量日志数据中提取出某日访问百度次数最多的那个IP。    算法思想:分而治之 + Hash1)IP地址最多有2^32=4G种取值情况,所以不能完全加载到内存中处理;2)可以考虑采用“分而治之”的思想,按照IP地址的Hash(IP)%1024值,把海量IP日志分别存储到1024个小文件中。这样,每个小文件最多包含4MB个IP地址;3)对于每一个小文件,可以构建一个IP为key

2012-04-24 22:09:10 1571

原创 函数的调用约定(cdecl,stdcall,fastcall,...)

调用约定  调用约定阐释了程序中函数的调用方式。当一个调用约定形成,我们需要讨论的是被调用的函数是如何获取数据(例如参数),以及这些数据在堆栈中是如何存放的。对于逆向工程来说,深入了解调用约定是很有必要的。因为在逆向工程中会经常遇见不同的调用约定。而且,确定一个函数的调用约定在逆向工程中对于你理解函数也有比较好的帮助。  在我们讨论不同的调用约定之前,先了解一些基础的函数调用指令:CALL

2012-04-20 16:20:52 1544

原创 静态库、动态链接库、dll导入库、COM组件库

动态链接库dll,静态链接库lib, 导入库lib 静态链接库LIB和动态链接库DLL的区别 创建和示例 静态连接库、动态连接库、和com组件

2012-04-19 18:02:45 1146

原创 数据结构与算法面试题汇编(1)- 链表的操作与应用

1、给定单链表的头指针和一个结点指针,在O(1)时间删除该结点。算法描述:删除单链表的一个节点需要知道该节点的前驱和后继。实际上找到前驱的平局时间复杂化度就是O(1).传送阵:http://blog.csdn.net/wcyoot/article/details/64266912、输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。算法描述:定义两个节

2012-04-10 17:47:55 3400

原创 多线程应用---使用WaveOut* API开发AMR音频播放器(含源码下载)

[源代码以及工程实例下载 ]1、 语音播放API1.1 waveOutOpen - 打开播放设备MMRESULT waveOutOpen( LPHWAVEOUT phwo, /* 一个指向接收波形音频输出设备的句柄 */ UINT_PTR uDeviceID, /* 将要被打开的波形音频输出设备的

2012-03-22 22:54:58 3850 1

原创 C++多线程同步技术(MFC)

1. 何时使用同步类    MFC 提供的多线程类分为两类:同步对象(CSyncObject、CSemaphore、CMutex、CCriticalSection 和 CEvent)和同步访问对象(CMultiLock 和 CSingleLock)。当必须控制对资源的访问以确保资源的完整性时,使用同步类。同步访问类用于获取对这些资源的访问权。    若要确定应使用的同步类,请询问以下一

2012-03-19 22:43:47 5217

原创 Hash表的算法与应用

一、什么是Hash        hashing定义了一种将字符组成的字符串转换为固定长度(一般是更短长度)的数值或索引值的方法,称为散列法,也叫哈希法。由于通过更短的哈希值比用原始值进行数据库搜索更快,这种方法一般用来在数据库中建立索引并进行搜索,同时还用在各种解密算法中。        数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。那么我们能不能综合

2012-03-17 17:00:53 1457

原创 链表的常见操作

一、链表创建链表主要有三种形式,包括单链表、双链表和循环链表。单链表每个节点只包含一个后驱指针,双链表节点同时包含一个前驱指针和一个后驱指针,循环链表的尾节点的后驱指向头节点。/*单链表节点结构*/ typedef struct NodeType { char elem; NodeType*next; }Node; /*双链表节点结构*/ typedef

2012-03-17 16:59:58 1007

原创 Windows内存管理 - 内存映射文件

1、前言    Windows提供了3种进行内存管理的方法: • 虚拟内存,最适合用来管理大型对象或结构数组。• 内存映射文件,最适合用来管理大型数据流(通常来自文件)以及在单个计算机上运行的多个进程之间共享数据。• 内存堆栈,最适合用来管理大量的小对象。    内存映射文件可以用于3个不同的目的• 系统使用内存映射文件,以便加载和执行. exe和DLL文件。这可以大大节省

2012-03-17 12:57:38 8921

原创 逻辑思维类面试题汇编(8)

141.有四个人借钱的数目分别是这样的:阿伊库向贝尔借了10美元;贝尔向查理借了20美元;查理向迪克借了30美元;迪克又向阿伊库借了40美元。碰巧四个人都在场,决定结个账,请问最少只需要动用多少美金就可以将所有欠款一次付清?析:阿伊库支出30美元,剩下每人收入10美元。因此,三人每人付10美元给阿伊库即可。  142.某公司的办公大楼在市中心,而公司总裁温斯顿的家在郊区一个小镇的附近。他每

2012-03-03 22:19:12 14431

原创 逻辑思维类面试题汇编(7)

121.有十种水果: a 有550个,b 有600个,c 有700个,d 有700个,e 有650个,f 有500个,g 500个,h 有600个,i 有600个,j 有500个现在有个1000人小学校,要求把这些水果平均分到孩子手里一年级 200人 每人要求分到:9个二年级 100人 每人要求分到:8个三年级 200人 每人要求分到:5个四年级 100人 每人要求分到:3个

2012-03-03 13:10:52 12684

原创 关于一个模块中所有rgs文件中有注册项无法全部写入注册表的问题

1、问题情形创建ATL项目时,使用VC每增加一个COM类,就会生成一个对应的rgs文件。在vista及win7系统中,如果增加了HKLM注册表项,而生成的程序并不是以管理员身份运行时,就会出现本该写入HKCU的某些注册表项并没有被写入。2、问题原因由于调用DllRegisterServer时,如果加载的rgs文件中的注册表项中的某一项写入注册表失败,后面的就不写入了。以下是AT

2012-02-22 10:54:28 2365 1

批量将VC工程相关文件转换为UTF-8编码格式

选择VC工程目录,转换文件格式到UTF-8格式。

2012-06-07

AMR音频文件播放器

AMR语音播放器,包含解码器。 基于Waveout* API实现。 还包含了一个基于MCI实现的播放器。 实现了播放、暂停、继续、停止、以及循环播放功能。 采用多线程技术,没有解码延时。 包含详细代码注释。

2012-03-22

WTL4MFC6_demo

WTL学习。 http://blog.csdn.net/wcyoot/article/details/6692316

2011-08-17

WTL4MFC5_demo

WTL学习 http://blog.csdn.net/wcyoot/article/details/6688356

2011-08-16

WTL4MFC4_demo

WTL学习。http://blog.csdn.net/wcyoot/article/details/6674808

2011-08-16

WTL4MFC3_demo

WTL学习:http://blog.csdn.net/wcyoot/article/details/6645176

2011-08-16

WTL4MFC2_demo

WTL学习代码,与博客文章对应 http://blog.csdn.net/wcyoot/article/details/6644863

2011-08-16

WTL4MFC1_demo

WTL学习相关,与博客文章相对应 http://blog.csdn.net/wcyoot/article/details/6641613

2011-08-16

WTL 学习源代码2

~~~~~~~~~~~~~~~~~~~~WTL学习代码。

2011-07-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除