Cool eye

BlogJava 首页 新随笔 联系 聚合 管理
  63 Posts :: 4 Stories :: 3 Comments :: 0 Trackbacks

#

下面介绍一下Jakarta下的Commons:一个csdn网友描述得很贴切,Commons就好比一个java百宝箱。
commons分为3部分Commons Proper、Commons Sandbox和Commons Dormant
Commons Proper:提供了设计良好可重用的java组件,并都经过了广泛、严格的测试。
Commons Sandbox:处于实验、测试阶段的组件。
Commons Dormant:处于停滞状态,从Sandbox退出的,不活跃的组件,谨慎使用。

Commons Proper组件:

  • Attributes—— 支持源代码级的元数据。
  • BeanUtils——提供对 Java 反射和自省API的包装,处理javabean的工具。
  • Betwixt——将JavaBeans与XML相互转换。 
  • Chain——对Chain of Responsibility(责任链)设计模式的实现。使多个对象都有机会处理请求, 从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。
  • CLI——处理命令行的命令的解析。
  • Codec——包含一些通用的编码解码算法。包括一些语音编码器, Hex, Base64, 以及URL encoder。
  • Collections——扩展和增加标准的 Java Collection框架。
  • Configuration——操作各种格式的配置文件。Properties文件 /XML文件 /JNDI /JDBC 数据源 /System properties /Applet parameters / Servlet parameters
  • Daemon——创建类似unix守护线程的java代码,可以安全地执行一些后台操作,线程不被某个应用程序控制,而是由操作系统控制 类似windows的service,可以设置一个服务依赖于另一个服务,一个服务关闭前必须先执行另一个服务。
  • DBCP——一个数据库连接池
  • DbUtils——一个JDBC的工具类,比如可以将ResultSets生成javabean。
  • Digester——基于规则的XML文档解析,主要用于XML到Java对象的映射.
  • Discovery——提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称。
  • EL——JSP 2.0引入的表达式
  • Email——处理e-mail
  • FileUpload——web应用中的文件上传组件
  • HttpClient——使用HTTP协议的客户端开发框架
  • IO——帮助进行IO功能开发
  • Jelly——Jelly能够把XML转换成可执行代码,所以Jelly是一个基于XML与Java的脚本和处理引擎。 Jelly借鉴了JSP定指标签,Velocity, Cocoon和Xdoclet中的脚本引擎的许多优点。Jelly可以用在命令行,Ant或者Servlet之中。
  • Jexl——Jexl是一个表达式语言,通过借鉴来自于Velocity的经验扩展了JSTL定义的表达式语言。
  • JXPath——使用XPath语法操作javabean的工具。
  • Lang——提供对java.lang包的扩展。 
  • Launcher——跨平台的java程序的启动
  • Logging——提供的是一个日志(Log)接口(interface),同时兼顾轻量级和不依赖于具体的日志实现工具。 它提供给中间件/日志工具开发者一个简单的日志操作抽象,允许程序开发人员使用不同的具体日志实现工具。用户被假定已熟悉某种日志实现工具的更高级别的细节。JCL提供的接口,对其它一些日志工具,包括Log4J, Avalon LogKit, and JDK 1.4等,进行了简单的包装,此接口更接近于Log4J和LogKit的实现.
  • Math——Math 是一个轻量的,自包含的数学和统计组件,解决了许多非常通用但没有及时出现在Java标准语言中的实践问题.
  • Modeler—— 支持兼容JMX规范的MBeans开发。
  • Net——集合了网络工具和协议工具的实现
  • Pool——Commons-Pool 提供了通用对象池接口,一个用于创建模块化对象池的工具包,以及通常的对象池实现。
  • Primitives——对java原始类型的支持。
  • SCXML——处理SCXML
  • Transaction——事务处理,实现了多层次锁、事务集合、事务文件的访问。 
  • Validator——提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器 (校验方法)和校验规则。支持校验规则的和错误消息的国际化。
  • VFS——访问各种文件系统,可以是本地文件、HTTP服务器上的文件、zip中的文件。

Commons Sandbox组件:

  • Compress——处理压缩文件如tar, zip 和 bzip2 格式。
  • CSV——处理CSV文件
  • Exec——安全地处理外部进程
  • Finder——实现类似UNIX find命令的功能
  • I18n——处理软件的I18n功能
  • Id——生成id号功能
  • Javaflow——捕捉程序运行状态
  • JCI——java编译接口
  • OpenPGP——处理加密方法OpenPGP. 
  • Pipeline——处理类似工作队列的管道工具
  • Proxy——生成动态代理 

posted @ 2006-12-21 22:42 joeyeezhang 阅读(195) | 评论 (0)编辑 收藏

1. 概述 

本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等。 

    在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0 cec4",Unicode编码为"4e2d 6587",UTF编码就是"e4b8ad e69687"。注意,这两个字没有iso8859-1编码,但可以用iso8859-1编码来"表示"。 

2. 编码基本知识 

    最早的编码是iso8859-1,和ascii编码相似。但为了方便表示各种各样的语言,逐渐出现了很多标准编码,重要的有如下几个。 

2.1. iso8859-1 

    属于单字节编码,最多能表示的字符范围是0-255,应用于英文系列。比如,字母'a'的编码为0x61=97。 

    很明显,iso8859-1编码表示的字符范围很窄,无法表示中文字符。但是,由于是单字节编码,和计算机最基础的表示单位一致,所以很多时候,仍旧使用iso8859-1编码来表示。而且在很多协议上,默认使用该编码。比如,虽然"中文"两个字不存在iso8859-1编码,以gb2312编码为例,应该是"d6d0 cec4"两个字符,使用iso8859-1编码的时候则将它拆开为4个字节来表示:"d6 d0 ce c4"(事实上,在进行存储的时候,也是以字节为单位处理的)。而如果是UTF编码,则是6个字节"e4 b8 ad e6 96 87"。很明显,这种表示方法还需要以另一种编码为基础。 

2.2. GB2312/GBK 

    这就是汉子的国标码,专门用来表示汉字,是双字节编码,而英文字母和iso8859-1一致(兼容iso8859-1编码)。其中gbk编码能够用来同时表示繁体字和简体字,而gb2312只能表示简体字,gbk是兼容gb2312编码的。 

2.3. unicode 

    这是最统一的编码,可以用来表示所有语言的字符,而且是定长双字节(也有四字节的)编码,包括英文字母在内。所以可以说它是不兼容iso8859-1编码的,也不兼容任何编码。不过,相对于iso8859-1编码来说,uniocode编码只是在前面增加了一个0字节,比如字母'a'为"00 61"。 

需要说明的是,定长编码便于计算机处理(注意GB2312/GBK不是定长编码),而unicode又可以用来表示所有字符,所以在很多软件内部是使用unicode编码来处理的,比如java。 

