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 

druid 新增连接

// DruidDataSource 的内部类,对应主流程3,用来补充连接 public class CreateConnectionThread extends Thread { public CreateConnectionThread(String name){ //

Druid 

druid 初始化连接池

public void init() throws SQLException { if (inited) { // 如果已经被初始化过,则终止该方法 return; } // bug fixed for dead lock, for issu

Druid 

druid 丢弃连接

// 丢弃连接 public void discardConnection(DruidConnectionHolder holder) { if (holder == null) { return; } Connection conn = holder.ge

Druid 

mybatis 缓存

参考文献: MyBatis|缓存机制 mybatis一级缓存二级缓存 【MyBatis学习13】MyBatis中的二级缓存 1. mybatis 缓存 一级缓存:也称为本地缓存,用于保存用户在一次会话过程中查询的结果,用户一次会话中只能使用一个 sqlSession,一级缓存是自动开启的,不允许关闭

ORM 

spring 三级循环

参考文档: Spring 解决循环依赖必须要三级缓存吗? 聊聊Spring循环依赖三级缓存是否可以减少为二级缓存的情况 Spring 动态代理时是如何解决循环依赖的?为什么要使用三级缓存? 此文比较难懂,可以先看一下参考文档 循环依赖 什么是循环依赖?

Spring 

差分数组

参考文献:什么是差分数组? 背景 如果给你一个包含5000万个元素的数组,然后会有频繁区间修改操作,那什么是频繁的区间修改操作呢?比如让第1个数到第1000万个数每个数都加上1,而且这种操作时频繁的。 此时你应该怎么做?很容易想到的是,从第1个数开始遍历,一直遍历到第1000万个数,然后每个数都加上

数组 

hashmap

参考文档: 漫画:什么是ConcurrentHashMap? 漫画:什么是HashMap?

集合 

加密算法

1. Base64 1.1 为什么要使用 Base64 在项目中,将报文进行压缩、加密后,最后一步必然是使用 base64 编码,因为 base64 编码的字符串,更适合不同平台、不同语言的传输 这算法是编码, 不是压缩, 编码后只会增加字节数;(比之前多3分之一,如之前是3,编码后是4) 算法简单