导航:首页 > 源码编译 > 预编译首选什么方式

预编译首选什么方式

发布时间:2023-02-15 05:18:26

A. 在java中如何实现预编译

/*
* ProCompile.java *预处理要编译的文件,删除多余的空白,注释,换行,回车等
* Created on 2007年9月18日, 下午8:58 */ package javacompile; import java.io.*;
import java.util.regex.*;
import javax.swing.JOptionPane; /** * @com.junjian.sun public class PerCompile { File f = null;
String fileString = null;
Pattern p = null;
Matcher m = null;
String regex; //正则表达式 //初始化p
public PerCompile() {
regex ="(//.+)" + //(//.+) 对应单行注释
//"|(/\\*(.+\\n)+\\*/)"+ // 想对应多行注释... "|(\\r\\n)" + "|(\\n)"+//(\\r\\n)|(\\n)对应换行
"|(\\B\\s+)" ; // 空白符
String ss;
f = new File(new JOptionPane()
.showInputDialog("请输入文件所在路径~"));
try {
BufferedReader bf = new BufferedReader(new FileReader(f));
ss = bf.readLine()+"\n";
fileString = ss; //如果没有这两句,ss的开头会有“null”
while((ss = bf.readLine())!= null){
fileString += ss+"\n"; bf.close();
} catch (IOException ex) {
ex.printStackTrace(); p = Pattern.compile(regex);
m = p.matcher(fileString); //执行替换所有多余空行,空白符,注释
void Dels(){
System.out.println("before: "+fileString);
if(m.find()) System.out.println("find!!");
System.out.println(m.replaceAll("")); } }

-

B. 用gcc编译器C语言程序的技巧

方法/步骤
1、编写c代码,并输入以下代码,生成文件hello.c
[root@wahoo
test]#
vim
hello.c
#include
<stdio.h>
#define
DISPLAY
"hello
c!"
int
main(void)
{
printf("%s\n",
DISPLAY
);
return
0;
}
ZZ(说明:ZZ当前文件进行快速保存操作)
2、预编译(Preprocessing)
会对各种预处理指令(#include
#define
#ifdef
等#开始的代码行)进行处理,删除注释和多余的空白字符,生成一份新的代码
[root@wahoo
test]#gcc
-E
hello.c
-o
hello.i
E
参数
通知gcc对目标文件进行预编译,这里是对文件hello.c文件
o
参数
是对命令输出结果进行导入操作,这里是把
gcc
-E
hello.c
操作结果输出到文件hello.i(命名要自定义)中进行保存
这个命令执行完后我们目录下多了一个文件hello.i,你可以查阅一下文件的内容。
3、编译(Compilation)
对代码进行语法、语义分析和错误判断,生成汇编代码文件
[root@wahoo
test]#gcc
-S
hello.i
-o
hello.s
S
参数
通知gcc对目标文件进行编译,这里是对文件hello.i文件
通过这一步我们知道
C语言跟汇编的
关系,至于他们之前是如何进行转换的,大家可以进行更深入的学习与探讨。
此时目录下多了一个hello.s文件,内容如图
4、汇编(Assembly)
把汇编代码转换与计算机可认识的二进制文件,要知道计算机只认识0和1呢
[root@wahoo
test]#gcc
-c
hello.s
-o
hello.o
c
参数
通知gcc对目标文件执行指令转换操作
此步骤我们得到文件hello.o
大家也同样打开文件查看一下,这个文件里面几乎没几个字符大家能看懂,这就对了,但大家可以通过这种方法将其转化为我们可读的形式:
[root@wahoo
test]#readelf
-a
hello.o
5、链接(Linking/Build)
通俗的讲就是把多个*.o文件合并成一个可执行文件,二进制指令文件
[root@wahoo
test]#gcc
hello.o
-o
hello
这里我们就得到了一个可以直接在系统下执行的文件
hello
我们也可以对这个文件进行readelf操作,也可以进行二进制指令转汇编的操作
[root@wahoo
test]#objmp
-d
hello
6、程序运行
[root@wahoo
test]#./hello
hello
c!
7、总结:gcc
编译c程序的主要过程包括
预编译->编译->汇编->连接
四个过程,每个过程都分别进行不同的处理,了解了这其中的一些原理,对c编程的理解大有益处

C. C语言采用解释方式将源程序转换为二进制的目标代码吗

不是,C语言采用编译方式将源程序转换为二进制的目标代码。使用C语言编译器来完成。

所谓C语言编译器,就是把编程得到的文件,比如.c,.h的文件,进行读取,并对内容进行分析,按照C语言的规则,将其转换成cpu可以执行的二进制文件。其本质在于对文件的读入,分析,及处理。

C语言编写的程序代码称为源程序,对于计算机本身来说,它并不能直接识别由高级语言编写的程序。C语言程序经C语言编译程序编译后,生成后缀为.obj的二进制文件(称为目标文件)。

此.obj文件必须与系统提供的各种库函数连接起来生成一个后缀为.exe的可执行文件才可以执行。C语言的可执行文件由一系列机器指令构成的。

(3)预编译首选什么方式扩展阅读

解释执行和编译执行是计算机语言的执行方式。解释执行由解释器现场解释执行,不生成目标程序。如BASIC便是解释执行,一般解释执行效率较低,低于编译执行。

编译执行由编译程序将目标代码一次性编译成目标程序,再由机器运行目标程序。如:PASCAL,C,C++,delphi等语言。效率高于解释执行。

D. java 在oracle中执行插入哪种方式比较快

1、大量数据用批量,即batchUpdate
2、用预编译的方式,即PreparedStatement
3、用JNDI连接,而不是JDBC

E. aspx.net与jsp.java的区别

.aspx是ASP.NET中动态页的拓展名。.jsp是JSP中动态页的拓展名。.java是JAVA代码源文件的拓展名。 1.关于ASP.NET ASP.NET是改进版本的ASP, 比ASP有更强大的LIABRARY, 更好的PERFORMANCE. 其更适合于Enterprise Level 的网站开发. 最强的技术支持Web Service, 而且有.NET的LIABRARY做后盾, 可以使用.NET任何的组建. 而且ASP.NET 还有微软专门为AJAX开发的版本. 其实VB.NET是VB 6在.NET Framework下的改良, 其实都差不多. ASP.NET可以用VB.NET, C#, J#等所有.NET Framework的语言开发.(但其实每种语言做的东西都一样... 就象山东话, 东北话, 写出来都是中文:) 不过ASP.NET对出学者可能有点难. 因为它其实在模拟desktop application development的模式, 不象传统的JSP, PHP, ASP这样容易明白。传统的Dynamic Server Scripting, 象PHP 5, 这是现在最简单的, 最有效的了. 那个JSP也不难. 如果有钱还可以考虑下Adobe ColdFusion. ASP.NET的新潮的Dynamic Server Scripting, 在其带动下SUN也推出自己的JavaServer Faces (其实是拓展JSP), 和ASP.NET很象, 也曾强了对WEB SERVCIE的支持, 也很适合ENTERPRISE LEVEL 的网站. 2. 关于JSP JSP, JavaServer Pages 是Java技术的一部分,可以说是Java Platform Enterprise Edition的一部分(JAVA主要3个大技术,Java SE, Java EE, Java ME)。软件开发者可以用JSP来动态生成HTML,XML或者其他的文档。然后把文档response给网页用户。这项技术,可以用Java里的所有定义过的library来支持它的功能,所以JSP的API和普通Java EE的API一样。 JSP里还有很多有功能的XML tag(如:,<jsp:useBean)。这些都是JAVA内置功能,不需要导入新的外置 library。这些XML tag,可以在很多Web Server里使用(如:Apache, Apache TomCat, WebLogic等)。 JSP在编译后就完全和Servlet一样了。JSP页面在第一次被用户访问的时候,首先被JAVA 编译器,编译成Java Servlet Class。然后编译后Servlet Class,在以后被用户访问时,直接在JVM里运行,由JSP Web Container来输出HTML给用户。JSP这种“首次访问-预编译”的运行方式比传统PHP(PHP 4和PHP以前版本),过时的ASP(所有版本的ASP),要快很多。(网络一位网友作过一个1万次For Loop,循环的测试,结果发现JSP比传统PHP,ASP快尽10被的速度就完成运算)。预编译的运行方式后来被PHP5效仿,ASP.NET也是预编译的。当然JSP还有一个好处,就是可以直接用纯Java (无HTML),来写一个Servlet,直接在JVM运行后,由JSP Web Container输出HTML给用户。只是Servlet有的时候写一些presentation tier的东西很麻烦,因为它不能融合XML和输出逻辑在一起。所以一般Servlet用于纯Java的business logic逻辑。 JSP的tag还可以由用户自己来创造和使用,这个和ASP.NET里的user-defined controls差不多。 MVC, Model-View-Controller,是一种开发架构,用来把JSP技术中的presentation, business logic, data storage三层清楚的分开。这样使开发过程更佳清楚明了,便于开发,维护。常用的MVB架构有:Barracuda, Apache Struts和Spring。JSF,

F. 问一个c++宏的问题

如果是变量只能这样写才可以!!
#include<stdio.h>
int main()
{
int i = 0;
int NUM = 50;
if( NUM > 50 )
i++;
else
if ( NUM < 50 )
i--;
else
i = i + 50;

printf("i is:%d\n",i);
}

当NUM是宏时,采用预编译方式#if #else #endif方式,这是在编译期就会完成的工作!
而当NUM是变量时,程序再按预编译检查时,就会找不到NUM(宏),其结果就不能确定了。

G. 编译原理

C语言编译过程详解
C语言的编译链接过程是要把我们编写的一个C程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。过程图解如下:

从图上可以看到,整个代码的编译过程分为编译和链接两个过程,编译对应图中的大括号括起的部分,其余则为链接过程。
一、编译过程
编译过程又可以分成两个阶段:编译和汇编。
1、编译
编译是读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,源文件的编译过程包含两个主要阶段:
第一个阶段是预处理阶段,在正式的编译阶段之前进行。预处理阶段将根据已放置在文件中的预处理指令来修改源文件的内容。如#include指令就是一个预处理指令,它把头文件的内容添加到.cpp文件中。这个在编译之前修改源文件的方式提供了很大的灵活性,以适应不同的计算机和操作系统环境的限制。一个环境需要的代码跟另一个环境所需的代码可能有所不同,因为可用的硬件或操作系统是不同的。在许多情况下,可以把用于不同环境的代码放在同一个文件中,再在预处理阶段修改代码,使之适应当前的环境。
主要是以下几方面的处理:
(1)宏定义指令,如 #define a b。
对于这种伪指令,预编译所要做的是将程序中的所有a用b替换,但作为字符串常量的 a则不被替换。还有 #undef,则将取消对某个宏的定义,使以后该串的出现不再被替换。
(2)条件编译指令,如#ifdef,#ifndef,#else,#elif,#endif等。
这些伪指令的引入使得程序员可以通过定义不同的宏来决定编译程序对哪些代码进行处理。预编译程序将根据有关的文件,将那些不必要的代码过滤掉
(3) 头文件包含指令,如#include "FileName"或者#include <FileName>等。
在头文件中一般用伪指令#define定义了大量的宏(最常见的是字符常量),同时包含有各种外部符号的声明。采用头文件的目的主要是为了使某些定义可以供多个不同的C源程序使用。因为在需要用到这些定义的C源程序中,只需加上一条#include语句即可,而不必再在此文件中将这些定义重复一遍。预编译程序将把头文件中的定义统统都加入到它所产生的输出文件中,以供编译程序对之进行处理。包含到C源程序中的头文件可以是系统提供的,这些头文件一般被放在/usr/include目录下。在程序中#include它们要使用尖括号(<>)。另外开发人员也可以定义自己的头文件,这些文件一般与C源程序放在同一目录下,此时在#include中要用双引号("")。
(4)特殊符号,预编译程序可以识别一些特殊的符号。
例如在源程序中出现的LINE标识将被解释为当前行号(十进制数),FILE则被解释为当前被编译的C源程序的名称。预编译程序对于在源程序中出现的这些串将用合适的值进行替换。
预编译程序所完成的基本上是对源程序的“替代”工作。经过此种替代,生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。这个文件的含义同没有经过预处理的源文件是相同的,但内容有所不同。下一步,此输出文件将作为编译程序的输出而被翻译成为机器指令。
第二个阶段编译、优化阶段。经过预编译得到的输出文件中,只有常量;如数字、字符串、变量的定义,以及C语言的关键字,如main,if,else,for,while,{,}, +,-,*,\等等。
编译程序所要作得工作就是通过词法分析和语法分析,在确认所有的指令都符合语法规则之后,将其翻译成等价的中间代码表示或汇编代码。
优化处理是编译系统中一项比较艰深的技术。它涉及到的问题不仅同编译技术本身有关,而且同机器的硬件环境也有很大的关系。优化一部分是对中间代码的优化。这种优化不依赖于具体的计算机。另一种优化则主要针对目标代码的生成而进行的。
对于前一种优化,主要的工作是删除公共表达式、循环优化(代码外提、强度削弱、变换循环控制条件、已知量的合并等)、复写传播,以及无用赋值的删除,等等。
后一种类型的优化同机器的硬件结构密切相关,最主要的是考虑是如何充分利用机器的各个硬件寄存器存放的有关变量的值,以减少对于内存的访问次数。另外,如何根据机器硬件执行指令的特点(如流水线、RISC、CISC、VLIW等)而对指令进行一些调整使目标代码比较短,执行的效率比较高,也是一个重要的研究课题。
2、汇编
汇编实际上指把汇编语言代码翻译成目标机器指令的过程。对于被翻译系统处理的每一个C语言源程序,都将最终经过这一处理而得到相应的目标文件。目标文件中所存放的也就是与源程序等效的目标的机器语言代码。目标文件由段组成。通常一个目标文件中至少有两个段:
代码段:该段中所包含的主要是程序的指令。该段一般是可读和可执行的,但一般却不可写。
数据段:主要存放程序中要用到的各种全局变量或静态的数据。一般数据段都是可读,可写,可执行的。
UNIX环境下主要有三种类型的目标文件:
(1)可重定位文件
其中包含有适合于其它目标文件链接来创建一个可执行的或者共享的目标文件的代码和数据。
(2)共享的目标文件
这种文件存放了适合于在两种上下文里链接的代码和数据。
第一种是链接程序可把它与其它可重定位文件及共享的目标文件一起处理来创建另一个 目标文件;
第二种是动态链接程序将它与另一个可执行文件及其它的共享目标文件结合到一起,创建一个进程映象。
(3)可执行文件
它包含了一个可以被操作系统创建一个进程来执行之的文件。汇编程序生成的实际上是第一种类型的目标文件。对于后两种还需要其他的一些处理方能得到,这个就是链接程序的工作了。
二、链接过程
由汇编程序生成的目标文件并不能立即就被执行,其中可能还有许多没有解决的问题。
例如,某个源文件中的函数可能引用了另一个源文件中定义的某个符号(如变量或者函数调用等);在程序中可能调用了某个库文件中的函数,等等。所有的这些问题,都需要经链接程序的处理方能得以解决。
链接程序的主要工作就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够被操作系统装入执行的统一整体。
根据开发人员指定的同库函数的链接方式的不同,链接处理可分为两种:
(1)静态链接
在这种链接方式下,函数的代码将从其所在地静态链接库中被拷贝到最终的可执行程序中。这样该程序在被执行时这些代码将被装入到该进程的虚拟地址空间中。静态链接库实际上是一个目标文件的集合,其中的每个文件含有库中的一个或者一组相关函数的代码。
(2) 动态链接
在此种方式下,函数的代码被放到称作是动态链接库或共享对象的某个目标文件中。链接程序此时所作的只是在最终的可执行程序中记录下共享对象的名字以及其它少量的登记信息。在此可执行文件被执行时,动态链接库的全部内容将被映射到运行时相应进程的虚地址空间。动态链接程序将根据可执行程序中记录的信息找到相应的函数代码。
对于可执行文件中的函数调用,可分别采用动态链接或静态链接的方法。使用动态链接能够使最终的可执行文件比较短小,并且当共享对象被多个进程使用时能节约一些内存,因为在内存中只需要保存一份此共享对象的代码。但并不是使用动态链接就一定比使用静态链接要优越。在某些情况下动态链接可能带来一些性能上损害。
我们在linux使用的gcc编译器便是把以上的几个过程进行捆绑,使用户只使用一次命令就把编译工作完成,这的确方便了编译工作,但对于初学者了解编译过程就很不利了,下图便是gcc代理的编译过程:

从上图可以看到:
预编译
将.c 文件转化成 .i文件
使用的gcc命令是:gcc –E
对应于预处理命令cpp
编译
将.c/.h文件转换成.s文件
使用的gcc命令是:gcc –S
对应于编译命令 cc –S
汇编
将.s 文件转化成 .o文件
使用的gcc 命令是:gcc –c
对应于汇编命令是 as
链接
将.o文件转化成可执行程序
使用的gcc 命令是: gcc
对应于链接命令是 ld
总结起来编译过程就上面的四个过程:预编译、编译、汇编、链接。了解这四个过程中所做的工作,对我们理解头文件、库等的工作过程是有帮助的,而且清楚的了解编译链接过程还对我们在编程时定位错误,以及编程时尽量调动编译器的检测错误会有很大的帮助的。
是否可以解决您的问题?

H. mybatis中的#和$的区别

1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".

2. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id.

3. #方式能够很大程度防止sql注入。

4.$方式无法防止Sql注入。

5.$方式一般用于传入数据库对象,例如传入表名.

6.一般能用#的就别用$.

MyBatis排序时使用order by 动态参数时需要注意,用$而不是#

字符串替换
默认情况下,使用#{}格式的语法会导致MyBatis创建预处理语句属性并以它为背景设置安全的值(比如?)。这样做很安全,很迅速也是首选做法,有时你只是想直接在SQL语句中插入一个不改变的字符串。比如,像ORDER BY,你可以这样来使用:
ORDER BY ${columnName}
这里MyBatis不会修改或转义字符串。
重要:接受从用户输出的内容并提供给语句中不变的字符串,这样做是不安全的。这会导致潜在的SQL注入攻击,因此你不应该允许用户输入这些字段,或者通常自行转义并检查。

I. PHP,JSP,ASP是什么干什么用的之间有什么关系吗

PHP,Hypertext Preprocessor,最初在95年问世(那时以前叫Personal Home Page)。PHP最初是制作动态网页的服务器端脚本语言,但现在PHP已经可以作为command line运行有GUI的standalone的程序。现在是PHP Group在开发和管理PHP的规则,功能等。但PHP大都用在dynamic webpage scripting上,好象没听过谁用它开发desktop application。

PHP使用率是制作动态网页的几种语言(JSP,ASP,ASP.NET, ColdFusion, Ruby, SHTML)中最高的。因为PHP在95年已经问世至今,以有相当数量的开发者。我们熟知的国际权威网络全书Wikipedia有90%用PHP写的,而且国外流行多年的“校内网”FaceBook 也全部用PHP写的,同时Yahoo, Sony官方,Pepsi百事官方这些网站都是用PHP的。根据维基网络(Wikipedia)的说法,PHP被超过20,000,000的网站所用,被超过1,000,000的网页服务器所用。目前到2008五月,PHP最新版本为5.2.6。

PHP不仅使用率高,而且能兼容各类平台。它可以在大多数网页服务器上运行(如:MS IIS,Apache),大多数操作系统上运行(如:Windows, UNIX, Linux)。而且PHP支持很大多数牌子的数据库:MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Gerneric ODBC等。

结构方面,虽比JSP,ASP.NET差点,PHP也有很多Framework可用。微软的ASP.NET结构是出名的,JSP的MVC结构也很厉害,所以开发大网站ASP.NET,JSP都很快。而PHP Group也为此付出很大努力,来开发自己特有的结构适应不同类型的大网站的需求。常见的PHP的Framework有:CakePHP, PRADO, Symfony, Zend等。

另外LAMP结构,是PHP最常用的开发模式,即是配合Linux, Apache, MySQL, PHP,合称LAMP。个人认为这种方式才是ASP.NET,PHP,JSP中最简单的。

3. 说说JSP。(本人工作中用的最多的就是JSP)
JSP, JavaServer Pages 是Java技术的一部分,可以说是Java Platform Enterprise Edition的一部分(JAVA主要3个大技术,Java SE, Java EE, Java ME)。软件开发者可以用JSP来动态生成HTML,XML或者其他的文档。然后把文档response给网页用户。这项技术,可以用Java里的所有定义过的library来支持它的功能,所以JSP的API和普通Java EE的API一样。

JSP里还有很多有功能的XML tag(如:<jsp:include>,<jsp:useBean)。这些都是JAVA内置功能,不需要导入新的外置 library。这些XML tag,可以在很多Web Server里使用(如:Apache, Apache TomCat, WebLogic等)。

JSP在编译后就完全和Servlet一样了。JSP页面在第一次被用户访问的时候,首先被JAVA 编译器,编译成Java Servlet Class。然后编译后Servlet Class,在以后被用户访问时,直接在JVM里运行,由JSP Web Container来输出HTML给用户。JSP这种“首次访问-预编译”的运行方式比传统PHP(PHP 4和PHP以前版本),过时的ASP(所有版本的ASP),要快很多。(网络一位网友作过一个1万次For Loop,循环的测试,结果发现JSP比传统PHP,ASP快尽10被的速度就完成运算)。预编译的运行方式后来被PHP5效仿,ASP.NET也是预编译的。当然JSP还有一个好处,就是可以直接用纯Java (无HTML),来写一个Servlet,直接在JVM运行后,由JSP Web Container输出HTML给用户。只是Servlet有的时候写一些presentation tier的东西很麻烦,因为它不能融合XML和输出逻辑在一起。所以一般Servlet用于纯Java的business logic逻辑。

JSP的tag还可以由用户自己来创造和使用,这个和ASP.NET里的user-defined controls差不多。

MVC, Model-View-Controller,是JSP的普遍开发架构,用来把JSP技术中的presentation, business logic, data storage三层清楚的分开。这样使开发过程更佳清楚明了,便于开发,维护。常用的MVB架构有:Barracuda, Apache Struts和Spring。JSF,JavaServer Faces是一个由SUN官方开发的Framework,是模仿ASP.NET的event-driven开发模式,和ASP.NET非常相似。但SUN 并没有让JSF替代JSP,相反JSF的开发者少之又少,但是据说现在JSF或JSP配合RAD(AJAX)开发很流行(校内网就是这样,而且结合Struts)。

4. ASP(Active Server Pages), ASP.NET 两个分别是 动态网页开发语言,动态网页开发语言和结构
(1) 关于ASP的淘汰
ASP, Active Server Pages已经过时了, 但因为其出现的早,96年就有了,所以现在有些中小网站还用(但,使用最多最广的是PHP,最初于95年现世。ASP是微软第一代动态网页开发语言,只能在Windows系统 + MS IIS服务器平台下运行。

Wikipedia, Facebook, 网络等都用PHP,PHP学习的简单度和ASP差不多;JSP稍微难点,JSP用的一般都是银行,购物等安全性较高的网站,Google也用JSP)。但随着开发者的各种需求,ASP以后可以被ASP.NET取代,因为微软停止对其的一切技术维护与功能更新。ASP.NET是革新版本的ASP(注意是“革新版本”,而非“改进版本”),或者说是完全新一代的Dynamic Web Scripting。

ASP代表着传统的dynamic web scripting,与ASP.NET没什么关系,学了确实也没用。因为ASP不象CGI(Common Gateway Interface),CGI是动态网站制作的始祖,所有ASP,JSP,PHP什么的都根据CGI演化而来,而且ASP,PHP,JSP都包含了些 CGI的东西;而ASP却没有被衍生出任何新技术,ASP.NET也不算基于ASP,只能说ASP.NET开发理念,library,功能完全是基于.NET的其它组件。

其实PHP,JSP,ASP明白其中一种,其它的都很容易学会了。如果非要学学传统的dynamic web scripting,那就学学PHP吧,不比ASP难,但比ASP功能多,稳定性好,PHP5运行速度也比ASP快很多(JSP稍难因为要学点 Java)。学了PHP或JSP什么的,对学ASP.NET有好处,而且还可以直接用PHP,JSP进行开发。去google差差英文资源,有评价PHP 最好的,有评价JSP最好的,还从没有听谁说过ASP最好。

ASP.NET毕竟在.NET中,所以ASP.NET还是有相当地位的。

(2). 关于ASP.NET的优势
ASP.NET是微软.NET Framework的一部分。伴随.NET 1.0在2002的问世,ASP.NET也出现在动态网页开发语言的家族中(与PHP,JSP,ColdFusion, Ruby, SHTML等并行了)。

功能上,ASP.NET比ASP有更强大的library, 更好的稳定性。 ASP.NET可以使用.NET Framework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现),功能上显然强大于传统功能单调的ASP。最强的技术支持Web Service, 而且有.NET的所有library做后盾。而且ASP.NET 在.NET 3.5中还有微软专门为AJAX开发的功能--ASP.NET AJAX。

结构上,传统的ASP把所有代码混为一团,简单的用<%%>把HTML和VBScript(或JScript)分开,实现动态输出 HTML。因为ASP.NET模仿JSP的MVC网页结构,微软为ASP.NET开发了自己的Code-Behind结构,将 presentation(文件拓展名:.aspx)和business logic(文件拓展名:.cs或.vb等)分离。同时Code-Behind模式也实现了让ASP.NET开发者用.NET中最普通Winform的开发模式来开发网站,方便非网页开发者制作动态网站。所以ASP.NET更容易维护,比ASP更适合于Enterprise Level 的大网站开发。

由于ASP.NET比JSP,PHP等更接近于.NET Winform的开发。如Tree View, Datagrid View(即高级Table)等高级UI,都可以直接用ASP.NET中的Web Control来实现,这比传统的使用JavaScript + XTHML + CSS的DHTML开发方式简单不少,也更好维护。同时ASP.NET开发这可以定义自己的User Control,制作自己特别的一种UI(如网站LOGO,版权等部分),而且此User Control可以被存为.ascx文件,方便让每一页(.aspx)来使用。

运行速度上,ASP.NET模仿了JSP的预编译机制(Pre-Compile)。使编译好的代码(MSIL语言)在网页服务器上运行。这样比传统的ASP,传统PHP(PHP4以前版本)更快,因为传统的ASP是直接运行开发者写的Script,相当于每运行一次,就得编译一次那么慢。 ASP.NET可以用VB, C#, J#等所有.NET Framework的语言开发.(但其实每种语言做的东西都一样... 就象山东话, 东北话, 写出来都是中文:)

不过ASP.NET对出学者可能有点难. 因为它其实在模拟desktop application development,即Winforms开发的模式, 不象传统的JSP,PHP, ASP这样容易明白。传统的Dynamic Server Scripting, 象PHP 5, 这是现在最简单的, 最有效的了。( 那个JSP也不难. 如果有钱还可以考虑下Adobe ColdFusion。)

ASP.NET的新潮的Dynamic Server Scripting, 在其带动下SUN也推出自己的JavaServer Faces (其实是拓展JSP,但JSF无法取代JSP), 和ASP.NET很象, 也有很多Web Control(JTable, JTree),同时JSF也曾强了对WEB SERVCIE的支持, 也很适合ENTERPRISE LEVEL 的网站。

(3). ASP与ASP.NET的优劣总结:
-- ASP已经被微软停止更新;ASP.NET却在.NET(1.0, 2.0, 3.0, 3.5)中突飞猛进;
-- ASP在96年出现,并没有引领一个潮流,PHP,ColdFusion都出现于95年,引领了整个潮流;ASP.NET引领新的动态网站开发潮流,SUN的JSF(JavaServer Faces)就是与ASP.NET极其相似;
-- ASP大多被用在是中小网站;PHP被Wikipedia, Facebook, 网络所用,JSP被GOOGLE所用;
-- ASP不支持Web Service; ASP.NET支持Web Service。要是了解.NET中的Web Service在大组织系统中的重要性,就能立杆见影的看出差距
-- ASP开发AJAX比较麻烦;而ASP.NET专门用AJAX控件,更方便。要是了解Web 2.0,那么AJAX是什么地位,就不用我说了吧。
-- ASP.NET模仿JSP,是pre-compile的;ASP不compile,直接运行Script的速度显然没有compile之后的快。
-- ASP.NET的唯一缺点,就是开发用的IDE--Visual Studio Professional比较贵(express版免费的功能太少);ASP的唯一优点是,其

学起来最简单,跟PHP一样简单,比JSP简单,更比ASP.NET简单几倍。

阅读全文

与预编译首选什么方式相关的资料

热点内容
社交软件app该怎么聊 浏览:23
pc的启动文件夹 浏览:671
文件夹压缩过程中点击取消压缩 浏览:215
顺丰app专享优惠券怎么用 浏览:667
酷狗音乐分享文件夹 浏览:826
服务器mgmt旁边的接口是什么 浏览:844
单片机发光二极管原理图 浏览:50
在北京当程序员6年 浏览:128
编译器gcc如何用 浏览:412
androidbringup 浏览:978
算法设计与分析英文版 浏览:911
java程序员加班吗 浏览:142
编译检查的是什么错误 浏览:405
加密兔f码生成器免费 浏览:292
思科路由器命令明文加密 浏览:171
方舟生存进化服务器如何改名字 浏览:892
央行数字货币app怎么注册 浏览:431
51单片机显示时间 浏览:770
我的世界网易版怎么压缩地图 浏览:682
qq小程序云服务器和 浏览:740