2.4. UTF 

    考虑到unicode编码不兼容iso8859-1编码,而且容易占用更多的空间:因为对于英文字母,unicode也需要两个字节来表示。所以unicode不便于传输和存储。因此而产生了utf编码,utf编码兼容iso8859-1编码,同时也可以用来表示所有语言的字符,不过,utf编码是不定长编码,每一个字符的长度从1-6个字节不等。另外,utf编码自带简单的校验功能。一般来讲,英文字母都是用一个字节表示,而汉字使用三个字节。 

    注意,虽然说utf是为了使用更少的空间而使用的,但那只是相对于unicode编码来说,如果已经知道是汉字,则使用GB2312/GBK无疑是最节省的。不过另一方面,值得说明的是,虽然utf编码对汉字使用3个字节,但即使对于汉字网页,utf编码也会比unicode编码节省,因为网页中包含了很多的英文字符。 

3. java对字符的处理 

    在java应用软件中,会有多处涉及到字符集编码,有些地方需要进行正确的设置,有些地方需要进行一定程度的处理。 

3.1. getBytes(charset) 

   这是java字符串处理的一个标准函数,其作用是将字符串所表示的字符按照charset编码,并以字节方式表示。注意字符串在java内存中总是按unicode编码存储的。比如"中文",正常情况下(即没有错误的时候)存储为"4e2d 6587",如果charset为"gbk",则被编码为"d6d0 cec4",然后返回字节"d6 d0 ce c4"。如果charset为"utf8"则最后是"e4 b8 ad e6 96 87"。如果是"iso8859-1",则由于无法编码,最后返回 "3f 3f"(两个问号)。 

3.2. new String(charset) 

    这是java字符串处理的另一个标准函数,和上一个函数的作用相反,将字节数组按照charset编码进行组合识别,最后转换为unicode存储。参考上述getBytes的例子,"gbk" 和"utf8"都可以得出正确的结果"4e2d 6587",但iso8859-1最后变成了"003f 003f"(两个问号)。 

    因为utf8可以用来表示/编码所有字符,所以new String( str.getBytes( "utf8" ), "utf8" ) === str,即完全可逆。 

3.3. setCharacterEncoding() 

    该函数用来设置http请求或者相应的编码。 

     对于request,是指提交内容的编码,指定后可以通过getParameter()则直接获得正确的字符串,如果不指定,则默认使用iso8859-1编码,需要进一步处理。参见下述"表单输入"。值得注意的是在执行setCharacterEncoding()之前,不能执行任何getParameter()。java doc上说明:This method must be called prior to reading request parameters or reading input using getReader()。而且,该指定只对POST方法有效,对GET方法无效。分析原因,应该是在执行第一个getParameter()的时候,java将会按照编码分析所有的提交内容,而后续的getParameter()不再进行分析,所以setCharacterEncoding()无效。而对于GET方法提交表单是,提交的内容在URL中,一开始就已经按照编码分析所有的提交内容,setCharacterEncoding()自然就无效。 

    对于response,则是指定输出内容的编码,同时,该设置会传递给浏览器,告诉浏览器输出内容所采用的编码。 

3.4. 处理过程 

下面分析两个有代表性的例子,说明java对编码有关问题的处理方法。 

3.4.1. 表单输入 

    User input  *(gbk:d6d0 cec4)  browser  *(gbk:d6d0 cec4)  web server  iso8859-1(00d6 00d 000ce 00c4)  class,需要在class中进行处理:getbytes("iso8859-1")为d6 d0 ce c4,new String("gbk")为d6d0 cec4,内存中以unicode编码则为4e2d 6587。 

l 用户输入的编码方式和页面指定的编码有关,也和用户的操作系统有关,所以是不确定的,上例以gbk为例。 

    从browser到web server,可以在表单中指定提交内容时使用的字符集,否则会使用页面指定的编码。而如果在url中直接用?的方式输入参数,则其编码往往是操作系统本身的编码,因为这时和页面无关。上述仍旧以gbk编码为例。 

    Web server接收到的是字节流,默认时(getParameter)会以iso8859-1编码处理之,结果是不正确的,所以需要进行处理。但如果预先设置了编码(通过request. setCharacterEncoding ()),则能够直接获取到正确的结果。 

    在页面中指定编码是个好习惯,否则可能失去控制,无法指定正确的编码。


posted @ 2006-12-21 22:23 joeyeezhang 阅读(113) | 评论 (0)编辑 收藏

在Java编程中,中文字体编码难倒了不少程序员,如果抓住了影响Java中文显示的几个关键因素,问题将迎刃而解。

Java是目前最流行的面向对象的编程语言之一,Java支持UTF-8、ISO-8

859-1、GBK等各种字体编码,可笔者发现Java中字体编码的问题仍难倒了不少程序员,网上虽然也有不少关于在Java中如何正确显示中文的文章,但都不够全面,笔者特意总结如下。

影响Java中字体编码正确显示的有几个因素: 1)数据库的连接方式; 2)网页中使用的字体编码; 3)数据库里存放数据的字体编码; 4)Java的缺省字体编码。如果在编程中遇到不能正确显示中文时,要先弄清楚以上几项所使用的字体编码,再分析找出原因,即可解决问题。

众所周知,JSP是Java的一种,和网页有关,而网页也有自己的中文编码系统,所以JSP处理中文要比纯Java的类文件更为麻烦。本文的测试数据库是MySQL3.2,数据库连接驱动是用org.gjt.mm.mysql.Driver,这里主要讨论UTF-8和GBK的显示( GB2312是GBK的一个子集,Java中可以使用GBK来代替GB系列)。我们先来研究JSP中字体编码问题, 下面第一到第六点是针对JSP的(因为从数据库里读出中文数据与写入中文数据有所区别,咱们分别说明,前三点是从读取数据库到显示在网页,后三点是从网页输入数据到存入数据库),第七到第九点针对纯Java的类文件。 以下rs表示ResultSet的一个实例,是执行Select语句之后产生的数据集。

一、数据库连接方式使用UTF-8

在连接数据库的驱动后面加上这句参数useUnicode=true&characterEncoding=

UTF-8,例如jdbc:mysql://localhost/DBVF?autoReconnect=true&useUnicode=

true&characterEncoding=UTF-8,从数据库里读出中文显示在使用GBK的JSP的网页里,如果数据库里存放的字体编码是UTF-8,在JSP中使用 str=new String(rs.getBytes(1),"UTF-8")或者str=rs.getString(1),可以正确显示中文。如果数据库里存放的是GBK数据,那么JSP中也要使用str=new String(rs.getBytes(1),"GBK")来显示正确的中文。值得注意的是如果页面使用UTF-8,数据库里存放的是UTF-8,也可以用str=new String(rs.getBytes(1),"GBK")正确显示中文。如果网页是UTF-8,而数据库里存放的是GBK,无法直接显示中文,需要2步转换, str=new String(rs.getBytes(1),"GBK"); 再str=new String(str.getBytes("UTF-8"),"GBK"),才可以正确显示中文。

二、数据库连接方式使用GBK

在连接数据库的驱动后面加上这句参数useUnicode=true&characterEncoding=

GBK,例如jdbc:mysql://localhost/DBVF?autoReconnect=true&UseUnicode=true&

