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