仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 497|回复: 7
打印 上一主题 下一主题

[学习教程] ASP.NET编程:C# 言语标准--1.4 主动内存办理

[复制链接]
活着的死人 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:31:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我实在想不明白java的机制,为什么非要那么蛋疼,在同一个平台下重复编译。标准手动内存办理请求开辟职员办理内存块的分派和接纳。手动内存办理大概既耗时又贫苦。在C#中供应了主动内存办理,使开辟职员从这个沉重的义务中摆脱出来。在尽年夜多半情形下,主动内存办理能够进步代码质量和开辟职员的事情效力,而且不会对表达才能或功能形成负面影响。
示例
usingSystem;
publicclassStack
{
privateNodefirst=null;
publicboolEmpty{
get{
return(first==null);
}
}
publicobjectPop(){
if(first==null)
thrownewException("CantPopfromanemptyStack.");
else{
objecttemp=first.Value;
first=first.Next;
returntemp;
}
}
publicvoidPush(objecto){
first=newNode(o,first);
}
privateclassNode
{
publicNodeNext;
publicobjectValue;
publicNode(objectvalue):this(value,null){}
publicNode(objectvalue,Nodenext){
Next=next;
Value=value;
}
}
}
显现了一个Stack类,它实践上是Node实例的一个链接表。Node实例是在Push办法中创立的,当不再必要它们时会对其举行渣滓接纳。当任何代码都不再大概会见某个Node实例时,该实例就成为渣滓接纳的工具。比方,当从Stack中移除某项时,相干的Node实例就切合了渣滓接纳前提,守候被接纳。
示例
classTest
{
staticvoidMain(){
Stacks=newStack();
for(inti=0;i<10;i++)
s.Push(i);
s=null;
}
}
显现了利用Stack类的代码。该代码创立了一个Stack类,并用10个元素初始化该类,然后给它赋值null。给变量s赋了null值后,Stack及联系关系的10个Node实例变得切合渣滓接纳前提。渣滓接纳器能够当即扫除上述实例,但并没请求它必定做到当即扫除。
为C#服务的基本渣滓接纳器能够经由过程在内存中挪动工具来事情,而这类挪动关于年夜多半C#开辟职员是不成见的。关于那些一般满意于主动内存办理、但偶然又必要准确把持或渺小功能调剂的开辟职员,C#供应了编写“不平安”代码的才能。这类代码能够间接处置指针范例和工具地点。可是,C#请求程序员流动工具,临时制止渣滓接纳器挪动它们。
从开辟职员和用户的角度,这类“不平安”代码功效实践上是一种“平安”的功效。在代码中必需用润色符unsafe分明地标志出不平安代码,以便开辟职员不成能不经意地利用不平安言语功效,而且编译器和实行引擎协同事情,确保不平安代码没法冒充平安代码。这些限定将不平安代码的利用仅限于代码遭到信托的情形。
示例
usingSystem;
classTest
{
staticvoidWriteLocations(byte[]arr){
unsafe{
fixed(byte*pArray=arr){
byte*pElem=pArray;
for(inti=0;i<arr.Length;i++){
bytevalue=*pElem;
Console.WriteLine("arr[{0}]at0x{1:X}is{2}",
i,(uint)pElem,value);
pElem++;
}
}
}
}
staticvoidMain(){
byte[]arr=newbyte[]{1,2,3,4,5};
WriteLocations(arr);
}
}
显现了一个名为WriteLocations的办法。它含有一个不平安块,该块流动了一个数组实例,然后利用指针操纵完成逐一地会见该数组的元素。每一个数组元素的索引、值和地位被写进把持台。上面是一个大概的输入示例:
arr[0]at0x8E0360is1
arr[1]at0x8E0361is2
arr[2]at0x8E0362is3
arr[3]at0x8E0363is4
arr[4]at0x8E0364is5
固然,切实的内存地位大概因使用程序的分歧实行而异。
不可能天天有学习.net),我一同学说,你应该早就有作品啦。我惶惶然……
爱飞 该用户已被删除
沙发
发表于 2015-1-24 06:54:18 | 只看该作者
asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-31 21:41:40 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
深爱那片海 该用户已被删除
地板
发表于 2015-2-6 23:51:06 | 只看该作者
由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。
再见西城 该用户已被删除
5#
发表于 2015-2-19 03:41:33 | 只看该作者
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
乐观 该用户已被删除
6#
发表于 2015-3-6 12:34:20 | 只看该作者
关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
飘灵儿 该用户已被删除
7#
发表于 2015-3-13 00:57:53 | 只看该作者
由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。
谁可相欹 该用户已被删除
8#
发表于 2015-3-20 07:48:07 | 只看该作者
是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-29 04:59

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表