深爱那片海 发表于 2015-1-18 11:17:52

JAVA编程:最年夜化J2EE和数据库交互操纵功能

手机用到的是用j2me所编出来的小程序。j2ee|交互|数据|数据库|功能|最年夜化<Pstyle="TEXT-INDENT:2em">概述:<Pstyle="TEXT-INDENT:2em">年夜多半使用程序功能办理(APM)办理计划都只思索和剖析J2EE使用程序的某个条理的功能成绩。这类办法不敷以办理架构庞大的使用程序的功能成绩。优秀的APM工具应当可以让你从J2EE层深切到数据库层以确保功能成绩被疾速地办理。<Pstyle="TEXT-INDENT:2em">情形并不是愈来愈好,公司的网站功能下落到了极低点,丢失的客户入手下手寻觅别的厂商了。IT查询拜访机构入手下手查询拜访而且以为J2EE使用程序是呼应工夫较差的祸首罪魁。这当即给J2EE开辟小组带来了很年夜的压力,他们必需断定并办理这个成绩。<Pstyle="TEXT-INDENT:2em">J2EE开辟小组在举行了一些最后的查询拜访以后,他们以为成绩并非出在J2EE层,而是一向能够跟踪到数据库中。可是数据库小组辩驳说成绩实践出在J2EE层。互相之间的叱责不休增添,小组互助精力消散了,凌乱入手下手盛行,客户和支出延续削减。<Pstyle="TEXT-INDENT:2em">下面的这类情形凸起了一个严重需求:为了支持J2EE和数据库层之间更好的交互操纵才能,IT部门必需可以疾速和判断地做出决意。<Pstyle="TEXT-INDENT:2em">基础的应战:找出成绩的原因<Pstyle="TEXT-INDENT:2em">当呼应工夫的提早赶走了Web站点的用户的时分,J2EE开辟者就不能不到场这个互相叱责的游戏中了。在两头层开辟使用程序的程序员必需与数据库交互操纵,当功能瓶颈呈现的时分,假如数据库是上层的原因,成绩也显现在J2EE层。实在真实的成绩在于交互操纵。怎样最好地调治这两个条理之间的综合干系以猎取使用程序的最好功能?更深切一点,怎样检察这些瓶颈、辨认真实的成绩原因,并尽量快地处置这些成绩呢?<Pstyle="TEXT-INDENT:2em">良多APM(使用程序功能办理)工具都能够帮助我们辨认息争决这些功能成绩。查找J2EE使用程序中的瓶颈的最经常使用的两种办法是:<Pstyle="TEXT-INDENT:2em">1、利用带分歧色彩警报的仪表程序来监督体系的形态。绿色的意义是优秀的,黄色或白色意味着你必需处置功能成绩了。这个仪表程序还能够呈报体系中分歧的组件的呼应工夫。<Pstyle="TEXT-INDENT:2em">2、不是守候功能好转到必定水平才往跟踪仪表程序的告诫信息,而是接纳事后防护的办法并试图辨认出过量的呼应工夫或资本利用。你能够经由过程反省顶层服务哀求(依据呼应工夫)并进一步剖析它们挪用了甚么组件来完成如许的操纵。<Pstyle="TEXT-INDENT:2em">假定有一个银行体系。一个检察帐户信息的主顾会见了你的Web站点以猎取已往七天本人的帐户的提要信息。该主顾点击了"猎取帐户提要信息"链接。<Pstyle="TEXT-INDENT:2em">猎取帐户提要信息的历程是经由过程Web扫瞄器挪用某个特定的URL来完成的。固然,鄙人层,它挪用了良多组件,这些组件交互操纵来供应准确的输入信息。在查找瓶颈的过程当中,你从顶层的挪用(多是doGet()或doPost()办法)入手下手,循着挪用树检察"猎取帐户提要信息"服务挪用的一切组件,接着检察这些组件所挪用的组件,一向到最底层,在良多情况中,它多是利用JDBC(Java数据库毗连)挪用数据库的SQL语句。<Pstyle="TEXT-INDENT:2em">你必需晓得这些组件中哪些消费的工夫太长了,可是接纳这类体例慢慢剖析的时分会消费良多工夫,履历良多烦心的历程,在你对它们中一般脚色不是太熟习的时分特别云云。你必需检察每一个组件,并扣问本人它消费的工夫是不是太长?用10秒钟来天生输入信息以呼应"猎取帐户提要信息"是必需的吗?你也不是出格一定,由于假如要懂得这些信息的话,你必需晓得上层的每一个办法或程序组件是怎样运转的细节信息。独一晓得这些信息的人生怕只要某个特定组件的开辟职员。假如你嫌疑成绩出在数据库的呼应工夫上,那末就必要接洽数据库小组进一步研讨这个成绩。断绝SQL语句<Pstyle="TEXT-INDENT:2em">假定检索帐户信息消费了太长的工夫。每一个哀求帐户提要信息的用户必要守候15秒才会有呼应。那末成绩会出在数据库一方吗?有无多是使用程序代码的成绩?收集的成绩?乃至于多是该用户的互联网毗连太慢的成绩呢?<Pstyle="TEXT-INDENT:2em">可是,在这类情形下你假如嫌疑是数据库检索的成绩就是应当遭到叱责的。查找原因的一个办法是让APM工具显现使用程序收回的一切SQL语句,依照呼应工夫举行排序,如许你就能够看到某个SQL语句是不是由于堕落的缘故原由消费了太长工夫(有些SQL语句会消费很长工夫--比方按帐户检索一年内一切事件的列表)。<Pstyle="TEXT-INDENT:2em">如今你检察一下位于列表顶部的SQL语句。它进进数据库并消费了1秒钟呼应。如许的功能不是太差;假如这是功能最差的SQL语句,那末成绩大概基本不在SQL语句中。因而,接上去的成绩是:是否是使用程序层出了甚么成绩呢?谁在挪用这个语句?挪用了几次?假如某个使用程序挪用SQL语句的次数凌驾了你的预期,你就有来由嫌疑使用程序出了妨碍。<Pstyle="TEXT-INDENT:2em">APM工具此次又能够匡助你了。你能够复杂地址击该SQL语句,会呈现一个链接,显现出它的全部挪用树,从主顾哀求帐户提要信息入手下手,到进进数据库的SQL语句为止。如今你具有了两部分信息:你能一定本人在检察该服务哀求的某个特定哀求;你能够看到每一个自力的组件对呼应工夫的影响。<Pstyle="TEXT-INDENT:2em">如今你能够检察挪用该SQL语句的组件申明,而且你发明它的呼应工夫是9秒钟。很分明,它是形成客户守候15秒钟的次要要素。APM工具显现的列表同时显现出这个组件7次挪用了该SQL语句。这就告知你9秒中年夜部分是挪用SQL语句损耗的。该组件不但实行了过量的盘算,还屡次挪用了SQL语句。如许的操纵大概有些很好的缘故原由,可是任何功能办理工具都不克不及申明其原因。最主要的是你已指出了必需举行查询拜访的程序组件。优秀的APM工具还能够为办理这个成绩供应一些倡议。<Pstyle="TEXT-INDENT:2em">真的是数据库的成绩吗?<Pstyle="TEXT-INDENT:2em">让我们从另外一个角度来看这个成绩。假定该组件并没有屡次挪用SQL语句,它只挪用了一次,可是此次挪用却损耗了15秒中的年夜部分。如今的成绩是,为何单个语句必要那末长工夫实行呢?这个成绩不在代码中,因而它大概在数据库那一端。<Pstyle="TEXT-INDENT:2em">你如今必要的是功能办理工具同意你对特定服务哀求(猎取帐户提要信息)的查询拜访深切到数据库层。请前往你失掉的SQL语句列表,点击你感乐趣的SQL语句的链接,它会把你从J2EE端带到数据库端。如今你在检察Oracle数据库或别的数据库产物情况中的SQL语句。该工具大概匡助你查明数据库真个成绩,还大概供应一些专业的调剂倡议,数据库办理员(DBA)可使用这些倡议来进步数据库的功能。成绩大概出在寄存数据表空间的磁盘功能较差,倡议把它挪动到另外一个磁盘上;也多是丧失了某个索引,你能够经由过程创建新索引来进步速率;大概是数据库上并交运行了太多的线程,你必需对这些线程举行断绝以削减并发性成绩。<Pstyle="TEXT-INDENT:2em">另有别的一些大概性。数据检索大概消费太多的工夫,由于消费了很长工夫守候猎取数据库毗连。代码是优秀的,数据库运转也一般,可是如许的守候工夫大概告知你数据库毗连池不敷年夜,没法处置大批的乃至于一般的通信。你能够查询使用程序服务器,懂得已界说了几个毗连,把这个数字与典范的并发哀求数举行对照,很快就能够断定是不是必要更多的毗连了。<Pstyle="TEXT-INDENT:2em">进步交互操纵才能<Pstyle="TEXT-INDENT:2em">你的功能办理工具不但必要辨认出J2EE层呼应工夫的组成要素。它还应当可以让你看到J2EE层和相邻的数据库层之间的交互操纵情形,并为剖析这两个条理上的功能成绩供应办法。为了高效力地处置功能成绩,J2EE开辟者和DBA利用综合的APM产物是需要的。它同时还让J2EE和数据库小组"用统一种言语措辞"。年夜多半APM办理计划的方针都是架构系统中的单个条理,为单个条理供应诊断信息。利用这类办法的时分,工夫会华侈、互相的叱责会构成风暴、并且常常仍是无从办理成绩。明天庞大的架构和干练的手艺意味着某个条理与别的条理之间的交互操纵所招致的功能成绩用这类路子是没法定位的。如今我们可以利用的最支流的APM工具同意我们从J2EE层跟踪到数据库层,以确保实时地办理功能成绩,而不管成绩来自于哪一个条理。<Pstyle="TEXT-INDENT:2em">结论进步J2EE层和数据库层之间的交互操纵才能带来了分明的上风:加速终极用户的呼应工夫、增添主顾的忠实度、进步士气、服务的底线也更高了。如今我们可使用的初级工具弥补了J2EE层和数据库层之间的裂缝,主动地搜刮瓶颈,查明原因,并为办理成绩供应专门的倡议。每一个J2EE开辟小组都应当仔细地思索这些综合的APM工具给它们的临盆带来的代价。

轮性能微软曾做过一个例子,就是同一个项目用java和.net来作,结果开发周期,.net是java的一半,性能java是.net的十分之一,代码量java是.net的三倍。呵呵,这说明了什么,.net的全方位比java好。但是有的人说.net不能跨平台,这个问题我和我同学曾讨论过,都认为微软的.net很可能早都可以跨平台了,但是微软为了保护他们的操作系统,所以才没有推出跨平台的.net,只是推出了跨语言的.net,

兰色精灵 发表于 2015-1-20 16:32:14

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

再见西城 发表于 2015-1-24 15:08:59

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

蒙在股里 发表于 2015-1-31 11:14:06

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

小魔女 发表于 2015-2-6 19:02:53

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

admin 发表于 2015-2-10 12:00:57

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

活着的死人 发表于 2015-2-12 01:00:05

至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。

海妖 发表于 2015-2-25 19:18:29

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

变相怪杰 发表于 2015-3-8 01:16:35

接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。

若相依 发表于 2015-3-8 18:00:08

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

灵魂腐蚀 发表于 2015-3-19 23:24:40

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
页: [1]
查看完整版本: JAVA编程:最年夜化J2EE和数据库交互操纵功能