摘要: Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起 Release 版错误,在此不讨论) Debug 版本:/MDd /MLd 或 /MTd 使用 Debug runtime library(调试版本的运行时刻函数库)/Od 关闭优化开关/D "_DEBUG" 相当于 #def 阅读全文
posted @ 2010-01-11 15:20 maxweii 阅读(574) 评论(0) 推荐(0) 编辑
摘要: 游戏对战平台,在没有了解的情况下,总是给人一种很神秘的感觉,然而,当你对socket的理解到达一定程度之后,你就不会再觉得神秘。 用一句话来总结这种技术:虚拟局域网(VLAN)。 实现这种平台,主要是客户端,而客户端有很多种方法,就我所了解,可以用面三种方法实现: 1. 替换Windows socket DLL,然后,你想做什么就做什么吧。 2. 进程注入,HOOK WinSock函数调用。 3. 虚拟网卡驱动。 其实,前两种技术,也是许多木马使用的方法。正所谓技术是一面双刃剑,看你要用到什么地方了。现在的对战平台,就我了解,使用的是后两种方法。大多数是第2中----毕竟,驱动在有些用户权限下 阅读全文
posted @ 2010-01-11 14:44 maxweii 阅读(697) 评论(0) 推荐(0) 编辑
摘要: “全局”快捷键下列快捷组合键可用于集成开发环境 (IDE) 中的不同位置。命令名 快捷键 说明 编辑.复制 CTRL + CCTRL + INSERT 将当前选定的项复制到系统剪贴板。 编辑.剪切 CTRL + XSHIFT + DELETE 将当前选定的项移除到系统剪贴板。 编辑.循环应用剪贴板中的复制项 CTRL + SHIFT + INSCTRL + SHIFT + V 将项从“工具箱”的“剪贴板循环”选项卡粘贴在文件中的插入点,并自动选择粘贴的项。可通过重复按这些快捷键来查看剪贴板上的每个项。 编辑.转到下一个位置 F8 将光标移动到下一项,如“任务列表”窗口中的任务或“查找结果”窗口 阅读全文
posted @ 2010-01-06 17:08 maxweii 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 客户区和非客户区指的什么?窗口客户区和视图客户区的区别! 1,什么是客户区/非客户区? 2, 窗口(框架/frame)的客户区和视图(view)的客户区的区别?这些都是初学者很容易迷惑的地方,我也是很迷惑,不过经过一番折腾终于弄明白这些问题了.对于这些问题,我想只用两个图片来说明最直观!如下:1,在一个MDI(多文档)应用程序中每个概念如下图所标示:效果如下图1,窗口框架的客户区就是指图中的灰色部分:即蓝色方框内区域,框架的非客户区就是指蓝色方框之外的窗口区域,包括程序图标,标题栏,菜单,最大最小/关闭按纽,左右两个框和底下的状态条.2,视图的客户区就是指图中绿色部分:即红色方框内的区域,视图 阅读全文
posted @ 2010-01-06 11:43 maxweii 阅读(3426) 评论(0) 推荐(1) 编辑
摘要: 没有人会反对工作是为了赚取报酬,但是曾几何时,谈薪水却变成工作里最难开口的一件事。你心里是否也曾有过这样的困惑:“按公司规定”难道真是唯一的标准答案吗?  有一个趣的调查。875位接受调查的人力资源主管中,60%表示会在面谈时对薪水保留一些弹性,只有30%说绝对不能调整,其余10%要视对方的态度而定。另外一个调查则发现,高达80%的人力资源主管是愿意跟面试对象好好沟通薪水的。他们甚至并不排斥要进行一点“谈判”。  勇于对薪水发出声音  俗话说,“会吵的人有糖吃”,在谈薪水这件事,不能说是100%对,但对你的薪水发出声音,我认为是正面的,至少你的主管会多纳进一个考虑的因素。  当企业与员工的关系 阅读全文
posted @ 2010-01-04 10:26 maxweii 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 1DLL的进入/退出函数 1.1 DllMain简介 跟exe有个main或者WinMain入口函数一样,DLL也有一个入口函数,就是DllMain。以“DllMain”为关键字,来看看MSDN帮助文档怎么介绍这个函数的。 The DllMain function is an optional method of entry into a dynamic-link library (DLL)。(简要翻译:对于一个Dll模块,DllMain函数是可选的。)这句话很重要,很多初学者可能都认为一个动态链接库肯定要有DllMain函数。其实不然,像很多仅仅包含资源信息的DLL是没有DllMain函数的 阅读全文
posted @ 2009-12-28 15:52 maxweii 阅读(462) 评论(0) 推荐(0) 编辑
摘要: 这是我多年来招聘培训游戏程序员的一点想法。一直想汇总一下。主要目的是为了更好的对公司新进C++程序员进行培训,并且建立起游戏程序员培训,发展,成才,成为核心骨干,管理层,期权收益人等一整套体系。因为对于MMO游戏制作来讲,解决好C++技术队伍,是保证合格软件的基础之一。 我在的H3D Studio核心技术人员和游戏制作管理人员全部是SMTH BBS游戏制作版成员。从99年开始截止BEGINER的历任版主都在H3D STUDIO里工作过。在这里我把具体的培训以及技术队伍组建的内容去掉,只和大家聊聊关于游戏程序员切身利益相关的事。 另外这不是居高临下来评判什么事情。我本人也不是多么高级的技术人员或 阅读全文
posted @ 2009-12-25 15:18 maxweii 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 一.关于GDI的基本概念什么是GDI?Windows绘图的实质就是利用Windows提供的图形设备接口GDI(Graphics Device Interface)将图形绘制在显示器上。在Windows操作系统中,动态链接库C:\WINDOWS\system32\gdi32.dll(GDI Client DLL)中定义了GDI函数,实现与设备无关的包括屏幕上输出像素、在打印机上输出硬拷贝以及绘制Windows用户界面功能。在Visual C++6.0中的头文件C:\Program Files\Microsoft Visual Studio\VC98\Include\wingdi.h和Visual 阅读全文
posted @ 2009-12-24 09:01 maxweii 阅读(8012) 评论(0) 推荐(0) 编辑
摘要: //先看一些函数指针的例子(吸纳了网上兄弟的方法)#include stdio.h void MyFun(int x); //这个申明也可写成:void MyFun( int ); void (*FunP)(int ); //也可申明成void(*FunP)(int x),但习惯上一般不这样。 void MyFun(int x) //这里定义一个MyFun函数 { printf("%d\n",x); } int main(int argc, char* argv[]) { MyFun(10); //这是直接调用MyFun函数 Funp=&MyFun; //将MyFun函数的地址赋给Fu 阅读全文
posted @ 2009-12-15 21:54 maxweii 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员 初始化阶段可以是显式的或隐式的,取决于是否存在成员初始化表。隐式初始化阶段按照声明的顺序依次调用所有基类的缺省构造函数,然后是所有成员类对象的缺省构造函数。2.进入构造函数后在构造函数中执行一般计算 计算阶段由构造函数体内的所有语句构成。在计算阶段中,数据成员的设置被认为是赋值,而不是初始化。使用初始化列表有两个原因:1.必须这样做: 三种情况下需要使用初始化成员列表 1)对象成员; 2)const修饰的成员; 3)引用成员数据;(1)如果有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带 阅读全文
posted @ 2009-11-28 17:46 maxweii 阅读(195) 评论(0) 推荐(0) 编辑
摘要: C函数要在程序中用到以下这些宏: void va_start( va_list arg_ptr, prev_param ); type va_arg( va_list arg_ptr, type ); void va_end( va_list arg_ptr ); va_list:用来保存宏va_start、va_arg和va_end所需信息的一种类型。为了访问变长参数列表中的参数,必须声明 va_list类型的一个对象 定义:typedef char * va_list;va_start:访问变长参数列表中的参数之前使用的宏,它初始化用va_list声明的对象,初始化结果供宏va_arg和 阅读全文
posted @ 2009-11-23 16:44 maxweii 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 在C++中有一个特殊的运算符重载方法--类型转换运算符重载,形如:operator type(); type可以是基本类型,也可是类类型。/**type_conv.cpp**Createdon:2009-8-14*Author:kwarph*Mail:kwarph@gmail.com*/#include<iostream>usingnamespacestd;classHorse{public:Horse():weight(0),speed(0),teeth(0){}Horse(constint&w,constint&s,constint&t=0):weigh 阅读全文
posted @ 2009-11-23 10:20 maxweii 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 虚拟继承在一般的应用中很少用到,所以也往往被忽视,这也主要是因为在C++中,多重继承是不推荐的,而一旦离开了多重继承,虚拟继承就完全失去了存在的必要(因为这样只会降低效率和占用更多的空间,实在是一无是处)。 以下面的一个例子为例: #include <iostream.h> #include <memory.h> class CA { int k; //为了便于说明后面的内存结构特别添加 public: void f() {cout << "CA::f" << endl;} }; class CB : public CA { 阅读全文
posted @ 2009-11-20 16:31 maxweii 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 当读者有一定c/c++基础推荐的阅读顺序:level 1从essential c++(可不看)开始,短小精悍,可以对c++能进一步了解其特性以c++ primer作字典和课外读物,因为太厚不可能一口气看完 level 2然后从effective c++开始转职,这是圣经,请遵守10诫,要经常看,没事就拿来翻翻接着是exceptional c++,个人认为Herb Sutter主席大人的语言表达能力不及Scott Meyers总是在教育第一线的好顺下来就是more effective c++和more exceptional c++,请熟读并牢记各 阅读全文
posted @ 2009-11-20 10:24 maxweii 阅读(253) 评论(0) 推荐(1) 编辑
摘要: 在C++中我们应该少用指针,多用引用,原因请大家自行搜索。在传递数组的时候我们需要格外注意,先让我们看一个简单的范例。首先这个范例无法编译通过: error C2782: 'void __cdecl Func2(T &,T &)' : template parameter 'T' is ambiguous could be 'int [12]' or 'int [10]'原因就出在类型推断上。根据定义,Func2的类型必须是T&,也就是说传递实参的时候,两个形参必须是相同的,而这一点在模板编程中就会由编译器来负责推断。Func1:调用Func1(a, b)则推断的类型分别是Func1(int* 阅读全文
posted @ 2009-11-16 09:24 maxweii 阅读(1216) 评论(0) 推荐(0) 编辑
摘要: 一、COM组件的目标:COM组件的一个主要优势是:便于升级。要实现这个优势需要满足一下两个条件:1、运行时从客户程序动态加载和卸载,采用DLL技术可以实现。2、为了更好的突出DLL的优势,还需要信息隐藏,即封装性。二、COM组件的信息隐藏采用IUnknown接口来实现: 1、IUnknown接口功能简介:IUnknown意思是未知,即未知的接口。采用这个名字是为了简单起见,所有的COM接口都需要继承IUnknown,因此若某个客户拥有一个IUnknown接口的指针,也就不知道接口到底是什么类型的,只需要知道此接口可以用来查询其他接口。IUnknown接口有一个用来查询接口的函数QueryInt 阅读全文
posted @ 2009-11-12 09:33 maxweii 阅读(1305) 评论(0) 推荐(0) 编辑
摘要: WM_CLOSE WM_QUIT WM_DESTROY 三者的区别 收藏 一直以来,我都不是很明白这三个的区别,今天看了一写文章,才明白过来,一下是转载的文字:有三个消息看起来差不多,都是处理关闭的事情的。它们是WM_DESTROY,WM_CLOSE,和WM_QUIT。它们的确很相似,但你需要知道它们之间的不同!一个窗口或者应用程序应该被关闭时发出WM_CLOSE消息,当接收到WM_CLOSE消息时,如果你愿意,向用户提出是否真的退出。你知道让用户作确认或有错误出现或有什么应该注意的事情发生的时候,往往弹出一个消息框。插播消息框int MessageBox(HWND hWnd, // hand 阅读全文
posted @ 2009-11-09 08:35 maxweii 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 自我控制能力的发展对于个人形成良好的性格极为重要,自我控制能力并非生来就有,它是孩子在后天的环境中,随着认知的发展和教育的影响而不断形成和发展起来的。培养孩子这种素质,能使他们在没有外界限制的情况下,克服困难、排除干扰、采取某种方式控制自己的行为。 游戏就是孩子主要的学习活动,因此,可根据孩子的特点,选择适合的游戏,并在游戏中结合自制力,坚持性,自觉性和延迟满足这四项自控能力培养的要素,培养孩子的自我控制能力。 ·操作性游戏 利用游戏材料,发展幼儿小肌肉,以控制手部精细动作为主要活动形式的游戏。 例如:自制拼图、拆卸旧物件、种小植物等。 在操作游戏中,对材料的操作和摆弄是激发幼儿游戏兴趣的源泉 阅读全文
posted @ 2009-11-06 12:43 maxweii 阅读(281) 评论(0) 推荐(0) 编辑
摘要: DX的Transform Engine的渲染过程World-View-Project-Clip-Screen coordinates, 整个过程完成了将物体从世界坐标系转换为屏幕坐标系一个更详细的过程如下:local space - world space - view space - backface culling - lighting - clipping - projection - viewport space - resterization点积和叉积的几何意义假设u和v是两个三维向量点积u·v = ux*vx + uy*vy + uz*vz =|u|*|v| 阅读全文
posted @ 2009-11-06 09:28 maxweii 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 看到很多应用程序可以打开一个文件夹,并自动选定某个文件,以为这样的功能实现起来可能会有点难,今天才发现在原来很简单,以下是从网上找的一篇关于 explorer 的文档:explorer.exe的命令参数及其应用我们常需要在CMD命令行下打开文件夹,除了start命令外,还可以使用explorer.exe来打开文件夹,而且有不少参数可以方便我们的操作,下面是我在微软官方网站上面找到的关于EXPLORER的使用。 来自:http://support.microsoft.com/kb/307856/zh-cn 概要 本分步指南介绍了如何在 Windows XP 中使用 Windows 资源管理器命令 阅读全文
posted @ 2009-11-05 18:41 maxweii 阅读(303) 评论(0) 推荐(0) 编辑
摘要: #include iostreamclass MyClass{public: MyClass() { std::cout "Hello MyClass!" std::endl; }public: void MyMethod() { std::cout "Hello MyMethod!" std::endl; }};如果这样定义对象:MyClass obj; 那么它的构造函数将会被执行,如果调用obj.MyMethod();也会执行正确。可是如果带有括号:MyClass obj(); 那么它的构造函数不会被执行,调用obj.MyMethod();也会出 阅读全文
posted @ 2009-11-02 10:34 maxweii 阅读(2673) 评论(0) 推荐(2) 编辑
摘要: In order to understand "delete this" :First Step - dive into "delete p"delete p 执行了哪些步骤?delete p 是一个两步的过程:调用析构函数,然后释放内存。delete p产生的代码看上去是这样的(假设是Object*类型的):delete原语可以看作如下这样一个过程:p->~Object();p->operator delete(p);p->~Object() 语句调用p指向的Object对象的析构函数。p->operator delete(p) 阅读全文
posted @ 2009-10-30 11:12 maxweii 阅读(517) 评论(0) 推荐(0) 编辑
摘要: 在MFC程序中,我们并不经常直接调用Windows API,而是从MFC类创建对象并调用属于这些对象的成员函数.也就是说MFC封装了Windows API 你说你喜欢C++而MFC换一种说法就是一个用C++写的一个函数库 然后你来调用 只不过这个类不是你写的MFC提供数百个类,最重要的、也是编写任何VC++应用程序都必不可少的两个类CWinApp和CFrameWnd,这两个类是编写复杂庞大应用程序的基石。1封装特性:构成MFC框架的是MFC类库而MFC类库又是C++的一个类库。这些类封装WIN32应用程序编程接口,OLE(Object Link Embed 对象链接嵌入)特性,ODBC和DA 阅读全文
posted @ 2009-10-30 09:11 maxweii 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 前面我们利用AppWizard创建了一个应用程序框架,它除了显示一个Windows的多文档界面以外,目前还没有任何实际的用处,我们必须为它添加实际的功能。事实上,大多数Visual C++程序员都是在这个应用程序框架的基础上从事添加各种功能模块的工作,包括设计自己的类,编写具有一定功能的成员函数。Visual C++的集成开发环境向用户提供了一个功能很强的操作类的工具—ClassWizard,我们可以利用该工具非常方便地向应用程序中添加类、向类中添加消息处理函数、成员函数、以及添加成员变量等。利用ClassWizard,我们再也不用手工编写那些繁琐的代码,只需使用简单的鼠标和键盘操作就能够完成 阅读全文
posted @ 2009-10-29 14:49 maxweii 阅读(499) 评论(0) 推荐(0) 编辑
摘要: 总结一个人快速学习可以从下面思路着手: 1、打一个框架 所有事情总有它相关知识的构架,从总体上认识这个事物比象苍蝇一样乱窜好,最好规划了,一步步去执行、寻找,你会发现事情会容易的多。 2、找到重点 重中之重,乃事之本。把重点的抓住,事情就不一样了。 3、学习渠道 向老人学习。经验是宝贵的,可以让你少走弯路。 网络是最好的老师,有事没事,百度一下。你会发现百度是何等的可爱。 书籍会更多的惊喜。一般来说网络能给你很多建议,但是系统的知识总是存在于书本之中,你要对事物有个系统全面的了解,建议去卓越当当上查询相关书籍,买回来看了之后你会有很多收获的。 4、不断记录、总结 看书有很多方式,当时做笔记写总 阅读全文
posted @ 2009-10-27 20:35 maxweii 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 在计算机操作系统中,PV操作是进程管理中的难点。P,V原语中P是荷兰语的Passeren,相当于英文的pass, V是荷兰语的Verhoog,相当于英文中的increment。首先应弄清PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下: P(S):①将信号量S的值减1,即S=S-1; ②如果S=0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。 V(S):①将信号量S的值加1,即S=S+1; ②如果S0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。PV操作的意义:我们用信号量及PV操作来实现进程的同步和互斥。 阅读全文
posted @ 2009-10-27 14:13 maxweii 阅读(544) 评论(0) 推荐(0) 编辑
摘要: 句柄从来就不是只有Windows SDK才有的,也不是$MS发明的专利,在其他的Doors SDK,Chairs SDK,Beds SDK中都大量存在。但是,只有我们可爱的国内的windows和$MS崇拜者们给它起了一个可爱的名字“句柄”。一个令无数初学者魂牵梦绕,欲仙欲死的名字。我敢保证,一个用MFC编程了N久的人也不一定能说出句柄到底是个啥东东。 好吧,现在大家都学软件工程,设计模式风靡一时,可惜所有的模式都是基于C#的,或是基于java的,要么最多装高深来个C++的。如果后退十年,大家学个基于C的设计模式,“句柄”这么个翻译估计就要笑死人了。 ok,我们可爱的微软在他的sdk中布满了各种 阅读全文
posted @ 2009-10-27 10:03 maxweii 阅读(205) 评论(0) 推荐(0) 编辑
摘要: ## 连接符与# 符   ## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元。具体的定义在编译原理里有详尽的解释,但不知道也无所谓。同时值得注意的是#连接符是把传递过来的参数当成字符串进行替代。下面来看看它们是怎样工作的。这是MSDN上的一个例子。  假设程序中已经定义了这样一个带参数的宏:#define paster( n ) printf( "token" #n " = %d", token##n )  同时又定义了一个整形变量:int 阅读全文
posted @ 2009-10-27 09:34 maxweii 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:class ClxBase{public: ClxBase() {} virtual ~ClxBase() { cout" 基类析构函数始终会被调用的"endl;} virtual void DoSomething() { cout "Do something in class ClxBase!" endl; }};class ClxDerived : public ClxBase{public: ClxDerived() {} ~Cl 阅读全文
posted @ 2009-10-27 08:42 maxweii 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 作为“现代戏剧之父”的易卜生曾经告诫后人:你的最大责任就是把你这块材料铸造成器。每个人经理人,甚至包括那些资质平平的经理人,都应该学会自我管理,学会把自己造就成一个成功的经理人。   本人曾任几家著名大中型企业的高层管理者,又作为多年职业培训师,在长期的企业管理实践以及经理人培训经历中发现,我国企业很多经理人实际上缺乏自我管理能力。经理人要想有所作为,就必须重视提升自我管理能力!   经理人要想成功就必须注重以下十二项自我管理能力的提升!   1.自我心态管理能力   在我们不断塑造自我的过程中,影响最大的莫过于是选择积极的态度还是消极的态度。自我心态管理是个人为要达到人生目标进行心态 阅读全文
posted @ 2009-10-26 18:43 maxweii 阅读(522) 评论(0) 推荐(0) 编辑
摘要: "MFC 微软基础类  MFC,微软基础类(Microsoft Foundation Classes),同VCL类似,是一种Application Framework,随微软Visual C++ 开发工具发布。目前最新版本为9.0(截止2008年11月)。该类库提供一组通用的可重用的类库供开发人员使用。大部分类均从CObject 直接或间接派生,只有少部分类例外。  MFC 应用程序的总体结构通常由 由开发人员从MFC类派生的几个类和一个CWinApp类对象(应用程序对象)组成。MFC 提供了MFC AppWizard 自动生成框架。  Windows 应用程序中,MFC 的主包含文件为""A 阅读全文
posted @ 2009-10-26 16:18 maxweii 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 首先运用到了tinyxml,在TinyXML中,根据XML的各种元素来定义了一些类:TiXmlBase:整个TinyXML模型的基类。TiXmlAttribute:对应于XML中的元素的属性。TiXmlNode:对应于DOM结构中的节点。TiXmlComment:对应于XML中的注释TiXmlDeclaration:对应于XML中的申明部分,即?versiong="1.0"?。TiXmlDocument:对应于XML的整个文档。TiXmlElement:对应于XML的元素。TiXmlText:对应于XML的文字部分TiXmlUnknown:对应于XML的未知部分。TiXmlHandler: 阅读全文
posted @ 2009-10-23 13:25 maxweii 阅读(2495) 评论(0) 推荐(0) 编辑
摘要: 我们无法预定智商,却可以提高情商,一个杰出的人未必有着高智商,却一定有着高情商。提高情商其实有着简而易行的方法,你需要的就是坚持。 1、学会划定恰当的心理界限,这对每个人都有好处。 你也许自认为与他人界限不明是一件好事,这样一来大家能随心所欲地相处,而且相互之间也不用激烈地讨价还价。这听起来似乎有点道理,但它的不利之处在于,别人经常伤害了你的感情而你却不自知。 其实仔细观察周遭你不难发现,界限能力差的人易于患上病态恐惧症,他们不会与与侵犯者对抗,而更愿意向第三者倾诉。如果我们是那个侵犯了别人心理界限的人,发现事实的真相后,我们会感觉自己是个冷血的大笨蛋。同时我们也会感到受伤害,因为我们既为自己 阅读全文
posted @ 2009-10-23 08:23 maxweii 阅读(394) 评论(0) 推荐(0) 编辑
摘要: 在我的上一个银行项目中,我接到编写ORACLE存储过程的任务,我是程序员,脑袋里只有一些如何使用CALLABLE接口调用存储过程的经验,一时不知如何下手,我查阅了一些资料,通过实践发现编写ORACLE存储过程是非常不容易的工作,即使上路以后,调试和验证非常麻烦。存储过程(stored procedure)是一组为了完成特定功能的sql 语句集,经编译后存储在数据库SQL存储过程执行起来比SQL命令文本快得多。当一个SQL语句包含在存储过程中时,服务器不必每次执行它时都要分析和编译它。   调用存储过程,可以认为是一个三层结构。这使你的程序易于维护。如果程序需要做某些改动,你只要改动存储过程即可 阅读全文
posted @ 2009-10-22 15:58 maxweii 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 批处理的介绍 扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件。 首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。 其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的,也是十分不规 范的。批处理的 阅读全文
posted @ 2009-10-22 13:41 maxweii 阅读(182) 评论(0) 推荐(0) 编辑
摘要: Java把内存划分成两种:一种是栈内存,一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 堆内存用来存放由new创建的对象和数组。 在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。 在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量(这是java中引用的定义)。 引用变量就 阅读全文
posted @ 2009-10-22 09:57 maxweii 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 用VC++6.0实现SNMP协议的方法SNMP(Simple Network Management Protocol)是简单网络管理协议,主要用来管理网络设备,正因为“简单”,所以其发展很快,到目前为止几乎所有的网络产品都要为其提供支持,以方便管理员的管理和软件开发人员的开发。  在这里我们不对有关SNMP的概念和基础知之作过多地阐述,一且假定你对其工作原理有了一定的了解,而仅缺的是如何去实现他。  我们所阐述的是基于VC6.0下的SNMP编程。详细介绍一下有关SNMP编程的过程及API函数的用法,在遇到难于理解的部分,我会以较大的篇幅作以解释。言归正传,进入我们的主题。  首先来阐述几个重要 阅读全文
posted @ 2009-10-21 15:59 maxweii 阅读(443) 评论(0) 推荐(0) 编辑
摘要: 持久性和序列化   持久性是对象所有的保存和加载其状态数据的能力。具有这种能力的对象能够在应用程序结束之前以某种方式将当前的对象状态数据记录下来,当程序再次运行时,通过对这些数据的读取而恢复到上一次任务结束时的状态。由于绝大多数的MFC类是直接或间接由MFC的CObject类派生出来的,因此这些MFC类都具有保存和加载对象状态的能力,是具有持久性的。在使用应用程序向导生成文档/视结构的程序框架时,就已经为应用程序提供了用于对象状态数据保存和加载的基本代码。  为实现对象的持久性,通常多以字节流的形式将记录对象状态的数据存放到磁盘上,这种将状态数据保存到磁盘和从磁盘恢复到内存的过程称为序列化。序 阅读全文
posted @ 2009-10-20 11:35 maxweii 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 当把一个派生类对象赋给一个基类对象时,会发生对象切割。(另外用基类对象强制转换派生类对象也会)对象切割会发生什么呢?#include iostreamusing namespace std;class CShape{public: CShape () { m_color=0; } ~CShape(){} virtual void draw() { cout"This is a shape!"endl; coutm_colorendl; } double m_color; };class CRect: public CShape{public: CRect() { 阅读全文
posted @ 2009-10-20 10:19 maxweii 阅读(538) 评论(0) 推荐(0) 编辑
摘要: //#include "StdAfx.h"#include windows.h //使用多线程必须的 #include iostream //这是观看效果用的using namespace std;DWORD WINAPI MTOne(LPVOID param); DWORD WINAPI MTTwo(LPVOID param); DWORD WINAPI MTOne(LPVOID param){ while(true) { Sleep(1000); cout"12 "endl; } //一旦返回,这个线程就结束了。 return 0;} DWORD WINAPI MTTwo( 阅读全文
posted @ 2009-10-19 15:20 maxweii 阅读(257) 评论(0) 推荐(0) 编辑