characterEncoding=GBK,从数据库里读出中文,显示在使用GBK的JSP的网页里,如果数据库里存放的字体编码是UTF-8,在JSP中一定要使用 str=new String(rs.getBytes(1),"UTF-8"),才正确显示中文。如果数据库里存放的是GBK数据,那么JSP中也要使用str=new String(rs.getBytes(1),"GBK") 或者直接使用str=rs.getString(1),即可显示正确的中文。 如果网页是UTF-8,而数据库里存放的是GBK,只能用str=new String(rs.getString(1).getBytes("UTF-8"),"GBK")的方法来显示中文; 如果网页是UTF-8,而数据库里存放的是UTF-8,可用str=new String(rs.getBytes(1),"GBK") 或者rs.getString(1)方法来显示中文。

三、使用缺省数据库连接方式

连接数据库的驱动后面没有这句参数useUnicode=&characterEncoding=,例如jdbc:mysql://localhost/DBVF?autoReconnect=true,没有参数useUnicode=true&characterEncoding,表示使用默认的ISO-8895-1编码。

1. 从数据库里读出中文,显示在GBK的网页里。如果数据库里存放的字体编码是UTF-8,在JSP网页中一定要使用语句 str=new String(rs.getBytes(1),"UTF-8") 或者str= new String(rs.getString(1).getBytes("ISO-8859-1"),"UTF-8"),才可正确显示中文。如果数据库里存放的是GBK数据,那么JSP中也要使用str=new String(rs.getBytes(1),"GBK")或str=new String(rs.getString(1).getBytes("ISO-8859-1"),"GBK") 显示正确的中文。

2. 如果网页是UTF-8,不能直接正确显示GBK,需要2步转换,str=new String(rs.getBytes(1),"GBK"),再str=new String(str.getBytes("UTF-8"),"GBK") 才可以正确显示中文。如果数据库里存的是UTF-8,直接用str=new String(rs.getBytes(1),"GBK")或者str=new String(rs.getString(1).getBytes("ISO-8859-1"),"GBK")就可以显示中文了。

以上是读取数据库里中文正确显示在网页上,下面三点是如何正确存入数据库。

四、数据库连接方式使用UTF-8编码

JSP中要把网页输入的中文存入数据库,通常有一个提交(Submit)的过程,是用str=request.getParameter("username"),然后执行update或者insert语句来存入数据库。如何赋值给str很重要,而且这里中文输入与网页所使用的字体编码有关。

1、 网页使用UTF-8,使用str= new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8")或者str= new String(request.getParameter("username").getBytes(),"UTF-8"),都可以使得存到数据库里的数据是UTF-8编码。

2. 网页使用GBK,使用str= new String(request.getParameter("username").getBytes(),"GBK"),那么存入数据库的是UTF-8编码。

3. 值得注意的是使用UTF-8的数据库连接方式不能存得GBK。

五、数据库连接方式使用GBK编码

1. 输入使用GBK网页,存到数据库里是GBK的方法: str= new String(request.getParameter("username").getBytes("ISO-8859-1"),"GBK") 或者str= new String(request.getParameter("username").getBytes(),"GBK")。

2. 网页使用GBK,想存入UTF-8到数据库里,要分2步: 先str=new String(request.getParameter("username").getBytes(),"GBK"),再str=new String(str.getBytes("UTF-8"),"GBK")即可。

3. 网页使用UTF-8,而且使用str= new String(request.getParameter("username").getBytes("ISO-8859-1"),"GBK") 或者str= new String(request.getParameter("username").getBytes(),"UTF-8"),那么存到数据库里的数据是UTF-8编码。

4. 网页使用UTF-8,而且使用str= new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8"),那么存到数据库里的数据是GBK编码。

六、数据库连接方式使用缺省,即不使用参数useUnicode和characterEncoding

1. 网页使用GBK,如果使用str= request.getParameter("username")或者str= new String(request.getParameter("username").getBytes()),那么在数据库里的数据是GBK码。网页使用UTF-8 和使用str= request.getParameter("username"),则存入数据库是UTF-8编码。

2. 如果使用str= new String(request.getParameter("username").getBytes("ISO-8859-1")),那么根据网页提供的字体编码而存到数据库里,比如是UTF-8的网页,那么存到数据库中就是UTF-8编码,如果使用GBK网页,那么存到数据库里的字就是GBK编码。

3. 如果使用str= new String(request.getParameter("username").getBytes("UTF-8"),"UTF-8")这一种组合能存到正确的数据外,其他存到数据库里的数据则都是乱码或者错误码。在这个UTF-8组合的特例中,网页使用的是GBK,则存放到数据库里就是GBK,网页使用UTF-8,那么存到数据库里的就是UTF-8。

4. 网页是GBK的要存得UTF-8,一定需要2步: company=new String(request.getParameter("company").getBytes(),"GBK")和company=new String(company.getBytes("UTF-8"))。

5. 网页是UTF-8的,不能存得GBK在数据库里,一句话,改变数据库连接方式不能存得GBK码。

以上所有的都是基于JSP网页和数据库交换数据,下面讨论一下纯JAVA编程下的字体编码转换。

七、数据库连接方式使用UTF-8编码

1. 数据库里的中文是UTF-8,可以转换为GBK,但不能把GBK存入数据库。

2. 数据库是GBK,如果转换为UTF-8,使用content=new String(rs.getBytes(2),"GBK")直接将content存入数据库就可为UTF-8。

八、数据库连接方式使用GBK编码

1. 数据库里的中文是UTF-8,如果转换为GBK,使用content= new String(rs.getString(2).getBytes(),"UTF-8"),再直接使用update或者insert语句插入到数据库,即存得GBK。如果使用content= new String(rs.getString(2).getBytes(),"GBK")或者content= new String(rs.getString(2).getBytes()),再存入数据库即存得还是UTF-8编码。

2. 数据库里的中文是GBK,如果转换为UTF-8,使用content= new String(rs.getString(2).getBytes("UTF-8"))或者content= new String(rs.getString(2).getBytes("UTF-8"),"GBK"),再直接使用update或者insert语句插入到数据库,即存得UTF-8。

3. 如果某个String是GBK,要转换为UTF-8,也是使用content= new String(GBKstr.getBytes("UTF-8"))或者content= new String(GBKstr.getBytes("UTF-8"),"GBK"); 如果某个String是UTF-8,要转换为GBK,应该使用new String(UTFstr.getBytes("GBK"),"UTF-8")。

九、数据库连接方式使用缺省,即不跟参数

1. str2=new String(GBKstr.getBytes("UTF-8"),"ISO-8859-1"),可以将数据库里的GBK编码转换为UTF-8。

2. 读取UTF-8然后存入UTF-8,则用str1=new String(UTFstr.getBytes(),"ISO-8859-1")或者str1=new String(UTFstr.getBytes("GBK"),"ISO-8859-1")。

3. 不能实现数据库里的UTF-8转换为GBK。

如果采用UTF-8的数据库连接方式或者缺省数据连接方式,那么无法将UTF-8转为GBK;而GBK的数据库连接方式可以实现UTF-8和GBK的相互转换。建议大家采用GBK的数据连接方式。

posted @ 2006-12-21 21:44 joeyeezhang 阅读(214) | 评论 (0)编辑 收藏

IBM T60系列安装系统经验
具体安装方法介绍:
Thinkpad T60/X60安装操作系统全攻略

