自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(82)
  • 资源 (5)
  • 收藏
  • 关注

原创 SimpleFactory模式

在面向对象系统设计中经常可以遇到以下的两类问题:1、为了提高内聚和降低耦合,我们经常会抽象出一些类的公共接口以形成抽象基类或接口。这样我们可以通过声明     一个指向基类的指针来指向实际的子类实现,达到了多态的目的。这里很容易出现的一个问题就是n多的子类继承    自抽象基类,我们不得不在每次要用到的子类的地方就编写诸如new xxx;这样的代码。这里带来两个问题:

2013-05-17 17:16:14 1577 2

原创 hdu1003 Max Sum

Max SumProblem DescriptionGiven a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given(6,-1,5,4,-7), the max sum in this sequence is

2013-04-18 12:42:17 2290

原创 Win32 API实现系统托盘

这篇博客主要是讲述使用Win32 API编写一个系统托盘。实现的功能有:显示提示框、气泡、上下文菜单。要实现系统托盘,主要用到的函数是Shell_NotifyIcon,用到的结构体是NOTIFYICONDATA。当我们运行后,可以在任务栏中看到我们的托盘了当我们鼠标放在托盘图标上时,单击右键就会出现上下文菜单,我的这个有两个菜单项,Exit和Hide。点击Exit退出程序,点击Hi

2013-04-11 00:54:51 3862 2

原创 列举回收站中的文件和目录

这个例子是在学习Shell程序设计的时候看到的,觉得不错,就记录下来。#include #include #include #pragma comment(lib, "Shell32.lib")DWORD ListFileInRecycleBin();int main(){ ListFileInRecycleBin(); system("pause"); retu

2013-04-08 21:11:51 1869

原创 浅谈线程同步

现代操作系统都支持多线程操作了,多线程操作带来的一个麻烦就是多个线程对共享数据的访问。假设我们有线程A和线程B,它们需要访问同一内存区域,线程A写,线程B读。一般情况下我们是希望线程A写操作完成后再进行读操作或者线程B读操作完成后我们再进行写操作。但是在多线程中,可能由于线程A分配的时间片用完了或者其他原因导致线程A的写操作还没完成就调用线程B来对这块共享内存进行读操作,也有可能在线程

2013-04-06 14:38:29 2340

原创 通过进程名查找进程ID

这里我利用工具帮助(Tool helper)这类API来实现根据进程名查找进程ID。Tool helper API由头文件TlHelp32.h定义。我们实现这个功能需要用到的API有CreateToolhelp32Snapshot、Process32First、Process32Next。之外我们还需用到的一个结构体是PROCESSENTRY32,这个结构体中保存了进程的相关信息,其中就有

2013-03-27 20:25:25 3841

原创 通过文件句柄获得文件路径

Windows系统提供了一个名为GetMappedFileName的API函数,这个函数可以实现从mapping对象的句柄得到被映射文件的路径。但是路径是以设备名的形式给出的,如类似于“\Device\HarddiskVolume4\MyCode\C C++\test\test\zengxinxin.txt”,而这个文件在我自己电脑上的路径是“D:\MyCode\C C++\test\

2013-03-25 10:36:30 7171 3

原创 构造函数注意事项总结

这个是本人自己复习C++ Primer时根据书上的讲解以及课后习题总结的关于构造函数使用的一些注意事项。本人能力有限,总结不全处还望大家多多指正。构造函数注意事项总结:1、构造函数初始化列表中初始化成员和构造函数函数体中对成员赋值的区别:使用构造函数初始化列表的版本初始   化数据成员,没有定义初始化列表的构造函数版本在构造函数函数体中对数据成员赋值。2、没

2013-03-13 15:35:43 2080

原创 C++类的内联成员函数应放在哪

今天复习C++ Primer的时候,看到了关于C++类的内联成员函数的放置,应该放在头文件中。那么这到底是为什么呢?仅仅是一种代码规范问题还是必须这样做呢?下面我就来讲讲我自己的理解吧。要彻底理解这个问题,首先就要了解下函数的声明和定义了。我们知道,函数可以在多处声明,但只能在一个地方定义,不然就会出现重定义。大部分函数默认是外部链接,而inline函数默认为内部链接。也就是说in

