- 浏览: 664431 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (173)
- ajax (4)
- ant (4)
- css (14)
- eclipse (1)
- exe4j (0)
- hibernate (7)
- html (29)
- http (2)
- install4j (0)
- java (35)
- javascript (31)
- jdbc (1)
- jquery (2)
- jsp (15)
- linux命令 (8)
- ooad (2)
- properties (3)
- servlet (1)
- spring (3)
- struts (6)
- swing (4)
- thread (2)
- version_control (1)
- webservice (4)
- xml (4)
- 数据库 (19)
- 正则表达式 (5)
- 其他 (16)
- 面试题 (1)
- 框架 (9)
- maven (1)
- util (29)
- 设计模式 (1)
最新评论
-
herodie4444:
看起来好像不难。
Java Struts2创建Excel文件并实现文件下载 -
心轨翼:
Java遍历Set集合方法 -
魔鬼的献祭:
...
java的web开发分页工具类 -
Nmxszxsl:
能发一个没有被墙的代码到我的邮箱吗?万分感谢。54365156 ...
Google翻译post提交无长度限制的在线翻译例子 -
782763595:
...
jar包混淆器介绍
这是一个数据库连接池实现的例子,简单实现,含连接等待处理。
配置文件读取类:
工程项目目录下的文件:conf/database.properties
内容:
调用:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.LinkedList; import org.lt.cj.config.ServerProperty; //代理连接类 public class MyDataSource { private static MyDataSource instance = new MyDataSource(); private static String driver = "com.mysql.jdbc.Driver"; private static String url = "jdbc:mysql://127.0.0.1:3306/tmall"; private static String user = "root"; private static String password = "123456"; private static int initCount = 3; // 初始化连接数 private static int maxCount = 10; // 最大连接数 private static int timeout = 100; //连接用完后再次获取连接间隔时间(毫秒) int currentCount = 0; // 当前连接数 // LinkedList方便入列出列操作,性能比ArrayList好 private final LinkedList<Connection> connectionsPool = new LinkedList<Connection>(); public MyDataSource() { try { for (int i = 0; i < this.initCount; i++) { // 把初始化的连接对象存放到链表里面 this.connectionsPool.addLast(this.createConnection()); this.currentCount++; } } catch (SQLException e) { throw new ExceptionInInitializerError(e); } } public static MyDataSource getInstance() { return instance; } //静态内部类在没有新建对象的情况下也可以加载 static { ServerProperty sp = new ServerProperty(); driver = sp.getValue("driver"); url = sp.getValue("databaseUrl"); user = sp.getValue("username"); password = sp.getValue("password"); initCount = Integer.parseInt(sp.getValue("initCount")); maxCount = Integer.parseInt(sp.getValue("maxCount")); timeout = Integer.parseInt(sp.getValue("timeout")); sp.closeI(); try { Class.forName(driver);// 加载驱动程序,供调用,只执行一次 } catch (ClassNotFoundException e) { throw new ExceptionInInitializerError(e); } } public Connection getConnection() { synchronized (connectionsPool) { if (this.connectionsPool.size() > 0) { // 从链表里面删除头一个连接对象,并返回该连接对象 return this.connectionsPool.removeFirst(); } if (this.currentCount < maxCount) { try { this.currentCount++; return this.createConnection(); } catch (SQLException ex) { return null; //无法创建连接,返回空 } } return getConnection(timeout); } } /** * 根据指定延时取得一个连接 */ public synchronized Connection getConnection(long timeout) { Connection con = null; while ((con = getConnection()) == null) { try { Thread.sleep(timeout); } catch (InterruptedException e) { } } return con; } // 释放连接,把当前连接加到链表尾,并没有真正关闭 public void free(Connection conn) { synchronized (connectionsPool) { this.connectionsPool.addLast(conn); } } // 父类引用指向子类对象,生成一个实现对象供使用 private Connection createConnection() throws SQLException { return DriverManager.getConnection(url, user, password); } }
配置文件读取类:
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class ServerProperty { private Properties prop = null; private InputStream in = null; public ServerProperty() { initProperty(); } public ServerProperty(String path) { try { prop = new Properties(); in = new FileInputStream(path); } catch (FileNotFoundException ex) { } } private void initProperty() { try { prop = new Properties(); in = new FileInputStream("conf/database.properties"); } catch (FileNotFoundException ex) { } } private void setIs() { try { if (in == null) { in = new FileInputStream("conf/database.properties"); } } catch (IOException ex) { } } public Properties getProperty() { try { setIs(); prop.load(in); } catch (IOException ex) { } return prop; } public String getValue(String key) { String value = ""; try { setIs(); prop.load(in); value = prop.getProperty(key); } catch (IOException ex) { } return value; } public void closeI() { try { if (in != null) { in.close(); } } catch (IOException ex) { } } }
工程项目目录下的文件:conf/database.properties
内容:
#Oracle config# #driver=oracle.jdbc.driver.OracleDriver #url=jdbc:oracle:thin:@192.168.0.23:1521:ora10g #user=openlab #password=open123 #Mysql config# driver=com.mysql.jdbc.Driver databaseUrl=jdbc:mysql://127.0.0.1:3306/tmall username=root password=123456 #初始连接数 initCount=3 #最大连接数 maxCount=20 #连接用完后再次获取连接间隔时间(毫秒) timeout=100
调用:
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; public class CollectImpl implements ICollectDao { private static final MyDataSource ds = new MyDataSource(); private static Connection conn = null; public Connection getConnection() { return (Connection) ds.getConnection(); } //释放操作 public void closePsRs(PreparedStatement ps, ResultSet rs) { try { if (ps != null) { ps.close(); } if (rs != null) { rs.close(); } } catch (SQLException ex) { } } public void free(Connection conn) { ds.free(conn); } //对分类表进行操作 public void insertCategory(String name, int firstCate, int secondCate, String lanFrom, String toLan, int updated) { conn = getConnection(); System.out.println("---------" + conn); PreparedStatement ps = null; ResultSet rs = null; String sql = "INSERT INTO `" + lanFrom + "_category` (`name`,`first_cate`,`second_cate`,`orig_lan`,`to_lan`,`updated`) VALUES(?,?,?,?,?,?)"; try { ps = (PreparedStatement) conn.prepareStatement(sql); ps.setString(1, name); ps.setInt(2, firstCate); ps.setInt(3, secondCate); ps.setString(4, lanFrom); ps.setString(5, toLan); ps.setInt(6, updated); ps.executeUpdate(); } catch (SQLException ex) { } finally { closePsRs(ps, rs); free(conn); } } }
发表评论
-
hibernate的clob数据处理
2014-05-21 17:11 1103hibernate的clob数据处理: import or ... -
oracle计划任务
2014-04-17 17:38 1054Oracle 在10g 版本以前,计划任务用的是DBMS_JO ... -
Oracle服务器端数据导出导入
2014-04-17 16:53 1472一、数据操作前的准备 (1).创建逻辑目录 登录数据库服务器, ... -
Oracle存储过程删除大批量数据
2014-03-23 01:13 3748参考:http://www.eygle.com/archive ... -
oracle函数
2014-01-21 16:08 1156此文章为我网上搜集的基础上添加了一些新的oracle函数, ... -
Oracle分页查询解析
2012-12-26 22:19 1031Oralce的分页查询 分页查询:可以简化表复杂度,让一张很 ... -
基于hibernate的数据持久化处理简单实现类
2012-09-26 20:03 1775package com.forveross.plane.s ... -
Mysql无法远程连接的问题解决
2011-11-11 14:39 10341、Mysql的端口是否正确 通过netstat -ntlp ... -
MySQL创建用户与授权
2011-11-11 11:43 979一, 创建用户: 命令:CREATE USER ... -
org.hibernate.MappingException: No Dialect mapping for JDBC type: -1 解决方法(转)
2011-09-22 16:13 3681org.hibernate.MappingException: ... -
讲解数据库调优与程序员相关的几个方面
2011-07-29 01:02 810许多程序员在面试时,经常会被问到 “数据库调优”的事情,这时, ... -
Mysql/SQLServer数据类型对应的JDBC类型、JAVA类型、数据类型长度速查表
2011-05-26 21:25 1770Mysql ************************ ... -
修改mysql数据库表结构语句
2011-04-26 14:01 1242修改本地域名IP映射,修改hosts文件,在文件末尾添加一行这 ... -
MySQL数据库InnoDB和MyISAM引擎区别总结(整理)
2011-04-18 13:23 2835我用MySQL的时候用的是Na ... -
Mysql触发器
2011-03-31 16:02 1419Mysql的触发器和存储过程一样,都是嵌入到mysql的一段 ... -
mysql触发器的实战经验 (转)
2011-03-31 15:59 13511 引言 Mysql的触发器和存储过程一样,都是嵌入到m ... -
MySQL索引
2011-03-31 13:53 1198索引用来快速地寻找那 ... -
mysql limit查询优化
2010-03-30 23:58 916MYSQL的优化是非常重要的。其他最常用也最需要优化的就是li ...
相关推荐
`ConnectionPool`可能是项目或类库的命名空间或类,包含实际的数据库连接池实现;`Demo`可能是一个示例应用程序,展示如何使用自定义的数据库连接池。 5. **连接池实现细节**: - **初始化**:在应用程序启动时,...
数据库连接池是现代应用程序开发中的重要组成部分,尤其是在处理大量数据交互的应用中,它极大地提高了数据库操作的效率和系统的稳定性。数据库连接池的概念是预先创建并维护一定数量的数据库连接,这些连接可以被多...
在Delphi这个强大的Windows应用程序开发环境中,实现数据库连接池能够有效地解决频繁创建和销毁数据库连接带来的性能问题。下面我们将详细探讨如何在Delphi中实现数据库连接池,以及其核心概念和优势。 数据库连接...
综上所述,这个压缩包提供了一个全面的数据库连接池实现,适用于多种数据库,包括源码和测试,对于学习和开发数据库相关的应用程序具有很高的价值。通过研究和使用这个实现,开发者可以更好地理解和优化自己项目的...
总的来说,这个代码示例提供了一个基础的MySQL数据库连接池实现,可以作为学习和开发的起点。然而,正如描述中提到的,代码可能存在优化空间,比如错误处理、性能调优等方面,建议开发者根据具体需求进行修改和完善...
7. **连接池实现**:常见的开源数据库连接池实现有C3P0、DBCP、HikariCP、Druid等。自定义连接池需要考虑如何实现这些功能,例如使用`java.sql.Connection`接口和`java.sql.DataSource`接口来管理数据库连接。 8. *...
在JSP中,常见的数据库连接池实现有C3P0、Apache DBCP、HikariCP和Tomcat JDBC Connection Pool等。这些连接池库提供了API供开发者使用。例如,Tomcat JDBC Connection Pool可以集成到Web应用中,通过配置`context....
常见的数据库连接池实现有Apache的DBCP、C3P0,以及HikariCP等。其中,HikariCP以其优秀的性能和稳定性受到广泛欢迎,它的设计理念是“快速失败”和“快速恢复”,提供了极低的连接创建和销毁开销,以及高效的连接...
这时候,就需要手动设计并实现一个自定义的数据库连接池。实现自定义连接池的关键步骤如下: 1. **初始化连接池**:定义连接池的最大连接数、初始连接数等参数,并根据这些参数创建初始的连接。 2. **提供获取连接...
常见的数据库连接池实现有Apache的DBCP、C3P0,以及HikariCP等。其中,HikariCP以其优秀的性能和稳定性受到许多开发者的青睐,它通过零拷贝、最小化锁竞争等手段优化了连接管理,降低了系统开销。 数据库连接池除了...
标题中提到的"各种数据库连接池",包括了c3p、DBCP和Proxool,这些都是Java环境下常见的数据库连接池实现: 1. **C3P0**:这是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。...
在IT领域,数据库连接池是优化数据库访问性能的关键技术之一,尤其在高并发的应用场景下,合理配置数据库连接池能够显著提升系统响应速度并降低资源消耗。本文将深入解析几种常用的数据库连接池——Apache DBCP、C3P...
在实际应用中,有许多成熟的数据库连接池实现,例如 Apache 的 DBCP、C3P0、HikariCP 等,它们提供了更完善的功能,如连接健康检查、自动重连、连接超时处理等,提高了系统的稳定性和效率。开发人员可以根据项目需求...
数据库连接池是数据库管理中的一个重要概念,特别是在使用像C#这样的编程语言进行数据库操作时,它的存在极大地...通过合理的配置和编程实践,我们可以充分利用数据库连接池带来的优势,实现高效、稳定的数据库访问。
为了提高应用程序的性能和资源管理,我们通常会使用数据库连接池。本示例将深入讲解如何在JSP中利用连接池进行数据库连接,以"ConnectionPool.java"作为连接池类,并通过"verifylogin.jsp"和"Login1.jsp"展示实际...
`SqlConnectionPool`就是一种针对SQL Server数据库的连接池实现,它通过管理和重用已建立的数据库连接,减少了创建和销毁连接的开销。 数据库连接池的基本原理是:当一个应用请求一个新的数据库连接时,连接池不会...
通过上述配置,开发者可以实时查看数据库连接池的状态,包括连接数、活跃连接、等待队列长度等,从而对系统性能进行调优。 总结,数据库连接池的选型需要考虑其性能、易用性、监控能力等因素。阿里Druid凭借其丰富...
数据库连接池是Java应用程序中管理数据库连接的一种高效策略,它能显著提高系统性能并减少资源消耗。本篇文章将深入解析一个...理解并掌握数据库连接池的原理和实现,对于优化Java应用程序的性能和稳定性至关重要。