共计 48 篇文章

druid connection holder is null 错误记录

场景 springboot 使用的是druid连接池 执行原生sql 直接注入了EntityManager 调用 createNativeQuery方法执行sql 问题 出现异常: Caused by: java.sql.SQLException: connection holder is null at com.alibaba.druid.pool.DruidPooledConnection.checkStateInternal(DruidPooledConnection. ...

java ThreadPoolExecutor 的使用和拒绝策略

ThreadPoolExecuor的构造方法 先来看一下ThreadPoolExecuor类的构造方法 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue, RejectedExecutionHandler handler) { this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, Executors.defaultThreadFactory(), handler); } 参数说明: ...

Java8的HashMap详解(存储结构,功能实现,扩容优化,线程安全,遍历方法)

JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理,文章末尾附有HashMap的put方法和resize方法的源码解析。 简介 Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMap,类继承关系如下图所示: 下面针对各个实现类的特点做一些说明: (1) HashMap:它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 HashMap最多只允许一条记录的键为null,允许多条记录的值为null。 ...

漫画:高并发下的HashMap

上一期我们介绍了HashMap的基本原理,没看过的小伙伴们可以点击下面的链接: 漫画:什么是HashMap? 这一期我们来讲解高并发环境下,HashMap可能出现的致命问题。 HashMap的容量是有限的。当经过多次元素插入,使得HashMap达到一定饱和度时,Key映射位置发生冲突的几率会逐渐提高。 这时候,HashMap需要扩展它的长度,也就是进行Resize。 影响发生Resize的因素有两个: 1.Capacity HashMap的当前长度。上一期曾经说过,HashMap的长度是2的幂。 2.LoadFactor HashMap负载因子,默认值为0.75f。 衡量HashMap是否进行Resize的条件如下: HashMap. ...

漫画:什么是HashMap?

众所周知,HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干。 HashMap数组每一个元素的初始值都是Null。 对于HashMap,我们最常使用的是两个方法:Get 和 Put。 1.Put方法的原理 调用Put方法的时候发生了什么呢? 比如调用 hashMap.put("apple", 0) ,插入一个Key为apple的元素。这时候我们需要利用一个哈希函数来确定Entry的插入位置(index) ...