关于连接池有不少技术可以用,例如c3p0,druid等等,因为druid有监控平台,性能在同类产品中算top0的。所以我采用的事druid连接池。

首先熟悉一个技术,我们要搞明白,为什么要用他, 他能帮我们解决什么问题?

如果不使用连接池会出现的情况:
a.占用服务器的内存资源
b.导致服务器的速度非常慢
1.准备

下载druid1.9的jar包和对应数据库的驱动包。

https://mvnrepository.com/artifact/com.alibaba/druid/1.0.9

2.代码

2.1db.properties

  1. driverClassName=net.sourceforge.jtds.jdbc.Driver
  2. url=jdbc:jtds:sqlserver:/XXXXX:1433/szqxjimg;SelectMethod=Cursor;DatabaseName=szqxjimg
  3. username=sa
  4. password=123456
  5.  
  6. # 配置参数,让ConfigFilter解密密码
  7. #connectionProperties=config.decrypt=true;config.decrypt.key=xxxx
  8.  
  9. # 监控统计拦截的filters
  10. filters=stat
  11.  
  12. # 初始化时建立物理连接的个数,初始化发生在显示调用init方法,或者第一次getConnection时
  13. initialSize=1
  14. # 最大连接池数量
  15. maxActive=10
  16. # 最小连接池数量
  17. minIdle:1
  18. # 获取连接等待超时的时间,单位毫秒
  19. maxWait=60000
  20.  
  21. # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
  22. # 有两个含义:1) Destroy线程会检测连接的间隔时间 2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
  23. timeBetweenEvictionRunsMillis=60000
  24. # 一个连接在池中最小生存的时间,单位是毫秒
  25. minEvictableIdleTimeMillis=300000
  26.  
  27. # 用来检测连接是否有效
  28. validationQuery=SELECT 1
  29. # 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效
  30. testWhileIdle=true
  31. # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
  32. testOnBorrow=false
  33. # 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
  34. testOnReturn=false
  35.  
  36. # 是否缓存preparedStatement,也就是PSCache
  37. poolPreparedStatements=true
  38.  
  39. maxPoolPreparedStatementPerConnectionSize=200

2.2代码

  1. package com.qihui.qxj.utils;
  2.  
  3. import java.io.InputStream;
  4. import java.sql.Connection;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.sql.Statement;
  8. import java.util.Properties;
  9.  
  10. import javax.sql.DataSource;
  11.  
  12. import com.alibaba.druid.pool.DruidDataSourceFactory;
  13. import com.qihui.qxj.services.system.Brand;
  14.  
  15. public class DruidUtil {
  16.  
  17. private static Properties p;
  18. private static DataSource dataSource;
  19.  
  20. static {
  21. try {
  22. ClassLoader loader = Thread.currentThread().getContextClassLoader();
  23. InputStream inputStream = loader.getResourceAsStream("db.properties");
  24. p = new Properties();
  25. p.load(inputStream);
  26. // 通过工厂类获取DataSource对象
  27. dataSource = DruidDataSourceFactory.createDataSource(p);
  28. } catch (Exception e) {
  29. e.printStackTrace();
  30. }
  31. }
  32.  
  33. public static Connection getConnection() {
  34. try {
  35. return dataSource.getConnection();
  36. } catch (Exception e) {
  37. e.printStackTrace();
  38. }
  39. return null;
  40. }
  41.  
  42. public static void close(Connection conn, Statement state, ResultSet result) {
  43.  
  44. try {
  45. if (result != null) {
  46. result.close();
  47. }
  48. } catch (SQLException e) {
  49. e.printStackTrace();
  50. } finally {
  51. try {
  52. if (conn != null) {
  53. conn.close();
  54. }
  55. } catch (SQLException e) {
  56. e.printStackTrace();
  57. } finally {
  58. try {
  59. if (state != null) {
  60. state.close();
  61. }
  62. } catch (SQLException e) {
  63. e.printStackTrace();
  64. }
  65. }
  66. }
  67. }
  68.  
  69. public static void main(String[] args) {
  70. Brand brand = new Brand();
  71. long startTIme =System.currentTimeMillis();
  72. for (int i = 0; i < 1000; i++) {
  73. String selectBrand = brand.getSelectBrand();
  74. }
  75. long endTime =System.currentTimeMillis();
  76. System.out.println(endTime- startTIme);
  77. }
  78. }

3.结论

通过多次测试,发现,循环查询1000次,不使用连接池,查询性能为7500ms,使用连接池后,查询速度为1515ms,可以看出查询性能优化勒很多。