准备工作:安装一个操作系统,准备工作很重要,因为一旦你开始装了,机器就不能再干别的事情了,所以一旦你发现什么没有准备好,那将是非常麻烦的一件事情。

1、bios设置。这一步是针对T60/X60的。开机按f1进入bios,进入configuration,然后在SATA里面将SATA的模式设置成compatibility(兼容模式),默认的是AHCI模式(高级主控接口),这一步很重要,否则安装操作系统时会蓝屏,其中的原因,是因为XP系统安装盘一般不带SATA驱动。然后按f10,回车,退出bios。

2、安装光盘。用一张可以光盘启动的XP安装光盘启动你的电脑(本站随机的恢复光盘里面有一个IBM OEM版的XP 镜像文件,把它刻录成光盘,就是一张可以光盘启动的XP安装盘了),接下来就开始安装了,相对于准备工作,安装倒是轻松很多,经过很多大家熟悉的画面后,XP安装完成。

3、安装系统之后驱动程序的安装还是有点讲究的。最先安装的应该是SATA硬盘的驱动,否则你就只能一直用兼容模式运行了,那不是可惜了sata的传输速度了。先在恢复光盘里的“T60/X60 驱动和软件”目录里,找到Matrix Storage.exe 文件,双击,会解压到C:\drivers\win\imsm目录,然后运行c:\drivers\win\imsm\prepare里面的install.bat文件,完成之后,重启,就可以在bios里面把sata的模式改回ahci了,进入系统之后会提示发现ide控制器,安装驱动时指向c:\drivers\win\imsm\即可。

4、接下来安装其他驱动程序和软件。

一、芯片组驱动。运行恢复光盘里的“T60/X60 驱动和软件”目录里的“Intel芯片组驱动.exe”文件,它会解压到C:\DRIVERS\WIN\INTELINF目录下。到此目录下运行“setup.exe”就可以安装了。

二、显卡驱动。运行恢复光盘里的“T60/X60 驱动和软件”目录里的“T60/X60显卡驱动.exe”文件,它会解压到C:\DRIVERS\WIN\VIDEO目录下。到此目录下运行“setup.exe”就可以安装了。

三、电源管理驱动。运行恢复光盘里的“T60/X60 驱动和软件”目录里的“IBM电源管理.exe”文件,它会解压到C:\DRIVERS\WIN\IBMPM目录下。到此目录下运行“setup.exe”就可以安装了。

四、安全芯片驱动。运行恢复光盘里的“T60/X60 驱动和软件”目录里的“安全芯片.exe”文件,它会解压到C:\DRIVERS\WIN\TPM目录下。到此目录下运行“setup.exe”就可以安装了。

五、HD总线驱动。装驱动第二个难点在于HD总线,这是T60/X60上的一个高端东西,就是高清晰的音频总线。在设备管理器里有个未知设备,把它的驱动程序路径指向恢复光盘里的“T60/X60 驱动和软件”-“HD总线”目录,就可以顺利安装了。只有先安装了HD总线,才能安装声卡和modem驱动,切记!

六、声卡、modem驱动。运行恢复光盘里的“T60/X60 驱动和软件”目录里的“声卡驱动.exe”文件和“modem驱动.exe”文件,它会解压到C:\DRIVERS\WIN\Audio目录下。到此目录下运行“setup.exe”就可以安装了。modem 驱动解压到C:\DRIVERS\HDAMODEM 目录下。

七、网卡、无线网卡驱动。运行恢复光盘里的“T60/X60 驱动和软件”目录里的“网卡驱动.exe”文件和“无线网卡驱动.exe”文件,它会解压到C:\DRIVERS\WIN\ETHERNET 和 WLANINT 目录下。到此目录下运行“setup.exe”就可以安装了。

八、鼠标、触摸板驱动。运行恢复光盘里的“T60/X60 驱动和软件”目录里的“UltraNav.exe”文件(X60 是“Trackpoint.exe文件),它会解压到C:\DRIVERS\W2K\UNAV 和 TPOINT 目录下。到此目录下运行“setup.exe”就可以安装了。

九、指纹识别驱动。运行恢复光盘里的“T60/X60 驱动和软件”目录里的“指纹识别.exe”文件,就可以安装了。

十、蓝牙驱动。运行恢复光盘里的“T60/X60 驱动和软件”目录里的“蓝牙.exe”文件,它会解压到C:\Drivers\WIN\TPBTooth目录下。到此目录下运行“setup.exe”就可以安装了。

IBM的各种工具软件,有些很实用,有些没用,大家各取所需吧。下面一一介绍:

1、Configuration utility--系统实用配置工具,在这里,你可以了解你电脑的方方面面,包括系统信息、操作使用和配置。

2、Hotkey--快捷键及屏幕显示工具。如果你突然发现你按了音量键或者调整屏幕亮度,却没看到屏幕上有显示,安装它就没错了。

3、power manager--察看你的电池信息,调整电源使用方案。

4、APS--硬盘保护工具,保护你的硬盘不受伤害。

5、EasyEject--快速弹出USB 设备的工具,要想使用Fn+F9的功能键,就先安装它。

6、Keyboard Customizer--定制键盘快捷键的工具。

7、systemupdate--要保持你的驱动和软件是最新版本就用它吧,会为你上网搜索最新的驱动和工具软件。

8、Access Connections--让你在不同的网络环境下自由切换,减少烦琐的设置。如果你想使用Fn+F5的快捷键,也要安装它。

9、UltraNav Wizard--小红帽与触摸板的调整工具,安装它,你可以使用Fn+F8的快捷键。

10、Presentation--把电脑输出到投影仪上的调整工具。

11、Productivity--一个介绍怎样使用小黑各种功能的工具。

12、Help Center--帮助中心,有问题就到这里找答案。

13、Message Center--发布关于小黑的最新消息。

14、Away Manager--当你离开电脑的时候,可以用这个工具来设置,让小黑继续按照你的意愿继续工作。

15、Client Security Solution--客户端安装解决方案,可以用它来为文件加密,还有密码管理器功能。提醒大家一定要小心使用,如果因为使用它而导致任何数据及资料损失,本站概不负责!

16、Rescue and Recovery--备份与恢复软件。要使用到IBM的一键恢复功能,一定要先安装它。本人认为,这是一个笨拙、烦琐的东西,不推荐使用。
posted @ 2006-11-30 15:18 joeyeezhang 阅读(652) | 评论 (0)编辑 收藏

11月1日

決定智商的X染色體

據說決定智商的八對基因全部都是位於X染色體上面,然後男生是XY,
 
X是來自母親,
Y是來自父親。
 
所以男生的智商全部都是來自母親的遺傳。 然後女生是XX,所以女生的智商是父親跟母親各有一半影響。
 
然後說,因為女生的智商是父親母親都有影響,所以會有中和的效應。
所以女生智商的分布會呈現自然分布(normal distribution),就是倒鐘狀,中間最多,兩邊較少。

然後男生因為是完全只受一方影響,所以男生智商分布會呈現在偏向在兩個極端。
也就是說,男生天才比較多,但是同時,蠢材之中也是男生特別多。
 
這個故事告訴我們什麼?
 
1、「你要判斷一個男生聰不聰明,看他媽媽就知道了。」
 
