




已阅读5页,还剩94页未读, 继续免费阅读
(计算机应用技术专业论文)基于java+ee的渠道管理系统性能研究与提升.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
、 、: r r ! :i 。二 一 l 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名三垄盔曼丑,日期:参p 年乡月艿日 论文使用授权 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:立量塞盐 1 ,一 k 摘要 摘要 在社会分工日趋精细的今天,协作的重要性亦日趋突显。企业内部的协作, 必需通过网络来实现,网络应用因此就显得越来越重要。在这种情况下的企业应 用系统,性能是一个非常重要的方面,它直接关系到工作的效率、影响企业的竞 争力,从而影响企业的收益。随着用户的增加和应用的升级,企业越发渴望构建 稳定的、安全的、高性能的应用。因此,对此类应用性能的研究就显得尤为重要。 企业应用性能开发的主要目标是在给定的开发时间内开发出达到性能目标的 应用。目前国内外已有大量研究人员对此问题进行了研究。主要存在两种看法, 一种看法认为开发过程中用到的技术是导致性能问题的主要原因。另一种看法则 认为应用开发的过程是导致性能问题的主要原因。最终也就相应发展成为两种解 决方案技术解决方案和过程解决方梨1 1 。 j a v ae e 技术对于构建企业应用有很大的优势,有诸多成熟的技术和框架为开 发企业应用提供支持,可以在很大程度上提高开发效率。j a v a 开源社区中的种种 方便开发的框架不断诞生,这些框架对于开发效率的提高固然能起到比较好的作 用,但是,对于系统性能的影响在某些时候也是显而易见的。世界范围内的程序 员也都致力于框架性能的提升。 对于证券行业来说,处理的数据量大是该类企业应用的一个特点,因此,更 要考虑性能的影响。 本文将从影响基于j a v ae e 应用性能的各个过程、方面出发,研究如何提升基 于j a v ae e 应用的性能以及在此过程中应该注意的事项。然后分析某证券公司的渠 道管理系统需求,详细介绍该系统的实现,结合该系统的开发过程,介绍在开发 过程中碰到的性能问题以及其解决方案。 硬件、操作系统等底层因素对应用性能的影响固然很大,但这些不是本文所 讨论的范围,本文仅考虑特定硬件、操作系统环境下的影响系统性能的一些因素。 本文对基于j a v ae e 的证券行业渠道管理系统的性能进行了详细的阐述,可以 为相关研究人员提供一定的参考。 关键词:j a v a e e ,性能,证券,渠道 l 一 1气 a b s t r a ( 了r a b s t r a c t h lm o d e ms o c i e 呗m ei n c r e a s ei l ld i v i s i o no fl a b o rm a k e 8m ec o l l a b o r a t i o nm u c h m o r ei m p o r t a i l t t h ec 0 1 1 a b o r a t i o ni i lac o i p o r a t i o nd 印e n d so nm e n e 觚o r k ,s on e 晰o r k a p p l i c a t i o n sb e c o m e m o r ea 1 1 dm o r ei m p o r t 锄p e r f o m l a n c ei sav e 巧i m p o r t a n ta s p e c t f - 0 rt h i sl ( i n d o f t e r p r i s e 印p l i c a t i o n s ,f o r i ta 毹c t st l l e e 街c i e i l c y a 1 1 dm e c o m p e t i t i v e i l e s so fc o r p o r a t e ,w 1 1 i c hd i r e c t l ya 毹c tm ec o 印o r a t ee 锄i n g s w i mm e i n c r e a s ei nu s e r sa n d 印p l i c a t i o nu p 目a d e s ,c o m p a m e si n c r e a s i n 百yw a n tt 0b u i l ds t a b l e , s e r e 1 1 i 曲- p 曲彻a n c ea p p l i c a t i o n s t 1 1 e r e f o r e ,t h es t u d yo n l ep e r f o m l a n c eo fs u c h a p p l i c a t i o i l si sp 硪i c u l 砌yi m p o r c a i l t t h em a i l lo b j e c t i v eo fp e r f 0 肌锄c ed e v e l o p m e n ti i l e r l t 唧r i s e 印p l i c a t i o ni s t 0 d e v e l 叩a na p p l i c a t i o n 、) i ,:1 1 i c hm e e t st h ep e r f o m a i l c et a 玛e t si n 西v e i li i n p l e m e i 】【t a t i o n 血e c u r r e n t l y ,m e r e r eal o to fr e s e a r c h e r sh a v ec o n d u c t e das t u d vo nt h i si s s u ei i l h o m ea i l da b r o a d t h e r ea r em a i l d yt w ol ( i n d so f o p i n i o n s :o n ei st 1 1 a tt h et e c h n o l o 百骼 u s e di nt h ed e v e l o p m e n tp r o c e s sa r et h em a i nc a u s eo fp e r f o m a i l c ep r o b l e m s a n o t l l e r i st l l a t l ea p p l i c a t i o nd e v e l o p m e n tp r o c e s si st 1 1 em 咖c a u s eo f p e r f o m l a j l c ep r o b l e m s c 0 n s e q u 翩t l yd e v e l o pi 1 1 t o 锕ol ( h l d so fs 0 1 u t i o n s 一- t e c l l l l 0 1 0 9 ys o l u t i o n sa 1 1 dp r o c e s s s 0 1 u t i o i l s 【l 】 j a v ae eh a sag r e a ta d v a n t a g e0 nd e v e l o p i n g t e 印r i s ea p p l i c a t i o n s t h e r ea r ea m n b e ro fm a t u r et e c _ h n 0 1 0 百e sa n d 丘a m e w o r k st op r o v i d es u p p o r tf o rm ed e v e l o p m 锄 o fe n t e 印n s ea p p l i c a t i o n s ,w i 1w t l i c hy o uc a ns i 印i f i c a l l t l yi m p r o v ed e v e l o p m e m e 伍c i e n c yt h ec o n t i n u e db i 曲o f 丘锄e w o r k si nj a v ao p 铋s o u r c ec 0 咖m u n 埘f a c i i i t a t e m ed e v e l o p m e n t ,i m p r 0 v et 1 1 ee 伍c i e i l c yo ft h ed e v e l o p m e n t ,b u tm en e g a t i v e 疆e c t i o n o fn l es y s t 锄p e r f o r m a n c ei se v i d e l l ta tc e r t a i nt i m e s p r o 伊锄加e r sa r o u n dm ew o r l d a r ea l s oc o l l l 】商t t e dt on l e 危曲e 、釉r kp e r f b n n a l l c ei 衄) r o v e n l 锄t s f o rm es e c u r i t i e si n d u s 仃y ,d e a l i n gw i m1a 】唱e 锄o u i l t so fd a t ai sac h a r a c t 丽s 6 co f s u c h t e 印d s ea p p l i c a t i o i l s ;l e r e f o r e ,w em u s tt a l ( ep e r i 0 肌a i l c em oa c c o u n t t h i sm e s i s 、7 l ,i 1 1s t a r t s 五的m 也ep r o s e s s e sa 1 1 d a s p e c t sw h j c ha 虢c tt h ej a v a e e - b a s e d a p p l i c a t i o np 幽咖a 1 1 c e , d os o m er e s e a r c ho nh o wt o i i i l p r o v e t h e l i 户l_ a b s t r a c t p e r f i o m a l l c eo fa p p l i c a t i o n sb a s e do nj a v ae e ,a sw e l l 嬲t 1 1 ea t t e n t i o ni n 廿1 i sp r o c e s s t h e i la l l a l y s em er e q 面r e m e l l t so ft l l ec h a n n e lm a l l a g e m e i l ts y s t e mf o ras e 吼l r i t i e s c o m p a n y ,e l a b o r a t eo f l ei m p l e i 】= l e i l t a t i o n o fm es y s t e m f i l l a l l 弘d e s 嘶b e s 也e p e r i o 肌a 1 1 c ep r o b l e m s e 1 1 c o u 呲e r e di n d e v e l o p m e n tp r o c e s s a i l dt h e i rs o l u t i o n s , a c c o r d i n gt l l et l l ed e v e l o p m e i l tp r o c e s s h a r d w a r e ,o p e r a t i n gs y s t e i i l s a i l do t h e ru n d 甜y i n gf a c t o r sa 仃e c t a p p l i c a t i o n p e r f o m a i l c e 孕e a t l y b u tm e s ef a c t o r sa r eo u tm es c o p eo ft h i st h e s i s ,t 1 1 i sm e s i so n l y c o n s i d e r st h ef a c t o r st l l a ta 岱:c ts y s t e mp e r f o m l a n c eo ns p e c i f i ch a r d w a r ea i l do p e r a t i n g s y s t e me i _ l v i r o m n e n t s n l i sm e s i se l a b o r a t e st h ep e r f o m a i l c eo fm ej a v ae e - b a s e dc h a 衄e lm a n a g 锄e 1 1 t s y s t e mo fs e 双l r i t i e si n d u s t f i n i t er e f e r e i l c em a y b ep r o 们d e dt or e l e v a n tr e s e c h e r s k e y w o r d s :j a v a e e ,p 而n n a n c e ,s e 谢t i e s ,c h a n n e l ,k 一 _ 伊 目录 目录 第一章绪论l 1 1 研究背景1 1 1 1 国内外相关研究现状1 1 2 研究意义2 1 3 本人所做工作2 1 4 论文结构3 1 5 本章小结3 第二章影响j a v ae e 开发性能的因素及相关研究5 2 1 设计模式5 2 1 1v a l u eo b i e c t 模式5 2 1 2 空对象模式7 2 1 3m v c 模式9 2 2a j a x 1o 2 :;j w 2 i 1 :; 2 3 1s t r i n g 、s t r i n g b u f 蚤暑r 和s t r i n g b u i l d e r 的对比13 2 3 2 对象包装器1 5 2 3 3a r r a y l i s t 、v e c t o r 和l i n k e d l i s t 的对比15 2 3 4f i n a l 减少开销17 2 3 5 断言18 2 3 6 类加载。18 2 3 7 其他通用优化技术1 9 2 4 数据库2 0 2 4 1 索引2 0 2 4 2 查询优化。2 2 2 4 3 数据库连接池2 4 2 4 4p r 印a r e d s t a t 锄e n t 预编译2 5 2 5h i b e n l a t e 框架2 7 2 6 缓存3 0 2 7 预处理、预装载3 2 2 7 1 预处理3 2 2 7 2 预装载3 3 2 8 性能开发过程3 4 2 8 1 性能相关数据收集3 5 2 8 2 性能预测3 5 2 8 3 性能测试3 6 l v 目录 2 9 本章小结3 7 第三章系统需求分析及总体设计3 8 3 1 渠道管理需求分析3 8 3 2 技术选择4 0 3 2 1b s 模式4 0 3 2 2j a v ae e 及其优势4 0 3 2 3 持续集成4 1 3 2 4k s f 框架4 1 3 2 5 数据预处理4 3 3 3 总体设计4 3 3 3 1 总体架构4 3 3 3 2 系统模块设计4 4 3 4 本章小结4 5 第四章系统详细设计与实现4 6 4 1 数据库设计4 6 4 2 系统详细设计5 3 4 2 1 代码结构设计5 3 4 2 2 预装载及替换算法5 5 4 2 3 预处理5 7 4 2 4 持续集成( c i ) 6 3 4 2 5 对象关系映射o r m ( o b j e c t - r e l a t i o n a lm a p p i n g ) 6 3 4 2 6k s f 6 4 4 3 各个功能点的实现6 5 4 3 1 添加渠道级别的实现6 6 4 3 2 添加渠道的实现6 8 4 3 3 渠道归属查询的实现7 0 4 3 4 渠道绩效分析的实现71 4 3 5 可见菜单的实现7 2 4 3 6 权限控制的实现7 2 4 3 7 在线人数的实现一7 3 4 4 本章小结7 4 第五章系统性能优化7 5 5 1 前期性能考量7 5 5 2j s p 自定义标签7 6 5 3 低效的s o l 7 6 5 4 低效的h q l 7 7 5 5 索引7 9 5 6 自定义函数的影响7 9 5 7 本章小结7 9 第六章总结8 l 致谢8 3 v 一 心 k 目录 参考文献8 4 攻硕期间取得的成果8 7 j o k 第一章绪论 1 1 研究背景 第一章绪论 在社会分工愈趋精细的今天,协作的重要性亦日趋突显,网络应用因此就显 得越来越重要。而当今的企业,分公司遍布各地,企业内部的协作,必需通过网 络来实现。在这种情况下的企业应用,性能是一个非常重要的方面,它直接关系 到工作的效率、影响企业的竞争力,从而影响企业的收益。而随着用户的增加和 应用的升级,企业越发渴望构建稳定的、安全的、高性能的应用。因此,对企业 应用性能的研究就显得尤为重要。对于证券行业来说,处理的数据量大是该类企 业应用的一个特点,因此,更要考虑性能的影响。 1 1 1 国内外相关研究现状 企业应用历史悠久,但随着i n t e m e t 技术的兴起,b s 模式的应用渐渐风靡起 来。b s 模式有其独特的优势:客户端免安装使得它更适合基于网络的应用;另外, 它更易于重用、维护等等。j a v ae e 技术对于构建企业应用有很大的优势,有诸多 成熟的技术和框架为开发企业应用提供支持,可以在很大程度上提高开发效率。 j a v a 开源社区中的种种方便开发的框架不断诞生,这些框架对于开发效率的提高 固然能起到比较好的作用,但是,对于系统性能的影响在某些时候也是显而易见 的。世界范围内的程序员也都致力于框架性能的提升。 企业应用性能开发的主要目标是在给定的开发时间内开发出达到性能目标的 应用。目前国内外已有大量研究人员对此问题进行了研究。主要存在两种看法, 一种看法认为开发过程中用到的技术是导致性能问题的主要原因。另一种看法则 认为应用开发的过程是导致性能问题的主要原因。最终也就相应发展成为两种解 决方案技术解决方案和过程解决方案【l 】。 关于性能测试的相关研究,国内外已经取得了许多成果,提出了一些性能测 试方法,开发了许多的性能测试工具,主要如下: 1 ) 文 2 认为:一个不能真实模拟实际使用环境的负载测试是最没有用的,并 且可能会产生误导作用,如果过高地估计站点的性能,那么在实际的负载出现时 电子科技大学硕士学位论文 会导致系统在发布之后崩溃,而过低的估计将会产生不必要的延迟和成本。 2 ) 文 3 】提出了使用p e p p e r ( p e r c 印t i o np r o j e c t i o np e 响m a l l c er e l i a b i l i 劬模型 来设计性能测试:用户感知到的性能是很关键的,因为用户才是w 曲站点性能的 最终的判定者,所以应当从用户的观点来设计性能测试。本文也主要考虑系统功 能的响应时间。 3 ) 商业性能测试工具主要有m 删l o a d r u 衄r a d v i e ww 曲l o a d ,s e a g u e s i l k t e s t r a t i o n a lp e 疵珊a i l c et e s t e r 等。文 4 指出,l o a d r 加n e r 是一种预测系统 行为和性能的工业标准级负载测试工具。它有很多优点,比如通过模拟成千上万 的用户并发负载及实时性能检测的方式来确认和查找问题等。其他几种测试工具 也各有其优点。 4 ) 其他的工具还有:免费的w a s ( w 曲a p p l i c a t i o ns t r e s st 0 0 1 ) 嘲、开源性能测 试工具o p e n s t a ( o p e l ls y s t e mt e s t i n ga r c h i t e c t l l r e ) 6 】等等。 文 3 7 中,设计并实现了a u t o w 曲c a c h e ,它是用来缓存j 2 e e 应用中动态生成 的内容的中间件解决方案。该解决方案在客户数较多时,对系统的性能提升有较 好的效果,详细的内容参见第二章。 文 4 2 给出大量的解决方案,告诉我们如何阻止过多地访问数据库,或者说尽 量减少访问数据库,比如使用各种缓存方法,将动态内容不断靠近用户,从w 曲 服务器到反向代理服务器,甚至到用户本地浏览器中。当然,大量的数据库访问 在所难免,所以该文也给出了相关的优化方案。 1 2 研究意义 在软件系统日益复杂的今天,性能已经成为软件质量重要的衡量标准之一, 这一点尤其体现在和w 曲相关的系统上。b s 体系的应用几乎无处不在,它们在 给用户带来方便的同时,也对开发人员提出了新的要求:性能。软件亚健康已不 再只是个名词,性能问题已经困扰着很多企业的软件产品。 决定系统性能的因素很多,特别是对于基于j a v ae e 的应用来说,有网络的因 素,有数据库的因素,还有算法的因素,等等。只有综合考量这些因素,从多个 方面着手,才能使得系统的性能有较大的改观。 我们的研究,对于改善软件产品的性能,无疑会起到一定的作用。 1 3 本人所做工作 2 第一章绪论 本课题是以作者参与的成都某证券公司渠道管理系统的开发工作为基础,对 影响基于j a v ae e 的企业应用的性能相关技术所做的研究。期间,与他人合作共同 开发了本系统,并最后对系统进行优化。 主要工作如下: 1 构建持续集成( c i ) 开发环境。 2 分析系统需求,设计系统框架。 3 开发渠道管理系统中的绝大部分模块。 4 对基于j a v ae e 环境下影响性能的因素进行了大量试验,并记录相关数据, 进行对比选择。 5 查阅大量资料,找到影响系统性能的因素,优化系统。 6 广泛阅读国内外相关论文,完成本论文。 1 4 论文结构 论文的组织结构如下: 第一章介绍了本课题的研究背景、研究意义以及国内外研究现状。 第二章介绍了基于选定的技术框架下影响性能的若干因素,特别重点讨论了 那些在后续设计、实现过程中碰到的问题,并对这些情况的做法提出建议。 第三章对渠道管理系统的需求进行分析,并根据第二章的研究结果,在架构 等高层面上考虑系统性能,对系统做出总体上的设计,包括技术、框架的选择等 等。 第四章充分运用第二章的研究结果,介绍系统的详细设计和部分模块的实 现,并给出了第二章部分理论的具体实现细节,如预处理等。首先介绍了系统的 数据库设计以及各种技术的实现,最后,选取了若干模块,详细介绍了这些模块 的具体实现过程。 第五章综合运用相关理论,前面的章节构建出一个总体性能较好的系统,总 体上满足性能需求,但仍有部分功能点性能较差,本章详细介绍了在系统构建过 程中碰到的系统性能细节问题以及解决方法,由于此类问题很多,本章为每种情 形选择了一个相对典型的问题来进行介绍。 第六章对全文的总结。 1 5 本章小结 3 电子科技大学硕士学位论文 本章首先介绍了本课题的研究背景以及国内外相关研究现状,接着讨论了本 的研究意义,最后介绍了作者在本课题中所做的主要工作以及本文的组织结 4 第二章影响j a v ae e 开发性能的因素及相关研究 第二章影响j a v ae e 开发性能的因素及相关研究 在我们即将构建的系统中,确定使用基于j a v ae e 的平台,所以,本章将对基 于j a v ae e 平台下构建企业应用的可能影响系统性能的若干因素进行研究,并对一 些问题提出解决方案。这些也是后面优化所构建系统性能的理论基础。硬件、操 作系统等底层因素无疑对系统性能的影响非常大,有时还是决定性的,但这些不 是本文所讨论的范围,本文仅考虑特定硬件、操作系统环境下的影响系统性能的 一些因素。 2 1 设计模式 模式的概念最初源于建筑业,后来软件行业也引入模式的概念。对于类似的 问题抽象出一个通用的解决方案,于是就有了设计模式。每一种模式表述了一种 在我们周围不断发生的问题,以及解决该问题的核心方案。这样,你就能重用该 方案而避免重复劳动。一般而言,模式有4 个基本要烈7 】: 1 名称,概括性地描述模式的问题、解决方案和效果。 2 问题,表述该模式该在何时使用。 3 解决方案,描述了设计的组成部分,该模式是如何解决此类重复问题的。 4 效果,表述了模式应用的效果以及使用时应权衡的方面。 使用设计模式的好处很明显,可以让我们避免重复劳动,可以有效地借鉴前 人的解决方案,减少重复劳动,设计出更佳的系统。 下面对那些会影响系统性能的几种设计模式做重点讨论。 2 1 1v aiu e0 b j e c t 模式 v a l u eo b j e c t ,我们称之为值对象,是持久层框架中很重要的一个概念。简单的 v o 对象可以映射为数据库中的一条记录。复杂的可以映射为具有复杂关系的数据 库中的记录。v o 的出现主要解决网络传输问题。通常的在客户端添加一笔记录时, 会频繁的调用s e t 方法在网络间传递数据,而值对象允许你一次将数据添充到一个 v o 里,然后在系统的各层次间以v o 进行数据的传送。系统层与层间的数据交换 5 电子科技大学硕士学位论文 都通过v o 来完成,能大大减少网络的开支。 使用v a l u e0 i b i e c t 来封装业务数据,并且有一个单独的方法可以用来获取或者 发送这个v o ,当客户端请求一些业务数据的时候,服务端就可以产生出一个v o , 并且将它赋值,最后,可以用传值的方法传递给客户端。 这样的好处是减少网络对话,加速层之间的数据交流,我觉得,这样更大的 好处是使程序逻辑更加清楚,更加面向对象。 该模式主要用于减少数据传送次数,常用在e j b 中,现在的s t m t s 项目中也 提倡使用这种设计模式。 值对象是使用粗粒度的数据对象传输来提高远程传输效率。 为了更直观地说明v a l u e0 b i e c t 模式,可以通过如下的两张图来说明【8 】: 图2 1 未使用v o 模式 图2 2 使用v o 模式 6 第二章影响j a v ae e 开发性能的因素及相关研究 图2 1 未使用v a l l l eo b j e c t 模式,客户端每次操作数据库,均需要通过调用实 体e j b 的g e 竹副s e 仕c r 方法,通信开销很大。而在图2 2 中,使用了v 矾u e0 i b j e c t 模式,客户端不再逐一访问实体的每个字段,而是由一个诸如g e t d a t a ( ) 的方法, 将客户端需要访问的数据打包成一个v 砒u eo b i e c t ,然后一次性地返回给客户。很 明显,通信量减少,使用该模式对于系统性能的提升是有很大帮助的。特别是在 高并发的情况下,使用v 砒u eo b j e c t 模式比不使用该模式的优势就更明显【8 1 。原因 是在不使用v r a l u eo b e c t 模式的系统中,客户端每访问e j b 实体的一个字段,都需 要访问一次g e 钍e r s e t t c r 方法,这就是一次远程调用,就会造成系统性能的退化。 当调用的次数逐渐增加,系统性能也就会急剧下降。而在使用了v a l u e0 b i e c t 模式 的系统中,客户端只需要一次远程调用,系统就会将所有数据封装成一个v a l u e o b j e c t 返回给客户,其他的操作就可以访问本地的u eo b j e c t 来完成,随着并发 用户数量的增加,这种远程调用数量呈指数量级下降。很明显,这对于系统性能 的提高是大有裨益的。 2 1 2 空对象模式 空对象模式在文【9 中有提及,空对象模式通过提供一个空对象来简化数据有 效性检查的代码,从而简化了代码,减少了数据有效性检查的工作量,并降低了 因开发人员疏忽而带来的问题,增强了程序的健壮性。 在基于领域模型的设计中,在底层定义的d o m a i no b j e c t 在数据库查询的时候 可以返回为空,在此假设我们有一个如下的d o 对象: p u b l i cc l a s ss t l l d e n t p r i v a t ei n t e g e ra g e ; 其他属性以及g e t t 酬s e t t e r 方法 ) 在d a o 层封装和数据库交互的基本方法后,我们在b u s i n e s s 层开始对业务逻辑进 行简单的封装。当我们提供一个丘i l d s t u d e n t 的方法的时候,如果在数据库中查询 一个年龄为1 6 岁的s t u d e n t 对象为空,一般的情况下我们返回为n u l l 对象,这样 就会导致程序在要取值的时候必须判断是否为空,比如一个返回学生名字的方法, 实例如下: p u b l i cc 1 嬲ss t i l d e n 仃l e s t p u b l i cs t r i n gg e t s 伽吼t n 锄e ( s t i l d e n ts t u d e n t ) 7 电子科技大学硕士学位论文 i f 【s t u d e i l t n u l l ) 咖“”; e l s e r e t m ms m d t g e f n 锄e o ; ) ) 如果获取的s t u d e n t 对象为空的话,直接进行s t u d e n t g e t n 锄e ( ) 操作就会报空 指针的错误。所以必须加上i f ( s t u d e n t n u l l ) 的判断。而这样就会导致程序中过多 地判断是否为空,不够简洁,同时也很容易出错,也影响性能。 如果我们在域对象中重新定义一个空的对象,然后在d a o 层封装一下,代码的健 壮性就会增强了很多。示例如下: p u b l i cc l a s ss t i l d e l l t 增加一个空的s t u d 肌t 对象 p u b l i cs t a t i cf i n a ls t l l d e i l tn u l l = n e ws t i l d 锄to ; p r i v a r t ei i l t e g e ra g e ; 其他属性及g e t t e r s e 仕e r 方法 ) 然后在d a o 层封装一下获取s t u d e n t 对象的方法: p u b l i cc l 勰ss t l l d 锄t d a o p u b l i cs t u d e n tf i n d s t u d e n t ( ) s t i l d 锄ts t u d 锄伊 此处省略诸如查询数据中s t u d e i l t 的代码 城s t t l d e n 户n u l l ) 返回一个空的s t u d e i l t 对象 r e t l i ms t i l d t n u l l : e l s e r e m ms l u d e n t : ) ) 这样在业务逻辑层调用s t u d e n 仍a 0 方法的时候就不会出现对象空指针的问题, 增强了程序的健壮性。 那么为什么在为空的时候不直接n e ws t i l d e n to ? 首先:n 唧一个对象需要 8 第二章影响j a v ae e 开发性能的因素及相关研究 分配新的内存开销,而s t a t i c6 n a l 的n u l l 对象则在内存中有一块无法改变的存储 空间,降低了系统的开销;其次,n u l l 对象在执行期就被初始化,返回n u l l 只用指向该内存地址,而不是重新分配地址,提高了性能。 使用空对象模式可以确保在d a o 层返回有效的对象,即使在查询失败的时候 也是如此。这些代表失败的对象“什么也没有做”! 这样提高了程序的健壮性、减少 了检查代码、提高了性能。 2 1 3m v c 模式 m v c 模式不属于严格意义上设计模式的范畴,而是在更高层次上的软件架构 模式【1 们。 m v c 是m o d e l e w c o n 们1 1 e r 的缩写。作为一种软件设计模式,现在广泛地 为大家所采用,它的主要思想是将应用程序分成三个部分:模型( m o d e l ) 、视图 ( e w ) 、控制器( c o n 仃0 1 1 e r ) 。三部分之间松耦合,各司其职。图2 3 展示了m v c 模式的各部分的作用以及他们之间的交互 选择视图 ( 控制器) 接受用户请求 调用模型响应请求 选择视图显示响应结果 ( 视图) 显示模型状态 接受数据更新请求 把用户输入数据传给控制器 户请求 状态查询 通知数据更新 业务处理 ( 模型) 代表应用程序状态 响应状态查询 处理业务流程 通知视图业务状态更新 方法调用 事件 叶匕= = = o 图2 3m v c 模式各部分之间的交互 m v c 中的三者之间并不存在明显的层次结构,没有明显的向下依赖关系,相 反的,蹦和m o d e l 往往是比较独立的,而c o n 仃0 1 1 e r 是连接两者的桥梁,他们 更像是横向的切分。这样一来就出现一个结果,m v c 中每个块都是可以独立测试 9 电子科技大学硕士学位论文 的。m v c 模式很复杂,但是结构清晰,耦合性低。 在这里,我可以用一个比较形象的比喻来说明m v c 模式:那就是用学习机来 玩游戏。在这个过程中,我们将游戏卡插在学习机上,通过手柄进行操作,而用 电视机来负责显示游戏画面。在这一玩游戏的过程中,很明显c o n 仃0 1 l e r 是学习机, e w 是电视机,m o d e l 就是游戏卡。只要接口相同,不同的游戏卡都可以插在学 习机上,游戏卡决定了我玩的是超级玛丽还是魂斗罗,而不用更换学习机和电视 机,同样,如果我要换个尺寸更大的电视机,我也不用更换学习机和游戏卡。 我想,上面的比喻能够形象地说明m v c 模式。j a v a 开源社区中的s 眦s 框架, 就是是m v c 模式的一个典型实现。 虽然m v c 模式在我们即将构建的系统中,不能对性能带来直接的影响,但是, 它从软件设计的层面,间接影响了系统的性能,所以,我在此对它进行介绍。在 后面我们所设计的k s f 框架使用了该模式。 2 2a j a x a j a 】【是a s y i l c h r o n o u sj a v a s 嘶p t 孤dx m l 的缩写。亦即异步的j a v a s 翻p t 和 x 】l 。从这个缩写我们就可以知道,它不是一门新语言、新技术。实际上,我们 可以这么理解:a j a x 是对老技术的新用法。 图2 3 基于a j 强的w e b 应用模型 l o 第二章影响j a v ae e 开发性能的因素及相关研究 图2 3 展示了基于a j a ) 【的w 曲应用模型,在基于a i a x 的w 曲应用中,a j a ) 【 引擎动态从服务器获得数据,而无需刷新用户界面【l 。 下面是a j a ) 【应用程序所用到的基本技术: h t m l 用于建立w 曲表单并确定应用程序其他部分使用的字段。 j a v a s 嘶p t 代码是运行a j a x 应用程序的核心代码,帮助改进与服务器应用程 序的通信。 d h t m l ( d v n 锄i ch t m l ) ,用于动态更新表单。 文档对象模型d o m 用于处理h t m l 结构( 通过j a v a s 嘶p t 代码) 和服务 器返回的x m l ( 某些情况下) 。 那么,a j a 】【到底能给我们带来什么呢? 在一般的w 曲应用中,用户填写表单的若干字段并单击“提交 按钮后整个 表单被发送至服务器,服务器将其转发给处理表单的程序,程序执行完成后再发 送回全新的页面。此页面可能是带有新表单( 已经填充某些新数据) 的h t m l , 也有可能是一个确认的页面,或者是具有根据原来表单中输入数据选择的某些选 项的页面。这期间有个问题,在服务器上的程序处理和返回新表单时用户必须等 待。屏幕变成一片空白,等到了服务器返回数据( 绘制页面的数据) 后再重新绘 制页面。用户无法得到立即的反馈,交互性差。 a j a ) 【基本上可以理解为就是把j a v a s 谢p t 技术和l h 郇r e q u e s t 对象放 在w 曲表单和服务器之间。当用户填写表单时,数据被发送给一些j a v a s 嘶p t 代 码而不会直接发送到服务器端。相反,j a v a s c r i p t 代码捕获到表单的数据并向服务 器端发送请求。而与此同时,用户屏幕上的表单不会闪烁、消失或延迟。也就是 说,j a v a s c r i p t 代码在后台发送请求,用户甚至不知道这些,不知道j a v a s 嘶p t 在 后台对服务器发送了请求。更棒的是,请求是异步发送的,就是说j a v a s 嘶p t 代 码( 和用户) 不用等待服务器的响应。从而用户可以继续输入数据、滚动屏幕和 使用应用程序,而不会出现像之前的屏
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年4月北京门头沟龙泉镇城市协管员招聘1人考前自测高频考点模拟试题及答案详解(易错题)
- 2025昆明市第三人民医院重症医学科见习护理人员招聘(7人)模拟试卷及完整答案详解1套
- 2025春季河南新乡工商职业学院招聘考前自测高频考点模拟试题及答案详解1套
- 2025年中职高考对口升学(理论考试)真题卷【旅游大类】模拟练习
- 2025河南郑州市中华保险招聘模拟试卷及答案详解参考
- 2025辽宁抚顺高新热电有限责任公司招聘专业技术人员18人考前自测高频考点模拟试题及答案详解参考
- 安全培训效果评语课件
- 2025年山东第一医科大学附属省立医院(山东省立医院)公开招聘部分紧缺岗位聘用制工作人员(58人)模拟试卷及一套完整答案详解
- 2025广东阳春市高校毕业生就业见习招募31人(第三期)模拟试卷及答案详解(必刷)
- 安全培训效果考核课件
- 2023类器官技术与行业研究报告-复刻结构重现功能 构建组织器官替身
- 国有资产交易法律实务与疑难问题
- 初中毕业证在哪里查询
- 名词语法讲解
- GB/T 5796.4-2022梯形螺纹第4部分:公差
- 小数乘整数教案 省赛一等奖
- 妇产科用药指南
- 智能电网-课件
- 安全文明施工措施费清单五篇
- 《战略的本质》读书分享
- 《城镇燃气室内工程施工与质量验收规范》CJJ94-2009
评论
0/150
提交评论