ClassNotFoundException和NoClassDefFoundError的区别

ClassNotFoundException NoClassDefFoundError
从java.lang.Exception继承,是一个Exception类型 从java.lang.Error继承,是一个Error类型
当动态加载Class的时候找不到类会抛出该异常 当编译成功以后执行过程中Class找不到导致抛出该错误
一般在执行Class.forName()、ClassLoader.loadClass()或ClassLoader.findSystemClass()的时候抛出 由JVM的运行时系统抛出
2019/11/5 posted in  Java

Java 7中HashMap和HashTable中对于hash的实现,我们来做个简单的总结

HashMap默认的初始化大小为16,之后每次扩充为原来的2倍。
HashTable默认的初始大小为11,之后每次扩充为原来的2n+1。

阅读更多   2019/10/22 posted in  Java

JMM

JVM将内存划分为五大块:

  • 堆 (进城内所有线程共享)
  • 方法区(进程内所有线程共享)
  • 虚拟机栈(每个线程独立)
  • native本地方法栈(每个线程独立)
  • pc计数器(每个线程独立)
阅读更多   2019/10/10 posted in  Java

JVM

栈,就是说的虚拟机栈或者说是虚拟机栈中局部变量表部分,局部变量表存放了编译期可知的各种基本数据类型,对象引用
本地方法栈与虚拟机栈发挥作用非常相似,
堆,Java堆是虚拟机所管理的内存中最大的一块,被所有线程共享,存放对象实例
Java堆是垃圾收集器管理的主要区域
方法区,与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息丶常量丶静态变量丶即时编译器编译后的代码等数据,是堆的一个逻辑部分

栈管运行,堆管存储

2019/9/30 posted in  Java

集合CollectionUtils的操作方法

集合判断:
例1: 判断集合是否为空:
CollectionUtils.isEmpty(null): true
CollectionUtils.isEmpty(new ArrayList()): true
CollectionUtils.isEmpty({a,b}): false

例2: 判断集合是否不为空:
CollectionUtils.isNotEmpty(null): false
CollectionUtils.isNotEmpty(new ArrayList()): false
CollectionUtils.isNotEmpty({a,b}): true

2个集合间的操作:
集合a: {1,2,3,3,4,5}
集合b: {3,4,4,5,6,7}
CollectionUtils.union(a, b)(并集): {1,2,3,3,4,4,5,6,7}
CollectionUtils.intersection(a, b)(交集): {3,4,5}
CollectionUtils.disjunction(a, b)(交集的补集): {1,2,3,4,6,7}
CollectionUtils.disjunction(b, a)(交集的补集): {1,2,3,4,6,7}
CollectionUtils.subtract(a, b)(A与B的差): {1,2,3}
CollectionUtils.subtract(b, a)(B与A的差): {4,6,7}

2019/3/4 posted in  Java