2、 然後我們用機率來算:生男孩的機率=1/2,生女孩的機率=1/2。

生男孩的時候,母親對於男孩智商的影響力 = 1。
生女孩的時候,母親對於女孩智商的影響力 = 1/2。
所以說母親跟父親對於下一代智商的影響力(期望值)的比例是:
1*1/2 + 1/2*1/2 : 0*1/2+ 1/2*/12 =0.75:0.25 = 3 : 1 = 母:父
 
所以說, 如果你:
 
1 、是男生,如果你覺得你很笨的話。你千萬要娶一個聰明的女生來。這樣你小孩翻盤的機率還有七成五,人生還是充滿了希望。
 
2、是女生,如果你覺得你很笨的話,糟糕了~因為,你翻人家盤的機率有七成五 .....
 
3 、當你看到一個男生很聰明的時候,則,他父親很聰明的機率是0%(應該說,就算他父親很聰明,也對他是沒有影響的),可是他母親很聰明的機率是100%。

所以說,如果你在考慮要嫁給一個很聰明的男生的時候,你就要小心他媽媽,可能會是一個很會算計的婆婆。
 
反之,當你看到一個男生很笨的時候,沒錯,他通常會很有錢,這是上帝的安排,上帝為了不讓人類滅亡,所以他會讓很笨的人很有錢,
這樣他才能娶到聰明的女生。我們看XX先生的例子就知道了。

總之,當你看到很笨的男生的時候,不要猶豫,嫁給他。
不要覺得你是為了他的錢,你要跟自己說,你是為了要改善人類未來的基因。
以上三個結論為:人類智商理性鐵蛋定律。 -__-!!
posted @ 2006-11-26 22:24 joeyeezhang 阅读(201) | 评论 (0)编辑 收藏

a. 获取执行者
获取用例首先要找出系统的执行者。可以通过用户回答一些问题的答案来识别执行者。以下问题可供参考:
·谁使用系统的主要功能(主要使用者)。
·谁需要系统支持他们的日常工作。
·谁来维护、管理使系统正常工作(辅助使用者)。
·系统需要操纵哪些硬件。
·系统需要与哪些其它系统交互,包含其它计算机系统和其它应用程序。
·对系统产生的结果感兴趣的人或事物。


b. 获取用例
一旦获取了执行者,就可以对每个执行者提出问题以获取用例。
以下问题可供参考:
·执行者要求系统提供哪些功能(执行者需要做什么)?
·执行者需要读、产生、删除、修改或存储的信息有哪些类型。
·必须提醒执行者的系统事件有哪些?或者执行者必须提醒系统的事件有哪些?怎样把这些事件表示成用例中的功能?
·为了完整地描述用例,还需要知道执行者的某些典型功能能否被系统自动实现?
还有一些不针对具体执行者问题(即针对整个系统的问题):
·系统需要何种输入输出?输入从何处来?输出到何处?
·当前运行系统(也许是一些手工操作而不是计算机系统)的主要问题?
需要注意,最后两个问题并不是指没有执行者也可以有用例,只是获取用例时尚不知道执行者是什么。一个用例必须至少与一个执行者关联。还需要注意:不同的设计者对用例的利用程度也不同。例如,Ivar Jacobson说,对一个十人年的项目,他需要二十个用例。而在一个相同规模的项目中,Martin Fowler则用了一百多个用例。我们认为:任何合适的用例都可使用,确定用例的过程是对获取的用例进行提炼和归纳的过程,对一个十人年的项目来说,二十个用例似乎太少,一百多个用例则嫌太多,需要保持二者间的相对均衡。

posted @ 2006-11-15 10:40 joeyeezhang 阅读(148) | 评论 (0)编辑 收藏

毒酒 16:27:31
你谁呀
joeyeezhang 16:30:41
一个喝了毒酒的人
毒酒 16:31:56
晕死
joeyeezhang 16:34:01
要得就是这样的效果,
毒酒 16:34:52
狂晕你哪里
joeyeezhang 16:36:50
我在哈尔滨出差,这边下雪呢,好好玩哦
毒酒 16:37:15

下雪有什么好玩的
我现在都要要饭了没心情
joeyeezhang 16:42:31
有没有要饭的行头,什么要饭碗,打狗棒什么的,这个社会什么都要讲行头,行头不好不行的,要不我借给你,我刚要完饭,正吃着呢
毒酒 16:41:33
是嘛
那你就给省一口给我吃吧
joeyeezhang 16:44:02
晕,你要饭都要到乞丐这里了,你是今古第一人啊
毒酒 16:42:55
呵呵
当然
joeyeezhang 16:45:41
看样你就是传说中要饭的霸主,请问贵姓,是不是姓洪啊
毒酒 16:45:08
NO
 
joeyeezhang 16:48:32
那你姓no,这个姓真牛啊,汉语词典那么厚,就是没有找到这个词,你又是古今第一人啊,佩服佩服,
毒酒 16:47:47

你也很能般
joeyeezhang 16:53:54
也不是那。最辉煌的经历也就是把泰山搬到山东泰安,正在筹划把喜马拉雅上搬到哈尔滨来挡住寒流,所以在这调研呢
毒酒 16:53:00

服了你了
joeyeezhang 16:55:19
这么快就服了,太没有挑战性了
毒酒 16:54:16
因为本小姐我没心情和你挑战
joeyeezhang 16:57:40
敢问no小姐对什么有心情啊,那我先把喜马拉雅山放在中国南边,歇歇脚 正好和你聊聊
posted @ 2006-11-06 17:31 joeyeezhang 阅读(198) | 评论 (0)编辑 收藏

以下的技巧只针对 PL/SQL Developer 6 以上版本,版本 5 只有其中的部分特性。

1, 右键菜单

PL/SQL Developer (下面简称 PLD )中的每一个文本编辑窗口,如 SQL Window Command Window Porgram Window ,右键点击某个对象名称,会弹出一个包含操作对象命令的菜单,我们这里称之为右键菜单。如下图:

对象类型可以是表,视图,同义词,存储过程和函数等。根据对象类型的不同,弹出的菜单也有区别。表和视图有 View, Edit, Rename, Drop, Query data Edit data 等功能。 View Edit 分别是查看和修改表的结构信息,如字段,主键,索引和约束等。 Query data 相当于新打开一个窗口,并执行 select * from 表。 Edit data 相当于新打开一个窗口,并执行 select * from for update 。存储过程和函数有 Test 功能,选中后可以进入调试状态。

有时由于 PLD 识别错误,右键点击对象并不能出来正确的菜单,可以在对象所在的 DDL DML 语句的前面,加上分号,这样 PLD 就能正确的判断出对象的类型

2, Select for Update

有时我们需要把一些数据导入数据库中,如果用 UE Insert 语句,会比较麻烦,而且操作性不强。 PLD SQL Window 可以查询,新增,修改和删除表的内容。查询自不必说,而新增,删除和修改,只需在 select 语句后加入 for update ,对表进行行级锁定,然后点击窗口的锁型图标,即可进入编辑状态。

下面介绍一下如何从 Excel 中提取文本插入到数据库中

我们的 Excel 文件中有三列:

在数据库中建立临时表:

