行内技术
C++ 中重载 + 操作符的正确方法
用户定义的类型,如:字符串,日期,复数,联合体以及文件常常重载二元+操作符以实现对象的连接,附加或合并机制。但是要正确实现+操作符会给设计,实现和性能带来一定的挑战。本文将概要性地介绍如何选择正确的策略来为用户定义类型重载这个操作符。考虑如下的表达式:intx=4+2;  内建的+操作符有两个类型相同的操作数,相加并返回右值6,然后被赋值给x。我们可以断定内建的+是一个二元的,对称的,可交换的操作符。它产生的结果的类型与其操作数类型相同。按照这个规测,当你为某个用户定义类型重载操作符时,也应该遵循相应内建操作符的特征。  为用户定...
2013-3-5346
C++中用函数模板实现和优化抽象操作
本文介绍函数模板的概念、用途以及如何创建函数模板和函数模板的使用方法......  在创建完成抽象操作的函数时,如:拷贝,反转和排序,你必须定义多个版本以便能处理每一种数据类型。以max()函数为例,它返回两个参数中的较大者:doublemax(doublefirst,doublesecond);complexmax(complexfirst,complexsecond);datemax(datefirst,datesecond);//..该函数的其它版本  尽管这个函数针对不同的数据类型其实现都是一样的,但程序员必须为...
2013-3-5361
C++中用vectors改进内存的再分配
 摘要:本文描述的是一种很常见的情况:当你在某个缓存中存储数据时,常常需要在运行时调整该缓存的大小,以便能容纳更多的数据。本文将讨论如何使用STL的vector进行内存的再分配。  这里描述的是一种很常见的情况:当你在某个缓存中存储数据时,常常需要在运行时调整该缓存的大小,以便能容纳更多的数据。传统的内存再分配技术非常繁琐,而且容易出错:在C语言中,一般都是每次在需要扩充缓存的时候调用realloc()。在C++中情况更糟,你甚至无法在函数中为new操作分配的数组重新申请内存。你不仅要自己做分配处理,而且还必须把原来缓存中的数据拷贝到新的目的缓存,然后释放先前数组的缓存。...
