摘要: 原理与概念 1.ReentrantLock原理:多个线程获取锁,一个线程获取到锁,其他线程排队等待锁,并挂起;当获取到锁这个节点释放锁,就会唤醒队伍的头结点。 2.ReentrantLock是个可重入锁,支持公平锁和非公平锁。ReentrantLock默认使用非公平锁,看源码可知。 /** * Cr 阅读全文
posted @ 2020-03-26 21:20 柳无情 阅读(2276) 评论(0) 推荐(0) 编辑
摘要: ·1.创建连接,是跟普通连接不一样的,拿的XA的连接 像mysql,是这个com.mysql.jdbc.jdbc2.optional.MysqlXAConnection public static XAConnection createXAConnection(Driver driver, Conn 阅读全文
posted @ 2022-05-21 00:39 柳无情 阅读(672) 评论(0) 推荐(0) 编辑
摘要: 1.官方解释 当程序存在缺陷时,申请的连接忘记关闭,这时候,就存在连接泄漏了。Druid提供了RemoveAbandanded相关配置,用来关闭长时间不使用的连接。RemoveAbandanded功能不建议在生产环境中使用,仅用于连接泄露检测诊断 参数说明 removeAbandoned 如果连接泄 阅读全文
posted @ 2022-05-20 00:42 柳无情 阅读(460) 评论(0) 推荐(0) 编辑
摘要: 1.keepAlive官方解读 keepAlive false(1.0.28) 连接池中的minIdle数量以内的连接,空闲时间超过minEvictableIdleTimeMillis,则会执行keepAlive操作。 2.这个参数是严格保证连接池里的连接都是存活的,但其实不止官方解读那一个地方 D 阅读全文
posted @ 2022-05-19 00:00 柳无情 阅读(3479) 评论(0) 推荐(0) 编辑
摘要: 1.了解recycle方法,要知道连接池connections,假设连接池已经初始化,连接从connections获取的;事务有两种访问模式read only和read write;read only模式不允许写入修改数据和执行ddl语句,同时可以使存储引擎能够进行性能改进 mysql的原文 set 阅读全文
posted @ 2022-05-17 23:21 柳无情 阅读(554) 评论(0) 推荐(0) 编辑
摘要: 1.Sun公司在数据库的链接方式中只定义了接口java.sql.Driver,并未提供对各个数据库产品的链接实现方式,并且要求各数据库厂商在实现java.sql.Driver接口的同时,要将驱动类注册到java.sql.DriverManager中。 1)譬如mysql怎么把驱动类注册到Driver 阅读全文
posted @ 2022-05-16 23:17 柳无情 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 跑Druid的单元测试 1.连接池参数 private int initialSize = 50; private int minIdle = 3; private int maxIdle = 8; private int maxActive = 50; private String validat 阅读全文
posted @ 2022-05-15 23:48 柳无情 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 1.maxIdle,maxActive,minIdle参数解读,引用官方,https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 maxIdle是Druid为了方便DBCP用户迁移而增加的,maxIdle是 阅读全文
posted @ 2022-05-14 23:25 柳无情 阅读(3034) 评论(0) 推荐(0) 编辑
摘要: CreateConnectionThreadDruid一开始初始化,在init初始化进行连接的创建;这个线程相当于监听,连接不够了,会给这个线程发出信号进行创建,这个线程是一个守护线程 public CreateConnectionThread(String name){ super(name); 阅读全文
posted @ 2022-05-13 23:48 柳无情 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 今天加班比较晚,打断点研究了下昨天的疑问点 1.淘汰连接线程不光会去淘汰线程,连接池的连接数量+活跃数量<小于最小闲置数量,会去创建连接满足最小闲置数量,还会去提交创建连接定时任务;目前不是很理解这种设计,是为了提高性能还是其他目的 if (needFill) { lock.lock(); try 阅读全文
posted @ 2022-05-13 00:37 柳无情 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 1.线程是DestroyTask,方法是shrink 2.现在还未弄清楚疑问点,后续继续研究 1)配置淘汰时间,不去判断哪些连接是否满足淘汰条件,直接把头部的几个放入淘汰数组 if (idleMillis >= minEvictableIdleTimeMillis) { if (checkTime 阅读全文
posted @ 2022-05-12 00:22 柳无情 阅读(281) 评论(0) 推荐(0) 编辑