create table t1 (cino varchar2(100), contno varchar2(100), loanno varchar2(100))

然后在 SQL Window 中输入 select t1 for update ,并点击锁型鼠标,进入编辑状态:

用鼠标点击第一行的输入窗口,这时 PLD 会死锁几秒钟,然后可以见到光标在第一行的输入框中闪动,用鼠标把 CINO, CONTNO, LOANNO 选中:

进入 Excel 中,把需要插入数据库的内容选中,然后切换到 PLD ,按 Ctrl + V

点击 ,然后再点击 Commit 按钮,则数据提交到表 t1 中,执行 select * from t1 可以看到内容:

3, PL/SQL Beautifier

PLD 6 以上版本有对 DML 代码格式化的功能。在 SQL Window Program Window 中选中部分代码(如果不选则对整个窗口的代码操作),在菜单中选 Edit à PL/SQL Beautifier ,得到格式化的代码。对于非法的 DML 语句或 DDL 语句, PLD 将会在下方状态栏提示 PL/SQL Beautifier could not parse text

在缺省的状态下, PLD 会把 DML 语句的每一个字段都排在单独的一行,这样不方便查看。在菜单中选 Edit à PL/SQL Beautifier Options ,进入 Preferences 窗口,选择 Edit ,进入配置文件编辑界面:

在标签栏选 DML ,在窗口中部的 Select, Insert Update 组框中把 Fit 选中,然后点击 Save ,把配置文件保存到 PLD 的安装目录下,点击 Close 关闭。在 Rules file 中输入配置文件所在位置,点击 OK ,完成配置文件切换。这时再对代码进行格式化,就可以使每一个字段尽可能的在一行上了。

4, TNS Names

菜单 Help à Support Info à TNS Names ,可以查看 Oracle tnsnames.ora

5, Copy to Excel

SQL Window 中执行 Select 语句,在结果出来以后,右键点击下面的数据区,选择 Copy to Excel ,可以把数据区的记录原样拷贝到 Excel 中。但有两点需要注意:一, field 中不能以 = 开始,否则 Excel 会误认为是函数;二,数字不要超过 17 位,否则后面的位数将会置为 0 ,但可以通过在数字前加‘来使 Excel 认为该 field 是文本,同时对于数据库中 Numbe 类型的字段,最好用 to_char 输出,不然可能会显示不正常

爱卖艺

posted @ 2006-11-05 22:41 joeyeezhang 阅读(898) | 评论 (0)编辑 收藏

1.1 PL/SQL 简介

   PL/SQL是ORACLE的过程化语言,包括一整套的数据类型、条件结构、循环结构和异常处理结构,PL/SQL可以执行SQL语句,SQL语句中也可以使用PL/SQL函数。

 

1.2 创建PL/SQL程序块

DECLARE

BEGIN

EXCEPTION
END;

 

1.3 PL/SQL数据类型

名称

类型

说明

NUMBER

数字型

能存放整数值和实数值,并且可以定义精度和取值范围

BINARY_INTEGER

数字型

可存储带符号整数,为整数计算优化性能

DEC

数字型

NUMBER

的子类型,小数

DOUBLE PRECISION

数字型

NUMBER

的子类型,高精度实数

INTEGER

数字型

NUMBER

的子类型,整数

INT

数字型

NUMBER

的子类型,整数

NUMERIC

数字型

NUMBER

的子类型,与 NUMBER 等价

REAL

数字型

NUMBER

的子类型,与 NUMBER 等价

SMALLINT

数字型

NUMBER

的子类型,取值范围比 INTEGER

VARCHAR2

字符型

存放可变长字符串,有最大长度

CHAR

字符型

定长字符串

LONG

字符型

变长字符串,最大长度可达32,767

DATE

日期型

以数据库相同的格式存放日期值

BOOLEAN

布尔型

TRUE OR FALSE

ROWID

ROWID

存放数据库的行号

例子:
DECLARE
    ORDER_NO NUMBER(3);
    CUST_NAME VARCHAR2(20);
    ORDER_DATE DATE;
    EMP_NO INTEGER:=25;
    PI CONSTANT NUMBER:=3.1416;
BEGIN
  NULL;
END;

 

1.4 处理PL/SQL的异常

 

1.4.1 PL/SQL 的异常

例如:
DECLARE
    X NUMBER;
BEGIN
    X:= 'yyyy';--Error Here
EXCEPTION   WHEN VALUE_ERROR THEN
    DBMS_OUTPUT.PUT_LINE('EXCEPTION HANDED');
END;

实现技术:
EXCEPTION WHEN first_exception THEN

WHEN second_exception THEN

WHEN OTHERS THEN
/*THERS
异常处理器必须排在最后,它处理所有没有明确列出的异常。
*/

END;

1.4.2 预定义异常

异常名称

ORACLE

错误

说明

CURSOR_ALREADY_OPEN

ORA-6511

试图打开一个已打开的光标

DUP_VAL_ON_INDEX

ORA-0001

试图破坏一个唯一性限制

INVALID_CURSOR

ORA-1001

试图使用一个无效的光标

INVALID_NUMBER

ORA-1722

试图对非数字值进行数字操作

LOGIN_DENIED

ORA-1017

无效的用户名或者口令

NO_DATA_FOUND

ORA-1403

查询未找到数据

NOT_LOGGED_ON

ORA-1012

还未连接就试图数据库操作

PROGRAM_ERROR

ORA-6501

内部错误

ROWTYPE_MISMATCH

ORA-6504

主变量和光标的类型不兼容

STORAGE_ERROR

ORA-6500

内部错误

TIMEOUT_ON_RESOURCE

ORA-0051

发生超时

TOO_MANY_ROWS

ORA-1422

SELECT INTD

命令返回的多行

TRANSACTION_BACKED_OUT

ORA-006

由于死锁提交被退回

VALUE_ERROR

ORA-6502

转换或者裁剪错误

ZERO_DIVIDE

ORA-1476

试图被零除

 

1.4.3 自定义异常处理

DECLARE
    BAD_ROWID EXCEPTION;
    X ROWID;
PRAGMA EXCEPTION_INIT(BAD_ROWID,-01445);
BEGIN
    SELECT ROWID INTO X FROM TAB
    WHERE ROWNUM=1;
EXCEPTION WHEN BAD_ROWID THEN
    DBMS_OUTPUT.PUT_LINE('CANNOT QUERY ROWID FROM THIS VIEW');
END;

    注意: -01445 因为 PRAGMA EXCEPTION_INIT 命令把这个变量 (-01455)
连接到
这个
ORACLE
错误,该语句的语法如下:
   
PRAGMA EXCEPTION_INIT(exception_name, error_number);
其中 error_number 是负数,因为错误号被认为负数,当定义错误时记住使用负号

1.4.4 自定义异常

    异常不一定必须是 oracle 返回的系统错误,用户可以在自己的应用程序中创
建可触发及可处理的自定义异常
DECLARE
    SALARY_CODE VARCHAR2(1);
    INVALID_SALARY_CODE EXCEPTION;
BEGIN
    SALARY_CODE:='X';
    IF SALARY_CODE NOT IN('A', 'B', 'C') THEN
    RAISE INVALID_SALARY_CODE;
    END IF;
