FDS’s Blog

2011年5月12日

[软考]Internet数据库建设方案比较

Filed under: 计算机考试 — liaowei @ 14:33

  在Internet应用中,除设计静态网页以外,通过数据库进行数据管理和根据查询生成动态网页也是其中极其重要的一部分,一方面,数据库提高了数据管理的能力,使得数据可以重用和进行必要的数据分析;另一方面,通过数据库进行动态网页的生成,大大提高了网页设计和开发的效率,减少了静态网页的设计和开发任务,并保证了Internet应用的数据一致性和设计风格的一致性,同时数据库还大大提高了Internet应用数据维护的方便性和效率。然而,通过数据库建设Internet应用,也存在数据库选型问题,即选用什么数据库,能够对数据库实现什么样的检索能力,具有什么样的检索效率,也是用户必须考虑的问题。

  在90年代初期,用户设计和开发Internet应用时,只有唯一的选择,即必须采用关系数据库,通过应用服务器和各种中间件产品,实现对数据库的数据检索、维护和显示。然而,随着技术的不断发展,这种局面正在改变,用户可以有更多的选择机会,采用不同的数据库产品、不同的查询和检索方式来设计和构造自己的Internet应用。
从严格意义上说,传统关系数据库经过了多年的针对Internet应用的发展和完善,具有自己的传统意义上的优势。针对Internet网上应用而设计和开发的产品,则克服了传统关系数据库在Internet应用上的一些局限,大大提高了网上应用的效率。

  下面仅就Internet应用中数据库建设的几种方案进行比较:

一、 关系数据库建设方案

  关系数据库最初设计目标是基于主机/终端方式的大型机上的应用,应用范围较为有限,随着客户机/服务器方式的流行和应用向客户机方的分解,关系数据库又经历了客户机/服务器时代,并获得了极大的发展。随着Internet应用的普及,由于Internet上信息资源的复杂性和不规范性,关系数据库初期在开发各种网上应用时显得力不从心,表现在无法管理各种网上的复杂的文档型和多媒体型数据资源。后来关系数据库对于这些需求作出了一些适应性调整,如增加数据库的面向对象成分以增加处理多种复杂数据类型的能力,增加各种中间件以扩展基于Internet应用能力,通过应用服务器解释执行各种HTML中嵌入脚本来解决Internet应用中数据库数据的显示、维护、输出以及到HTML的格式转换等。此时关系数据库的基于Internet应用的模式典型表现为一种三层或四层的多层结构。

  在这种多层结构体系下,关系数据库解决了数据库的Internet应用的方法问题,使得基于关系数据库能够开发各种网上数据库数据的发布、检索、维护、数据管理等一般性应用。

  但是可以说关系数据库从设计之初并没有也不可能考虑到以HTTP为基础、HTML为文件格式的因特网的需求,只是在因特网出现后才作出相应的调整,因此关系数据库在基于Internet应用时由于结构模型等原因的限制,不能与Internet完全融合,需在Internet与数据库之间加入大量的中间件,从而在无形中加大了数据库基于网络应用的难度。并且对于网络环境下Internet应用,如各种非结构化文档信息、多媒体信息以及全文检索需求显得力不从心。虽然后来关系数据库对于这些需求作出了一些适应性调整,但对于网络环境下Internet应用不可或缺的检索效率、全文检索能力等却无法解决。同时,关系数据库的基于中间件的解决方案又给Internet应用带来了新的网络瓶颈,应用服务器端由于与数据库频繁交互,因其本身的效率和数据库检索的效率造成Internet应用在应用服务器端的阻塞。