2013-3-5493
深入探讨C++中的引用
摘要:介绍C++引用的基本概念,通过详细的应用分析与说明,对引用进行全面、透彻地阐述。  关键词:引用,const,多态,指针  引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清本源。故在本篇中我将对引用进行详细讨论,希望对大家更好地理解和使用引用起到抛砖引玉的作用。  引用简介  引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。  引用的声...
2013-3-5406
XML在.net平台下的自定义控件的应用
Xml全称可扩展标记语言(extensiblemarkedlanguage),这套语言系统由于在数据处理,跨平台等方面的独特优势,在近几年风靡全球。Xml语言系统把任何数据都作为“键”和“值”来进行处理,这一点类似于很多数据库管理系统(DBMS),而且它与具体的机器指令无关,其存储方式是纯文本文件,因此具有出色的跨平台性。另外它允许用户创建自己的数据指令系统,在这套指令系统的框架下,用户可以把所有信息转换成易于存取的数据,大大加快了开发的周期和代码的可移植性。  既然XML这么好,那它到底是什么样子的呢?最近笔者因为课题的需要,开发了一...
2013-3-5307
深入理解C#编程中的组件-事件-委托
在组件编程中对事件的理解是十分重要的,C#中的“事件”是当对象发生某些有趣的事情时,类向该类的客户提供通知的一种方法。与事件联系最为紧密的,个人认为是委托.委托可以将方法引用封装在委托对象内。为了弄清组件-事件-委托三者的关系,本人用实际的例子来谈谈小弟的理解。  首先创建一个Windows控件项目,添加如下控件样板。  当事件触发时,会传递一个EventArgs类型的参数给事件处理方法,为了能传递自定义的信息,我们可以创建一个继承于EventArgs的事件参数类,其定义如下:publicclassEventLoginArgs:System.EventArgs{pub...
2013-3-5456
通过Visual C#.NET建一个DTS任务
本文描述了如何利用VisualC#.net创建一个DTS自定义的任务。你可以通过C#.net创建自定义的任务的方式扩展DTS的功能。之后你可以安装并注册任务,他讲出现在DTS设计其中,就像默认的DTS任务。总之,你能够使用.NETFramework创建自定义的任务。  在本文中除了讲创建一个DTS自定义任务外,还包括一下部分内容:  1、这篇文章中自定义的代码分为编译、注册和安装自定义任务;  2、这部分一个有特色的部分就是你可以运行自定义的任务;  3、在开发过程中你可以使用本文提及的一些工具(除非另有说明,这些工具已经包含在.NET中了,您可以通过.NET的命令行运行...
2013-3-5333
用C#的Raw Socket实现网络封包监视
谈起socket编程,大家也许会想起QQ和IE,没错。还有许多网络工具如P2P、NetMeeting等在应用层实现的应用程序,也是用socket来实现的。Socket是一个网络编程接口,实现于网络应用层,WindowsSocket包括了一套系统组件,充分利用了MicrosoftWindows消息驱动的特点。Socket规范1.1版是在1993年1月发行的,并广泛用于此后出现的Windows9x操作系统中。Socket规范2.2版(其在Windows平台上的版本是Winsock2.2,也叫Winsock2)在1996年5月发行,WindowsNT5.0及以后版本的Windows系统支持Wi...
2013-3-5391
利用C#实现标准的 Dispose模式
本文讲解的是你在建立包含内存以外资源的类型,特别是处置非内存资源的时候,如何编写自己的资源管理代码。  我们已经知道了处置那些占用非受控(unmanaged)资源的对象的重要性,现在应该编写资源管理代码来处置那些包含非内存资源的类型了。整个.NET框架组件都使用一个标准的模式来处理非内存资源。使用你建立的类型的用户也希望你遵循这个标准的模式。标准的处理模式的思想是这样的:当客户端记得的时候使用IDisposable接口释放你的非受控资源,当客户端忘记的时候防护性地使用终结器(finalizer)。它与垃圾收集器(GarbageCollector)一起工作,确保只在必要的时...
2013-3-5342
软件启动画面中启动状态的显示
我们平时看到的很多软件(PhotoShop,3DMax)都会在启动画面中显示当前正在启动哪个模块,并在模块加载失败时给予提示,这样的好处是,可以让比较专业的软件使用者知道当前软件加载了哪些模块,或者在软件发生启动错误时,让用户得以反馈是启动的哪个模块时发生了,以及在长时间的软件启动过程中,让用户知道软件还在工作,避免用户对其失去信息。。。好了,说了那么多废话,就来看看我是怎么制作这样一个程序的,由于本人平时基本上都用Delphi来开发,所以以下代码也都是Delphi的,但是基本框架有了,相信要用其它语言实现也不会很难。另外,以下这些代码是我在过去的历次开发过程中组部提炼出来的,虽然还...
2013-3-5544
Visual Basic串口通讯调试方法
  现有电子秤一台,使用串口与计算机进行通讯。编写VB程序来访问串口,达到读取电子秤上显示的数据。该电子秤为BE01型仪表,输出为RS-232C标准接口,波特率为300-9600、偶校验、7个数据位、2个停止位。所有字符均发送11位ASCII码,一个起始位。在VB中与串口通讯需要引入控件MSComm串口通讯控件(在MicrosoftCommControl6.0中)。具体程序如下:控件简称:MSCDimOut(12)AsByte'接收var中的值DimvarAsVariant'接收MSC.input中的数值DimnReceAsInteger'计算MSC.inputbuffer的个数...
2013-3-5333
利用Indy的TIdFtp控件实现FTP协议
  现在很多应用都需要上传与下载大型文件,通过HTTP方式上传大文件有一定的局限性。幸好FTP作为一个非常老而且非常成熟的协议可以高效稳定地完成大文件的上传下载,并且可以完美地实现续传。就拿我写的电影服务器管理端程序来说,各种方案比较后,发现使用FTP可以完美地实现要求。但是要通过WinSocket库实现FTP比较麻烦,幸好有Indy--一个包装了大多数网络协议的组件包。  通过Indy,程序设计人员可以通过阻塞方式进行编程,可以抛开蹩脚的Winsocket异步模式,采用与Unix系统上等同的阻塞编程模式进行。这样,程序员就可以很好的处理程序的运行流程。下面,我们进入到Indy的TI...
2013-3-5394
实战Java多线程编程之不提倡的方法
  不提倡使用的方法是为支持向后兼容性而保留的那些方法,它们在以后的版本中可能出现,也可能不出现。Java多线程支持在版本1.1和版本1.2中做了重大修订,stop()、suspend()和resume()函数已不提倡使用。这些函数在JVM中可能引入微妙的错误。虽然函数名可能听起来很诱人,但请抵制诱惑不要使用它们。  调试线程化的程序  在线程化的程序中,可能发生的某些常见而讨厌的情况是死锁、活锁、内存损坏和资源耗尽。  死锁  死锁可能是多线程程序最常见的问题。当一个线程需要一个资源而另一个线程持有该资源的锁时,就会发生死锁。这种情况通常很难检测。但是,解决方案却相当...