2013-03-13 09:38:06 9447 4

原创 算法导论学习笔记(十三):动态规划(三):01背包问题

01背包问题有N件物品和一个容量为V的背包。第i件物品的体积是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v] = max{f[i-1][v],f[i-

2013-03-07 11:12:09 5355

原创 算法导论学习笔记(十四):贪心算法(一):活动安排问题

对很多最优化问题来说,采用动态规划方法来解决就有点大材小用了。有时候我们可以采用贪心算法来取代。贪心算法是通过所做的局部最佳选择来产生一个全局最优解。而且和动态规划不同的是,它是通过自顶向下的方式来解决每一个子问题。而活动安排问题可以说是贪心算法的一个入门学习。当我看到这个问题时,首先就想到了自己大一做ACM时在杭电acm里遇到的一个题目:今年暑假不AC。可以说这个题目就是

2013-03-03 15:00:38 2734

原创 manacher算法详解

今天同学问我求字符串中最大回文串的问题,最先想到的就是暴力了,时间复杂度为O(n*n),而且还要考虑回文串长度为奇偶两种情况。后来同学说网上有O(n)的解法,就搜了下,果然manacher是在O(n)的时间复杂度里解决的。但是里面那个求数组p的过程还是不怎么理解,特在此发表希望得到论坛朋友们的指教。下面是实现代码:#include#includeusing namespace st

2013-03-02 19:10:11 3907

原创 算法导论学习笔记(十二):动态规划(二):最长公共子序列(LCS)

LCS:给出两个序列S1和S2,求出的这两个序列的最大公共部分S3就是就是S1和S2的最长公共子序列了。公共部分必须是以相同的顺序出现,但是不必要是连续的。解法一:在没学动态规划之前,我能想到的方法就是枚举了。将S1的所有子序列全部检查是否是S2的子序列,从中选出最长公共子序列。对于长度为n的序列,其子序列共有2的n次方个,这样的话这种算法的时间复杂度就为指数级了,这显然不

2013-02-27 19:37:56 6576

原创 算法导论学习笔记(十一):动态规划(一)

装配线调度#includeusing namespace std;int a[3][7], t[3][7], e[3], x[3];int f[3][7], l[3][7];int n = 6;/***************************************************** l[i][j]存储经过装配站j-1所在装配线** f[1][0]和f[

2013-02-25 20:37:20 2050

原创 算法导论学习笔记(十):约瑟夫排列

约瑟夫问题的定义:假设n个人排成环形,且有一个正整数 m 就让其出列,且报数进行下去。这个过程一直进行到所有人都出列为止。每个人出列的次序定义了整数0,1,2,...n-1的(n, m)-约瑟夫排列。例如(7, 3)约瑟夫排列为。Code#includeusing namespace std;int main(){ int n, m; int a[100];

2013-01-26 14:52:04 2549

原创 简易版放大镜

#include#define IDM_TIMER 1LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){ static TCHAR

2013-01-15 21:47:18 1364

原创 算法导论学习笔记(八):二叉查找树

前言昨天复习完了二叉树,今天终于可以很好的展开对二叉查找树的学习了。言归正传,查找树是一种数据结构,支持多种动态集合操作,包括SEARCH、MINIMUM、MAXIMUM、PREDECESSOR、SUCCESSOR、INSERT以及DELETE。定义一颗二叉查找树是按二叉树结构来组织的。这样的树可以用链表结构来表示,其中每一个结点都是一个对象。结点中除了key域和卫

2013-01-09 10:54:48 3263 4

原创 算法导论学习笔记(七):二叉树

前言昨天看算法导论看到二叉查找树,虽然以前学数据结构的时候已经学过了二叉树,但感觉自己很多东西已经忘了,为了更好的学习二叉查找树以及后面所涉及到的二叉树方面的相关算法,故再一次复习了下二叉树。并在这写个复习笔记,便于以后的复习。定义学习二叉树之前,肯定得了解数据结构中的树。数据结构中的树和我们现实中的树还是有一点区别的。首先数据结构中的树与现实相比是倒立的。其次数据

2013-01-07 15:46:27 3085

原创 算法导论学习笔记(六):计数排序与基数排序

这里的两个排序的期望运行时间都是O(n),应该是到目前为止时间复杂度最低的了。计数排序计数排序假设n个输入元素的每一个都是介于0到K之间的整数,此处K为某个整数,在具体实现中,我们可以取K为n个元素中最大的那个。计数排序的基本思想:对每个输入元素x,确定小于x的元素个数。再根据这个信息,把x放到它最终输出数组中的位置上。例如,有20个元素小于x,则x就放到输出数组的第21个位置

2012-12-30 17:14:30 2600

原创 算法导论学习笔记(五):快速排序

快速排序是一种最坏情况运行时间为O(n*n),虽然这个最坏情况运行时间比较差,但快速排序通常都是用于排序的最佳的实用选择,这是因为其平均性能相当好:期望的运行时间为O(nlgn),且O(nlgn)记号中隐含的常数因子很小。另外,它还能够进行就地排序。快速排序和合并排序一样,采用的都是分治思想。快排中利用该思想解决步骤为:1、先从数组中取出一个数作为基数,基数的选择对排序效率

2012-12-29 22:10:23 5944

原创 MFC实现QQ抖动

QQ抖动功能其实就是一个音频文件+窗口移动来实现的,这里我用到的播放音频文件的API是PlaySound,播放的音频文件是"shake.wav",这个文件是直接在QQ安装目录下复制过来的,只要把它放到源程序目录下即可。在使用这个播放音频的API:PlaySound时,需要在#include后面加上#include#pragma comment(lib, "WINMM.LIB")

2012-12-29 15:17:06 3036 1

原创 算法导论学习笔记(四):求X的N次方的二分实现

今天在看到网易里的算法导论的公开课,听到老外讲分治法时提到了下算一个数的N次方的可以通过二分思想来实现,于是便想自己写个代码来实现它。虽然很简单,还是想写在博客中。一是可以加深自己的印象,以后遇到这类问题时可以马上想到用二分来解决;二是可以方便以后的复习,再次用到的时候可以直接来这找模板。#includeusing namespace std;int Pow(int x, i

2012-12-28 02:39:01 5394 4

原创 算法导论学习笔记(三):堆排序

堆排序是一种利用堆的性质进行的排序算法。所以学习堆排序之前先来简单介绍下堆。堆堆数据结构是一种数组对象,如图一所示,它可以被视为一颗完全二叉树。     图一树中的每个结点与数组中存放该结点值的那个元素对应。树的每一层都是填满的,最后一层可能除外。如果树的结点和数组的下标都从0开始,那么给定了某个结点的下标i,其父节点PARENT(i)、左儿子LEFT(i)和右儿子

2012-12-26 17:17:32 2194

原创 算法导论学习笔记(二):合并排序

在前一篇博客中已经提到了插入排序,这里继续介绍下另一种比较高效的排序:合并排序。合并排序用到了分治思想,其时间复杂度为O(NlgN)。合并算法的关键在于合并。合并排序的的基本步骤如下:1.把待排序的数组分为左数组和右数组2.对左数组和右数组进行迭代排序3.将左数组和右数组进行合并显然这些基本步骤符合分治模式在每一层递归上的三个步骤:分解、解决、合并。每步的实现代码如下:

2012-12-15 22:43:49 3094 1

原创 算法导论学习笔记(一):插入排序

排序可以说是我们平常写代码中最经常用到的算法之一了。冒泡排序应该是大家最熟悉的了,几乎每本编程语言的入门教程中都会提到。这里主要讲下插入排序。插入排序:插入排序的大概步骤是从第二个元素开始遍历,当遍历到第N个元素时,前面N - 1个元素都已经排好序了,然后查找前面排好序的N - 1个元素,将第N个元素插入到适当的位置。也就是说插入排序实现有两个关键点:如何保证遍历到当前

2012-12-11 22:32:38 3446

转载 痴迷的代价:美国人每年缴纳“苹果税”

导语:国外媒体今天撰文指出,即便是富裕的美国消费者,痴迷苹果产品都让他们付出了代价。由于购买iPhone、iPad等苹果设备的开销逐年大幅增加,许多美国家庭由此背负了沉重的包袱,这笔不菲的开支也被戏称为“苹果税”(Apple Tax)。以下为文章全文:  痴迷苹果设备  随着“财政悬崖”的阴云笼罩,美国纳税人开始盘算着如何勒紧裤腰带过日子。因为一旦出现这种局面,美国人的收入所得税会

2012-12-11 18:31:45 1413

原创 指针学习系列(二):const 与 指针

const 与指针变量的结合主要有3种情况:常量指针、指针常量及两者的结合。常量指针:指向常量的指针,顾名思义,就是指针指向的变量是一个常量,也就是指针指向的地址中的内容不能修改。当然这样的指针也是可以指向变量的,而且很多时候我们都是这么做的。在类中,尤其是对一个对象进行读操作时,一般我们都希望不改变它的值,但我们有时却还需要通过别的函数对这个对象进行写

2012-12-06 15:45:09 789

转载 数据库没有有效所有者解决方案

此数据库没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使用“数据库属性”对话框的“文件”页或ALTER AUTHORIZATION语句将数据库所有者设置为有效登录名,然后再添加数据库关系图支持对象。按照第一种方式更改怎么也不行,并且文件的所有者也是sa。在csdn中找了半天,有个同志给出了第二种解法,使用ssms。具体在SSMS中运行以下命令:ALTER AUTHO

2012-11-22 14:51:16 1289

原创 Win7 在安装vs2010后向sql2008添加SQL_Server_Management详解

我们在安装好VS2010后,会发现VS2010自带了sql server 2008,但自带的版本缺少SQL_Server_Management,所以我们得自己安装这个,在网上找到了比较详细的步骤,如下:安装的先决条件:1.SQLManagementStudio_x86_CHS,这个可以自己到官网下载,如果需要的朋友可以给我留言2.系统安装有.Net FrameWork3.5 sp1,我

2012-11-20 11:32:26 17339 21

原创 编程之美学习笔记(三):一摞烙饼的排序

问题描述星期五的晚上,一帮同事在希格玛大厦附近的“硬盘酒吧”多喝了几杯,程序员多喝了几杯之后谈什么呢?自然是算法问题。有个同事说:“我以前在餐厅打工,顾客经常点非常多的烙饼。店里的烙饼大小不一,我习惯在到达顾客饭桌前,把一摞饼按照大小次序摆好---小的在上面,大的在下面。由于我一只手托着盘子,只好用另一只手,一次抓住最上面的几块饼,把它们上下颠倒个个儿,反复几次之后,这摞烙饼就

2012-11-17 20:11:38 2222

转载 典型的 C++ 程序员成长经历

1.  完整的学一遍 C++ 所有语言特性,典型书籍 "The C++ Programming Language" Part1, Part2, "C++ Primer"    感觉 C++ 像大杂烩(多编程范型),各种精妙的语法特性 (friend, virtual/RTTI, const/mutable, exception, template),太多精妙的东西容易导致记忆琐碎化,学

2012-11-16 21:48:33 3428

原创 编程之美学习笔记(二):中国象棋将帅问题

问题描述:根据中国象棋的基本原则,在只有双方的将帅的棋盘上,找出所有双方可以落子的位置,也就是将帅不能 相互面对,而且只能使用一个字节存储变量。这个问题本身是并不复杂,若没有“只能使用一个字节存储变量”这个条件的限制,直接两层 for循环,遍历将帅所有的可能位置即可,但有了这个条件限制后,问题一下子就变得复杂了些。那么接下来我们要思考的就是如何用一个字节的变量来做两层循环的

2012-11-14 22:58:53 1511

转载 SkinSharp作者简述

SkinSharp作者写的SkinSharp是小生一个人独立开发的换肤产品。开发这个产品的原因和绝大多数朋友一样,买不起skin++。由于对ui非常热爱,曾经毕业时还想去skin++去工作,难耐他们老板看不上咱。后来一切证实没去是非常正确的。因为对这方面非常感兴趣,索性就自力更生吧。 关于软件换肤原理其实非常简单,就是hook + subclass, 替换窗口过程,

2012-11-13 20:42:59 4748

原创 C++类的静态成员(static)

类的静态成员主要是用来解决资源共享的问题。但其使用起来还是比较蛋疼的,很容易搞混,所以在这写下来当做以后复习用。类的静态成员包括静态数据成员和静态函数成员。一.静态数据成员:类中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具

2012-11-12 12:58:09 1276 1

原创 c++中的 mutable 关键字

我们在学习C++类的时候,经常会看到这样的成员函数 void function_name(...)const;相比普通的成员函数,其最后加了个 const,像这种在函数声明的参数表后面出现的const的成员函数我们称之为“常量成员函数”,它指明这些函数不会修改对象的状态。很显然,编译器将能捕捉到无意中违背这种承诺的任何企图。例如我们定义这样一个类:class A{ int x;

2012-11-09 14:12:23 3873 1

原创 使用反向块投影搜寻图像中的物体 cvCalcBackProjectPatch

这篇讲的是使用函数cvCalcBackProjectPatch()在一幅图中寻找某个特定的小物体。先简单讲下这个函数吧,cvCalcBackProject()计算一个像素是否是一个已知目标的一部分,cvCalcBackProjectPatch()计算一块区域是否包含已知的目标。函数cvCalcBackProjectPatch()在整个输入图像使用一个滑动窗口,如图1所示。在输入

2012-10-29 15:43:35 3281

转载 opencv 反向投影 cvCalcBackProject的示例 ,用图像中某中颜色的区域

在学习 《学习opencv》的cvCalcBackProject时自己写的例子#include #include #include #include #include using namespace std;int main(){ IplImage *src = cvLoadImage("f:\\images\\hand00.jpg"); IplImage *hsv_src

2012-10-27 19:08:39 1736

原创 直方图用法示例

这个程序根据输入的图像计算出一个色相饱和度直方图,然后利用网格的方式将直方图以网格形式显示。Code:#include#include#includeint main(){ IplImage* src = NULL; src = cvLoadImage ("lena.jpg", 1); IplImage* hsv = cvCreateImage (cvGetSize(s

2012-10-27 14:52:41 2494

原创 编程之美学习笔记(一): 1的数目

问题描述给定一个十进制正整数N,求出从1开始,到N的所有整数中出现的所有“1”的个数。思路一这个问题初一看感觉就是不是很难,因为马上就能想到一个最简单的方法来计算了,那就是从1开始遍历到N,将其中每一个数中含有的“1”的个数加起来,这样便得到了从1到N所有“1”的个数的和。下面是实现代码#includeusing namespace std;int count

2012-10-26 20:28:18 1057

转载 SQLITE3 使用总结

SQLITE3 使用总结                   董淳光 42530 (老工号)[email protected]                     2007年6月11日星期一前序:... 1一、       版本... 1二、       基本编译... 2三、       SQLITE操作入门... 2(1)

2012-10-26 16:39:53 902

Win32 API实现系统托盘

Win32 API编写一个系统托盘。实现的功能有:显示提示框、气泡、上下文菜单

2013-04-11

图像处理和图像识别中常用的OpenCV函数

图像处理和图像识别中常用的OpenCV函数

2012-10-20

《计算机网络》上机实验指导书(莫林利编)

初步的网络知识 大家了解下就行了 希望各位看官多多吐槽呀

2012-03-31

windows程序设计

一本讲述win32API很经典的书籍,并附有很多源码

2012-03-16

pa个人助手

pa为纯绿色软件,软件发布为单一的exe文件,执行既可用,会在程序目录下创建默认的文件(pa.db文件)

2011-12-21

空空如也

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

TA关注的人

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