Druid连接池(无框架)的更多相关文章

  1. Druid连接池和springJDbc框架-Java(新手)

    Druid连接池: Druid 由阿里提供 安装步骤: 导包 durid1.0.9 jar包 定义配置文件 properties文件 名字任意位置也任意 加载文件 获得数据库连接池对象 通过Durid ...

  2. spring+mybatis+c3p0数据库连接池或druid连接池使用配置整理

    在系统性能优化的时候,或者说在进行代码开发的时候,多数人应该都知道一个很基本的原则,那就是保证功能正常良好的情况下,要尽量减少对数据库的操作. 据我所知,原因大概有这样两个: 一个是,一般情况下系统服 ...

  3. SpringBoot2.0 基础案例(07):集成Druid连接池,配置监控界面

    一.Druid连接池 1.druid简介 Druid连接池是阿里巴巴开源的数据库连接池项目.Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能.功能强大,能防SQL注入,内置Login ...

  4. Spring Boot (四): Druid 连接池密码加密与监控

    在上一篇文章<Spring Boot (三): ORM 框架 JPA 与连接池 Hikari> 我们介绍了 JPA 与连接池 Hikari 的整合使用,在国内使用比较多的连接池还有一个是阿 ...

  5. Java开发笔记(一百五十一)Druid连接池的用法

    C3P0连接池自诞生以来在Java Web领域反响甚好,业已成为hibenate框架推荐的连接池.谁知人红是非多,C3P0在大型应用场合中暴露了越来越多的局限性,包括但不限于下列几点:1.C3P0管理 ...

  6. druid连接池获取不到连接的一种情况

    数据源一开始配置: jdbc.initialSize=1jdbc.minIdle=1jdbc.maxActive=5 程序运行一段时间后,执行查询抛如下异常: exception=org.mybati ...

  7. 使用druid连接池的超时回收机制排查连接泄露问题

    在工程中使用了druid连接池,运行一段时间后系统出现异常: Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: ...

  8. Druid连接池

    Druid 连接池简介 Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.J ...

  9. 使用MyBatis集成阿里巴巴druid连接池(不使用spring)

    在工作中发现mybatis默认的连接池POOLED,运行时间长了会报莫名其妙的连接失败错误.因此采用阿里巴巴的Druid数据源(码云链接 ,中文文档链接). mybatis更多数据源参考博客链接 . ...

随机推荐

  1. go语言入门(3)运算符及流程控制

    1,运算符 算数运算符:+   -   *   /   %   ++   -- 关系运算符:==    !=    <    >    <=    >== 逻辑运算符:按位与 ...

  2. 能当壁纸用的Git常用命令速查表

    使用Microsoft Office 2016手工绘制. 链接: https://pan.baidu.com/s/18KsH-u5T2iSTHaXd6iQWGA 提取码: w8da 复制这段内容后打开 ...

  3. 第八章·Logstash深入-通过TCP/UDP收集日志

    1.收集TCP/UDP日志 通过logstash的tcp/udp插件收集日志,通常用于在向elasticsearch日志补录丢失的部分日志,可以将丢失的日志通过一个TCP端口直接写入到elastics ...

  4. kubernetes资源清单之DaemonSet

    什么是 DaemonSet? DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本.当有节点加入集群时,也会为他们新增一个 Pod . 当有节点从集群移除时,这些 Pod 也会被回收 ...

  5. main特别之处

    //package new_Object; public class Main{ public static void main(String[] args) { System.out.println ...

  6. python常用模块:模块练习

    今日作业: 1.简述 什么是模块 模块就将一些函数功能封装在一个文件内,以‘文件名.py’命名,以“import 文件名”方式调用 模块有哪些来源  自定义.内置.DLL编译器.包模块的格式要求有哪些 ...

  7. sql like 拼接字符串模糊查询

    这种分割的值大家常用,如果要用like 来查询包含2,这个值的数据有哪些,这个怎么查? like '%2%'  ????,这是不行的如果是 44,125,687 同样可以查出来,那么就想到通配符, l ...

  8. DP tricks and experiences

    [LeetCode] 关于动态规划的经验与技巧. 很多时候多分配一位空间是为了递推的方便,例如前推两位. 辅助数组的索引,用到的可能是 1 — N,或者是 0 — N-1. 具体要看清 f[i] 每一 ...

  9. for(auto count:counts)

    c++中for(auto count : counts) 这是C++11中的语法,即:Range-based for loop.其中counts应满足:begin(counts), end(count ...

  10. 第二章 Vue快速入门--7 讲解v-cloak、v-text、v-html的基本使用

    7 讲解v-cloak.v-text.v-html的基本使用 <!DOCTYPE html> <html lang="en"> <head> & ...