二、 iBASE非结构化数据库建设方案

  Internet的迅猛发展使数据库应用环境发生了巨大的变化。电子商务、Web 医院、远程教育、移动计算等都需要新的数据库技术支持。因此,对半结构化和无结构数据模型的描述、管理、查询和安全控制等问题的研究已成为新的研究课题,特别是Web数据库发展是新热点和难题。

  从数据库技术发展的角度看,以前通过浏览器访问数据库的唯一渠道是CGI,随后又出现ISAPI、NSAPI和ODBC、JDBC、ASP、PHP、JSP等技术方案,但均没有实现Web服务器和数据库服务器的有机结合,让数据库系统和技术成为Web的重要有机组成部分。

  iBASE非结构化数据库在出现之前经过了近10年的研发,在充分考虑到因特网的实际和需求的前提下,北京国信贝斯软件有限公司(http://www. ibase.com.cn)基于自己的非结构化数据库和全文检索技术,将TCP/IP、HTTP协议、HTML语言等网络技术紧密结合,推出iBASE WEB非结构化网络数据库系统。iBASE WEB非结构化网络数据库系统提供了将iBASE非结构化数据库和各种传统关系数据库方便上网发布的能力,同时对于数据库的网上发布还提供了极高的检索效率和强大的全文检索能力,能够满足网络环境下各种Internet应用的需要。

  针对Internet应用的特殊性,iBASE非结构化网络数据库系统主要解决了Internet数据库应用的几大难点:

1、文档型和多媒体数据类型的支持问题


  在Internet应用中,存在大量的复杂数据类型,如各种超文本文档信息,各种图片、声音等多媒体信息资源,如何对这些信息资源进行有效的存储、管理、检索,是Internet数据库必须解决的问题,iBASE非结构化网络数据库系统通过其外部文件数据类型,可以管理各种文档信息、多媒体信息,并且,对于各种具有检索意义的文档信息资源,如HTML、DOC、RTF、TXT等还提供了强大的全文检索能力。

2、数据库的全文检索问题

   在Internet应用中,由于信息资源极其繁多,如何从浩瀚的信息海洋中查找到所需的信息,如何保证所查询信息的全面性和准确性,也是一个Internet数据库应用必须解决的问题。iBASE非结构化网络数据库系统通过其独特的索引技术和基于布尔检索表达式的查询检索算法,解决了基于字段级和数据库级的全文检索问题,用户可以针对数据库中特定的字段也可针对整个数据库进行全文检索,从而从数据库中检索出感兴趣的内容。同时,其强大的索引表达式构造能力和布尔检索表达式解析能力,使用户可以构造极其灵活的Internet数据库全文检索应用。

3、Internet数据库应用中的查询和检索效率问题

  作为Internet应用,由于需要面对大量的用户群和大量的瞬时并发数据库查询检索,其数据库查询和检索效率就是一个极其关键的问题。iBASE非结构化网络数据库系统主要通过以下途径来保证数据库查询和检索的效率。

  iBASE非结构化网络数据库系统提供了重复字段和子字段的支持能力,通过这种能力,在构造数据库时,可以实现数据库的一条记录中一维表和二维表嵌套,从而避免了关系数据库在大数据量时由于表连接查询而导致的查询检索性能的急剧降低。

  作为Internet数据库应用,一般采用多层结构,由于多层结构以及各种中间件产品在相互连接和交互时,需要交换大量信息和占用处理器资源,也会导致Internet数据库应用性能的降低。iBASE非结构化网络数据库系统实现了WEB Server、Application Server、DB Server的紧密集成,使数据库系统和技术成为Web的一个重要有机组成部分,实现数据库和Web的有机组合。

4、对现有Internet应用的全文检索支持问题

  iBASE非结构化网络数据库系统不仅能够支持iBASE非结构化数据库的直接上网发布和全文检索,对于传统关系型数据库,如Oracle、SYBASE、SQL Server、DB2、Informix等,也提供了导入和链结的支持能力,用户可以采用导入方式,将传统关系数据库转换为iBASE非结构化数据库,再进行网上发布和开发全文检索应用;用户也可采用链结方式,对传统关系数据库构建本地化索引,从而通过本地化索引实现对关系数据库的全文检索支持,iBASE非结构化网络数据库系统充当关系数据库应用服务器,系统的检索效率也将受关系数据库自身检索效率和应用服务器交互效率的影响。

三、 Internet数据库方案比较

  Internet数据库建设到底采用何种数据库,摆在用户面前的至少有三种方案:关系数据库建设方案、iBASE非结构化网络数据库建设方案、关系数据库和iBASE非结构化网络数据库共存方案。

  在事务处理和数值计算方面,由于关系数据库经过了多年的发展,其在事务处理、数值计算方面具有强大的能力并已被证实,而iBASE数据库目前在事务处理和对于数值计算方面的支持则相对薄弱,因此,对于偏向事务处理和数值计算方面的Internet数据库建设,关系数据库建设方案应该说更有优势。

  在对于超文本、文档信息管理和数据库全文检索方面,关系数据库通过其MEMO或TEXT字段等也能实现这种信息的存储,而对于这些信息或数据库的全文检索,关系数据库则显得捉襟见肘。虽然一些网站通过关系数据库构造了一些所谓的“全文搜索引擎”,但实质上,只是在关系数据库中进行基于字段的一种字符串匹配检索,检索时需要对数据库进行顺序扫描,效率极其低下,在数据量较少时尚可胜任,但任何一个Internet应用是不但发展的,随着数据量的不但增大,这种检索方式的必将成为Internet应用的效率及发展的致命的瓶颈。而iBASE WEB非结构化网络数据库系统则完全解决了网上数据库的全文检索问题,通过其独特的单汉字、单英文词、英文字母的索引方式及B*树索引算法,能够高效地解决数据库的网上全文检索问题,构造出强大的网上全文搜索引擎。因此,在对于超文本、文档信息管理和数据库全文检索方面,iBASE非结构化网络数据库建设方案应为首选。

  然而,Internet数据库建设并不能从严格意义上按以上两种情况进行区分,但有一点可以肯定的是,大多数Internet应用都会有全文检索或构建搜索引擎的需求,从理论上讲,除事务处理能力外,iBASE非结构化网络数据库能够处理所有关系数据库支持的Internet应用方式,并能对数据库进行全文检索扩展,也就是说,完全可以利用iBASE非结构化网络数据库构建独立的Internet应用。

  对于一些特殊的Internet应用,我们也可以采用关系数据库和iBASE非结构化网络数据库两者共存的建设方案,实现两者的无缝集成,以发挥两者各自的长处。

[软考]数据库为网格设计

Filed under: 计算机考试 — liaowei @ 14:33

作为一名网格用户,您最关心的是什么?

  答案是网格计算作为类似于电力网或电话网等公用设施一样的计算模式,用户只需要关心数据及进行计算的位置。因为从服务器端来看,网格与虚拟化和供应有关。将所有的资源集中在一起,然后根据业务需求动态地供应这些资源,从而可以同时实现更好的资源利用率。由此看来,网格计算正在改变着计算经济学。

转向网格计算

  从IT 行业的趋势来看,企业也正在向网格计算转移,这在很大程度上是由硬件革新——低成本的刀片服务器驱动的。同时,共享存储技术也简化了硬件的虚拟化和供应,硬件供应商也开始提供实现硬件虚拟化和供应的管理软件。而只有当运行在硬件上的软件能够有效利用硬件革新时,这些革新才更有价值。

硬件趋势

  使网格计算成为可能的主要原因是围绕着硬件的革新。例如:

  · 处理器 新的低成本、高容量的Intel Itanium 2、Sun SPARC 和IBM PowerPC 64 位处理器所提供的性能等于或者优于在高端SMP 服务器中使用的处理器。

  · 服务器 与同类产品相比,刀片服务器技术以其极低的成本提供了较高的密集计算能力。由于这些刀片服务器还自带了远程管理功能,使得数据中心管理员可以较为容易地管理这些系统。

  · 网络化存储 目前,网络附加存储(NAS) 和存储区域网(SAN) 在数据中心中已经得到了广泛的应用,存储已不再局限在单台服务器上。

  · 网络互联 千兆位以太网和无限带宽互联技术正不断降低连接服务器集群的成本。

软件趋势

  在软件中,Linux 继续保持比其它任何OS 更快的发展势头。今天,尽管Linux 还不能适应大型的SMP,但由于刀片服务器有1~4个CPU,Linux 已经可以在其上很好地运行。刀片服务器优于SMP的经济优势将使得刀片服务器占据市场支配地位。另外,由于Linux 本身所具有的价格优势,随着刀片服务器数量的增多,这将变得更加重要,从而也将加速Linux的普遍采用。因此,标准的低成本刀片服务器集群自然与Linux非常相配。

简化网格管理

  Oracle数据库10g是第一个为网格计算设计的数据库。它利用了基于网格的硬件革新,并使用户更容易地在这些标准化、模块化的硬件组件上安装和配置Oracle数据库。作为网格资源(服务器和存储器)的消费者以及数据的提供者,Oracle 数据库10g利用了网格计算的三个基本属性(每一层计算堆栈之间的虚拟化、基于企业策略和动态需求的工作和资源供应、集中资源以提高利用率),使Oracle 数据库使用硬件组件(存储器和服务器)的方式虚拟化。它自动地将集群化的存储器和服务器供应给运行在网格中的不同数据库。作为数据的提供者,Oracle数据库10g提供了各种技术,Oracle管理员可以利用这些技术来为网格用户和应用程序集中、虚拟化和供应数据。此外,运行在网格上的企业在安全性、高可用性、自依赖性和可管理性方面还具有严格的操作要求。

  Oracle数据库10g 自身所具有的技术优势,简化了网格的管理和操作。具体地说,该数据库的特点如下:

自动存储管理

  自动存储管理(ASM)使存储虚拟化,并且提供了轻松的数据库存储供应。用户可以使用标准、低成本、模块化的组件来存储所有的Oracle 数据,也可以使用单个ASM来为多个Oracle 数据库管理存储。ASM仅要求用户管理少量的磁盘组,而不是管理许多数据库文件。一个磁盘组是一组磁盘设备的集合,ASM将其作为单个逻辑单元来管理。另外,用户可以定义一个特别的磁盘组作为数据库的默认磁盘组,Oracle 自动为该数据库分配存储资源,以及创建或删除与该数据库相关的文件。

  ASM还提供了一些存储技术方面的功能,如镜像或逻辑卷管理器(LVM)。类似于这些技术,ASM 使用户能够从单独磁盘设备的集合中创建单一磁盘组。它可以跨磁盘组中的所有设备均衡到该磁盘组的I/O,并执行条带划分和镜像存储来改善I/O 性能和数据可靠性。当存储配置发生变化时,ASM 都将自动再均衡数据库的存储资源。

可移植的集群组件

  集群组件是为集群中服务器间的通信提供集群化服务的软件。在Oracle 数据库10g 之前,用户可以依赖硬件供应商来提供其平台上的集群组件(除了Linux 和Windows 平台)。Oracle只为Linux 和Windows 平台提供集群组件,Oracle 数据库10g 现在提供了可移植的集群组件。也就是说,Oracle 提供了一个可以在所有平台上运行的集群组件,用户不需要依赖供应商提供的集群组件。这也会给他们带来很多好处,如:有单个支持点,不需要依靠多个供应商来解决支持问题;诊断和解决问题变得容易,没有任何由供应商施加的限制,利用可移植的集群组件,即可将集群扩大为任何想要的规模。

  此外,Oracle 也便于用户安装可移植集群。利用单次安装,用户可以确定希望安装可移植集群组件的节点,Oracle Universal Installer 将在所有这些节点上安装可移植集群组件。

高速无限带宽网络支持

  Oracle数据库10g利用高速互联技术(如无限带宽)提供更好的性能和可伸缩性。用户可以全面使用无限带宽来进行网络通信。它提供了许多好处,主要表现为:无限带宽提供了超过千兆位以太网的许多性能改善;用户可以使用单个网络基础架构来进行不同服务器之间、以及服务器和存储器之间的通信,简化了数据中心的连接需求;利用简化的网络基础架构,用户可以使用单个网络底板,使得网络供应更加容易。利用Oracle数据库10g,用户现在可以使用无限带宽来进行应用服务器到数据库服务器的通信、集群数据库中服务器到服务器的通信,以及服务器到存储器的通信,从而为企业的数据中心提供了全面的性能改善和灵活性。

计算资源供应

  网格计算的宗旨是能够根据不断变化的优先级动态分配资源。Oracle数据库10g 有许多改进和新的功能,便于用户分配计算资源以适应业务需求。

  Oracle Real Application Clister (RAC) 具有标准、低成本、模块化服务器(如刀片服务器)集群的高利用率。用户可以在一个刀片服务器集群上运行单个Oracle 数据库。运行在RAC 上的应用程序,能够动态地利用供应给它们的更多的刀片服务器。同样,当应用程序不再需要这些刀片服务器时,能够容易地释放它们。相反,标准级数据库在标准级组件上具有非常低的利用率。在标准级数据库上,用户需要为高峰负载分配资源并且分配备用资源。只有整个系统停止工作,才能向标准级数据库中添加或删除刀片服务器。由于不进行共享,数据被人为地分区。当增加了更多的刀片服务器时,所有的数据都需要重新分区,并将数据分配给新的刀片服务器。类似地,当需要删除刀片服务器时,在删除前需要重新对数据分区。

  Oracle数据库10g为RAC数据库内的服务提供自动负载管理。当在托管服务的例程间建立连接时,RAC会自动地为这些连接执行负载均衡。此外,利用资源管理器,用户可以制订策略,并给运行在RAC 数据库内的服务分配资源。为了满足这些策略,RAC 将自动向这些服务供应数据库例程。

共振

  Oracle数据库10g的最显著特性之一是共振——自己定义集群。集群是一组服务器的集合,这些服务器通过Oracle 可移植集群组件集群在一起。用户可以在相同的集群上运行许多数据库,并且为这些数据库定义服务策略。共振将动态地增加或减少集群中服务器(个人数据库在其上运行)的数量来满足服务级目标。该任务可以自动完成,无需任何用户干预。

结论

  由于以上只是Oracle数据库10g的主要技术特色,其它的新增功能在此不再赘述。尽管它还没有网格的统一定义,但网格计算本身所存在一些基本属性,可以让企业享受网格的好处。硬件新的革新和新的经济性,使得网格计算在硬件层成为可能,并且切合实际。

  可以说,Oracle数据库10g 利用其强大的安全性、自依赖性和可管理性产品解决了企业网格的严格操作要求。利用Oracle数据库10g中的网格优势,用户可在Oracle 产品中进行投资,并将它作为未来的网格计算技术。

【软考】SQL Server中各个系统表的作用

Filed under: 计算机考试 — liaowei @ 14:33

sysaltfiles 主数据库 保存数据库的文件
  syscharsets 主数据库 字符集与排序顺序
  sysconfigures 主数据库 配置选项
  syscurconfigs 主数据库 当前配置选项
  sysdatabases 主数据库 服务器中的数据库
  syslanguages 主数据库 语言
  syslogins 主数据库 登陆帐号信息
  sysoledbusers 主数据库 链接服务器登陆信息
  sysprocesses 主数据库 进程
  sysremotelogins 主数据库 远程登录帐号
  syscolumns 每个数据库 列
  sysconstrains 每个数据库 限制
  sysfilegroups 每个数据库 文件组
  sysfiles 每个数据库 文件
  sysforeignkeys 每个数据库 外部关键字
  sysindexs 每个数据库 索引
  sysmenbers 每个数据库 角色成员
  sysobjects 每个数据库 所有数据库对象
  syspermissions 每个数据库 权限
  systypes 每个数据库 用户定义数据类型
  sysusers 每个数据库 用户

【软考】MD5算法基础

Filed under: 计算机考试 — liaowei @ 14:33

MD5产生一个128位的HASH值,在经过一写初始树立后,将明文分成了512位的块,再将每一块分成16个32位的子块。算法的输出是4个32位的块,连接起来构成128位的HASH值。
    首先,将消息填充到比512的倍数少64位,填充时先向消息末尾填一个1,然后再填满0,然后后面再加上一个64位的消息长度的表示(不包括填充位)。这两步使消息长度恰好是512的倍数,同时保证不同消息在填充后仍不相同。
    初始化4个32位变量:
    A=0×01234567
    B=0x89abcdef
    C=0xfedcba98
    D=0×76543210
这些变量成为链变量。
然后,开始算法的主循环。这个循环对消息中所有的块都执行一次。将4个变量复制到不同的变量:a值为A,b值为B,c值为C,d值为D。
    主循环有4圈,都很相似。每圈使用一个不同的操作,重复16次。每个操作完成一个a,b,c和d中三个变量的非线性函数。然后,将结果与第四个变量、文本的一个子块和一个常数相加。然后,将结果混换左移一个可变值的位数,再将结果与a,b,c和d之一相加。最后用结果来代替a,b,c和d之一。

    共有4个非线性函数,每次操作使用一个,每圈都不相同。
    F(X,Y,Z)=(X∧Y)∨((「X)∧Z)
    G(X,Y,Z)=(X∧Z)∨(Y∧(「z))
    H(X,Y,Z)=X㈩Y㈩Z
    I(X,Y,Z)=Y㈩(X∧(「z))
    ㈩为异或,∧为与,∨为或,「为非

    如果Mi代表消息的第i个子块(0到15),而<<<s代表循环左移s位,则4个操作为:
    FF(a,b,c,d,Mj,s,ti)代表=a=b((a+F(b,c,d)+Mj+ti)<<<s)
    GG(a,b,c,d,Mj,s,ti)代表=a=b((a+G(b,c,d)+Mj+ti)<<<s)
    HH(a,b,c,d,Mj,s,ti)代表=a=b((a+H(b,c,d)+Mj+ti)<<<s)
    II(a,b,c,d,Mj,s,ti)代表=a=b((a+I(b,c,d)+Mj+ti)<<<s)

本新闻共2页,当前在第1页  1  2  

【软考】异步传输和同步传输的区别

Filed under: 计算机考试 — liaowei @ 14:33

1,异步传输是面向字符的传输,而同步传输是面向比特的传输。
2,异步传输的单位是字符而同步传输的单位是桢。
3,异步传输通过字符起止的开始和停止码抓住再同步的机会,而同步传输则是以数据中抽取同步信息。
4,异步传输对时序的要求较低,同步传输往往通过特定的时钟线路协调时序。
5,异步传输相对于同步传输效率较低。

【软考】联机分析处理(OLAP)

Filed under: 计算机考试 — liaowei @ 14:33


OLAP是使分析人员、管理人员或执行人员能够从多角度对信息进行快速、一致、交互地存取,从而获得对数据的更深入了解的一类软件技术。OLAP的目标是满足决策支持或者满足在多维环境下特定的查询和报表需求,它
的技术核心是”维”这个概念。

“维”是人们观察客观世界的角度,是一种高层次的类型划分。“维”一般包含着层次关系,这种层次关系有时会相当复杂。通过把一个实体的多项重要的属性定义为多个维(dimension),使用户能对不同维上的数
据进行比较。因此OLAP也可以说是多维数据分析工具的集合。

OLAP的基本多维分析操作有钻取(roll up和drill down)、切片(slice)和切块(dice)、以及旋转(pivot)、drill across、drill through等。

·钻取是改变维的层次,变换分析的粒度。它包括向上钻取(roll up)和向下钻取(drill down)。roll up是在某一维上将低层次的细节数据概括到高层次的汇总数据,或者减少维数;而drill
down则相反,它从汇总数据深入到细节数据进行观察或增加新维。
·切片和切块是在一部分维上选定值后,关心度量数据在剩余维上的分布。如果剩余的维只有两个,则是切片;如果有三个,则是切块。
·旋转是变换维的方向,即在表格中重新安排维的放置(例如行列互换)。
OLAP有多种实现方法,根据存储数据的方式不同可以分为ROLAP、MOLAP、HOLAP。

ROLAP表示基于关系数据库的OLAP实现(Relational OLAP)。以关系数据库为核心,以关系型结构进行多维数据的表示和存储。ROLAP将多维数据库的多维结构划分为两类表:一类是事实表,用
来存储数据和维关键字;另一类是维表,即对每个维至少使用一个表来存放维的层次、成员类别等维的描述信息。维表和事实表通过主关键字和外关键字联系在一起,形成了”星型模式”。对于层次复杂的维,为避免冗余数据占用
过大的存储空间,可以使用多个表来描述,这种星型模式的扩展称为”雪花模式”。

MOLAP表示基于多维数据组织的OLAP实现(Multidimensional OLAP)。以多维数据组织方式为核心,也就是说,MOLAP使用多维数组存储数据。多维数据在存储中将形成”立方块(Cub
e)”的结构,在MOLAP中对”立方块”的”旋转”、”切块”、”切片”是产生多维数据报表的主要技术。

HOLAP表示基于混合数据组织的OLAP实现(Hybrid OLAP)。如低层是关系型的,高层是多维矩阵型的。这种方式具有更好的灵活性。

还有其他的一些实现OLAP的方法,如提供一个专用的SQL Server,对某些存储模式(如星型、雪片型)提供对SQL查询的特殊支持。

OLAP工具是针对特定问题的联机数据访问与分析。它通过多维的方式对数据进行分析、查询和报表。维是人们观察数据的特定角度。例如,一个企业在考虑产品的销售情况时,通常从时间、地区和产品的不同角度来深入观
察产品的销售情况。这里的时间、地区和产品就是维。而这些维的不同组合和所考察的度量指标构成的多维数组则是OLAP分析的基础,可形式化表示为(维1,维2,……,维n,度量指标),如(地区、时间、产品、销售
额)。多维分析是指对以多维形式组织起来的数据采取切片(Slice)、切块(Dice)、钻取(Drill-down和Roll-up)、旋转(Pivot)等各种分析动作,以求剖析数据,使用户能从多个角度、
多侧面地观察数据库中的数据,从而深入理解包含在数据中的信息。

根据综合性数据的组织方式的不同,目前常见的OLAP主要有基于多维数据库的MOLAP及基于关系数据库的ROLAP两种。MOLAP是以多维的方式组织和存储数据,ROLAP则利用现有的关系数据库技术来模拟
多维数据。在数据仓库应用中,OLAP应用一般是数据仓库应用的前端工具,同时OLAP工具还可以同数据挖掘工具、统计分析工具配合使用,增强决策分析功能。

[软考]数据仓库设计的原则

Filed under: 计算机考试 — liaowei @ 14:33

高效实现数据仓库的七个步骤

  数据仓库和我们常见的RDBMS系统有些亲缘关系,但它又有所不同。如果你没有实施过数据仓库,那么从设定目标到给出设计,从创建数据结构到编写数据分析程序,再到面对挑剔的用户的评估,整个过程都会带给你一种与以往的项目完全不同的体验。一句话,如果你试图以旧有的方式创建数据仓库,那你所面对的不是预算超支就是所建立的数据仓库无法良好运作。

  在处理一个数据仓库项目时需要注意的问题很多,但同时也有很多有建设性的参考可以帮助你更顺利的完成任务。开放思维,不断尝试新的途径,对于找到一种可行的数据仓库实现方法来说也是必需的。

1. 配备一个全职的项目经理或你自己全面负责项目管理

  在通常情况下,项目经理都会同时负责多个项目的实施。这么做完全是出于资金和IT资源方面的考虑。但是对于数据仓库项目的管理,绝对不能出现一人身兼数个项目的情况。由于你所处的领域是你和你的团队之前没有进入过的领域,有关数据仓库的一切-数据分析、设计、编程、测试、修改、维护-全都是崭新的,因此你或者你指派的项目经理如果能全心投入,对于项目的成功会有很大帮助。

2. 将项目管理职责推给别的项目经理

  由于数据仓库实现过程实在是太困难了,为了避免自虐,你可以在当前阶段的项目完成后就将项目管理职责推给别的项目经理。当然,这个新的项目经理一定要复合第一条所说的具有全职性。为什么要这么做呢?首先,从项目经理的角度看,数据仓库实施过程的任何一个阶段都足以让人身心疲惫。从物理存储设备的开发到Extract-Transform-Load的实现,从设计开发模型到OLAP,所有阶段都明显的比以前接触的项目更加困难。每个阶段不但需要新的处理方法、新的管理方法,还需要创新性的观点。所以将管理职责推给别的项目经理不但不会对项目有损害,还可以起到帮助作用。

3.与用户进行沟通

  这里所讲的内容远比一篇文章本身要重要的多。你必须明白,在数据仓库的设计阶段,那些潜在用户自己也不清楚他们到底需要数据仓库为他们做什么。他们在不断的探索和发现自己的需求,而你的开发团队也在和客户的接触中做着同样的事情。更加频繁的与客户接触,多做记录,并让你的团队更关注于项目需求讨论的结果而不是讨论的过程本身。

  既然你和客户的交流是为了了解存储的数据是何种类型以及如何有效存储数据,你也许需要(和你的用户一起)采用一种新的方法观察数据,而不是直接处理数据。你可以尝试从中找出隐藏的信息,比如在一段时期内的数字涨落等。不要试图追寻项目需求的答案,而是要让答案找上门来。

4. 以技术/信息库作为领导

  由于数据仓库实施的各个阶段都有很大不同,因此你需要有人能起到维持整个项目的连续进行的作用,不过这个职责并不需要那种全职性。项目实施有三个重要方面:架构、技术和业务。将架构作为重点可以保证在整个项目中,数据仓库的架构从物理层往上,都会受到良好的维护。而我们应该将技术作为重点,因为开发团队和关键用户都在使用他们以前从未用过的工具,必须有人监督开发过程以及工具使用的一致性。

  最后,在数据仓库的应用过程中浮现出来的业务需求必须被详细分析和记录,以促机开发过程持续下去。如果用户不能很好的开发人员以及其它用户沟通,那么数据分析和度量方面的开发进程就会延期,所以必须有人关注业务方面的开发,推动开发进入更高级别。

5. 跳出反复修改程序的陷阱

  第一次实现的数据仓库肯定不会是最终交付的版本。为什么呢?实际上在真正见到产品前,你无法确定的知道自己的目标是什么。或者说,最终用户只有在使用数据仓库产品一段时间后,才能明确告诉你这个产品是不是他所希望的。与你以往处理的项目不同,业务智能还处于发展的初期,每个公司对业务智能都有不同的解释,因此你的项目决不会一次成功。

  为了以正确的格式获得数据,你需要在不断变化的状况中摸索前进。BI具有很强的个性,不同的环境、不同的市场以及不同的企业都有不同的BI。这又代表什么呢?这表示你需要把数据库管理员放在一个消息相对封闭的环境中,不要让他知道数据仓库的数据结构以及ETL程序在不断的改变。对此没有别的办法。这样可以减轻你和DBA所承受的压力。

6. 对大量的前端资源进行数据源分析

  在数据仓库实现过程中,你不得不在旧有的数据中艰难跋涉,这些数据来自老的数据库、老的磁带机以及远程的数据。它们中的大部分都凌乱不堪,并且难以获取。你要对这些数据进行大量处理,并且还要设计ETL程序来寻找其中的有用信息。如果你希望整个项目做起来比较顺利,并且找到一种方法能够一次成功,那就需要你的开发人员必须花费足够的时间来充分研究这些旧有数据,将凌乱的数据规则化,并尽力设计和实现强壮的数据采集和转换过程。数据仓库的ETL部分会占用整个项目资源的百分之八十,所以一定要确定你的资源都用在刀刃上了。

7. 将人际关系处理放在首位

  在数据仓库实现过程中真正的地狱不是来自技术或者开发方面,而是来自你周围的人。你也许会遇到一个对项目并不乐观而又没时间听你陈述的领导。你也许会遇到一些开发人员将进度拖延太长时间还抱怨为什么不能用老方法实施。你也许还会遇到一些抱有不切实际的幻想的用户,他们希望轻点鼠标就能实现想象中的功能,但却不愿在他们那边多做些智力投资,更好的培训他们自己的员工。而你也已经疲惫不堪,鼓励投资,以及在开发团队和用户(甚至老板)中推广新的开发技巧。

  总之你要保持微笑。当一切搞定,你的烦恼也就一扫而空了,笑到最后才笑得最轻松。

[page]

数据仓库开发过程中的七个禁忌

  过去我们一直使用的OLTP技术也许隐藏着许多严重的缺陷。数据仓库的实现并不是一个简单的任务,你会发现以前积累下来的丰富经验,并不适合处理每个数据仓库的独特需求。

  下面列出的条款是你在实现数据仓库过程中一定会面对的问题,其中一些看起来并没有想象中那么严重,但是你还是应该尽量避免出现类似问题。数据仓库并不是一个事务处理系统,它没有一定的标准也不会实现某个特定的应用,但它本质上是非常有组织性的。总之,每个公司所建立的数据仓库都是唯一的,并且每一次数据仓库的实现方法都不是一成不变的。在实现数据仓库时需要注意的不单是”应该如何作”,更要注意”不该如何做”。下面就是我们总结的七点”不该如何作”。

1.不要编写自己无法快速修改的代码

  你所要编写的程序主要用于数据分析,而不是处理事务。而你的用户也并不真正知道他们自己真正想要一个什么样的程序。因此你不得不反复修改代码好几次,才会明白用户到底需要一个什么样的程序。如果你编写的程序具有良好的结构和灵活性,就算需要修改也不会太浪费力气。反之,你会被自己累死。

2. 不要使用无法修改的数据库访问API

  在过去,你的数据库可以为大量的客户提供稳定的数据查询服务。而如今,你的程序必须能够应付更多的数据查询。这使得重新改写程序以使得每个查询请求能得到最大的数据量成为势在必行的工作,而一般来说这种代码修改都不会一次成功,所以只有选择合适的可以修改的API,才能使程序尽快适应新的需求。

3. 不要设计任何无法扩展的东西

  在联机处理过程(OLTP)应用中,数据分析并不是一个真正的应用程序。实际上,数据分析的关键是获取大量旧的数据,从中提取数据模型,并以此模型推断出新的信息。而你所编写的访问潜在信息的代码应该具有可扩展性,可以附加新的数据。千万别在支持数据分析的代码中假定数据都是固定格式的。

4. 不要附加不必要的功能

  一个仓库要做的是恰到好处的服务,用户走进仓库,从货架上取得自己所需得信息,仅此而已。由于业务智能、分析以及规律性的问题都有各自的处理程序,因此你的客户唯一的需要就是获取信息。他们需要一种应用环境,可以让他们快速的从数据仓库中取得分析过程所需的数据,而不论这个数据是什么样子的。也许你想帮助他们精炼一下获得的数据,但最好不要这么做。一定要记住,不要给客户的数据分析程序添加任何会影响数据访问性能的功能。

5. 不要简化数据清除和数据源分析的步骤

  在实现数据仓库过程中最应该注意的地方就是为Extract-Transform-Load机制分析数据源,以及为优化负载而清除数据。安全的做法是假设项目经理在这个阶段会需要整个项目资源的一半以上。相反,如果你在这方面进行了简化,稍后肯定会后悔。所以就算系统工作缓慢,也不要简化清理旧的数据的过程。

6. 不要避免颗粒度和分区问题

  在数据仓库设计过程中有两个最大的数据存储问题,第一是如何给转换数据定位一个恰当的颗粒度等级,第二是如何将数据绝对的分区。为什么这两点问题如此重要呢?因为整个数据仓库的响应能力受颗粒度影响,并且数据访问的效率直接与数据分区性能有关。因此这是具有关键性的工作,不要试图避免面对这些问题。

7. 不要在没考虑业务问题前就使用OLAP

  用户在亲眼见到程序前通常都不知道自己到底想要个什么样的程序。因此他们的观点有不少错误,比如他们希望分析结果会忠实反应性能度量,或者希望程序会使他们部门或公司的业务工作有所不同。而你必须跳出自己的职责范围,从IT管理者的角度考虑用户部门直至整个企业的运行方式,才能在开发过程中避免这类问题。在通常的OLTP开发中,你可以比较方便的理解业务流程。而在联机分析处理(OLAP)领域,任何事情都需要亲自考察,而在你周围工作的人也许并不会发现你对业务方面存在的误解。因此,不要自以为已经了解了足够的信息。不断的询问才能使你真正了解”业务智能”中的”业务”到底是什么样子的

[page]
顺利开发数据仓库的七种思路

  对于大多数IT顾问来说,实现一个数据仓库的难度比以前做过的任何项目难度都要大。考虑到不同的数据结构、用途以及应用程序开发方法,以前所积累的经验和技巧大部分都无用武之地了。但是只要在你的前进道路上稍加修正,你就会发现实现一个数据仓库并不是难事,就算你是第一次实现数据仓库也没问题。

  下面列出了数据仓库实施过程需要考虑的步骤,有一些你可能从来没有意识到,而另一些可能已经在实施过程中使用到了,但是重新思考一番也许你会有更多的领悟。开放思维,不断尝试新的途径,找到一种可行的数据仓库实现方法。

1. 再三考虑应用程序的实现方法

  数据仓库并不涉及事务处理,并且在报表方面也仅占一小部分。而数据仓库应用程序的本质是分析,尤其是针对业务智能的分析。BI并不是通常所说的数据:它是一种从旧有数据中,模型化得到的新的数据。那么如何才能从旧有数据中挖出这些新数据呢?事实上,这个工作不是让你来完成的,而是你的客户所要完成的。从项目主管的角度看,应该有一个经验丰富的数据表格设计师与你合作,进而决定如何将各类程序融合在一起。其中所遇到的最主要的挑战将是如何用新的方法观察数据,这也是你的客户正在试图使用的方法。

2. 创建抽象的、良好部署的数据库访问组件

  在过去你接触过的数据库项目和现在的数据仓库之间,有一点绝对不同,那就是:在Online Transaction Processing (OLTP)环境中,用户数量非常大,但使用到的数据却比较少;而在Online Analytical Processing (OLAP)环境中情况却正好相反,少量的用户在使用大量的数据。而你的工作就是编写一个应用程序来优化这种不同。这里有一个线索:在你所有的分析程序中,都要能抓取连续的数据项,这样在以后建立和访问的数据结构中才能存放与原数据物理结构类似的数据。具体如何实现呢?首先不要规格化数据。第二将其放入数组中最小化读取请求数。按照这种方法,DBA会很乐意与你合作。

3. 保持松散

  现在回头看看第一步,你应该可以理解定义一个分析程序不是件简单事了,而且一般情况下,很难在第一次就实现符合要求的最终产品。而在你将要进行分析的数据结构上同样存在这种问题。一句话,实现过程会有很多变数,你需要不断的改动你的程序。通常我们都希望将改动次数降到最低。在一个数据仓库实现过程中,本质是要分析过程毫无差错,这也需要DBA的参与。不要死抓住你的程序设计、代码、框图,或你建立的其它什么东西不放手,要根据这种变化而不断进行调整。

4. 将管理放在首位

  在分析数据源方面你做的如何呢?你是否认为清理垃圾数据的工作非常困难?并不是只有你一个人这样想,做过类似工作的人都有这种看法。在一个一般规模的机构中,作为数据仓库实现过程的一部分,会有大量的旧有数据必须进行一致性处理。所以分析数据源并花费数个小时编写转换程序将旧有数据导入数据仓库是整个数据仓库实现过程中最艰难的一部分。并且这也是整个项目中最重要的一环,可以占到整个项目周期和预算的四分之三。所以一定要小心对待。

5. 从字里行间发现问题

  与用户交流是个很麻烦的事情,为什么这么说呢?因为很多用户在见到最终产品前都不知道自己想要什么样的产品。定义数据仓库应用程序是一个探索的过程,而且这个过程要反复进行。记住所谓的”业务智能”是用户自己定义的,他们按照自己的理解来处理业务流程。因此这些用户就是连接数据和业务处理过程间的桥梁。他们所要的并不是数据本身,而是隐藏在数据后面的智能性。你可以让他们讨论、思考并给出建设性的意见。但千万不要让他们解决或让他们任意想象和发表那些”有可能”的观点。最后,一定要随时留意用户得出的结论。

6. 保持领先

  数据仓库看起来没有传统的OLTP模式根深蒂固,事实如此。虽然很多人投身数据仓库的开发中,但由于其框架与以前的系统大相径庭,因此在开始的一段时间数据仓库的实现看上去相当混乱。但是坚持下去是很重要的。它具有两方面重要的作用。

  第一,技术的领先性。它可以跟踪项目中任何阶段的软件工具的部署和正确使用,以及开发过程。如果这复合你的背景,你可以对此多加留意。

  第二,体系结构的领先性。它使得项目在各个阶段转换时,数据仓库和它所支持的系统的物理以及逻辑架构都具有持续性,不会发生改变。这也是你能提供的。

7. 发出警告

  最后你要记住,你并不是唯一登上新大陆的人。你周围的每一个人都会有下面一点或几点问题:不现实的期望、对技术的误解、旧习惯或坏习惯、竞争行为,或缺乏对项目的信任度。虽然交流沟通等任务应该是项目经理负责的,但实际上你也要担负起相同的责任。那么作为技术总监你该怎么作呢?首先当然是要真诚的对待周围的人,但一定要竖立威信,适当的发出警告。当你发现项目进度缓慢、资源流失,或者员工失去目标,就要直言不讳的说出来。快速明确的给予警告在大部分情况下都是明智之举。匆忙上马的数据仓库项目也许会出轨,但不要让失败的项目把你拉下马。

【软考】电子签名基础知识ABC

Filed under: 计算机考试 — fangds @ 14:31

   1) 什么是电子签名?

  电子签名并非是书面签名的数字图像化。它其实是一种电子代码,利用它,收件人便能在网上轻松验证发件人的身份和签名。它还能验证出文件的原文在传输过程中有无变动。

  目前,可以通过多种技术手段实现电子签名,在确认了签署者的确切身份后,电子签名承认人们可以用多种不同的方法签署一份电子记录。方法有:基于PKI的公钥密码技术的数字签名;以生物特征统计学为基础的识别标识;手印、声音印记或视网膜扫描的识别;一个让收件人能识别发件人身份的密码代号、密码或个人识别码PIN;基于量子力学的计算机等等。但比较成熟的,使用方便具有可操作性的,在世界先进国家和我国普遍使用的电子签名技术还是基于PKI(PublicKeyInfrastructino)的数字签名技术。

    2) 基于PKI的数字签名技术

  基于PKI(公钥基础设施)的电子签名被称作“数字签名”。有人称“电子签名”就是“数字签名”是错误的。数字签名只是电子签名的一种特定形式。因为电子签名虽然获得了技术中立性,但也带来使用的不便,法律上又对电子签名作了进一步规定,如上述联合国贸发会的《电子签名示范法》和欧盟的《电子签名共同框架指令》中就规定了“可靠电子签名”和“高级电子签名”。实际上就是规定了数字签名的功能,这种规定使数字签名获得了更好的应用安全性和可操作性。目前,具有实际意义的电子签名只有公钥密码理论。所以,目前国内外普遍使用的、技术成熟的、可实际使用的还是基于PKI的数字签名技术。作为公钥基础设施PKI可提供多种网上安全服务,如认证、数据保密性、数据完整性和不可否认性。其中都用到了数字签名技术。

  PKI的核心执行机构是电子认证服务提供者,即通称为认证机构CA(Certificate Authority),PKI签名的核心元素是由CA签发的数字证书。它所提供的PKI服务就是认证、数据完整性、数据保密性和不可否认性。它的作法就是利用证书公钥和与之对应的私钥进行加/解密,并产生对数字电文的签名及验证签名。数字签名是利用公钥密码技术和其他密码算法生成一系列符号及代码组成电子密码进行签名,来代替书写签名和印章;这种电子式的签名还可进行技术验证,其验证的准确度对手工签名和图章的验证无法比拟的。这种签名方法可在很大的可信PKI域人群中进行认证,或在多个可信的PKI域中进行交叉认证,它特别适用于互联网和广域网上的安全认证和传输。

