(通信与信息系统专业论文)天湖tjworm实时中文搜索引擎的研制与开发.pdf_第1页
(通信与信息系统专业论文)天湖tjworm实时中文搜索引擎的研制与开发.pdf_第2页
(通信与信息系统专业论文)天湖tjworm实时中文搜索引擎的研制与开发.pdf_第3页
(通信与信息系统专业论文)天湖tjworm实时中文搜索引擎的研制与开发.pdf_第4页
(通信与信息系统专业论文)天湖tjworm实时中文搜索引擎的研制与开发.pdf_第5页
已阅读5页,还剩49页未读 继续免费阅读

(通信与信息系统专业论文)天湖tjworm实时中文搜索引擎的研制与开发.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 t j w o r m 是针对本市的信息发展开发的实时中文信息搜索引擎。开发工具是s u n i d k li 5 ,后台数据库为o r a c l ee n t e r p r i s es e r v e r8 0 4 ,t j w o r m 是天津市信息交互网中 炙信息导航的重要组成部分。 i n t e r n e t 上的搜索引擎非常之多,竞争也是十分激烈的。优秀的搜索引擎常以其信 息全面、速度快著称,但是它们中的绝大部分实际上是本地数据库查找,即将数据库中 与关键字匹配的记录取出以h t 札的形式发布给用户,这些搜索引擎后期维护的工作量是 菲常大的,需要不断更新数据库中的信息;两对于站点地址的迁移、变更,热门站点的 主页信息更新速度快等问题,某些搜索站点则显得有些措手不及,更有少数站点购买的 是现成的数据库,库中的信息比较旧,远不能适应信息的发展。随着i n t e r n e t 信息时代 的到来,能否以不变应万变,尽可能快地使用户得到当前i n t e r n e t 上发布的最新信息? 针对这一实际状况,作者对实时性的搜索方案进行了一点尝试性的探索。当然,由于时 间短、中文处理的特殊性和作者的水平所限,本系统的综合性能还无法与“中文雅虎” 、 等优秀的搜索引擎相比。系统的功能也是有待于进一步的修改和提高的。) 本系统在开发过程中,创新地使用了n e t s c a p ec o m m u n i c a t i o n 公司( 现己被a o l 收 购) 的l i v e c o n n e c t ir l 的技术,对c g i 以外的解决方案进行了尝试。 另外,本文对在搜索引擎制作中的j a v a 的汉字的传输与处理、安全机制、网络机器 人搜索原理与机制、j d b c 接1 3 等问题进行了较为详细的阐述。在本文最后,还就本系统 向ls e r v e r 后台数据库移植进行了讨论。 关键字:l i v e c o n n e c t i o n 安全机制汉字处理网络机器人 ! 坠! 竺!一 a b s t r a c t t j w o r mi sas e a r c he n g i n ef o rr e a l t i m ec h i n e s ei n f o r m a t i o n f o c u s e do nt h e c h i n e s ei n f o r m a t i o nd e v e l o p m e n to ft i a n j i nc i ty c h i n at h ed e v e l o p i n gt o o li ss u n j d k15u n d e ro r a c l ee n t e r p r i s es e r v e r804 t j w o r mp l a y sa ni m p o r tr o l ei nt h e c h i n e s ei n f o r m a t i o nn a v i g a t o rs y s t e mo ft i a n j i nc i t y t h e r eh a v ee x i s t e dq u i t eal o to fs e a r c he n g i n e so nt h ei n t e r n e ta n dt h e c o m p e t i t i o ni s s e v e r e t h ee x c e l l e n ts e a r c h e n g i n e s a r ew e l lk n o w nf o rt h e c o m p l e t e n e s so f i n f o r m a t i o na n df a s ts p e e dh o w e v e r , m o s to f t h e m c a no n l yu s e dt o r e t r i e v et h el o c a ld a t a b a s e , j et oo b t a i nf r o mt h er e c o r d sm a t c h e dw i t hk e y w o r d si n t h ed a t a b a s ea n di s s u et ou s e r si nt h ef o r m o fh t m 吐t h ea m o u n to fa f t e r m a i n t e n a n c eo ft h ee n g i n e si s v e r yl a r g ea n dt h ei n f o r m a t i o n i st oh er e n e w e d c o n s t a n t l ys o m eo ft h e ma r eu n a b l et o d e a lw i t hs u c hp r o b l e m sa st r a n s i t i o n sa n d c h a n g e so fi pa d d r e s s e s ,f a s tc h a n g eo ft h ew e bi n f o r m a t i o n ,e t c e v e ns o m ep o t s p u r c h a s e ds o m ee x i s t i n gd a t a b a s e ,w h i c hi sn o tu pt od a t ea n dn o tk e e p i n gu pw i t ht h e d e v e l o p m t n to fi n f o r m a t i o nw i t ht h ei n f o r m a t i o na g eo fi n t e m e t ,i si tp o s s i b l et o o b t a i nt h ei n f o r m a t i o ni s s u e do nt h ei n t e r n e ta sq u i c ka sp o s s i b l e ? a st ot h ef a c t s ,t h e a u t h o rh a sm a d e s o m ee 筋r t so nr e a l t i m er e t r i e b a is c h e m e s i nt h ep e r i o do ft h ed e v e l o p m e n t ,s o m ei n n o v a t i o n sh a v eb e e nm a d eo n l i v e c o n n e c t i o nt e c h n o l o g yo f n e t s c a p ec o m m u n i c a t i o nc o r p o r a t i o na n dh a v em a d e s o m et r i a l so nt h es o l u t i o n sb e s i d e sc g i i nt h ea d d i t i o n ,t h ep a p e rg i v e sam o r ec o m p r e h e n s i v ea c c o u n to ft r a n s m i s s i o n s a n dt r e a t m e n to fc h i n e s ec h a r a c t e r sb yj a v a ,s e c u r i t yp r o b l e m s ,r o b o t ss e a r c he n g i n e , j d b ci n t e r f a c e t h ee n do ft h ep a p e rm a k e sad i s c u s s i o no v e rt h e t r a n s p l a n t a t i o no f t h es y s t e mt os q ls e r v e r k e y w o r d s :l i v e c o n n e c t i o n ,s e e u r i t ye n g i n e ,c h i n e s ec h a r a c t e r st r e a t m e n t , r o b o t ( o rw o r m ,s p i d e r ) 墨二童三堡竺墨一 _ - _ _ _ - _ 一 第一章工程背景 1 0 1i n t e r n e t 基本概念和发展现状 i n t e r n e t ,音译“因特网”,是以t c p i p 为基本协议族的互联网络,其前 身为1 9 6 9 年美国陆军总署出于军事目的建立起的名为a r p a n e t 的网络,主要目 的是在战争期间,使美国的通讯仍能保持一定的作战能力。后来,随着经济的 发展,美国的各大高校、各大公司和企业也相继加入这一网络,乃至发展到世 界范围,i n t e r n e t 也由原来的军事职能转向了民用。到了9 0 年代以后,尤其 是1 9 9 3 年第个网络浏览器m o s a i c 产生,引起了世界信息时代的变革。网上 一种名为w w w ( w o r l dw i d ew e b ) 的服务异军突起,引入了多媒体技术,并加 入了i n t e r n e t 上其它多种服务的技术和功能,i n t e r n e t 从而迅速发展起来, 并很快成为信息传播的有力手段。i n t e r n e t 已经成为世界上最大的资源库。 w w w 服务的基本协议一h t t p ( h y p e rt e x tt r a n s f e rp r o t o c 0 1 ) ,超文本传输 协议,是面向分布式和协同式超媒体信息系统的应用层协议,是一个请求响 应协议,其定义的事务处理,主要由以下几个步骤组成: 建立从客户到服务器的连接 客户传送请求信息到服务器 服务器向客户传送响应信息 客户与服务器断开连接 h t t p 具有简单又高效处理大量请求的特点,h t t p 允许传送任意类型的数据 对象,建立在t c p i p 连接上,缺省端口为8 0 。 实际上,h t t p 可以建立在i n t e r n e t 的其它任何协议之上,也可在其它网络 实现,h t t p 只要求可靠的传输。 h t t p 版本是向下兼容的。例如:h t t p1 1 对只支持1 o 的服务器,仍然按 照h t t p1 0 工作。 w e b 浏览器和h t t p 服务器的简单工作流程如下:w e b 浏览器向h t t p 服务器 发送请求,h t t p 解析该请求。并根据请求类型决定处理方式,如果请求是一个 非h t t p 服务,则该请求被归并到适当的服务( 资源) 类型,如果请求的是h t t p 服务,h t t p 服务器首先对所请求的文件进行定位,然后根据文件类型,决定处 理方式。如何处理不同类型的文件,由服务器维护人员在进行系统配置决定。 当h t t p 服务器识别到用户请求是一个可执行程序,如:一个纯的j a v a 程序、 蔓二皇三竖堕墨 一 l i 。e c o n n e c t i o n 接口技术、或是一个c g i 程序时,它将调用该程序并运行之。 而如果h t t p 服务器给出的文件类型浏览器不能够处理,则以文本文件对待并返 回给用户。 1 0 2 国内其它中文信息查询系统的建设情况 随着网上资源库的发展,在世界各地各大网站出现了许多搜索引擎,在国 内,一些中文信息资源网站( 如:中文雅虎、北大天网等) 相继开通运营。在 各省市的主要页面,在政府、邮电、高校、各大公司的代表网页上基本上都有 自己的搜索系统。 中文引擎出现比较晚,汉字处理复杂( 汉字的双字节结构在流传输时需要 进行编码处理) ,加之后期维护的工作量大,这诸多方面的原因使得目前的中文 引擎还无法尽善尽美。 搜索引擎的类型是多种多样的,其规模和覆盖的范围各相迥异。但从原理 上讲,基本上都是依据r o b o t ( 网络机器人) 来实现对用户所需关键字的查找 功能的。 同时,绝大部分中英文引擎为本地数据库查询,当用户输入关键字后,系 统从本地数据库提取符合条件的数据,提交给用户,而并非即时信息的搜索。 在这其中,有些引擎的维护工作做得很好,r o b o t 可以在闲暇的时间段内到全 球网站搜索新发布的信息,存在本地库内,以便在将来用户需要时向用户发布, 而有些引擎则是购买的市面上出售的现成数据库,在一定时期内,数据库内容 相对不变,这在信息飞速发展的今天,是难以适应的。 从开发的思路和手段来讲,此类搜索引擎是多样化的。目前,大多以c g i ( c o m m o ng a t e w a yi n t e r f a c e ) 为编程手段,编写c g i 程序可采用的开发工具 很多,如c 语言、p e r l 、s h e l l 都可以做c g i 程序;另外,利用j a v aj d b c 也 是一种有效的手段;应用数据库自带的开发工具直接写数据库语言也是非常好 的解决方案。一个好的搜索引擎,往往是多种工具联合使用的结果。本系统使 用了 d b c 、l i v e c o n n e c t i o n 等多种技术,在本文的后续部分中还有详细阐述。 下面就一些相关问题进一步地阐述。 ( 一) 、两种重要的通用搜索机制: l 、独立引擎:分为两类,一类是由网络机器人自动搜索新文档,自动建索 引,索引基于w e b 机器人;另外一种是由人工来完成新文档的增加及分 类,索引基于类别和模板。前者如a 1 t a v i s t a 、w e b c r a w l e r 、 n f o s e e k 、 l y c o s 等;后者如a l i w e b 、y a h o o 、i n t e r c a t 等。 2 、元搜索引擎:所谓的“元搜索引擎”是指借助其它的导航系统的查询程 2 第一章工程背景 序,代替此引擎进行运转以满足用户的需要。它建立在其它多个独立搜 索引擎的索引之上,自身不查询,借助其他搜索引擎进行查询,如:m e l a cr i t w l e r 、i 叫i n f o m t r k e ts e r v i c e 等。 本系统是搜索实时信息的中文搜索引擎,考虑到用户对其它好的搜索引 擎的需求,并考虑到本系统在某些方面无法满足用户( 如查询速度和搜索 广度等问题) ,将“元搜索”功能也加入了本系统,除使用实时中文搜索功 能外,也可由用户自行选择其它引擎进行查询。本系统主页面的“广义搜 索”即是如此。 ( 二) 、搜索引擎评价指标: 评价搜索引擎一般有以下指标: l 、被索引文档数量( s i z e ) 。引擎索引的文档的数量的大小不仅仅由引擎的 质量好坏决定,而且,由于机器人一般只能发现和搜集被其它己知文档 至少引用过一次的文档,因此,页面中的超级链接对信息索引极为重要, 如果有一个好的索引页面,则可以使r o b o t 在很短时间内遍历所有的相 关页面。这样,既提高了系统的效率,又扩大了引擎的搜索范围。 目前,世界上尚没有一个统一的测算标准; 2 、覆盖面( c o v e r a g e ) 。包括地理范围覆盖面和关键字覆盖面; 3 、更新频率( a c t u a l i s a t i o n ) 。包括对同一服务器的再检查、再索引和更 新旧数据的索引; 4 、文档获取策略( h a r v e s t i n g ) 。包括广度优先和深度优先两种方法,前 者可能获取的覆盖面更大些,而后者则着重在少数服务器中获取更深、 更细、更为专业的信息。r o b o t 搜索的深度和广度之间存在一个平衡关 系,它将决定数据库的搜索内容: 5 、检索数据( r e t r i e v a l ) 的算法平衡。部分词匹配、逻辑关系操作、词 组匹配、近似匹配、加权匹配等功能所有都实现是不大现实的,提取出 最贴近的数据结果是用户最为关心的。因此,实现各种算法的平衡是开 发者需要充分考虑到的问题; 6 、用户界面( u s e ri n t e r f a c e ) 。用户界面要力求简洁、实用,便于用户 使用。如:可以通过空格连接词语来实现词的逻辑“与”关系:查找h t m l 页面主题并将其发布给用户等。 1 0 3 天津市信息交互网的组织状况与本系统在交互网中地位 天津信息港工程是天津信息化建设的标志性工程,是一项跨世纪的信息化 建设项目。其主要任务是建设两个网、十一个信息应用系统和九类信息资源库, 笙二童三堡翌墨一 简称“2 1 1 9 ,工程。r 两个网”指天津公共通信网和天津信息交互网:“十一个 系统,指经济信息系统、金融电子化系统、对外贸易信息系统、商业自动化与 增值网系统、税收征管信息系统、政务信息系统、科研教育信息系统、城市建 设信息系统、医疗卫生信息系统、社会保险信息系统及社会公共信息服务系统: “九类信息资源库”指经济信息库、产业信息库、商业信息库、金融信息库、 城市建设信息库、科研教育信息库、政策及法规信息库、人才信息库及社会服 务信息库。 天津市信息交互网是天津市信息港的重要组成部分,是天津信息港工程的 骨干项目。它的主要目标是将天津邮电( c h i n a n e t ) 、科研教育网( c e r n e t ,在 这里,主要指天津大学、南开大学) 、联通、统计局、计委信息中心、科技情报 所等几个主要的接入点互联,设立交互中心( t j i x ,t i a n j i nt n t e m e te x c h a n g e ) 统一管理,几大网络在天津市内实现互访,实现“同城信息,本地交换”。从前, 几大网络相互间的信息交换都要通过北京的交换节点或国外的i n t e r n e t 交换中心 进行,交换后再返回天津,速度很慢,常常会因为北京的网络繁忙或网络方面 的故障导致网络连接不上。9 8 年9 月底天津市信息交互网建设的正式启动, 使得这种状态大为改观,缓解了北京交换节点的压力,大大加快了几大网络的 互访速度。本人参与了交互网中计委信息中心、统计局、天津热线等部分站点 的部分调试工作。 1 9 9 9 年,天津市计划与北京、上海、青岛、大连四城市主干网络互联,扩 大五城市之间的合作,实现信息资源共享。随着信息量的加大,建立一个中文 导航系统,对天津市上千个主要站点的中文信息资源进行归纳、总结、分类和 检索已经成为一种迫切的需求,本系统正是针对这种需求应运而生的。 1 0 4 本系统的设计目标 本系统依据机器人的爬行机制来自动完成对i n t e r n e t 上特定内容的提取, 它支持搜索g b 2 3 1 2 中文及英文页面,检索用户感兴趣的特定信息,并以较为直 观的形式组织检索到的信息供用户参考。具体设计目标及实现如下: 搜索对象为天津市内的中、英文主页页面 用r o b o t 程序将搜索到的实时信息存入服务器,按照用户的需要实时 发布页面 将系统查询过程中用户输入的关键字、查询过程中生成的用户识别码 以及查询后的h t m l 结果写入o r a c l e8 0 4 数据库中,网络管理员可 通过查询库中的信息,从而获得用户查询的信息 4 第章工程背景 搜索比较安全稳定,容错性比较好 全文查询。分析和过滤h t m l 文件准确、彻底 关键字匹配效率高,h t m l 文档一次扫描即可得到结果 自动提取页面主题 查询结果以h t m l 页面方式发布,界面友好 支持多主题查询,可输入多个关键字实现“与”功能 兰三皇! ! ! ! 至童塑茎苎查堂里一 第二章j a v a 语言有关技术说明 2 0 1j a v a 语言的优势 j 。v 。是一种简单的、面向对象的、分布式的、解释的、健壮的、安全的、 结构中立的、可移植的、性能很优异的、多线程的、动态的语言。基于它的以 下优势,确定了本系统采用j a v a 作为开发工具。 一、简单 j 。v a 最初是服务于家用电器的集成控制,因此它必须简单明了。其简单性 主要体现在:与c + + 风格类似,c + + 程序员可以很快就掌握j a v a 编程技术:摒 弃了c + + 中容易引发程序错误的指针和内存管理;提供了丰富的类库。 二、面向对象 j a v a 语言的设计完全是面向对象的,它不支持类似c 语言那样的面向过程 的程序设计技术。j a v a 支持静态和动态风格的代码继承及重用。 三、分布式 j a v a 包括一个支持基于t c p i p 协议的子库( h t t p 、f t p ) 。因此,j a v a 应 用程序可凭借u r l 打开并访问网络上的对象,其访问方式与访问本地文件系统 几乎没有什么区别。为分布环境尤其是i n t e r n e t 提供了动态内容无疑是一项t 常宏伟的任务,但j a v a 的语法特性使我们很容易地实现这个目标。 四、健壮 j a v a 致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开 发早期出现的错误。j a v a 自己操纵内存减少了内存出错的可能性。j a v a 还实现 了真数组,避免了覆盖数据的可能。这些功能、特征大大缩短了开发j a v a 应用 程序的周期。j a v a 还提供了空指针检测数组边界,检测异常出口字节代码校验。 五、结构中立 目前,j a v a 运行系统平台有:s p a r cs o l a r i s2 x 、l i n u x 、n e t w a r e 5 以及 w i n d o w s9 5 和w i n d o w sn t 等w i n 3 2 系统。、l a v a 源程序被编译成一种高层次的 与机器无关的字节码,此字节码由机器相关的虚拟机解释执行。这使得j a v a 成 为网络的一个整体。 六、安全性 j a v a 安全性可从两个方面得到保证。一方面,剔除了指针和释放内存等c t 功能,避免了非法内存操作;另一方面,用1 a v a 来创建浏览器时,语言功能和 一些浏览器本身提供的功能结合起来,使其更加安全。 七、可移植性 j a v a 应用程序同体系结构无关的特性使得它可以在配备了1 a v a 解释器和运 j g _ - 童j a v a 语言有关技术说明 行环境的任何计算机系统上运行,这成为j a v a 应用软件便于移植的良好基础。 但仅仅如此还不够。如果基本数据类型设计依赖于具体实现,也将为程序的移 植带来很大不便。f f , j 女n 在w i n d o w s3 1 中整数( i n t e g e r ) 为1 6 b i t s ,在w i n d o w s9 5 中整数为3 2 b i t s ,在d e ca l p h a 中整数为6 4 b i t s ,在i n t e l4 8 6 中为3 2 b i t s 。 通过定义独立于平台的基本数据类型及其运算,j a v a 数据得以在任何硬件平台 上保持一致。j a v a 语言的基本数据类型及其表示方式如下: 表示方式数据类型 b y t eg - b i t 二进制补码 s h o r th r e a d1 6 - b i t 二进制补码 i n t 3 2 - b i t 二进制补码 l o n g6 4 - b i t 二进制补码 f l o a t3 2 - b i ti e e e 7 5 4 浮点数 d o u b l e3 2 - b i ti e e e 7 5 4 浮点数 c h a r1 6 一b i tu n i c o d e 字符 表2 一lj a v a 语言的基本数据类型及其表示方式 在任何j a v a 解释器中,数据类型都是依据以上标准具体实现的。因为几乎 目前使用的所有c p u 都能支持以上数据类型、8 6 4 位整数格式的补码运算和 单双精度浮点运算。需要说明,j a v a 编译器本身就是用j a v a 语言编写的。 八、解释型 j a v a 解释器能直接运行目标代码指令。链接程序通常比编译程序所需要的 资源要少一些。 九、高性能 j a v a 可以在运行时直接将目标代码翻译成机器指令。s u n 用直接解释器一 秒钟内可调用3 0 0 ,0 0 0 个过程。翻译目标代码的速度与c c + + 几乎没有区别。 十、多线程 j a v a 提供的多线程功能使得在一个程序里可同时执行多个小任务。线程( 有 时称小进程) 是一个大进程里分出来的小的独立的进程。因为j a v a 实现的多线 程技术,所以比c 和c + + 更键壮。多线程带来的更大的好处是更好的交互性能 和实时控制性能。当然,实时控制性能还取决于操作系统本身( u n i x , w i d c j ( ) y s ,l v t a c i n t o , s h 等) ,在开发难易程度和性能上都比单线程要好。只要使用 浏览器,浏览网络上的信息,就常常会感觉到调一副图片而等待是一件很烦恼 的l i 情。在j a v a 里,你可以用一个单线程来调一副图片,而同时又可以访问h l m l 笙三兰! 竺! 堕童童茎垫查望塑 里的其它信息而不必等它。 小应用程序a p p l e t 中的s t a r t ( ) 和p a i n t0 都是由w e b 浏览器的基础线程 调用的,这些线程是由w e b 浏览器生成的。线程的特有用法有这样几个: 长启动。用于执行i n i t ( ) ,进行初始化小程序 重复性任务和定时任务。如s t a r t 0 方法等,常常应用于动画的制作上 异步事件。响应来自键盘或鼠标的事件 多任务。同时进行多个任务的操作 多线程体现了系统同时执行多个执行体的能力,它是现代操作系统有别于 传统操作系统的重要标志之一。它与传统的“进程”的概念最主要的差别在于: 进程把内存空间作为自己的资源之一,每个进程均有自己的内存单元。与此相 反,线程则是共享内存单元,通过共享的内存空间来交换信息,从而有利于提 高执行的效率。 多线程功能的实现,j a v a 有两种方法,即类t h r e a d 和接口r u n n a b l e 。一 个类只要继承t h r e a d 类或实现r u n n a b l e 接口,就可在运行时成为一个独立运 行的线程。本系统在开发过程中,利用了多线程功能,对多个u r l 同时进行获 取、分析和判断,提高了程序的效率。 本系统的搜索过程是多线程的,即同时允许多个线程对多个u r l 同时进行 分析。w 3 c u s t o m r e f e r e n c e 类是一个搜索线程,它的主要工作是:从s p i d e r 类 的n e x t e l e m e n t0 方法中获取h t m l 分析流,对其进行分析。 对于每个搜索线程都有一个时限线程,即在给定时限里若该搜索线程不能 完成分析,则将被强行停止。每启动一个w 3 c u s t o m r e f e r e n c e 类,就同时启动 一个时限线程t i m e k i l l e r ,该线程s l e e p 一定的时间后若发现 w 3 c u s t o m r e f e r e n c e 仍然在运行,则认为该u r l 的链接有问题,从而也就会终 止该h t m l 的分析。 十一、动态 j a v a 的动态特性是其面向对象设计方法的扩展。它允许程序动态地装入运 行过程中所需要的类,这是c + + 语言进行面向对象程序设计所无法实现的。如 果你的系统运行1 a v a 程序时遇到了不知怎样处理的程序j a v a 能自动下载你 所需要的功能程序。 基于j a v a 的如此多的特点和优势,本系统决定采用j a v a 作为开发工具, 并针对天津市的一些具体情况提出了一种中文搜索引擎的解决方案。 2 0 2j a v a 的线程控制 一、 线程的创建 创建一个新的线程可以用如下的格式 第二章j a v a 语言有关技术说明 t h r e a dt h r e a d l :t h r e a d l 为线程名 二、线程的操作: 1 、s t a r t 0 方法 线程的启动。创建一个新的线程后,我们必须直接启动它: t h r e a d l s t a r t 0 :t h r e a d l 为线程名 2 、r u r ( ) 方法 如果创建线程正常,t h r e a d l 应包含个有效的执行线程。我们在线程的r u n0 方法里控制线程。一但进入r u n 0 方法,我们便可执行里面的任何程序。r u n 0 执行完,这个线程也就结束了。 1 、s i e e p 0 方法 延迟一个随机的时间。s l e e p0 方法只是简单地告诉线程休息多少个毫秒时 间。如果你想推迟一个线程的执行,你应使用s l e e p 0 方法。当线程睡眠是s l e e p 0 并不占用系统资源。其它线程可继续工作。 s l e e p ( 1 0 0 0 ) :线程睡眠1 0 0 0 毫秒 4 、s u s p e n d 0 方法 线程的暂停。我们经常需要挂起一个线程而不指定多少时间。例如,如果 你创建了一个含有动画线程的小程序。也许你让用户暂停动画至到他们想恢复 为止。你并不想将动画线程当掉,而是想让它停止。象这种类似的线程你可用 n u s p e n d0 方法来控制: t h r e a d l s u s p e n d 0 : 5 、r e s u m e 0 方法 s u s p e n d0 方法并不是永久地停止了线程,你还可用r e s u m e0 方法重新激活 线程: t h r e a d l r e s u m e0 : 6 、s t o p ( ) 方法 线程的最后一个控制是停止方法s t o p0 。用来停止线程的执行,使用方法 是: t h r e a d l s t o p0 : 注意:这并没有消灭这个线程,但它停止了线程的执行。并且这个线程不 能用t h r e a d l s t a r t0 重新启动。 7 、is a iiv e ( ) 方法 检测线程是否在激活状态。一个线程已经启动而且没有停止被认为是激滔 的。检测线程是否在激活状态可以用t h r e a d i is a l i v e 0 的方法来判断,若 t h r e a d 是激活的,此函数将返回布尔值t r u e 。 三、线程的同步: 数据共享是线程的一个陷阱,若两个线程共享对同一变量的访问权,并且 第二章j a v a 语言有关技术说明 程序没有特别仔细地协调两个线程的数据访问,就可能出现一些怪现象,如程 序的某一步骤可能被执行了两遍或更多。 本系统使用了j a v a 中的s y n c h r o n i z e d ( t h i s ) 方法,避免了这一问题,它的 使用方法是在普通的线程方法中加入s y n c h r o n i z e d ,使得在同一任务上,不会 发生多个线程抢夺资源的问题。如:s t a t i cp u b l i cv o i dw r i t e f t t m l r e s u l t ( i n t h t m l t i t l e ) 方法,同步化线程的方法是: s t a t i cp u b l i cs y n c h r o n i z e dv o i dw r i t e h t m l r e s u l t ( i n th t m l t i t l e ) 这样,就解决了线程对数据操作冲突的缺陷。 需要指出的是,线程同步要花一定的代价,即损失了j a v a 部分性能。当一 个线程花在等待同步数据上的时间比它花在处理该同步数据上的时间更多时, 此线程就被成为线程饥饿。应该尽可能减少这种饥饿。否则,程序可能会变得 反应迟钝,动作缓慢。为降低饥饿线程的潜在可能性,应该只在必要时才使用 同步。 2 0 3j a v a 与汉字处理 j a v a 要求,不管在哪个平台或编译器上,数据项目应当采用同样的数据表 示。例如,i n t 必须表示为3 2 位的补代码值。标准中并不要求这个值实际是如 何存放,丽只要求其如何表现和显示。其字符表示和采用a s c i i 码的c 语言不 同,j a v a 采用的是u n i c o d e 字符集。u n i c o d e 是一种用以取代标准a s c i i 字符 集的新的编码标准,这种标准把a s c i i 码的8 位字节扩展为1 6 位字节。a s c i l 字符的码值在u n i c o d e 字符集不变,但u n i c o d e 扩充了标准a s c i i 字符集,便 之增加许多非拉丁语字符,这样不管哪国的文字在u n i c o d e 中部有一唯一的表 示。这样,汉字处理也就有了解决的思路。 2 0 4 小程序( a p p l e t ) 对于j a v a 语言的实际应用形式而言,分应用程序( a p p l i c a t i o n ) 和小程 序( a p p l e t ) 两种表现形式。a p p l i c a t i o n 和其它编程工具编写的程序没什么 两样,只不过需要j a v a 专用的解释器来解释执行;而a p p l e t 则是一种应用于 网络浏览器的特殊的j a v a 程序,需要支持j a v a 的浏览器下载到本地用相应的 虚拟机来执行。h o t j a v a 、m i c r o s o f te x p l o r e r 和n e t s c a p en a v i g a t o r 的相应 版本都有自己的虚拟机。另外,还可以通过像。t d k ( j a v a ) e v e l o p m e n tk it s ) 这样的j a v a 开发工具中的a p p l e t v i e w e r 工具来浏览。 一、a p p i e l :的使用要领: 要观看h p p l e t 的结果,需要必要的h r m 【文件。a p p l e t 的h t m l 使用格式是 1 0 蔓三兰! 竺! 至童互墨垫查望望 一 一定的,如:以下是一个a p p l e t 的实例,其j a v a 源程序代码为: j a v a d e m o j a v a i m p o r tj a v a a p p l e t : i m p o r tj a v a a w t : p u b li cc l a s sj a v a o e m oe x t e n d sa p p l e t ( p u b li cv o i dp a i n t ( g r a p h i c sg ) g d r a w s t r i n g ( “这是一个j a v aa p p l e t 的例子! ”,2 0 ,2 0 ) ) ) 程序2 - 1 然后,用j d k 将其编译为c l a s s 文件j a v a d e m o c l a s s : j a v a cj a v a d e m o j a v a 编写h t m l 文件j a v a d e m o h t m ,内容为: 一个j a v aa p p l e t 实例 您的浏览器不支 持j a v a ! 程序2 - 2 使用支持j a v a 的浏览器即可浏览,或使用命令行: a p p l e t v i e w e rj a v a d e m o h t m 以检验结果,如果浏览器支持j a v a ,则在观察窗口中将显示“这是个j a v ;t a p p le t 的例子! ”,如果浏览器不支持j a v a ,则在观察窗口中将显示“您的浏览 器不支持j a v a ! ”的字样。 若j a v a d e m o c l a s s 和j a v a d e m o h t m 不在同一目录下,则需指定c l a s s 所 在位置: 表示在j a v a d e m o h t m 所在的目录下有一个子目录,名为c l a s s ,j a v a d e m o c l a s s 就在c l a s s 子目录中。 第= 章j a v a 语言有关技术说明 若使用的j a v a 类库被作成了z i p 文件,则需指定c l a s s 文件的名称和位 置。如: 表示了j a v a 类库c l a s s e s z i p 提供了j a v a d e m o c l a s s 运行中需 要调用的所有类库。大部分支持j a v a 的浏览器的虚拟机中都自带了j o k 的标准 类库。上述的例子主要应用于小程序使用了j d k 提供类库以外的类的情况。 二、j a v a 的生命周期 对于j a v aa p p l e t 而言,有四个生命周期:即i n i t 0 、s t a r t 0 、s t o p 0 、 d e s t r o y 0 。 1 、i n i t ( ) 方法 此方法的作用是在h p p l e t 启动时做一些初始化工作,通常可在此方法中加 入j a v a 所需要的外部参数,添加用户界面的基本组件,它在系统初始化时被引 用,在整个a p p l e t 的运行中,它只执行一遍。 2 、s t a r t ( ) 方法 此方法是在i n i t 0 之后自动调用的。当用户离开小程序页面后再返回的时 按,系统自动执行一遍s t a r t 0 。在s t a r t 0 中,可加入继续播放动画、声音之 类的线程,能够在用户离开此页面时实现j a v a 程序的暂停。 3 、s t o p 0 方法 在用户离开a p p l e t 页面时自动执行,一般由系统完成,作用是释放系统资 源,s t o p 0 方法在小程序中可以没有代码体现,用户使用时多在动画、声音播 放情况下。 4 、d e s t r o y 0 方法 浏览器关闭时将调用此方法,在一e s t r o y 0 中可以要求收回占用的非内存独立 资源。若关闭浏览器时a p p l e t 仍在运行,则先执行s t o p 0 方法,再执行d e s t r o y 0 力法。 三、j a v aa p p l e t 的安全机制 1 、a p p l e t 与a p p ii c a t in 本系统的客户程序是j a v 小小程序( a p p l e t ) ,a p p l e t 和a p p l i c a t i o 的技术 硬求不太一样,a p p l e t 在安全方面有着一定的规定。a p l e t 无法在正常机制下 实现a p p l i c a t i o n 的某些权限。 如果小程序是客户程序,对h p p l e t 的安全性限制在浏览器或者 a p p l e t v i e w e r 中运行远程主机上存放的a p p l e t 时,、l a v av m 认为它是不可信任 的,将其置于所谓s a n d b o x ( 沙箱机制) 的保护之下,在这样的情况下a p p l e t 的运行受到些限制。如:小程序只能与提供它的服务器建立连接;不能读写 和运行客户端主机上的存储设备( 虽然s u n 并没有将此作为j a v a 规范,但i e 剃n c t s c a p e 是这样做的) ;无法获得除本地机使用的j a v a 版本号、操作系统名 蔓三兰! 竺! 至童壹叁垫查亟塑一 称及版本号、文件名分隔符( 或) 和路径以外的有关本地机的信息:无法 获得使用者的名字和e m a i l 地址等信息。此外,a p p l e t v i e w e r 与i e 、n e t s c a p e 浏览器相比,安全性的要求也是不一样的,i e 、n e t s c a p e 浏览器对j a v a 的限 制更为严格一些,使用额外类库时会抛出s e c u r i t y e x c e p t i o n 错误。这是因为, n e t s c a p e 及i e 认为,安全性模型限制并不足以保护用户,可能会遭到以外程 序的“干扰”或计算机罪犯的蓄意破坏。因此,编写j a v aa p p l e t ,必须遵守i e 和n e t s c a p e 的这些限制。 下表说明了安全方面n e t s c a p e 的种种限制: 本地运行 a p p l e t v i e w e n e t s c a p e 访n e t s c a p e 访问 a p p l i c a t i o n r 运行a p p l e t 问u r l 本地a p p l e t a p p l e t 读本地主 y e s y e sn on o 机文件 写本地主 y e sy e s n on o 机文件 拾取文件 y e sy e sn on o 信息 删除文件 y e sn on on o 启动外部 y e sy e sn on o 程序 读取用户 y e sy e sn oy e s 名属性 与源服务y e sy e sy e sy e s 器连接 与其它主 y e sy e sn oy e s 机连接 安装 y e sy e sn oy e s j a v a 类 库 调用 y e s y e sn on o e x i t 0 力 法 创建弹出 y e s y e sy e sy e s 式窗口 表2 - 1n e t s c a p e 在安全方面的限制 苎三兰! ! ! ! 重童壹茎垫查堂塑 2 、浏览器安全性的差异 j a v a 程序在浏览器中体现为j a v aa p p l e t 形式。m i c r o s o f ti n t e r n e t e x p l o r e r 和n e t s c a p ec o m m u n i c a t o r 是两种重要的浏览器,它们在其

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论