09 2019 档案
摘要:所属文章:池化技术(一)Druid是如何管理数据库连接的? 本代码段对应主流程5,连接的回收: //DruidPooledConnection类的close方法 @Override public void close() throws SQLException { if (this.disable)
阅读全文
摘要:所属文章:池化技术(一)Druid是如何管理数据库连接的? 本代码段对应流程4.2,防止内存泄漏的连接关闭检测: //回收长期未归还的连接(再次说明:该方法仅在removeAbandoned设置为true的情况下触发) public int removeAbandoned() { int remov
阅读全文
摘要:所属文章:池化技术(一)Druid是如何管理数据库连接的? 本代码段对应流程4.1,连接池瘦身: //连接池瘦身 public void shrink(boolean checkTime, boolean keepAlive) { try { lock.lockInterruptibly(); }
阅读全文
摘要:所属文章:池化技术(一)Druid是如何管理数据库连接的? 本代码段对应主流程4,丢弃连接的守护线程: //连接池瘦身,参考主流程4 public class DestroyConnectionThread extends Thread { public DestroyConnectionThrea
阅读全文
摘要:所属文章:池化技术(一)Druid是如何管理数据库连接的? 本代码段对应主流程3,新增连接的守护线程: //DruidDataSource的内部类,对应主流程3,用来补充连接 public class CreateConnectionThread extends Thread { public Cr
阅读全文
摘要:所属文章:池化技术(一)Druid是如何管理数据库连接的? 本代码段对应流程1.4,抛弃连接: //丢弃连接 public void discardConnection(Connection realConnection) { JdbcUtils.close(realConnection); //c
阅读全文
摘要:所属文章:池化技术(一)Druid是如何管理数据库连接的? 本代码段对应流程1.3,连接可用性测试: //数据库连接可用性测试 protected boolean testConnectionInternal(DruidConnectionHolder holder, Connection conn
阅读全文
摘要:所属文章:池化技术(一)Druid是如何管理数据库连接的? 本代码段对应流程1.2,真正获取连接的执行: private DruidPooledConnection getConnectionInternal(long maxWait) throws SQLException { //可用性判断 i
阅读全文
摘要:所属文章:池化技术(一)Druid是如何管理数据库连接的? 本代码段对应流程1.1,责任链的执行: //DruidDataSource类里的方法:获取连接 public DruidPooledConnection getConnection(long maxWaitMillis) throws SQ
阅读全文
摘要:所属文章:池化技术(一)Druid是如何管理数据库连接的? 本篇为「工具人」文章,建议直接用「ctrl+f」进行查找属性、方法、类名,快速了解其含义和所属类。 主要流程里主要涉及到的类名称、类属性、类方法如下图(淡黄色表示属性,淡蓝色表示方法): 类图 DruidAbstractDataSource
阅读全文
摘要:所属文章:池化技术(一)Druid是如何管理数据库连接的? 本代码段对应主流程2,具体用来初始化整个连接池: public void init() throws SQLException { if (inited) { return; //如果已经被初始化过,则终止该方法 } // bug fixe
阅读全文
摘要:所属文章:池化技术(一)Druid是如何管理数据库连接的? 本代码段对应主流程1,具体用来获取一个连接: lic DruidPooledConnection getConnection(long maxWaitMillis) throws SQLException { init(); //初始化,即
阅读全文