仓酷云

标题: JAVA网站制作之论JSP数据库毗连池的需要性 [打印本页]

作者: 简单生活    时间: 2015-1-18 11:11
标题: JAVA网站制作之论JSP数据库毗连池的需要性
通过视频学习比传统的大课堂学习更适合成人化的学习规律。有人说大课堂气氛好,学习氛围浓,热闹,可以认识很多人。js|数据|数据库|数据库毗连  一样平常情形下,在利用开辟基于数据库的WEB程序时,传统的形式基础是按以下步骤:
  
  1.在主程序(如Servlet、Beans)中创建数据库毗连。
  
  2.举行SQL操纵,掏出数据。
  
  3.断开数据库毗连。
  
  利用这类形式开辟,存在良多成绩。起首,我们要为每次WEB哀求(比方观察某一篇文章的内容)创建一次数据库毗连,关于一次或几回操纵来说,也许你发觉不到体系的开支,可是,关于WEB程序来说,即便在某一较短的工夫段内,其操纵哀求数也远远不是一两次,而是数十上百次(想一想全球的网友都有大概在您的网页上查找材料),在这类情形下,体系开支是相称年夜的。
  
  现实上,在一个基于数据库的WEB体系中,创建数据库毗连的操纵将是体系中价值最年夜的操纵之一。良多时分,大概您的网站速率瓶颈就在于此。
  
  其次,利用传统的形式,你必需往办理每个毗连,确保他们能被准确封闭,假如呈现程序非常而招致某些毗连未能封闭,将招致数据库体系中的内存保守,终极我们将不能不重启数据库。
  
  针对以上成绩,我们起首想到能够接纳一个全局的Connection对象,创立后就不封闭,今后程序一向利用它,如许就不存在每次创立、封闭毗连的成绩了。可是,统一个毗连利用次数过量,将会招致毗连的不不乱,进而会招致WEBSERVER的一再重启。
  
  故而,这类办法也不成取。实践上,我们可使用毗连池手艺来办理上述成绩。起首,先容一下毗连池手艺的基础道理。望文生义,毗连池最基础的头脑就是事后创建一些毗连安排于内存对象中以备利用:
   
JAVA网站制作之论JSP数据库毗连池的需要性
登录/注册后可看大图

  如图所示,当程序中必要创建数据库毗连时,只须从内存中取一个来用而不必新建。一样,利用终了后,只需放回内存便可。而毗连的创建、断开都有毗连池本身来办理。同时,我们还能够经由过程设置毗连池的参数来把持毗连池中的毗连数、每一个毗连的最年夜利用次数等等。经由过程利用毗连池,将年夜年夜进步程序效力,同时,我们能够经由过程其本身的办理机制来监督数据库毗连的数目、利用情形等。上面我们以一个名为ConnectionPool的毗连池为例来看看毗连池的完成。先看看ConnectionPool的基础属性:
  
  m_ConnectionPoolSize:
  毗连池中毗连数目上限
  m_ConnectionPoolMax:
  毗连池中毗连数目下限
  m_ConnectionUseCount:
  一个毗连的最年夜利用次数
  m_ConnectionTimeout:
  一个毗连的最漫空闲工夫
  m_MaxConnections=-1:
  统一工夫的最年夜毗连数
  m_timer:准时器
  
  这些属性界说了毗连池与个中的每一个毗连的无效形态值。毗连池的自我办理,实践上就是经由过程准时的对每一个毗连的形态、毗连的数目举行判别而举行响应操纵。其办理流程以下:
   
JAVA网站制作之论JSP数据库毗连池的需要性
登录/注册后可看大图

  经由过程上图,我们能够界说出ConnectionPool要完成办理所必要的基础接口:
  
  publicclassConnectionPool
  implementsTimerListener
  {
  publicbooleaninitialize()
  //毗连池初始化
  publicvoiddestroy()
  //毗连池的烧毁
  publicsynchronizedjava.sql.Connection
  getConnection()
  //取一个毗连
  publicsynchronizedvoidclose()
  //封闭一个毗连
  privatesynchronized
  voidremoveFromPool()
  //把一个毗连从毗连池中删除
  privatesynchronized
  voidfillPool()
  //保护毗连池巨细
  publicsynchronized
  voidTimerEvent()
  //准时器事务处置函数
  }
  
  经由过程这几个接口,已能够完成毗连池的基础办理。在TimeEvent()函数中完成毗连池的形态查验事情,fillPool()时毗连池最少坚持最小毗连数。由于我们要保留每个毗连的形态,以是还必要一个数据库毗连对象:
  
  classConnectionObject
  {
  publicjava.sql.Connectioncon;
  publicbooleaninUse;
  //是不是被利用标记
  publiclonglastAccess;
  //比来一次入手下手利用工夫
  publicintuseCount;
  //被利用次数
  }
  
  到场了ConnectionObject对象后,在ConnectionPool中操纵的应当只是ConnectionObject,而其他历程必要的只是ConnectionObject的con属性,因而我们再到场一个类,作为其他历程取得与前往毗连的接口:
  
  CLASSConn
  {
  GetConnection();
  //从毗连池中掏出一个无效毗连
  CloseConnection();
  //前往毗连,此时并没有封闭毗连,只是放回了毗连池
  DestroyPool();
  //烧毁毗连池
  }
  
  最初我们的全部体系总的架构以下:
  
JAVA网站制作之论JSP数据库毗连池的需要性
登录/注册后可看大图

对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net也不过3,4本书足以,这就是区别。
作者: 爱飞    时间: 2015-1-20 16:42
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
作者: 乐观    时间: 2015-1-29 13:05
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
作者: 不帅    时间: 2015-2-6 01:09
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者: 飘灵儿    时间: 2015-2-14 19:31
是一种语言,用以产生「小应用程序(Applet(s))
作者: 金色的骷髅    时间: 2015-3-4 09:57
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
作者: 深爱那片海    时间: 2015-3-11 18:10
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
作者: 灵魂腐蚀    时间: 2015-3-19 06:21
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: 再现理想    时间: 2015-3-27 09:11
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2