EXCEPTION WHEN INVALID_SALARY_CODE THEN
    DBMS_OUTPUT.PUT_LINE('INVALID SALARY CODE');
END;

 

1.5 PL/SQL 中单条记录的查询

    在PL/SQL内,有时在没有定义显式光标的情况下需要查询单条记录,并把记录的数据赋给变量。
DECLARE
    ln_dno NUMBER;
    lvs_dname VARCHAR2(40);
BEGIN
    SELECT DEPT_NO,DEPT_NAME
        INTO ln_dno,lvs_dname
    FROM dept
    WHERE DEPT_NO=1;
    DBMS_OUTPUT.PUT_LINE(TO_CHAR(ln_dno)||'.'||lvs_dname);
EXCEPTION WHEN NO_DATA_FOUND THEN
    DBMS_OUTPUT.PUT_LINE('NO DATA_FOUND')
;
    WHEN TOO_MANY_ROWS THEN
    DBMS_OUTPUT.PUT_LINE('TOO_MANY_ROWS');
END;

 

1.6 用光标查询多条记录

      光标(CURSOR)是指向一个称为上下文相关区的区域的指针,这个区域在服务器的处理过程全局区(PGA)内,当服务器上执行了一个查询后,查询返回的记录集存放在上下文相关区,通过光标上的操作可以把这些记录检索到客户端的应用程序。

 

1.6.1 使用光标的基本方法

DECLARE
    CURSOR C1 IS SELECT VIEW_NAME FROM ALL_VIEWS
        WHERE ROWNUM<=10
        ORDER BY VIEW_NAME;
    VNAME VARCHAR2(40);
BEGIN
    OPEN C1;
    FETCH C1 INTO VNAME;
    WHILE C1%FOUND LOOP
        DBMS_OUTPUT.PUT_LINE(TO_CHAR(C1%ROWCOUNT)||' '||VNAME);
        FETCH C1 INTO VNAME;
    END LOOP;
END;

属性

含量

%FOUND

布尔型属性,当最近一次该记录时成功返回,则值为TRUE

%NOTFOUND

布尔型属性,它的值总与%FOUND属性的值相反

%ISOPEN

布尔型属性,当光标是打开时返回TRUE

%ROWCOUNT

数字型属性,返回已从光标中读取的记录数

 

1.6.2 使用光标 FOR 循环

DECLARE
    CURSOR C1 IS
    SELECT VIEW_NAME
        FROM ALL_VIEWS
        WHERE ROWNUM<=10
        ORDER BY VIEW_NAME;
BEGIN
    FOR I IN C1 LOOP
        DBMS_OUTPUT.PUT_LINE(I.VIEW_NAME);
    END LOOP;
END LOOP;
EXCEPTION WHEN OTHERS THEN
    NULL;
END;

 

1.6.3 带参数的光标

DECLARE
    CURSOR C1(VIEW_PATTERN VARCHAR2) IS
        SELECT VIEW_NAME
        FROM ALL_VIEWS
        WHERE VIEW_NAME LIKE VIEW_PATTERN||'%' AND
        ROWNUM<=10
        ORDER BY VIEW_NAME;
    VNAME VARCHAR2(40);
BEGIN
    FOR I IN C1('USER_AR') LOOP
        DBMS_OUTPUT.PUT_LINE(I.VIEW_NAME);
    END LOOP;
    DBMS_OUTPUT.PUT_LINE();
    FOR I IN C1('USER') LOOP
        DBMS_OUTPUT.PUT_LINE(I.VIEW_NAME);
    END LOOP;
EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('AAA');
END;

 

1.7 创建代表数据库记录和列的变量

变量名 基表名.列名 %TYPE
DECLARE
    D_NO DEPT.DEPT_NO%TYPE;
    D_NAME DEPT.DEPT_NAME%TYPE;
BEGIN
    SELECT DEPT_NO,DEPT_NAME INTO D_NO,D_NAME
    FROM DEPT;
    DBMS_OUTPUT.PUT_LINE(TO_CHAR(D_NO));
EXCEPTION WHEN NO_DATA_FOUND THEN
    NULL;
END;

变量名 基表名
%ROWTYPE
DECLARE
    D VEQU12%ROWTYPE;
BEGIN
    SELECT ASSET12ID,ASSET12NAME
        INTO D.ASSET12ID, D.ASSET12NAME
        FROM VEQU12;
    DBMS_OUTPUT.PUT_LINE(D.ASSET12ID);
EXCEPTION
WHEN NO_DATA_FOUND THEN
    NULL;
WHEN TOO_MANY_ROWS THEN
    DBMS_OUTPUT.PUT_LINE('TOO_MANY_ROWS');
END;
说明:
    当用户要创建一个变量来表示一个基表列或者要创建多个变量来代表一整条记录时,可以实际使用%TYPE属性和%ROWTYPE属性,使用%TYPE属性和%ROWTYPE属性可以保证当基表的结构或者其中某列的数据类型改变了时,用户的PL/SQL代码仍可正常工作

 

1.8 怎样用PL/SQL表实现数组功能

    PL/SQL表与其他过程化语言(如C语言)的一维数组类似。实现PL/SQL表需要创建一个数据类型并另外进行变量说明。
    Type <类型名> Is
    Table Of <数据类型>
    Index by Binary_Integer;
以下为一个例子:
Declare
    Type Array_type is
        Table Of Number
        Index by Binary_Integer;
    My_Array Array_type;
Begin
    For I In 1..10 Loop
        My_Array(I) := I*2;
    End Loop;
    For I In 1..10 Loop
        Dbms_Output.Put_line(To_char(My_Array(I)));
    End Loop;
End;

posted @ 2006-11-05 22:29 joeyeezhang 阅读(346) | 评论 (0)编辑 收藏

目录

简介
安装说明
使用 Java Web Start 软件
发行版说明

简介

JavaTM Web Start 是基于 Java 技术的应用程序的一种部署解决方案。它是连接计算机和 Internet 的便捷通道,允许用户在完全脱离 Web 的情况下运行和管理应用程序。Java Web Start 提供一次单击激活应用程序的简易方法,并保证始终运行应用程序的最新版本,从而可避免复杂的安装或升级过程。

传统情况下,通过 Web 发布软件需要用户在 Web 上查找、下载,而后在系统中存放并执行安装程序。执行安装程序后,将提示指定安装路径和安装选项,例如完全、典型或最小安装。这是一项耗时而又复杂的任务,并且在安装软件的每个新版本时都必须重复进行。

相反,通过 Web 部署的应用程序,例如您喜爱的基于 HTML 的电子邮件客户软件和日历、拍卖站点等等,都非常容易安装和使用。Web 浏览器使整个过程自动完成。没有复杂的下载、安装和配置过程,并且确保您始终使用最新版本。

Java Web Start 技术可为全功能应用程序提供与如上所述的 Web 浏览器为 HTML 应用程序提供的相同的好处。Java Web Start 技术是一种面向 Web 的应用程序部署解决方案。使用全功能应用程序替代基于 HTML 的客户软件具有多种好处:

  • 高度交互的用户界面,可与传统应用程序(如文字处理和电子表格软件)相媲美。
  • 较低的带宽需求。应用程序无须在每次单击时都与 Web 服务器进行连接,它可以缓存已经下载的信息。这样,它可以在低速连接上实现更好的交互性。
  • 支持脱机使用。
