ASP教程之浅谈援用计数
缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。浅谈援用计数媒介
作为Delphi程序员,您能够不必看这节内容,可是假如您想更多的懂得一些COM外部手艺,或是在工具模子与援用模子之间能够举行很好的把持的话,笔者更但愿你能够抽出些许工夫来看这统统的内容,而好处提体的将很分明,您能够自在的用一些技能来办理让您头疼的成绩。好了,持续我们明天的交换;
在组件手艺必备常识二中,我们对接口(Interface)举行了一些先容,当我们并没有深切的对接口的完成/效力/优化等成绩举行进一步的禅述,而懂得它们切实其实关于我们今后的编程是有很年夜的匡助的,我们都晓得,每一个接口城市保护一个全局变量FRefCount(这是ObjectPascal里的变量称号,假如是在C++里,它保护的是m_CRef),它专门用来把持接口的性命周期,或是组件的性命周期(组件/接口一样具有性命周期),固然,我们也能够给接口强迫给值Nil一样能够开释接口,但那是不平安的或是不该该被保举的。在此处之以是将援用手艺做为一个课题例出来就是但愿列位能够对组件的优化、效力方面熟悉一些。而FRefCount是在_AddRefand_Release中得以完成的,以下代码(本节一切代码摘自Delphi6中,只需您的参考版本是Delphi4以上,代码都是不异的)。
functionTInterfacedObject._AddRef:Integer;
begin
Result:=InterlockedIncrement(FRefCount);
end;
functionTInterfacedObject._Release:Integer;
begin
Result:=InterlockedDecrement(FRefCount);
ifResult=0then
Destroy;
end;
从代码中我们能够看出,接口的性命周期是在_AddRefand_Release两个办法中把持的,现实上,这两个方面在组件编程中,就是专门用来把持组件的性命周期(关于组件性命周期和接口性命周期我们将会近一步的举行申明。),以外它们能够说是没成心义的,而援用计数变量(FRefCount)假如在不思索组件的性命周期时,也是完整没成心义的。
AddRefandRelease是完成的一种名为援用计数的内存办理手艺,援用计数手艺是使组件本人删除组件的最复杂的同时也是效力最高的办法。COM组件将保护一个援用计数的变量来对本人性命周期举行办理,当客户从组件取得一个接口时,这个援用计数变量会举行增1操纵(_AddRef),当客户开释了对接口的挪用时,组件会主动的举行援用计数的减1操纵(_Release),在基于Delphi的编程中,我们能够不往思索甚么时分举行挪用这两个办法,可是假如您一旦离开了Delphi的话,您大概必需要思索甚么时分挪用这两个办法,如在C++中,您就必定要本人挪用这两个办法,这也恰是笔者为何会写这一节的内容.复杂的来讲,援用计数我们平常不必要往思索,可是在工具援用和接口援用中,您就必要本人往挪用这两个办法,同时它还触及到作为一个组件是往全部的开释仍是单个的开释上和最小单元的开释上是有需要往思索援用计数的。如:关于一个COM组件而言,它封装了一些COM工具,可是用户经由过程接口大概必要挪用COM组件中的几个COM工具供应的服务,那末成绩就发生了,用户有大概在会见完了一个COM工具再往会见另外一个COM工具或是举行互动的体例举行会见,很不侥幸的是这个组件又是一个占用内存资用很年夜的组件,出格提体到用户所会见的两个或是更多的COM工具的同时,您怎样对组件举行无效的办理呢?是用户会见完了一个COM工具以后就立马开释这个COM工具呢?仍是当用户对组件会见完成以后再举行组件级的开释呢?或是您更具体的对每个用户已不必的接口举行开释呢?这都对组件的效力有些许影响。而此时我们选择分歧的体例就有大概必要本人增添援用计数变量举行把持了,如:
var
oFRefCount:Integer;//工具一级的援用计数的使用
begin
…….
end;
var
cFRefCount:Integer;//组件一级的援用计数的使用。
begin
……
end;
或是间接援用FRefCount//接口一级的使用计数的使用。
这都是我们必定要思索的。而在工具模子和援用模子中,出格它们的夹杂使用中,假如您还让Delphi为我们举行主动的优化(援用计数的挪用)的话,那末将是一场恶梦、劫难!OK,我们先对这些有大概呈现的成绩举行会商,或是归结为援用计数的优化。
起首我们应当分明,惯例下甚么时分应当挪用这两个办法,归结以下:
兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的 Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点) ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。 先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习 ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。 我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标. 不能只是将它停留在纸上谈兵的程度上。 我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。 不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍
页:
[1]