2013-3-5366
在ASP中模拟.NET下的cache技术
  为了提高网站首页的性能,首页凡是需要调用数据库显示数据的地方都会先试图从缓存中调用数据,如果缓存中没有可用数据再打开数据库取出记录集,为了让页面显示数据和数据库在一定时间内同步,我们把缓存的过期时间设置成30秒。  声明:缓存管理类出自于动网论坛7.0  注意:最好不要在缓存里直接缓存带状态的对象和MTA模式的对象,比如说直接缓存记录集或者数据库链接对象等。<%SubShowRsArr(rsArr) '用表格显示记录集getrows生成的数组的表结构 ' Response.Write"<tablewidth=100%border=0cellspacing...
2013-3-5504
巧用缓存提高ASP应用程序的性能
作者:蛙蛙王子  为了提高Asp程序的性能,人们常常将经常使用的数据缓存在Application,但是你修改了数据库后怎么让application更新呢,本文给你提供了一个合理的解决办法。<%Classwawa_app_getrowspublicFunctionwawa_Get_List(strapp,strconn,strsql) '******************************** '功能:从Application中提取数组,如果application中的数据为empty值的时候再调用wawa_Get_Rows()函数来给application赋值. ...
2013-3-5492
使用xmlHttp结合ASP实现网页的异步调用
通过xmlHttp和ASP的结合,我们可以轻松完成网页的异步调用。代码如下:1.新建Display.asp(这是前台显示页面)注意xmlhttp.readyState的4个属性1:LOADING;2:LOADED;3:INTERACTIVE;4:COMPLETED<%@Language=VBScript%><HTML><HEAD><METANAME="GENERATOR"Content="MicrosoftVisualStudio6.0"></HEAD><scr...
2013-3-5423
如何在PB中制作特殊形状数据窗口或按钮
作者:LZP_LRP以下是全部源码,感兴趣的朋友可以整个窗口的源代码导入到PBL里自己运行一下试试。$PBExportHeader$w_button.srwforwardglobaltypew_buttonfromwindowendtypetypecb_11fromcommandbuttonwithinw_buttonendtypetypecb_10fromcommandbuttonwithinw_buttonendtypetypeem_3fromeditmaskwithinw_buttonendtypetypeem_2fromedit...
2013-3-5372
防止Visual C++应用程序缓冲区溢出
目前最常见的安全问题是缓冲区溢出。这个特别的安全问题引发的病毒感染可能比其它原因引发的病毒感染数量的总和还要多。市场上几乎每个应用程序和操作系统都存在黑客可能利用的缓冲区溢出漏洞。这个问题对于微软Windows来说是如此严重,以至于微软在产品的新版本(例如WindowsXPServicePack2)中采用了一种完全不同的解决方法。本文的目的是帮助你更清晰地认识缓冲区溢出,并提供了几种用于减少(或者是消除)VisualC++应用程序缓冲区溢出问题的技术。  导航:  什么是缓冲区溢出  缓冲区溢出证明了一个观点:除非你看着用户与你...
2013-3-5319
Java性能
“本附录由JoeSharp投稿,Java语言特别强调准确性,但可靠的行为要以性能作为代价。这一特点反映在自动收集垃圾、严格的运行期检查、完整的字节码检查以及保守的运行期同步等等方面。对一个解释型的虚拟机来说,由于目前有大量平台可供挑选,所以进一步阻碍了性能的发挥。“先做完它,再逐步完善。幸好需要改进的地方通常不会太多。”(SteveMcConnell的《Aboutperformance》[16])本附录的宗旨就是指导大家寻找和优化“需要完善的那一部分”。D.1基本方法只有正确和完整地检测了程序后,再可着手解决性能方面的问题:(1)在现实环境中检测程序的性能。若符合要求,则...
2013-3-5441
VC++定制状态栏的方法
1、在StringTable中加入一个新ID:ID_INDICATOR_COIN,Caption为“硬币数量”。2、在MainFrm.cpp中的静态数组indicator中将上面的ID加入:staticUINTindicators[]={ID_SEPARATOR,////statuslineindicator...
2013-3-5555