当然,在第一次使用时仍得下载应用程序。基于 HTML 的应用程序因而具有首次激活的开销。典型情况下,打开一个 Web 页面需要几秒钟。基于 Java TM 技术的应用程序通过典型的调制解调器连接下载将需要几分钟。Java Web Start 将下载的所有文件缓存在本地计算机上。这样,尽管应用程序的首次激活开销高于 HTML 页面,但此后便可在瞬间完成应用程序的启动,因为所需的全部资源都可在本地获得。

每次启动时,Java Web Start 将检查 Web 服务器是否有应用程序的更新版本,如果有,则自动将其下载并启动。这样,应用程序将自动更新。没有复杂的升级过程。

安全性

Java Web Start 构建于 Java 2 平台之上,该平台提供完善的安全体系结构。在缺省情况下,通过 Java Web Start 启动的应用程序将在受控的环境(“沙箱”)中运行,只能对文件和网络进行有限的访问。因此,通过 Java Web Start 启动应用程序可保持系统的安全性和完整性。

应用程序可请求对系统进行无限制访问。这种情况下,Java Web Start 将在应用程序第一次启动时显示安全警告对话框。安全警告将显示开发应用程序的供应商的有关信息。如果选择信任供应商,将启动应用程序。应用程序的来源信息取决于数字代码签名。

安装说明

有关此发行版的安装说明和系统要求,请参见安装指南

使用 Java Web Start 软件

Java Web Start 使您可以直接通过 Web 启动基于 Java 技术的应用程序。应用程序可以通过以下三种方式启动:
  • 通过单击链接从 Web 浏览器启动。
  • 从 Java Web Start 的内置“应用程序管理器”启动,管理器将跟踪最近使用的应用程序,并提供对喜好应用程序的快速访问。
  • 从桌面图标或“开始”菜单(仅适用于 Microsoft Windows)启动。
无论使用何种方式,每次启动应用程序以检查是否有应用程序的更新版本时,Java Web Start 都将重新连接到 Web 服务器。

从 Web 浏览器启动

在 Java Web Start 的演示页上 (http://java.sun.com/products/javawebstart/demos.html),提供了到许多应用程序的链接,可以通过鼠标单击来启动这些应用程序。请尝试单击启动按钮来启动不同的应用程序。Web 浏览器将启动 Java Web Start,它将下载、缓存并执行指定的应用程序。您将注意到第二次启动应用程序时速度明显加快,因为它已在本地存在而无须重新下载。

页面上的大部分演示程序均可直接下载并执行,无须用户干预。这些应用程序在受限环境中运行,不能访问本地磁盘和网络,并且可以保证它们不会在计算机上安装任何病毒。

某些演示程序需要额外的权限,例如访问本地硬盘。对于这些应用程序,将弹出安全对话框,根据代码的数字签名显示有关应用程序的来源信息。应用程序只有在您决定信任供应商才将运行。

这的确就是使用 Java Web Start 的全部需求,但是它是如何工作的?启动应用程序的 HTML 链接实际上就是标准的 HTML 链接。但是,它不是指向其他 Web 页,而是链接到称作 JNLP 文件的特殊配置文件。Web 浏览器检查文件的扩展名和/或 MIME 类型,确定它属于 Java Web Start。然后以下载的 JNLP 文件为参数启动 Java Web Start。Java Web Start 按照 JNLP 文件的指示进行下载、缓存和运行应用程序。

从内置“应用程序管理器”启动

“应用程序管理器”为 Java Web Start 产品的内置部分。它使您可以快速简便地启动曾经通过 Java Web Start 启动的应用程序。管理器由“历史”菜单和“开始/程序”菜单组合而成,为通过 Web 部署的基于 Java 技术的应用程序提供相应的功能。还可通过“应用程序管理器”链接到应用程序的主页,以查看其附加信息。

您可以双击应用程序图标或单击启动按钮从“应用程序管理器”启动应用程序。

“应用程序管理器”另一个重要功能是“首选设置”对话框,该对话框使您可以查看并修改 Java Web Start 使用的设置。例如,它包括使您可以进行下列设置的选项卡:

  • 指定 HTTP 代理(或告诉 Java Web Start 使用缺省的浏览器设置)。
  • 清除已下载的应用程序缓存。
  • 指定 Java Runtime Environment 不同版本的位置。
  • 指定是否显示 Java 控制台。
  • 查看根安全证书集合。
“应用程序管理器”可通过单击桌面上的 Java Web Start 图标或 Microsoft Windows“开始”菜单中的图标启动。在 SolarisTM 操作环境及 Linux 上,通过调用 Java Web Start 安装目录中的 javaws 命令启动。也可从 Web 浏览器启动“应用程序管理器”;有关示例,请参阅演示页 (http://java.sun.com/products/javawebstart/demos.html)。

从桌面图标或“开始”菜单(仅适用于 Microsoft Windows)启动

Java Web Start 技术可在 Microsoft Windows 桌面和“开始”菜单中自动创建快捷方式,供通过 Web 部署的基于 Java 技术的应用程序使用。在缺省情况下,如果应该创建快捷方式,Java Web Start 将在第二次启动应用程序时提示。该参数可通过“首选设置”面板更改。

快捷方式还可以通过“应用程序管理器”使用应用程序/创建快捷方式应用程序/删除快捷方式菜单项添加和删除。

在代理服务器/防火墙后面使用 Java Web Start 软件

Java Web Start 软件必须用正确的代理设置配置以启动来自防火墙之外的应用程序。Java Web Start 软件将自动尝试检测系统缺省浏览器(Microsoft Windows 上为 Internet Explorer 或 NetscapeTM 浏览器,Solaris 操作环境及 Linux 上为 Netscape 浏览器)的代理设置。Java Web Start 技术支持大多数 Web 代理自动配置脚本。它几乎可检测所有环境中的代理设置。

如果无法自动检测到代理设置,则会在首次使用 Java Web Start 时,提示您指定代理设置。Java Web Start 还将提示输入访问身份验证代理服务器所需的用户名和口令。该用户名和口令将存储为 Java Web Start 的当前入口信息。但是,在调用新的 Java 虚拟机时,如果访问一个安全 Web 站点将提示输入用户名和口令,因为该信息随 Java 虚拟机实例存储。

也可以使用 Java Web Start“首选设置”面板查看或编辑代理配置。通过单击 (Microsoft Windows) 桌面上的图标或在 Java Web Start 安装目录(Solaris 操作环境及 Linux)下键入 ./javaws 命令启动“应用程序管理器”,然后选择“编辑/首选设置”。如果处于通过代理服务器访问 Web 的环境中,建议使用 Java Web Start 首选设置面板检查是否设置正确。

发行版说明

有关对此发行版的 Java Web Start 软件所做的错误修复和增强列表,请参见发行版说明
posted @ 2006-11-04 22:43 joeyeezhang 阅读(265) | 评论 (0)编辑 收藏

仅列出标题
共7页: 上一页 1 2 3 4 5 6 7 下一页