『软考』接入网的分类

Filed under: 计算机考试 — fangds @ 14:31

    接入网的分类方法有很多种,例如可以按传输媒介分、按拓扑结构分、按使用技术分、按接口标准分、按业务带宽分、按业务种类分等等。

  接入网的分类方法有很多种,例如可以按传输媒介分、按拓扑结构分、按使用技术分、按接口标准分、按业务带宽分、按业务种类分等等。将这些因素都考虑进去,接入网的花样自然就很多,但常用的主要有下面几大类,它们可单独使用或混合使用: 

  金属用户线上的XDSL:它又可分为IDSL(ISDN数字用户环路)、HDSL(利用两对线双向对称传输2Mb/s的高速数字用户环路)、SDSL(单线对双向对称传输2Mb/s的数字用户环路,传输距离比HDSL稍短)、VDSL(甚高速数字用户环路)、ADSL(不对称数字用户环路)。上述系统的拓扑结构是点到点。

  同轴电缆上的HFC(双向混合光纤同轴电缆接入传输系统),SDV(可交换的数字视频接入系统,也基于混合光纤同轴电缆,但同轴缆上只传下行信号)。

  拓扑结构是树型或总线型,下行物理上通常为广播方式。HFC/SDV与其他接入方式相比的特点是下行可以混合传送摸拟与数字信号。

  光纤接入系统:可分为有源与无源系统,有源系统有基于PDH和SDH之分,拓扑结构可以是环型、总线型、星型或它们的混合型,也有点对点的应用。

  无源即PON(无源光网络),有窄带与宽带之分,目前宽带 PON已经标准化的是基于ATM的 PON,即APON。PON本身下行是点到多点系统,上行为多点到点,上行时需要解决多用户争用问题,目前上行大多用TDMA(时分多址)技术。

  无线接入系统:通常指固定无线接入(FWA),根据其技术来自无绳电话(如DECT)、集群电话、蜂窝移动通信、微波通信或卫星通信可分为很多类,对应不同的频段,容量、业务带宽和覆盖范围各异。无线接入主要的工作方式是点到多点,上行解决多用户争用的技术有FDMA(频分多址)、TDMA(时分多址)和CDMA(码分多址),从频谱效率看CDMA最好,TDMA其次。其中CDMA又可有扩谱(DS)、跳频(FH)和同步(S-CDMA)几种。

