Author: admin | Posted: 30-09-2007
1、服务器处理器主频
服务器处理器主频也叫时钟频率,单位是MHz,用来表示CPU的运算速度。CPU的主频=外频×倍频 系数。很多人认为主频就决定着CPU的运行速度,这不仅是个片面的,而且对于服务器来讲,这个认识也出现了偏差。至今,没有一条确定的公式能够实现主频和 实际的运算速度两者之间的数值关系,即使是两大处理器厂家Intel和AMD,在这点上也存在着很大的争议,我们从Intel的产品的发展趋势,可以看出 Intel很注重加强自身主频的发展。像其他的处理器厂家,有人曾经拿过一快1G的全美达来做比较,它的运行效率相当于2G的Intel处理器。
所以,CPU的主频与CPU实际的运算能力是没有直接关系的,主频表示在CPU内数字脉冲信号震荡的速度。在Intel的处理器产品中,我们也可以看到 这样的例子:1 GHz Itanium芯片能够表现得差不多跟2.66 GHz Xeon/Opteron一样快,或是1.5 GHz Itanium 2大约跟4 GHz Xeon/Opteron一样快。CPU的运算速度还要看CPU的流水线的各方面的性能指标。
当然,主频和实际的运算速度是有关的,只能说主频仅仅是CPU性能表现的一个方面,而不代表CPU的整体性能。
2、服务器前端总线(FSB)频率
前端总线(FSB)频率(即总线频率)是直接影响CPU与内存直接数据交换速度。有一条公式可以计算,即数据带宽=(总线频率×数据带宽)/8,数据传 输最大带宽取决于所有同时传输的数据的宽度和传输频率。比方,现在的支持64位的至强Nocona,前端总线是800MHz,按照公式,它的数据传输最大 带宽是6.4GB/秒。
外频与前端总线(FSB)频率的区别:前端总线的速度指的是数据传输的速度,外频是CPU与主板之间同步运 行的速度。也就是说,100MHz外频特指数字脉冲信号在每秒钟震荡一千万次;而100MHz前端总线指的是每秒钟CPU可接受的数据传输量是 100MHz×64bit÷8Byte/bit=800MB/s。
其实现在“HyperTransport”构架的出现,让这种实 际意义上的前端总线(FSB)频率发生了变化。之前我们知道IA-32架构必须有三大重要的构件:内存控制器Hub (MCH) ,I/O控制器Hub和PCI Hub,像Intel很典型的芯片组 Intel 7501、Intel7505芯片组,为双至强处理器量身定做的,它们所包含的MCH为CPU提供了频率为533MHz的前端总线,配合DDR内存,前端 总线带宽可达到4.3GB/秒。
但随着处理器性能不断提高同时给系统架构带来了很多问题。而“HyperTransport”构架不但解决了问题,而且更有效地提高了总线带宽,比方 AMD Opteron处理器,灵活的HyperTransport I/O总线体系结构让它整合了内存控制器,使处理器不通过系统总线传给芯片组而直接和内存交换数据。这样的话,前端总线(FSB)频率在AMD Opteron处理器就不知道从何谈起了。
3、处理器外频
外频是CPU的基准频率,单位也是MHz。CPU的 外频决定着整块主板的运行速度。说白了,在台式机中,我们所说的超频,都是超CPU的外频(当然一般情况下,CPU的倍频都是被锁住的)相信这点是很好理 解的。但对于服务器CPU来讲,超频是绝对不允许的。前面说到CPU决定着主板的运行速度,两者是同步运行的,如果把服务器CPU超频了,改变了外频,会 产生异步运行,(台式机很多主板都支持异步运行)这样会造成整个服务器系统的不稳定。
目前的绝大部分电脑系统中外频也是内存与主板之间的同步运行的速度,在这种方式下,可以理解为CPU的外频直接与内存相连通,实现两者间的同步运行状态。外频与前端总线(FSB)频率很容易被混为一谈,下面的前端总线介绍我们谈谈两者的区别。
4、CPU的位和字长
位:在数字电路和电脑技术中采用二进制,代码只有“0”和“1”,其中无论是 “0”或是“1”在CPU中都是 一“位”。
字长:电脑技术中对CPU在单位时间内(同一时间)能一次处理的二进制数的位数叫字长。所以能处理字长为8位数据的CPU通常就叫8位的CPU。同理 32位的CPU就能在单位时间内处理字长为32位的二进制数据。 字节和字长的区别:由于常用的英文字符用8位二进制就可以表示,所以通常就将8位称为一个字节。字长的长度是不固定的,对于不同的CPU、字长的长度也不 一样。8位的CPU一次只能处理一个字节,而32位的CPU一次就能处理4个字节,同理字长为64位的CPU一次可以处理8个字节。
5、倍频系数
倍频系数是指CPU主频与外频之间的相对比例关系。在相同的外频下,倍频越高CPU的频率也越高。但实际上,在相同外频的前提下,高倍频的CPU本身意 义并不大。这是因为CPU与系统之间数据传输速度是有限的,一味追求高倍频而得到高主频的CPU就会出现明显的“瓶颈”效应—CPU从系统中得到数据的极 限速度不能够满足CPU运算的速度。一般除了工程样版的Intel的CPU都是锁了倍频的,而AMD之前都没有锁。
6、CPU缓存
缓存大小也是CPU的重要指标之一,而且缓存的结构和大小对CPU速度的影响非常大,CPU内缓存的运行频 率极高,一般是和处理器同频运作,工作效率远远大于系统内存和硬盘。实际工作时,CPU往往需要重复读取同样的数据块,而缓存容量的增大,可以大幅度提升 CPU内部读取数据的命中率,而不用再到内存或者硬盘上寻找,以此提高系统性能。但是由于CPU芯片面积和成本的因素来考虑,缓存都很小。
L1 Cache(一级缓存)是CPU第一层高速缓存,分为数据缓存和指令缓存。内置的L1高速缓存的容量和结构对CPU的性能影响较大,不过高速缓冲 存储器均由静态RAM组成,结构较复杂,在CPU管芯面积不能太大的情况下,L1级高速缓存的容量不可能做得太大。一般服务器CPU的L1缓存的容量通常 在32—256KB。
L2 Cache(二级缓存)是CPU的第二层高速缓存,分内部和外部两种芯片。内部的芯片二级缓存运行速度 与主频相同,而外部的二级缓存则只有主频的一半。L2高速缓存容量也会影响CPU的性能,原则是越大越好,现在家庭用CPU容量最大的是512KB,而服 务器和工作站上用CPU的L2高速缓存更高达256-1MB,有的高达2MB或者3MB。
L3 Cache(三级缓存),分为两 种,早期的是外置,现在的都是内置的。而它的实际作用即是,L3缓存的应用可以进一步降低内存延迟,同时提升大数据量计算时处理器的性能。降低内存延迟和 提升大数据量计算能力对游戏都很有帮助。而在服务器领域增加L3缓存在性能方面仍然有显著的提升。比方具有较大L3缓存的配置利用物理内存会更有效,故它 比较慢的磁盘I/O子系统可以处理更多的数据请求。具有较大L3缓存的处理器提供更有效的文件系统缓存行为及较短消息和处理器队列长度。
其实最早的L3缓存被应用在AMD发布的K6-III处理器上,当时的L3缓存受限于制造工艺,并没有被集成进芯片内部,而是集成在主板上。在只能够和 系统总线频率同步的L3缓存同主内存其实差不了多少。后来使用L3缓存的是英特尔为服务器市场所推出的Itanium处理器。接着就是P4EE和至强 MP。Intel还打算推出一款9MB L3缓存的Itanium2处理器,和以后24MB L3缓存的双核心Itanium2处理器。
但基本上L3缓存对处理器的性能提高显得不是很重要,比方配备1MB L3缓存的Xeon MP处理器却仍然不是Opteron的对手,由此可见前端总线的增加,要比缓存增加带来更有效的性能提升。
7、CPU扩展指令集
CPU依靠指令来计算和控制系统,每款CPU在设计时就规定了一系列与其硬件电路相配合的指令系统。指令的强弱也是CPU的重要指标,指令集是提高微处 理器效率的最有效工具之一。从现阶段的主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分,而从具体运用看,如Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single instruction multiple data-Extensions 2)、SEE3和AMD的3DNow!等都是CPU的扩展指令集,分别增强了CPU的多媒体、图形图象和Internet等的处理能力。
我们通常会把CPU的扩展指令集称为"CPU的指令集"。SSE3指令集也是目前规模最小的指令集,此前MMX包含有57条命令,SSE包含有50条命 令,SSE2包含有144条命令,SSE3包含有13条命令。目前SSE3也是最先进的指令集,英特尔Prescott处理器 已经支持SSE3指令集,AMD会在未来双核心处理器当中加入对SSE3指令集的支持,全美达的处理器也将支持这一指令集。
8、CPU内核和I/O工作电压
从586CPU开始,CPU的工作电压分为内核电压和I/O电压两种,通常CPU的核心电压小于等于I/O电压。其中内核电压的大小是根据CPU的生产 工艺而定,一般制作工艺越小,内核工作电压越低;I/O电压一般都在1.6~5V。低电压能解决耗电过大和发热过高的问题。
9.制造工艺
制造工艺的微米是指IC内电路与电路之间的距离。制造工艺的趋势是向密集度愈高的方向发展。密度愈高的IC电路设计,意味着在同样大小面积的IC中,可 以拥有密度更高、功能更复杂的电路设计。现在主要的180nm、130nm、90nm。最近官方已经表示有65nm的制造工艺了。
10、指令集
(1)CISC指令集
CISC指令集,也称为复杂指令集,英文名是CISC,(Complex Instruction Set Computer的缩写)。在CISC微处理器中,程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。顺序执行的优点是控制 简单,但计算机各部分的利用率不高,执行速度慢。其实它是英特尔生产的x86系列(也就是IA-32架构)CPU及其兼容CPU,如AMD、VIA的。即 使是现在新起的X86-64(也被成AMD64)都是属于CISC的范畴。
要知道什么是指令集还要从当今的X86架构的CPU说 起。X86指令集是Intel为其第一块16位CPU(i8086)专门开发的,IBM1981年推出的世界第一台PC机中的CPU—i8088 (i8086简化版)使用的也是X86指令,同时电脑中为提高浮点数据处理能力而增加了X87芯片,以后就将X86指令集和X87指令集统称为X86指令 集。
虽然随着CPU技术的不断发展,Intel陆续研制出更新型的i80386、i80486直到过去的PII至强、PIII至 强、Pentium 3,最后到今天的Pentium 4系列、至强(不包括至强Nocona),但为了保证电脑能继续运行以往开发的各类应用程序以保护和继承丰富的软件资源,所以Intel公司所生产的所有 CPU仍然继续使用X86指令集,所以它的CPU仍属于X86系列。由于Intel X86系列及其兼容CPU(如AMD Athlon MP、)都使用X86指令集,所以就形成了今天庞大的X86系列及兼容CPU阵容。x86CPU目前主要有intel的服务器CPU和AMD的服务器 CPU两类。
(2)RISC指令集
RISC是英文“Reduced Instruction Set Computing ” 的缩写,中文意思是“精简指令集”。它是在CISC指令系统基础上发展起来的,有人对CISC机进行测试表明,各种指令的使用频度相当悬殊,最常使用的是 一些比较简单的指令,它们仅占指令总数的20%,但在程序中出现的频度却占80%。复杂的指令系统必然增加微处理器的复杂性,使处理器的研制时间长,成本 高。并且复杂指令需要复杂的操作,必然会降低计算机的速度。基于上述原因,20世纪80年代RISC型CPU诞生了,相对于CISC型CPU ,RISC型CPU不仅精简了指令系统,还采用了一种叫做“超标量和超流水线结构”,大大增加了并行处理能力。
RISC指令集是高性能CPU的发展方向。它与传统的CISC(复杂指令集)相对。相比而言,RISC的指令格式统一,种类比较少,寻址方式也比复杂指令 集少。当然处理速度就提高很多了。目前在中高档服务器中普遍采用这一指令系统的CPU,特别是高档服务器全都采用RISC指令系统的CPU。RISC指令 系统更加适合高档服务器的操作系统UNIX,现在Linux也属于类似UNIX的操作系统。RISC型CPU与Intel和AMD的CPU在软件和硬件上 都不兼容。
目前,在中高档服务器中采用RISC指令的CPU主要有以下几类:PowerPC处理器 、SPARC处理器、PA-RISC处理器、MIPS处理器、Alpha处理器。
(3)IA-64
EPIC(Explicitly Parallel Instruction Computers,精确并行指令计算机)是否是RISC和CISC体系的继承者的争论已经有很多,单以EPIC体系来说,它更像Intel的处理器迈向 RISC体系的重要步骤。从理论上说,EPIC体系设计的CPU,在相同的主机配置下,处理Windows的应用软件比基于Unix下的应用软件要好得 多。
Intel采用EPIC技术的服务器CPU是安腾Itanium(开发代号即Merced)。它是64位处理器,也是IA- 64系列中的第一款。微软也已开发了代号为Win64的操作系统,在软件上加以支持。在Intel采用了X86指令集之后,它又转而寻求更先进的64- bit微处理器,Intel这样做的原因是,它们想摆脱容量巨大的x86架构,从而引入精力充沛而又功能强大的指令集,于是采用EPIC指令集的IA- 64架构便诞生了。IA-64 在很多方面来说,都比x86有了长足的进步。突破了传统IA32架构的许多限制,在数据的处理能力,系统的稳定性、安全性、可用性、可观理性等方面获得了 突破性的提高。
IA-64微处理器最大的缺陷是它们缺乏与x86的兼容,而Intel为了IA-64处理器能够更好地运行两个朝代 的软件,它在IA-64处理器上(Itanium、Itanium2 ……)引入了x86-to-IA-64的解码器,这样就能够把x86指令翻译为IA-64指令。这个解码器并不是最有效率的解码器,也不是运行x86代码 的最好途径(最好的途径是 直接在x86处理器上运行x86代码),因此Itanium 和Itanium2在运行x86应用程序时候的性能非常糟糕。这也成为X86-64产生的根本原因。
(4)X86-64 (AMD64 / EM64T)
AMD公司设计,可以在同一时间内处理64位的整数运算,并兼容于X86-32架构。其中支持64位逻辑定址,同时提供转换为32位定址选项;但数据操 作指令默认为32位和8位,提供转换成64位和16位的选项;支持常规用途寄存器,如果是32位运算操作,就要将结果扩展成完整的64位。这样,指令中有 “直接执行”和“转换执行”的区别,其指令字段是8位或32位,可以避免字段过长。
x86-64(也叫AMD64)的产生也并非空 穴来风,x86处理器的32bit寻址空间限制在4GB内存,而IA-64的处理器又不能兼容x86。AMD充分考虑顾客的需求,加强x86指令集的功 能,使这套指令集可同时支持64位的运算模式,因此AMD把它们的结构称之为x86-64。在技术上AMD在x86-64架构中为了进行64位运算, AMD为其引入了新增了R8-R15通用寄存器作为原有X86处理器寄存器的扩充,但在而在32位环境下并不完全使用到这些寄存器。原来的寄存器诸如 EAX、EBX也由32位扩张至64位。在SSE单元中新加入了8个新寄存器以提供对SSE2的支持。寄存器数量的增加将带来性能的提升。与此同时,为了 同时支持32和64位代码及寄存器,x86-64架构允许处理器工作在以下两种模式:Long Mode(长模式)和Legacy Mode(遗传模式),Long模式又分为两种子模式(64bit模式和Compatibility mode兼容模式)。该标准已经被引进在AMD服务器处理器中的Opteron处理器。
而今年也推出了支持64位的EM64T技 术,再还没被正式命为EM64T之前是IA32E,这是英特尔64位扩展技术的名字,用来区别X86指令集。Intel的EM64T支持64位sub- mode,和AMD的X86-64技术类似,采用64位的线性平面寻址,加入8个新的通用寄存器(GPRs),还增加8个寄存器支持SSE指令。与AMD 相类似,Intel的64位技术将兼容IA32和IA32E,只有在运行64位操作系统下的时候,才将会采用IA32E。IA32E将由2个sub- mode组成:64位sub-mode和32位sub-mode,同AMD64一样是向下兼容的。Intel的EM64T将完全兼容AMD的X86-64 技术。现在Nocona处理器已经加入了一些64位技术,Intel的Pentium 4E处理器也支持64位技术。
应该说,这两者都是兼容x86指令集的64位微处理器架构,但EM64T与AMD64还是有一些不一样的地方,AMD64处理器中的NX位在Intel的处理器中将没有提供。
11、超流水线与超标量
在解释超流水线与超标量前,先了解流水线(pipeline)。流水线是Intel首次在486芯片中开始使用的。流水线的工作方式就象工业生产上的装 配流水线。在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5—6步后再由这些电路单元分别执行,这样就能实现 在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。经典奔腾每条整数流水线都分为四级流水,即指令预取、译码、执行、写回结果,浮点流水又分 为八级流水。
超标量是通过内置多条流水线来同时执行多个处理器,其实质是以空间换取时间。而超流水线是通过细化流水、提高主频,使 得在一个机器周期内完成一个甚至多个操作,其实质是以时间换取空间。例如Pentium 4的流水线就长达20级。将流水线设计的步(级)越长,其完成一条指令的速度越快,因此才能适应工作主频更高的CPU。但是流水线过长也带来了一定副作 用,很可能会出现主频较高的CPU实际运算速度较低的现象,Intel的奔腾4就出现了这种情况,虽然它的主频可以高达1.4G以上,但其运算性能却远远 比不上AMD 1.2G的速龙甚至奔腾III。
12、封装形式
CPU封装是采用特定的材料将CPU芯片 或CPU模块固化在其中以防损坏的保护措施,一般必须在封装后CPU才能交付用户使用。CPU的封装方式取决于CPU安装形式和器件集成设计,从大的分类 来看通常采用Socket插座进行安装的CPU使用PGA(栅格阵列)方式封装,而采用Slot x槽安装的CPU则全部采用SEC(单边接插盒)的形式封装。现在还有PLGA(Plastic Land Grid Array)、OLGA(Organic Land Grid Array)等封装技术。由于市场竞争日益激烈,目前CPU封装技术的发展方向以节约成本为主。
Author: admin | Posted: 29-09-2007
如果你还未考虑采用一种单一的、紧密结合的方式进行网页设计的话,请看本文。
在网络发展初期,凝聚性(cohesiveness)是由服务器端实现的,但要牵涉到大量的人工文件管理工作。幸运的是,随着网络的日益成熟,网络开发工具也日臻完善。例如,在.NET框架下,你可以创建各种Web控件来统一设计。
XML 和XSLT的转换使Web设计受益无穷。借助XML和 XSLT转换,你可以实现将动态用语(dynamic verbiage)和网站内容存储在数据库中。你可以在XML中传输数据库,然后再通过XSLT转换将其转变为HTML脚本。本文中,我将提供一个网站实 例,并说明XML 和XSLT如何使你的网站设计浑然一体。
在设计用户/数据交互功能时,我最为关心的是数据的完整性、用户界面的功能性和商务规则的完善实现。我最不关心的是按钮的颜色。而这些细枝末节却往往是程序员发挥技术的地方。
当设计一个全新的页面时,我只投入最低限度的精力用于用户界面的设计,如只安置一个文本框和一个提交按钮。对于本例中的HTML网页,我增加了两个INPUT标签来完成这一任务。
<html>
<head>
</head>
<body>
<form method="POST" name="thisForm" id="thisForm" action="somepage.php">
<input type="text" name="txtText" id="txtText" size="25"><br>
<input type="submit" name="btnSubmit" id="btnSubmit" value="Submit">
</form>
</body>
</html>
以上代码段完成了主要功能,但还需用XML和XSLT来对其加以美化。
在XML 中,代码有开头和结尾标签,而在HTML中没有。INPUT 和BR标签是个特例,它们不需结尾标签。然而,在结尾标签标记“>”前加一个正斜杠,可确保HTML符合XML规范。如果在编写HTML脚本时注意 遵从这些规范,你就能够将XML/HTML(aka XHTML)转换为不错的HTML页面。
<form method="POST" name="thisForm" id="thisForm" action="somepage.php">
<input type="text" name="txtText" id="txtText" size="25" transform="blueText"/>
<br/>
<input type="submit" name="btnSubmit" id="btnSubmit" value="Submit"
transform="bigButton"/>
</form>
运行下列代码,完成XSLT转换:
以上代码无法为你实现创建命名空间、定义XML标签、确认DTD或schema。它使你能够创建可行的HTML脚本,并可转化为完整的新页面,无需担心设计因素。
在 样式表中,我用HTML标签的转换属性驱动转换操作。我曾考虑用一个FORM窗体作为定义转换操作所需的用户控件的单元,因为所有用于用户输入的控件都应 在一个FORM中。本例中,输出为一个文本INPUT,文本颜色为蓝色;一个高20像素、宽100像素的按钮,字体为18点加粗。我可以通过修改转换属性 来改变文本框中的文本颜色。
有多种方法可将静态内容添加到网页中,但出于演示目的,我只采用最简单的方式,即在样式表中增加header和footer。
现在,当我要创建一个新窗体用于用户输入时,我要做的只是创建一个一般窗体。一旦一般窗体通过测试,我就可以将这些窗体添加到转换中生成主题的HTML输出。你只要记住输入控件类型,并注意把它添加为转换属性即可。
达到目的的方法有很多种,通过这个例子,我希望能帮助你们学会如何标准化HTML输出。
Author: admin | Posted: 29-09-2007
Web 站点的导航地图对用户体验非常重要。这里我们将向你展示如何构建一个绝好的导航地图。
不管你知道多少创建 Web 解决方案后台的技术,除非你很擅长 Web 设计,否则你的所有努力都是白费。对于 Web 设计来说非常关键的一点是开发 Web 站点的导航地图。
导航地图是一个非常有价值的资源,因为在创建站点地图时,你可以对用户的导航定义约束,还可以定义从一个页面带到另外一个页面的数据。
设计导航地图
在设计导航地图前,首先要确定 use-case 模型中每个动作(action)所对应的页面。如果使用 UML 进行设计,那么很容易看到 use-case 模型驱动导航地图的方式,因为这个模型概括了某个用户可以使用的动作。
然 后,虚拟出一个通用页面来标识某个用户可以使用的动作。这些虚拟页面是用户界面的模板。一个动词(verb)或动作指定了从一个页面进入下一个页面的导航 路线。这个动作可以通过一个事件来实现,比如说通过一个按钮点击事件来实现。这个实现可以非常简单,比如说可以是一个只有一个 OK 按钮的登录页面。在用户点击 OK 按钮时,应用程序将试图登录到那个用户。因此,虚拟页面和动作都可以是 Login。
到目前为止,你还不需要指定任何技术细节。这样就使得后台开发人员很容易地将必要的活动(activity)包装起来以实现这个动作。如果用户成功的登录,那么他/她可以被重定向到导航地图的下个页面,比如说可能是用户信息(User Info)页面。
开发导航地图
在风险干系人确认了你的导航地图设计方案之后,就可以着手进行开发了。设计人员将会把工作重点放在页面布局的实际观感上,而你就可以创建必要的业务逻辑来实现导航地图所指定的动作。
Web 购物车就是将业务逻辑和导航地图开发结合起来的一个例子。在用户登录到 Web 应用程序之后,他们可以将自己选择的物品加入到购物车中。然后进入结帐区,在这一区域产生购物总额;然后再进入定购区,在这一区域产生用户的发货信息。
下面是一个导航路径的例子:
•Home.asp:用户选择登录。(GetCredentials)
•Login.asp:用户登录到系统。(Login)
•ItemsList.asp:用户选择要购买的物品。(AddItem)
•ItemsList.asp:用户进入结帐区。(Checkout)
•Checkout.asp:用户复查订单。(SubmitOrder)
•Finalise.asp:用户完全订单并输入发货信息。(ShipAndThanks)
•ThankYou.asp.
括号中的动作是继续进入下一页面所必需的应用程序动作或业务功能。这个页面名称之后的详细动作是是创建应用程序动作的虚拟事件。物理页面的名称提供给用户创建商业动作所必需的功能。
导航地图实例
下 面让我们看一下导航地图的实际流程。用户首先通过进入Home.asp。在这个页面,有一个供用户登录的链接。用户在点击登录链接后被 GetCredentials重定向到Login.asp,这里GetCredentials是一个产生结果的动词(verb),但是可能被实现为一个函 数。然后用户在Login.asp页面输入他/她的用户名和口令。在点击 OK 按钮时,Login 动作发生。在这种情况下,用户的凭证被验证,(出于描述简单性的考虑,)我们这里假设这个用户是合法的。Login 动作导致用户被导航到ItemsList.asp页面,这个页面的作用是显示销售的物品。用户然后点击 Add to Shopping Cart 链接。AddItem动作会把物品添加到购物车,然后返回到ItemsList.asp页面。用户然后点击 Checkout 链接,这里 Checkout 动作将计算用户订单的总额,供用户复查。用户然后在Checkout.asp页面复查他/她的订单。在这种简化的情况下,用户订单中的任何东西必须正确, 因为用户唯一的选项是SubmitOrder。在Finalise.asp页面,用户输入发货信息,然后点击一个 Complete Order 按钮。ShipAndThanks动作保存已经完成的订单,然后将用户重定向到ThankYou.asp页面。
从这个基本的导航地图,你可以想象到,在用户与系统交互时,可能会出现不同的路径。比如用户在购物车中增大选购物品的数量,这时用户就需要一个具有 Update 动作的路径。
在这个交互过程的图形化表示中,页面可以定义为一个个的方框,方框中填写页面的名称。动作可以通过箭头实现,箭头的方向是从当前的 Web 页面指向结果 Web 页面。这是遵循KISS (Keep It Simple, Stupid)方法的一个好办法。
通过有效的设计,你可以通过封装来提供必要的功能,进而完成每个动作。(开发者在线)
Author: admin | Posted: 29-09-2007
你可以通过IE为你的HTML元素添加行为,建立面向对象的页面设计方法。Phillip Perkins建立了一个<DIV>对象,当用户拖动它时,它会在限定的<DIV>内继续定向运行。
Macromedia Flash可以使开发者免受网络浏览器与互操作解决方案的限制。但是,局限于Flash让你无法体验到网络浏览器的许多特色。
例如,你可以通过IE为HTML元素添加行为,建立对象面向的页面设计方法。在这个例子中,我会建立了一个<DIV>对象,当用户拖动它时,它会在限定的<DIV>内继续定向运行。
为HTML添加行为的能力是设计的一个关键部分。在IE中,这通过相关的样式来实现。添加行为的样式特性即“behavior”。你可以通过嵌套的<STYLE>标签来添加行为,就像这样:
<style>DIV.object { behavior: url(Behavior.htc);}
从这段脚本中,你可以发现一个行为会提及到一个HTC(HTML组件)文件。既然我们具有对象化这些HTML元素的基础,我们就能建立控制它们的行为脚本。
表A中包含了为我们的嵌套<DIV>对象建立行为的所有代码。在这一个组件内就有许多的代码。
表 A
如果你注意到了脚本的顶部,在那里有一个特殊的标签告诉浏览器该用何种样式呈现特性和包含组件的方法,以及将这一组件添加到哪些事件中。这些事件都是标准的HTML事件。
当 组件(在装载事件中)初始化时,它获得一个uniqueID,将其包含的母体记录在一个数字变量中,并为进程计算设定缺省值。当你逐句通过这一对象的目标 处理器时,你会看到每当用户点击对象时— element_onmousedown()—一些变量进行了初始化。下一步,用户应该将对象拖动到另一个位置。
当用户在屏幕上拖动对象时— element_onmousemove() —对象的位置发生改变,以与鼠标的运动相匹配。然后,用户应该释放鼠标按钮,让对象自行移动。
当 用户释放鼠标按钮— element_onmouseup() —或是鼠标脱离了对象区域— element_onmouseout() —时,释放点即被记录下来,并对用户点击对象到释放对象的时间进行计算,对象则获得永恒运动。通过计算得出点击起始点与释放终止点的斜度,这个斜度成为对 象新的移动路径。通过对象移动的距离与拖动时间可计算出用户拖动对象的速度。这个速度再又用来建立对象的移动方式。最终,速度的倒数被用来建立对象位置更 新的时间间隔。
在间隔中断事件— moveMe() —中,对象的上升(rise)与运动(run)将方向斜度转换成计算的运动路径。将较大的方向改变与较小的方向改变区分开来,我们就可以做到这点。结果 是,其中一个方向改变总是1,而另一个则小于1。在每次中断中,两个方向改变中较大的一个由一个向量单元增加,可能是-2或是2个像素。另一个则增加较小 方向改变的两倍(即,如果上升为2而运动为1的话,那么上升将增加1 *向量而运动每次增加.5 * 2单元)。如果较小的改变增量超过向量单元(-2或2)的话,
如果对象的新位置位于限定元素之外,向量则发生改变以与之相匹配。这种方法将对象“反弹”到限定元素之外。
表B是含有这些组件的HTML页面。
表 B
HTML页面不过是包含<DIV>及作为组件元素的嵌套<DIV>。在 JavaScript内,有一些支持对象与功能来帮助进行组件计算。值得注意的是,有一个对象栈— objStack —变量,在间隔中断过程中,可以用来帮助管理对组件moveMe()方法的调用。
拷贝这些代码并将它粘贴到你自己的文件中。记得把你的HTC文件命名为component.htc,特别用于行为样式特性。在IE 5.0或更高版本中运行这个例子,看着你的对象充满活力。(Phillip Perkins)
Author: admin | Posted: 29-09-2007
很多开发人员都使用诸如Dreamweaver或FrontPage来设计自己的Web网页。由于需要的所有功能都集中于WYSIWY工具,这些工具显得相当优秀。然而,有些时候这些工具能够提供更多的功能与特性。
例 如,假设你想为用户提供建立一个基于特定模板的数据入口窗体。即这一入口窗体工作方式类似于报表自定义(Report Builder)。这样,你可以构建自己的窗体自定义(Form Builder)工具,以能够自动地与数据源产生关联,并可以为终端用户提供数据入口窗体。在本文中,我将建立一个简单的网页,以引导读者能够通过一个 <INPUT>元素和一个<SELECT>元素建立一个Web网页,并建立一个数据入口窗体。
首先,确定数据流向 的目标地点。在我们的例子中,数据将流向SQL Server上的名为SALES的简单列表。这一列表的相关域为售货员(Salesperson)和数量(金钱)。Salesperson域不太适合与另 一列表SALES_STAFF的关键字相联系。SALES_STAFF表包含售货员的first_name和last_name。由于 SALES_STAFF表为参考列表,本文作者将使用<SELECT>来选择这一表的域,而数量域将作为一个简单的< INPUT>元素。
现在,你必须弄清楚构建这些元素的原理。我们希望作者能够选择表中的域,然后选择适合的元素。接着,作者能够将一 些属性配置给这些元素。对于<SELECT>表,作者可以分配size属性和建立一系列可选择的尺寸值。对于<INPUT>元 素,他们也可以分配size尺寸。除此之外,作者将可以设置一些style属性,比如在窗体上放置元素的位置。同样,作者将可以将数据域分配给元素。表A 给出了页面布局的代码。
这些HTML元素位于屏幕的左边。当用户在屏幕上放置一个元素时,他们将可在屏幕下底端的属性列表中看到这些元素的属性。属性列表与相应的XML属性数据相关联。当用户改变属性列表的数据时,就会生成新的元素属性。
用户可以使用光标改变位置属性,以确定<DIV>的元素位置,或者用户可以在属性列中的输入新的值。为了使用光标在<DIV>改变位置,我将添加一个HTC以提供这一功能。表B包含了HTC的代码。
为了“绑定”数据以达到每一属性都列于表格中,我将列表“绑定”到一个单一属性的XML岛。每一次操作我都将会激活其它元素,并将元素的XML载入到数据岛,这样就可以将表中的数据关联起来。当元素失去“激活”时,新的元素XML属性就会被载入。
为了建立元素,我将在Web页面中包含JavaScript以处理这些元素,可查看表C。
同 样,通过一些转换操作可以完成列表之间的关系。我将一个<IMG>键添加到行,并使用它的onload事件获得rowIndex属性。然后, 我使用这些属性值以获得相关的属性节点。通过这一方式,我可以设置是否将<SELECT>元素显示到所有的数据域。
一旦你建立了所有的元素,XML数据就会被存储在一个文件或数据库中。然后,使用一个XSLT表单重新设置输出的格式,并且生成新的HTML窗体。数据将通过与页面关联的XML数据自动连接到数据域,并且XML数据将被传送以增加或更新原来的内部数据。
Author: admin | Posted: 29-09-2007
9月28日,搜狐IT独家获悉,Alexa宣布进入中国市场,建立中国网站排名发布平台。其已经采取与中国网站合作的方式,建立Alexa中国站,专门发布中国网站排名。该合作网站已经在9月17日正式开通。
搜狐IT获悉相关信息后与Alexa全球进行联系,Alexa随后向搜狐IT发来传真,说明其已经与中国网站易比网(91bi.com)签署了合作协 议,双方将合作建设中国网站排名发布平台,并有更深入的合作内容将会在不久后(预计是合同正式生效时)正式公布。Alexa表示希望通过整合双方的行业经 验和资源,为中国互联网行业及网民提供更有价值的服务。
搜狐IT随即联系易比网CEO白洛舟,白洛舟证实了双方将合作共建Alexa中国站,并透露双方已经在9月初签署合作协议,目前相关合同正在接受审查,预计可能会在10月底正式公布。
据了解,易比网CEO白洛舟在美国时期就与Alexa有过接触,其2005年回国创业,并在2006年8月推出易比网,他认为其与Alexa的发展理念非常吻合,这可能是Alexa选择与其合作的根本原因。
Alexa中国网站将推出用户忠实度排名
据白洛舟透露,Alexa中国网站推出了用户忠实度排名,他表示,事实上,Alexa全球也有相关的数据跟踪,但目前并未在全球的网站上推出这一排名, 主要是因为这一排名的数据跟踪目前属于刚刚开始阶段,Alexa在做的更多的是后台监测。Alexa中国网站推出这一排名试行一段时间以后,Alexa全 球网站也将会推出这一排名。他表示,美国尼尔森已经尝试推出用户在线时长排名,Alexa早就在技术上进行了相关的准备工作。
此外,白洛舟还透露,用户忠实度排名的统计标准是用户的回头率和用户的粘度。因此,虽然像东方财富网、淘宝网这样的行业网站,尽管用户数量可能不是特别高,但是其用户粘度非常强,因此,其忠实度排名非常高。
目前,Alexa中国合作伙伴易比网主要推出三项排名:网站综合排名、Alexa流量排名和用户忠实度排名。(sohu)
Author: admin | Posted: 29-09-2007
国外媒体消息 为了使安装和使用更加简单,Sun升级了Solaris Express Developer Edition。据SUN公司Solaris 和OpenSolaris 的市场总监Dan Roberts透露,尤其增强了该软件的GUI。
Solaris Express Developer Edition是由Sun公司每季度发布一次的免费软件,源代码来自于OpenSolaris.org,被Sun认为是下一代Solaris操作系统。
Roberts说,新增的性能和可用性方面的增强,为Solaris系统、Java平台和Web 2.0的开发提供了更高效的开发路径。
“新版本降低了开发者初学和运行Solaris的难度。” Roberts说,“Solaris Express Developer Edition新增的Solaris安装,是自Solaris 8以来在安装方面最大的改进。”
Solaris Express Developer Edition新特性的其他亮点包括D-Light,它是基于Solaris动态跟踪技术(也即DTrace)的一个全新的GUI front-end工具。D-Light将DTrace的性能深入全面地带给了开发者。而且,D-Light提供一个可扩展的配置技术库 (profiling technology),来帮助用户快速配置文件和切换到程序的运行状态。同时,Solaris Express Developer Edition具备了Sun Studio 12编辑器和 NetBeans 5.5 IDE的性能。
Solaris Express Developer Edition的其他新增特性还有新的无线驱动,支持Enhanced Intel SpeedStep Technology。用户现已可以得到Solaris Express Developer Edition的安装和配置支持,以及Solaris 10操作系统的独立版本。
Author: admin | Posted: 28-09-2007
Alexa已经成为互联网行业的指示标,也迎合了中国互联网行业渴望一个权威统计机构见证的需要,这在主观上催生了中国网站流量作弊的环境,但其对造假现象的简单做法却让业界的反对意见越来越大。
“因为能给自己带来好处,有人机关算尽想提高自己网站的排名,这直接催生了一批专攻此道的人,他们聚到一起便形成了一条Alexa排名产业链。”著名互 联网专家杜超告诉《IT时代周刊》,这条产业链中最重要的角色就是专业的Alexa作弊公司和形形色色的代理商。代理商在网上疯狂吆喝,找到生意后再交给 作弊公司进行操作,他们只提取佣金,宛若一个正规的产品销售渠道。
在调查过程中,《IT时代周刊》偶然获得一份“网站推广”报价单,这 份报价单显示,目前做到全球10万至5万之间排名的价格是300元/月;做到5万至1万的价格是800元/月;做到1万至5000的排名则需要付1500 元/月;在5000名以内,客户每月付费在数千元到数万元不等。
几经周折,记者终于联系上了一家位于北京中关村,以帮助网站提高流量为主业的作弊公司。据该公司负责人李某透露,他的员工各个都是编程高手,也非常了解Alexa的流量统计原理。
李某表示,目前他已经拥有600多家客户,其中有实力的客户大概是100家,中等的200家和实力很小的网站300家。而按照行情做到1万至5000的 排名需要付1500元/月,这家公司每月至少有40万元的收入。“我们是专业的排名优化公司,利用业内最先进的技术帮助客户进行Alexa排名优化。现 在,国内不少知名网站都接受过我们的服务。”他有些自豪地说。
流量作弊
随着 Alexa新一轮的调整,许多涉嫌作弊的网站均遭到了数据清零惩罚。但在李某看来,他所做的不过是一个简单循环游戏:先是破解算法——帮网站作弊——排名 上升——Alexa再调整算法——网站排名下降——再次攻破算法,如是而已。而某资深门户网站编辑王建(化名)甚至指出,“目前Alexa全球排名中 5000以内的中文网站有300多家,但至少有一百家的排名不真实。”他的说法令人半信半疑。
目前,国内视频网站已经成为公认的 Alexa作弊重灾区。从一份由业内人士提供的资料也可以看到,最近一年来,国内知名视频网站普遍出现流量激增的情况。在用户到达率变化方面, 56.com平均每季度增长124%,优酷增长181%,酷6增长146%;在页面浏览数变化上,56.com平均每季度上升21%,优酷上升23%,酷 6网甚至上升76%。
一般情况下,网站用户到达率和页面浏览率同时提高的情况非常罕见,但为什么这么多视频网站都出现了呢?该人士认为这“显然不是巧合”。
据悉,出于安全和企业形象考虑,有些造假网站一般不会找专业的作弊公司,他们喜欢利用自己在技术上的优势以及对Alexa的了解采用自己的一套方法,也 会选择一些大网站购买流量。另外,由于大部分网站编辑的薪酬与其文章的访问量紧密结合,很多编辑为了增加自己文章的流量会采用一些手段。例如把一篇本能一 页显示的文章分成多页来发,这样读者每点击下一个页面浏览文章的时候就会增加几个PV值。有些还会采用自动跳转和自动刷新等形式来增加自己的PV值,再者 就是在网站的显赫位置,放置大量与文章内容毫无关系且又极其暴露的美女图片来吸引点击率。
Continue reading »
Author: admin | Posted: 28-09-2007
互联网上看似不起眼,却对互联网有着重要意义的产品你曾经留意过多少?第一个BBS,第一个QQ,第一个网游,第一个博客……网络上的每一次“第一 个”,你是否都注意了?千万别小瞧这些新生儿,正是它们的诞生,推动了互联网的发展,让更多的人加入“网虫”的行列中来。
QQ、聊天室成入门法宝
有一个图标几乎占据了国内大部分电脑的桌面,那就是小企鹅QQ。作为腾讯QQ前身的ICQ就是英文“ISEEKYOU”简称,中文意思是:我找你。这是 一款网络即时讯息传软件,支持在互联网上面聊天、发送消息、网址及文件等功能。在你上网时,用ICQ可以很快找到你的朋友,前提是你的朋友也安装了这个软 件。
最新的QQ2007正式版
ICQ的成功导致后来的仿冒热潮,单在中国,当时就出现了icq、Oicq、OMMO等众多即时聊天工具。在一大堆的仿冒小兄弟中,腾讯公司的Oicq脱 颖而出,成为了在中国影响最大的即时聊天工具,发布后短短几个月就拥有了超过100万的注册用户。1999年,腾讯正式发布了第一个官方版本 ――OICQ99a。当时第一批的OICQ号码是5位数的,从10001开始。OICQ发布后开始有用户亲切地称它为QQ,后来也成为了OICQ的正式名 称。
网上的公共聊天室
除了即时聊天,QQ还有一项很得民心的功能,就是网络无线寻呼。在那个BP机 盛行的年代,用QQ在网络上给朋友的BP机发送信息可是一件时髦的事,就像现在用SKYPE打长途电话一样。QQ的出现,曾吸引一大批还没接触过电脑的年 轻人涌进网吧注册号码。网友goldenylover回忆道:“想当初在网吧上网,不知道QQ号码可以重复用,每上一次线就申请一个。”当时(包括现在) 许多人上网的第一步都是从注册QQ开始的,在大家眼里,上网就是聊QQ。
BBS、Email、搜索引擎成“三宝”
在互联网厂商眼中,BBS、网络邮箱和搜索引擎是互联网的三大应用。相比聊天工具而言,BBS、网络邮箱及搜索引擎地位同样举足轻重。1978年1月 16日,被大雪封门的Christensen打电话给Seuss讨论如何把他们的电脑通过电话线相连。两周后,史上第一个BBS――CBBS (ComputerBul-letinBoardSystem)就此问世。它比万维网还“年长”十五岁。在国内,北京大学的“一塌糊涂”、南京大学的“小 百合”等高校论坛人气高涨。由网友评选的年度BBS签名涌现大量经典之作。而天涯社区、强国论坛及猫扑等主题则凭借出色的细分占据极高的人气。
天涯社区
而电子邮件则是网友必定注册的产品之一。发出第一封电子邮件的美国工程师汤姆林森在30多年前的某一天,于所属BBN科技公司在剑桥的研究室,把世界第 一封电子邮件从他的一台电脑发送到毗邻的另一台电脑。当时他选择了目前红得发紫的“@”符号,以显示电子邮件是传送到另一个地点。但他却无法回忆起收件人 是谁和邮件的内容。关于电子邮件,有网友在论坛上发帖问:“你申请的第一个电子邮箱你还记得吗?”等问题,许多网友回复称早年往往只要能注册的都不会放 过,到底第一个电子邮箱在那里申请这个问题有过半数网友无法回答。
网易邮箱
相比BBS和电子邮箱, 搜索引擎无疑是最赚钱的产品,雅虎、google和百度无一不凭借搜索赚得盘满钵满。1990年Montreal的几名学生发明了Archie,尽管功能 简单,但却是搜索引擎的祖先。如今搜索引擎功能强大,具备智能化的搜索方式实现了“知之为知之,不知google知”的无所不知的能力。
博客、网游后来居上
在2000年后,纯粹以“聊”为本的网络时代才最终得以改变,越来越多的网络新事物开始刺激网民的眼球。网络游戏、博客、播客等吸引了更多的人成为网民大军。人们在网上能找的乐趣越来越多,网络也因此成了一个大杂烩。
网络游戏《魔兽世界》
中国早期的网络游戏其实在1992年的时候就有了,不过并没有得到太多网民的关注。这个时候出现的网游是以《侠客行》、《西游记》等为代表的mud,中 文翻译为文字泥巴。这些游戏只有文字的界面,游戏控制也是以输入文字为指令,游戏的过程就是文字相互较量的过程。2000年7月,第一款真正意义上的中文 网络图形Mud游戏《万王之王》正式推出,网络游戏开始受到众多网民的青睐。值得一提的是,在1998年成立的联众此时成长为中国第一家知名的网络游戏公 司。联众的业务是免费提供给国内上网用户围棋、中国象棋、跳棋、拖拉机、拱猪等共计5种网络棋牌游戏的服务。2000年,它创下了一项吉尼斯记录,网络围 棋比赛人数多达12140人,是当时世界上规模最大的网络竞技比赛。2002年,由盛大公司代理的网游《传奇》同时在线人数突破50万,成为世界上最大规 模的网络游戏。从此,网络游戏就变成了香饽饽,在大量消耗网民金钱的同时,也创造了众多的亿万富翁。
名人徐静蕾的博客
博客和播客也在这一时期走进人们的视野。历史上最早的博客是作为网络“过滤器”的作用出现的,那就是挑选一些特别的网站,并作简单的介绍。方兴东第一个 把博客的概念带进中国,并成立了国内第一个博客网站――博客网。不过博客真正为人所知并在大众中流行开来还得感谢另一个人物:木子美。正是她创造了中国第 一个有影响力的个人博客,让更多的人成为写博人。博客过后,以视频为主的博客网也受到了大家的追捧。“一个馒头引起的血案”成为了中国第一个在播客视频网 站上广泛流传的视频,也激起了人们对制作网络视频,成为播客的热情。
链接:互联网大事记
●1961年,美国麻省理工学院的伦纳德。克兰罗克(LeonardKleinrock)博士发表了分组交换技术的论文,该技术后来成了互联网的标准通信方式。
●1969年,美国国防部开始起动具有抗核打击性的计算机网络开发计划“ARPANET”。
●1971年,位于美国剑桥的BBN科技公司的工程师雷。汤姆林森(RayTomlinson)开发出了电子邮件。此后ARPANET的技术开始向大学等研究机构普及。
●1983年,ARPANET宣布将把过去的通信协议“NCP(网络控制协议)”向新协议“TCP/IP(传输控制协议/互联网协议)”过渡。
●1987年,CANET在北京计算机应用技术研究所内正式建成中国第一个国际互联网电子邮件节点,并于9月14日发出了中国第一封电子邮件,由此揭开了中国人使用互联网的序幕。
●1988年,美国伊利诺斯大学的学生(当时)史蒂夫。多那(SteveDorner)开始开发电子邮件软件“Eudora”。
●1990年,世界在线(world。std。com)成为第一个Internet电话拨号接入服务提供商。
●1991年,CERN(欧洲粒子物理研究所)的科学家提姆·伯纳斯李(TimBerners-Lee)开发出了万维网(WorldWideWeb)。他还开发出了极其简单的浏览器(浏览软件)。此后互联网开始向社会大众普及。
●1993年,伊利诺斯大学美国国家超级计算机应用中心的学生马克。安德里森(MarkAndreesen)等人开发出了真正的浏览器“Mosaic”。该软件后来被作为NetscapeNavigator推向市场。此后互联网开始得以爆炸性普及。
●1993年,最古老的博客原型诞生——NCSA的“What’sNewPage”网页(archive.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/whats-new.html)
●1996年,即时聊天工具ICQ诞生。
●1999年,腾讯OICQ在国内发布。
●2001年9月11日,世贸大楼遭遇恐怖袭击,博客成为重要信息和灾难亲身体验的重要来源。
●2006年,博客技术的先驱埃文·威廉姆斯(EvanWilliams)创建的新兴公司Obvious推出了Twitter服务,这是一种介于博客和IM聊天之间的新平台,人们称之为迷你博客。
Author: admin | Posted: 27-09-2007
与数据库进行接口的方法有很多,包括使用Access和HTML,但是有一种方法利用了传统的微软ASP(用ADO/ADOX)来创建一个前端达到了同样的目的。
我将在下面讲到的这种方法使用了一段示例代码,它提供一个快速肮脏的应用程序,用来连接数据库和添加、删除以及查看表格定义。你还可以扩展示例代码的功能,让它提供对数据库管理函数更深和更广的控制。现在就让我们进入正题,创建一个示例代码。
示例程序
示例程序的源代码放在一个文件里(dbfe.asp)。如果你想要自己测试该应用程序,那么你就需要使用一个指向Access数据库文件的文件名来替代UNC文件名,当然你必须具有对该文件的完全权限。另外,你可以更改需要连接到的任意数据库的连接字符串。
我是用一个非数据源名称(DSN-less)ODBC连接(也就是在连接字符串里使用DRIVER=,而不是PROVIDER=)。当你第一次加载来自使用了ADO和ADOX的Web服务期的页面时,你就看到该文件里的表格的列表——连系统表格也会被显示出来。表格列表的下面有三个按钮,用来查看和删除已有的表格,另外一个按钮用来创建新的表格。(图A显示了该界面。)
图A

代码
如果你看一下示例页面的代码,你就会发现一个结构完好的ASP应用程序包括下列内容:
- 使用Server.CreateObject()来定义对象变量。
- 所提交表格名称(如果有的话)的QueryString值要被加载到一个本地变量里。
- 代码分支(code branch)要以所请求动作(如果有的话)的QueryString值为基础。给用户的消息被加载到sMsg变量里,而且动作请求(添加、删除或者查看)的结果被加载到sView变量里。
- 返回图形用户界面(GUI)表单的函数被定义为fnShowTables、fnShowTable和fnShowCreateTable。
- 用户界面的HTML代码要用与HTML标记所相对应的sView和sMsg变量来定义。
下载示例程序
点击这里下载本文所使用的代码。