自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 2022-05-19 Druid源码阅读——Druid相关配置参数

Druid基本信息配置配置缺省值说明name如果存在多数据源的情况下用于区分数据源,如果没有配置将生成一个名字,格式为DataSource-" + System.identityHashCode(this)数据库连接配置配置缺省值说明url数据库连接urlusername连接数据库的用户名password连接数据库的密码driverClassName数据库驱动连接池配置配置缺省值说明as

2022-05-21 01:40:53 386

原创 2022-05-19 Druid源码阅读——removeAbandoned参数(二)

1.removeAbandoned如何排查连接泄露1.1 什么是连接泄露连接池中连接数同一时间被用光(长SQL、连接执行完成后没有及时归还等均有可能造成),超过获取连接最大等待时间后仍然没有获取到连接。1.2 如何通过removeAbandoned排查连接泄露通过开启removeAbandoned参数,使其在每次获取连接时记录当前线程的堆栈信息。public DruidPooledConnection getConnectionDirect(long maxWaitMillis) throws S

2022-05-20 05:46:01 2440

原创 2022-05-18 Druid源码阅读——removeAbandoned参数(一)

1.removeAbandonedremoveAbandoned功能常用来进行连接泄露检查,该功能共有三个参数进行组合配置。参数类型默认值含义removeAbandonedBooleanfalse是否开启removeAbandoned功能removeAbandonedTimeoutLong300000活动时间超过该参数值的连接将被自动回收logAbandonedBooleanfalse是否开启日志打印回收信息2.removeAbandoned功

2022-05-18 23:42:44 1876

原创 2022-05-17 Druid源码阅读——Druid在什么时候会创建连接(二)

CreateConnectionTask#runInternalCreateConnectionTask是用于Druid中用于创建连接的任务,实现了Runnable接口,主要用于向线程池中提交任务。public class CreateConnectionTask implements Runnable { private int errorCount = 0; private boolean initTask = false; private final long t..

2022-05-18 00:07:25 551

原创 2022-05-16 Druid源码阅读——Druid在什么时候会创建连接(一)

1.Druid如何创建连接Druid连接池所持有的连接对象为DruidConnectionHolder,其内部持有Connection类型的连接对象,该连接由构造方法进行引用,该方法被类中其他构造函数所调用,发现其DruidConnectionHolder(DruidAbstractDataSource dataSource, PhysicalConnectionInfo pyConnectInfo)构造方法中含有PhysicalConnectionInfo类型,遂查看该类型的构造方法。public D

2022-05-17 00:00:00 519

原创 2022-05-14 Druid源码阅读——Druid连接检查机制

1.Druid提供的校验参数Druid对于连接校验提供了六个参数,其中testOnBorrow、testOnReturn、testWhileIdle是Druid所提供的连接校验时点,其余三个参数为校验的相关配置。配置缺省值说明validationQuery用来检测连接是否有效的sql,要求是一个查询语句,常用select ‘x’。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。val

2022-05-15 00:24:22 2911

原创 2022-05-13 Druid源码阅读——PreparedStatementPool的结构

1.PreparedStatementPool的数据结构在PreparedStatementPool中,成员变量除了日志外,只有两项,一项为LRUCache类型的map,另一项为DruidAbstractDataSource的dataSource,其中map属性为已缓存语句的存储结构,dataSource为当前连接池的指向。public class PreparedStatementPool { private final static Log LOG = LogFactory.getLog(P

2022-05-14 01:01:09 747

原创 2022-05-12 Druid源码阅读——poolPreparedStatements是如何控制缓存游标的?

在Druid预编译SQL时,会检查是否开启poolPreparedStatements参数缓存预编译SQL,这些预编译的SQL存放在哪里?在什么时候进行存放?1.如何开启poolPreparedStatements(PSCache)功能需要注意的是,maxPoolPreparedStatementPerConnectionSize的加载顺序在poolPreparedStatements之后,如果将maxPoolPreparedStatementPerConnectionSize设置为负数,则poo.

2022-05-12 23:56:19 4438

原创 2022.05.11 Druid源码阅读——为什么DruidDriver.getInstance()会加载其他驱动?

1.获得静态单例public class DruidDriver implements Driver, DruidDriverMBean { private final static DruidDriver instance = new DruidDriver(); /** * 此方法将返回在DruidDriver中所定义的单例 * @return */ public static DruidDriver getInstance() { return instance; }

2022-05-11 22:25:34 248

原创 2022.05.10 Druid源码阅读——Druid预编译SQL的执行过程

Druid预编译SQL

2022-05-10 23:30:42 720

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除