编程方法
dongzhiquan
吉大计算机毕业,南京,程序员.
展开
-
排序算法总结
排序算法总结 花了很长时间终于把排序的基础学了一下,这段时间学了很多东西,总结一下:学的排序算法有:插入排序,合并排序,冒泡排序,选择排序,希尔排序,堆排序,快速排序,计数排序,基数排序,桶排序(没有实现)。比较一下学习后的心得。我不是很清楚他们的时间复杂度,也真的不知道他们到底谁快谁慢,因为书上的推导我确实只是小小了解,并没有消化。也没有完全理解他们的精髓,所以又什么错误的还需要高手指点。呵转载 2009-07-14 11:14:00 · 580 阅读 · 0 评论 -
传递参数给函数
按值传递一个参数给函数就是制作该参数的一个独立复本,即一个只存在于该函数内的复本。即使按引用传递对象和数组时,如果直接在函数中用新值覆盖原先的值,在函数外并不反映新值。只有在对象的属性或者数组的元素改变时,在函数外才可以看出。 param.message = "I was changed";// 由于是新创建了对象,所以将不会在函数外反映新值,新值仅在函数内有效原创 2009-12-14 21:41:00 · 530 阅读 · 0 评论 -
「System」「Local Service」「Network Service」
「System」「Local Service」「Network Service」执行程序时的区别「System」执行某些程序也会不正常 如:OpenOffice,因为system账户没有填写注册信息(由于system无用户界面所以无法进行与账户对应的用户信息的输入)所以system无法使用该软件 *个人总结,仅供参考原创 2009-12-18 10:04:00 · 559 阅读 · 0 评论 -
委托、事件和回调函数这3者之间到底是什么关系
简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。 为什么要使用回调函数? 因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用函数。 回调函数:就是指向转载 2010-03-18 23:44:00 · 932 阅读 · 0 评论 -
子线程中定义消息,进行消息循环
子线程中定义消息,进行消息循环原创 2010-07-04 02:48:00 · 1368 阅读 · 0 评论 -
调试dll
1:把dll的项目直接放进带有exe启动的项目,引用,调试2:直接启动dll项目: 项目属性的“启动操作”里把调试模式该为程序,并在“启动应用程序”栏选取exe程序。 这样vs.studio会先把那个exe启动起来。当然那个exe如果调用了这个dll的话,在这里设置断点就没问题了。 比如,我提供了一个exe程序,里面有一大堆的处理,其中一个需要调用xx.dll。某开发者只有xx.dll的源码,没有exe的源码,但是又必须调试改dll源码。这时就可以使用这种方式来调试了。转载 2010-07-19 23:29:00 · 601 阅读 · 0 评论 -
静态链接库LIB和动态链接库DLL
lib静态链接转载 2010-07-22 17:23:00 · 1232 阅读 · 0 评论 -
在共享DLL中使用MFC和在静态库中使用MFC有什么区别
"在共享DLL中使用MFC"指的是打包时一些MFC的DLL的内容没有被硬编码到在EXE文件中,所以EXE会文件较小,但是运行时要求运行的系统环境中要有相关的DLL文件. "在静态库中使用MFC"是将DLL对应的lib静态库中的相关代码硬编码到EXE文件中,文件较大,但是可以在没有已经被包含DLL的机器上运行,当然即使如此也并非所有的DLL都会将其硬编码到Exe中,因此仍然某些DLL是必须的.比如Redistributable Package中的内容.转载 2010-07-31 15:10:00 · 898 阅读 · 0 评论 -
C++中头文件包含问题
<br /> 在一些大的工程中,可能会包含几十个基础类,免不了之间会互相引用 ( 不满足继承关系,而是组合关系 ) 。也就是需要互相声明。好了,这时候会带来一些混乱。如果处理得不好,会搞得一团糟,根据我的经验,简单谈谈自已的处理办法:<br />编码时,我们一般会尽量避免 include 头文件,而是采用声明 class XXX 。 但有时候还是必须用 Include 头文件,那么,两者的划分在于什么呢?<br />应该是很明确的,但书上好像都少有提及。<br />首先:<br />转载 2010-08-10 23:51:00 · 840 阅读 · 0 评论 -
关于VC2008编译出现错误“error C2664: ” 的处理方法:
在VC2008中编程如下: TempValue.Format("%d",m_CH1_Value); //TempValue为Cstring类型,m_CH1_Value为Int类型编译之后出现1>e:/project/cplus/control/control/controldlg.cpp(200) :error C2664: “void ATL::CStringT::Format(constwchar_t *,...)”: 不能将参数1 从“const ch转载 2010-08-12 23:35:00 · 3592 阅读 · 0 评论 -
堆与栈
<br />堆与栈比较<br />1.管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak。<br />2.空间大小:一般来讲在32位系统下,堆内存可以达到4G的空间,从这个角度来看堆内存几乎是没有什么限制的。但是对于栈来讲,一般都是有一定的空间大小的,例如,在VC6下面,默认的栈空间大小是1M(好像是,记不清楚了)。当然,我们可以修改: <br /> 打开工程,依次操作菜单如下:Project->Setting->转载 2010-09-08 23:26:00 · 426 阅读 · 0 评论 -
钩子函数
WINDOWS的钩子函数可以认为是WINDOWS的主要特性之一。利用它们,您可以捕捉您自己进程或其它进程发生的事件。通过“钩挂”,您可以给 WINDOWS一个处理或过滤事件的回调函数,该函数也叫做“钩子函数”,当每次发生您感兴趣的事件时,WINDOWS都将调用该函数。 一共有两种类型的钩子:局部的和远程的。 局部钩子 仅钩挂您自己进程的事件。 远程钩子 还可以将钩挂其它进程发生的事件。转载 2010-11-28 11:07:00 · 468 阅读 · 0 评论 -
◎Design Pattern: Abstract Factory 模式
◎Design Pattern: Abstract Factory 模式 我们平日走在步人街上都能看到很多专卖店,服装、珠宝等等;拿服装专卖店来说,一个专卖店里面肯定有好几个品牌的服装,比如Giordano、Baleno,这些品牌都是不同公司生产的。没人见个专卖店自己生产服装的吧,专卖店需要某个品牌的服装时,就去联系相应的厂家供货即可,具体的生产是由厂家去完成。转载 2009-10-13 13:46:00 · 530 阅读 · 0 评论 -
即时调试(Just-in-timeDebugging) Visual Studio调试 断点中断程序的执行(断点指令)
VC中的Just-in-time调试,使用该调试模式应用程序可以再Visual C++开发环境之外运行知道发生一个错误.当遇到一个程序错误时,Just-in-time调试自动加载Visual C++ Debugger .要打开Just-in-time调试只需要修改Tools->Options->Just-in-time debugging选项即可(其实该选项所做的操作就是写了个注册表,原创 2009-09-18 23:08:00 · 2811 阅读 · 3 评论 -
墨菲定理
作为一个程序员在桌面检查时,必须经常考虑到输入不可能的非正常数据,确定程序走向,所以程序员应该牢记墨菲法则 墨菲法则 墨菲定律(Murphys Law),亦称莫非定律、莫非定理、或摩菲定理,是西方世界常用的俚语。墨菲定律主要内容是:事情如果有变坏的可能,不管这种可能性有多小,它总会发生。比如你衣袋里有两把钥匙,一把是你房间的,一把是汽车的转载 2009-09-12 08:25:00 · 805 阅读 · 0 评论 -
VC的命名规则
VC的命名规则 一、程序风格:1、严格采用阶梯层次组织程序代码:各层次缩进的分格采用VC的缺省风格,即每层次缩进为4格,括号位于下一行。要求相匹配的大括号在同一列,对继行则要求再缩进4格。例如:2、提示信息字符串的位置在程序中需要给出的提示字符串,为了支持多种语言的开发,除了一些给调试用的临时转载 2009-07-16 12:54:00 · 597 阅读 · 0 评论 -
Windows下的最长文件路径
连带路径分隔符“/”及文件名本身,最大支持259个字符(系统为XP,SP2)。事实上,所有的 Windows API 都遵循这个限制。因此,每当我们试图更改某一文件的文件名时,当输入的文件名长度 ( 全路径 )到达一定限度时,虽然文件名本身还未达到 255 个字符的限制,但是任何输入将不再被接受,这其实正是由于操作系统不允许 260个字符(byte)原创 2009-07-28 10:47:00 · 6308 阅读 · 0 评论 -
CMAP原理及其在MFC中的实现(MAP模板没有顺序遍历的功能)
会用CMap了,其他的基本也就会了,很容易理解。 映射表类(CMap)是MFC集合类中的一个模板类,也称作为“字典”,就像一种只有两列的表格,一列是关键字,一列是数据项,它们是一一对应的。关键字是唯一的,给出一个关键字,映射表类会很快找到对应的数据项。映射表的查找是以哈希表的方式进行的,因此在映射表中查找数值项的速度很快。举个例子来说吧,公司的所转载 2009-08-05 15:51:00 · 2773 阅读 · 0 评论 -
思考设计模式在自助终端软件上的应用 ——Observer(观察着)模式
主要思想:将各硬件模块作为观察者加入观察者队列,当机器状态改变时Notify所有观察者,各观察者根据消息类型做不同反应或不作反应。下面贴出代码简单实现,希望引起圈内朋友的关注,起到抛砖引玉的效果。 下面两个类是两个基类.class CObserver {public: CObserver(); virtual转载 2009-08-07 09:53:00 · 418 阅读 · 0 评论 -
摩根定理
奥古斯都·德·摩根首先发现了在命题逻辑中存在着下面这些关系: 非(P 且 Q)=(非 P)或(非 Q) 非(P 或 Q)=(非 P)且(非 Q)德·摩根的发现影响了乔治·布尔从事的逻辑问题代数解法的研究,这巩固了德·摩根作为该规律的发现者的地位,尽管亚里士多德也曾注意到类似现象、且这也为古希腊与中世纪的逻辑学家熟知(引自Bocheński《形式逻辑历转载 2009-08-12 15:04:00 · 2596 阅读 · 0 评论 -
C#访问同类实例的私有成员代码
C#访问同类实例的私有成员代码大家都知道,一个类的私有成员只能在他的内部访问!但是不知道大家注意到没有,实际上在C#中一个类的实例是可以访问同一个类的另外一个实例的私有成员的。请看这段简单的代码public class MyClass { private int i = 0; public void Function转载 2009-08-25 10:22:00 · 625 阅读 · 0 评论 -
do...while(false)的妙用
在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。 1. do...while(0)消除goto语句。通常,如果在一个函数中转载 2009-06-24 12:07:00 · 703 阅读 · 0 评论 -
利用关键代码段实现多线程同步
利用关键代码段实现多线程同步关键代码段又叫临界区,是指一个小代码段,在代码能够执行前,它必须对具有对资源的独中权。如一次只能一个人打电话的公用电话厅,开始时要建个电话厅(初始化临界区:InitializeCriticalSection),一个人打电话(EnterCiticalSection),打完电话离开,便于别人打(LeaveCriticalSection),电话原创 2009-08-28 18:42:00 · 716 阅读 · 0 评论 -
《c++程序调试实用手册》
开篇十个问题问题1 作为一个c/c++程序员,你的所有子程序代码都封装在函数体内,你知道还有其他类型的子程序否(与c/c++不同,许多语言还有另外一种类型的子程序成为过程)?问题2 你是否知道过程子程序和函数子程序之间的所有区别?问题3 你是否学习过如何解析一个表达式,考虑到操作符的优先级?问题4 你是否知道属于先行转载 2009-08-30 21:58:00 · 1096 阅读 · 0 评论 -
什么是 DLL?
什么是 DLL?察看本文应用于的产品if (!loadTOCNode) {var loadTOCNode = function(){}}本页概要简介更多信息什么是 DLL?DLL 的优点DLL 依赖项DLL 故障排除工具Dependen原创 2009-06-27 10:12:00 · 1107 阅读 · 0 评论 -
CoInitialize与CoInitializeEx,AfxOleInit()的不同 控制台程序中AfxOleInit失效原因
CoInitialize()和AfxOleInit()都是初始化COM库,可它们有什么不同呢 OLE是建立在COM之上的技术,层次比COM要高。AfxOleInit()调用的是OleInitialize(),而 OleInitialize()除了调用CoInitializeEx()来初始化COM库外,还进行一些其它的操作,这些操作对OLE应用来说是必须的,这些OLE应转载 2009-07-01 10:56:00 · 1976 阅读 · 0 评论 -
关于Debug Release
关于Debug&Release在使用VC开发软件的过程中,正当要享受那种兴奋的时候突然发现:release与debug运行结果不一致,甚至出错,而release又不方便调试,真的是当头一棒啊,可是疼归疼,问题总要解决,下面将讲述一下我的几点经验,看看是不是其中之一:1. 变量。 大家都知道,debug跟release在初始化变量时所做的操作是不同的,debu原创 2009-09-07 22:38:00 · 723 阅读 · 0 评论 -
map和set(关于iterator失效的问题)
STL map和set的使用虽不复杂,但也有一些不易理解的地方,如: 为何map和set的插入删除效率比用其他序列容器高? 为何每次insert之后,以前保存的iterator不会失效? 为何map和set不能像vector一样有个reserve函数来预分配数据? 当数据元素增多时(10000到20000个比较),map和set的插入和搜索速度变化如何?或许有得人能回答出来大概原因,但要彻底明白,还需要了解STL的底层数据结构。C++转载 2011-01-05 00:02:00 · 1317 阅读 · 0 评论