金色的骷髅 发表于 2015-1-16 22:49:57

ASP.NET网页编程之专家详解:庞大表达式的实行步骤

兄弟们,想来你们都看过了昨天的比赛了。我现在的痛苦状跟当时应该差不多。希望本版.net老师不吝赐教,为小弟这一批迷途的羊羔指一条阳光之道!您也知道:学习技术如果只有一个人摸索,那是一件多么痛苦的事情!还有,如果万辛能得名师或长者指点,那又是多么一件幸福和快乐的事情!详解|实行  克日在CSDN上闲逛的时分,注重到一个帖子:
  ((*strDest++=*strSrc++)!=);哪儿先辈能够注释下内里详细实行的步骤呢?
  关于如许的表达式,我们一般会有如许三种意见:
  1.这类写法不仅没有毛病(固然也没有BUG),并且写法松散。
  2.这类写法固然没有毛病,可是不敷直不雅,了解起来有点贫苦,大概还会招致了解毛病。
  3.这类写法中存在不决义的中央,实行了局多是毛病的。
  大略来看,这三种说法都有点事理。我登时有了寻根究底的乐趣,想对这个成绩举行一次深切的剖析。关于这类组合表达式,在剖析的时分我们应当捉住两个关头的观点:优先级(Precedence)和联系关系性(Associativity)。
  1.优先级(Precedence)。优先级决意了那些表达式的值先被评价,那些表达式的值后被评价。一般情形下,优先级高的表达式的值先被评价出来后,然后用评价的了局再往评价那些优先级低的表达式。以是假如我们将优先级弄反了,评价出来的了局是毛病的。
  2.(Associativity)。关于二目表达式,联系关系性决意了右边的表达式仍是右侧的表达式先被评价,先被评价出来的了局再用来评价别的的表达式。
  再捉住这两个关头的同时,我们还应当分清甚么是表达式的值,甚么是变量的值。我们在评价表达式的时分,我们感乐趣的是表达式的值,而不是组成表达式的某些变量的值。在良多情形下,表达式的值和某些变量的值是分歧的,以是我们很简单搅浑表达式的值和变量的值。要晓得,在有些情形下,表达式的值其实不和某些变量的值不异。
  有了下面的实际来武装我们,对表达式的剖析就显得熟能生巧了:
  1.很分明,下面的表达式是一个组合表达式。组合表达式由子表达式构成,子表达式又多是组合表达式,如许就构成了一个树状的数据布局。对表达式的评价就相似于对树结点的遍历。起首我们应当注重到"()"操纵符,它具有最高的优先级,以是从全体来看,全部表达式应当是个"!="操纵。"!="右边又是一个组合表达式,而右侧是一个常量",很分明上面的事情就是评价(*strDest++=*strSrc++)。
  2.在这一步,我们要对表达式(*strDest++=*strSrc++)举行评价。因为赋值表达式具有较低的优先级,以是表达式又能够写成:(*strDest++)=(*strSrc++),以是全部表达式是个"="操纵,"="右边又是一个组合表达式,右侧也是一个组合表达式,这里就必要从联系关系性来判别右边仍是右侧也被评价。因为"="的联系关系性是从右到左,以是(*strSrc++)先被评价,(*strDest++)后被评价。
  2.1在这一步,我们要对表达式(*strSrc++)举行评价。因为"++"的优先级年夜于"*",以是表达式又能够写成:*(strSrc++)。我们要先对表达式strSrc++举行评价,然后用表达式的值再往评价*(strSrc++)的值。关于表达式strSrc++,这里要必要注重辨别变量的值和表达式的值。关于"后增1"表达式,表达式的值是变量strSrc的值,然后变量strSrc的值会"加1",也就是说表达式的值是strSrc变更前的值,而strSrc的值会产生变更。值得注重的是,我们晓得strSrc的值会产生变更,可是我们却不晓得strSrc的值产生变更的详细工夫,这个变更详细的实行工夫由编译器决意了,这就决意了任何依附strSrc的表达式的值是不断定的,详细的值依附编译器的完成。完成了对strSrc++的评价后,取值操纵符就对表达式的值所对应的内存空间举行取值操纵。
  2.2在这一步,我们要对表达式(*strDest++)举行评价。详细的评价的剖析完整和2.1中的剖析分歧。
  2.3在这一步,我们要对表达式(*strDest++)=(*strSrc++)举行评价,这是个赋值表达式,将右表达式的值赋给右边表达式的值。值得注重的是,关于赋值表达式,表达式自己的值即是右边子表达式的值。
  3.因为"!="表达式右边的子表达式的值已被评价出来了,上面就实行"!="操纵。"!="表达式的是一个布尔值。
  经由过程以上深切的剖析,我们晓得这个表达式完成了以下多个功效:
  1.关于指针strDest,strSrc,将strSrc所指的内存空间的值赋给由strDest所指的内存空间。
  2.判别赋值后的strDest所指的内存空间的指是不是即是0。
  3.关于指针strDest,strSrc,他们的值分离加1,即指向下一个元素。
  我们能够看出,一个表达式完成了三个功效,表达式写切实其实实"相称松散"。并且这个表达式的值是能够断定的,由于一切的剖析都是创建在C尺度的基本上。关于可否在理论的代码中利用如许的代码,这就智者见智了,关头一点就是要遵守项目标代码标准。
Java欺骗了我们那么多年,如今的多核时代,我认为它气数已尽!

简单生活 发表于 2015-1-20 05:17:09

由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。

莫相离 发表于 2015-1-26 16:49:37

使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。

柔情似水 发表于 2015-2-4 16:37:06

由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。

再现理想 发表于 2015-2-10 04:07:04

PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。

灵魂腐蚀 发表于 2015-2-28 19:17:28

目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.

蒙在股里 发表于 2015-3-10 06:15:07

可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。

谁可相欹 发表于 2015-3-17 05:06:53

这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。

分手快乐 发表于 2015-3-23 19:55:36

主流网站开发语言之PHP:PHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。
页: [1]
查看完整版本: ASP.NET网页编程之专家详解:庞大表达式的实行步骤