druid 教程

参考文献: [druid 常见问题](https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98) [池化技术(一)Druid是如何管理数据库连接的? ](https://www.cnblogs.com/ham

Druid 

druid 类图 属性表

参考文献:Druid-类图-属性表 本篇为「工具人」文章,建议直接用「ctrl+f」进行查找属性、方法、类名,快速了解其含义和所属类。 1. 类图 主要流程里主要涉及到的类名称、类属性、类方法如下图(淡黄色表示属性,淡蓝色表示方法): 2. DruidAbstractDataSource 抽象类 这

Druid 

druid 回收连接

// DruidPooledConnection 类的 close 方法 public void close() throws SQLException { //检查,因为该连接对象是抛出去给别的业务线程使用,也就是说并不受连接池本身管控,所以很可能存在多线程同时 close 的操作,因此这

Druid 

druid 连接瘦身-主动回收连接

// 回收长期未归还的连接(再次说明:该方法仅在 removeAbandoned 设置为 true 的情况下触发) public int removeAbandoned() { int removeCount = 0; long currrentNanos = System.nan

Druid 

druid 丢弃连接的守护线程

// 连接池瘦身,参考主流程4 public class DestroyConnectionThread extends Thread { public DestroyConnectionThread(String name) { // 给线程重命名 sup

Druid 

druid 连接可用性测试

// 数据库连接可用性测试 protected boolean testConnectionInternal(DruidConnectionHolder holder, Connection conn) { String sqlFile = JdbcSqlStat.getContextSql

Druid 

druid 获取连接实现

private DruidPooledConnection getConnectionInternal(long maxWait) throws SQLException { // 可用性判断 if (closed) { connectErrorCountUpdate

Druid 

druid 责任链

// DruidDataSource 类里的方法:获取连接 public DruidPooledConnection getConnection(long maxWaitMillis) throws SQLException { init(); // 责任链上的 filter 存在

Druid 

druid 连接池瘦身

// 连接池瘦身 public void shrink(boolean checkTime, boolean keepAlive) { try { lock.lockInterruptibly(); } catch (InterruptedException e) {

Druid 

druid 获取连接源码

public DruidPooledConnection getConnection(long maxWaitMillis) throws SQLException { // 初始化,即主流程2 init(); if (filters.size() > 0) {

Druid