【软考】如何编写HTTP Servlet程序

Filed under: 计算机考试 — fangds @ 14:31

    在编写Servlet 时需要用到两个用于所有 Servlet 的基本软件包:javax.servlet 和 javax.servlet.http。下面主要介绍javax.servlet.http提供的HTTP Servlet应用编程接口。

    首先介绍一下Java Servlet的基本方法。


  • init() 方法
        在Servlet的生命周期中,仅执行一次 init() 方法,即在服务器装入Servlet时执行。通过配置服务器,可以设定在启动服务器或客户机首次访问Servlet 时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行 init()。
  • service() 方法
        service()方法是Servlet的主体部分。客户对一个HttpServlet对象的每次请求都会调用该对象的service() 方法,并传递给这个方法一个”请求”对象和一个”响应”对象作为参数。”请求”对象提供有关请求的信息,而”响应”对象提供了一个将响应信息返回给浏览器的通信途径。javax.servlet 软件包中的相关类为ServletRequest和ServletResponse,而javax.servlet.http 软件包中的相关类为HttpServletRequest 和 HttpServletResponse。Servlet 通过这些对象与服务器通信并最终与客户机通信。Servlet 能通过调用”请求”对象的方法获知客户机环境、服务器环境的信息和所有由客户机提供的信息;通过调用”响应”对象的方法,Servlet可以向客户机发送响应。

        HttpServlet中的service()方法默认的服务功能是调用与 HTTP 请求的方法相应的 do 功能。例如,如果 HTTP 请求方法为 GET,则默认情况下就调用 doGet()。当一个客户通过HTML表单发出一个HTTP POST请求时,doPost()方法被调用。与POST请求相关的参数作为一个单独的HTTP 请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用doPost()方法。

        Servlet的响应可以是下列几种类型:
        ·一个输出流,浏览器根据它的内容类型(如text/HTML)进行解释。
        ·一个HTTP错误响应,重定向到另一个URL、Servlet和JSP。

  • destroy() 方法
        destroy() 方法仅执行一次,即在服务器停止且卸载Servlet 时执行该方法。当服务器卸载 Servlet 时,将在所有 service() 方法调用完成后,或在指定的时间间隔过后调用 destroy() 方法。一个Servlet 在运行service() 方法时可能会产生其他的线程,因此在调用 destroy() 方法时,必须确认这些线程已终止或完成。
  • GetServletConfig()方法
        GetServletConfig()方法返回一个 ServletConfig 对象,该对象用来返回初始化参数和ServletContext。ServletContext 接口提供有关Servlet 的环境信息。
  • GetServletInfo()方法
        GetServletInfo()方法是一个可选的方法,它提供有关Servlet 的信息,如作者、版本、版权。

    下面介绍编写一个基本HTTP Servlet的步骤。

    (1)引入相应的包和类,包括:

import javax.servlet.*;import javax.servlet.http.*;import java.io.*;继承javax.servlet.http.HttpServlet public class MyServlet extends HttpServlet{

    (2)实现service方法。

    Servlet的主要功能是接受从浏览器发送过来的HTTP请求(request),并返回HTTP响应(response)。这个工作是在service方法中完成的。service方法包括从request对象获得客户端数据和向response对象创建输出。

    如果一个Servlet从javax.servlet.http.HttpServlet继承,实现了doPost或doGet方法,那么这个Servlet只能对POST或GET做出响应。如果开发人员想处理所有类型的请求(request),只要简单地实现service方法即可(但假如选择实现service方法,则不必实现doPost或doGet方法,除非在service方法的开始调用super.service())。其中的差别如图14-2所示。


图14-2 doGet、doPost、service的区别

    HTTP Servlet规范描述了用来处理其他请求(request)类型的方法,所有这些方法都可以归属于service方法。所有的service 方法使用一样的参数。HttpServletRequest提供关于请求(request)的信息,Servlet可以使用 HttpServletResponse 对HTTP客户端做出响应。

public void service(HttpServletRequest req,HttpServletResponse res)throws IOException{// 设置响应内容的类型 res.setContentType(“text/html”);// 获得java.io.PrintWriter对象的引用,用来输出 PrintWriter out = res.getWriter();// 使用PrintWriter对象的println()方法创建一些HTML代码,例如 out.println(“<html><head><title>Hello  World!</title></head>”);out.println(“<body><h1>Hello World!</h1></body></html>”);……}

    (3)编译Servlet。
    从存放此Servlet源代码文件的目录编译此Servlet到包含此Servlet的应用中的 WEB-INF/classes目录。如:
    javac -d /your_application_dir/WEB-INF/classes your_servlet.java

    (4)将此Servlet作为应用的一部分部署。
    把程序编译到指定目录后还是没有开启这个服务,我们必须对它进行配置,在C:\bea\wlserver6.1\config\mydomain\applications\DefaultWebApp\WEB-INF下有一个web.xml文件,这个就是应用程序的配置文件。这个文件的一般形式如下:

<?xml version=”1.0″ ?><!DOCTYPE web-app PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 1.2//EN” “http://java.sun.com/j2ee/dtds/web-app_2_2.dtd”><web-app>  <!–chapter 8  java  servlets –>  <servlet>  <servlet-name>HelloWorld2</servlet-name>  <servlet-class>examples.servlets.HelloWorld2</servlet-class>  <init-param>   <param-name>greeting</param-name>   <param-value>welcome</param-value>   </init-param>   <init-param>    <param-name>person</param-name>    <param-value>weblogic developer</param-value>    </init-param>  </servlet>  <servlet-mapping>  <servlet-name>HelloWorld2</servlet-name>  <url-pattern>/HelloWorld2/*</url-pattern>  </servlet-mapping>    <welcome-file-list>    <welcome-file>index.html</welcome-file>  </welcome-file-list></web-app>

    其中servlet-name是Servlet的名字,servlet-class是在\WEB-INF\classes下存放class文件的相对路径。我们还可以在此文件中初始化参数,形式如下:

<init-param> <param-name>greeting</param-name> <param-value>welcome</param-value></init-param>

    param-name是参数的名称,在本例中是greeting;param-value是参数的值,在本例是welcome。我们可以以此形式初始化更多的参数。

<servlet-mapping><servlet-name>HelloWorld2</servlet-name><url-pattern>/HelloWorld2/*</url-pattern></servlet-mapping>

    这段代码是Servlet名称与url-pattern路径的映射。根据这段代码,HelloWorld2这个Servlet程序的URL路径就是http://SERVER_ADDRESS:/HelloWorld2。

    (5)从浏览器访问Servlet。一般说来,调用Servlet的URL 取决于包含Servlet的Web应用的名字和Web应用部署描述中的Servlet映射的名字。请求(request)参数也可以是调用Servlet的URL的一部分,一般Servlet 的URL如以下模式:
    http://SERVER_ADDRESS:/your_web_application_name/ mapped_servlet_name? Parameter

Powered by WordPress