java 基础
文章平均质量分 63
WeiJiFeng_
这个作者很懒,什么都没留下…
展开
-
ConcurrentHashMap1.8源码和同步机制
1. ConcurrentHashMap几个重要概念2. ConcurrentHashMap的get操作详解3. ConcurrentHashMap的插入操作详解4. ConcurrentHashMap的链表转红黑树5. ConcurrentHashMap的扩容操作详解6. ConcurrentHashMap的同步机制详解首先谈默认参数:MAXIMUM_CAPACITY = 1 << 30 最大元素容量DEFAULT_CAPACITY = 16 默认初原创 2020-09-22 14:37:15 · 569 阅读 · 0 评论 -
Java堆——Tlab分析,介绍
首先谈java对象的创建我们在语言层面上,创建一个对象仅仅是一个new关键字可以解决的。但是在JVM层面上是怎么创建一个对象的呢??当 jvm 遇到 new 指令 1,检查指令的参数能否在常量池中定位到一个类的符号引用。并检查这个符号引用所代表的类是否已经被加载,解析,初始化过。 2,没有,就进行相应的类加载。 3,类加载完成后就知道对象所需内存大小,为对象进行内存空间分配,在将...原创 2018-08-25 19:03:43 · 1532 阅读 · 0 评论 -
java十六进制转为byte类型
借用Integer类型转换byte c = Integer.valueOf("ca",16).byteValue();byte c = (byte) Integer.parseInt("ca", 16);直接强转byte b = (byte)0xca;原创 2018-07-24 18:17:47 · 2098 阅读 · 0 评论 -
HashMap使用对象作为key实现
HashMap在使用可变对象作为key是一件很危险的事情我们开始一个简单的实例class People{ private String name; private int age; public People(){ } public People(String name, int age) { this.name = name;...原创 2018-04-19 17:25:59 · 14022 阅读 · 2 评论 -
HashMap之Put方法解读
HashMap底层是使用Entry对象数组存储的,而Entry是一个单项的链表或者是红黑树。 下面是对HashMap的put源码的解读 final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] tab...原创 2018-04-19 17:04:58 · 897 阅读 · 0 评论 -
JVM的垃圾收集算法
简介由于垃圾收集算法的实现设计大量的程序细节,而且各个平台的虚拟机操作内存的方法又各不相同。何时开始垃圾回收? 在使用标记清除算法时,未引用对象并不会被立即回收.取而代之的做法是,垃圾对象将一直累计到内存耗尽为止.当内存耗尽时,程序将会被挂起,垃圾回收开始执行。有如下几种收集算法: 标记-清除算法 复制算法 标记-整理算法 分代收集算法 标记-清除算法...原创 2018-04-13 20:04:37 · 337 阅读 · 0 评论 -
阅读源码后对List集合实现原理的理解和总结
目录 1 .List接口实现和继承结构图 2 .ArrayList , Vector ,LinkendList的区别 3 .ArrayList和Vector的区别 4 .ArrayList 4.1 初始化 4.2 add 4.3 set 4.4 indexof 5 .LinkedList 5.1 LinkedList初...原创 2018-04-04 18:29:48 · 645 阅读 · 0 评论 -
Java类加载过程详解
简介Java源代码被编译成class字节码,最终需要加载到虚拟机中才能运行。整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载7个阶段。 目录 1 .加载 2 .验证 3 .准备 4 .解析 5 .初始化 5 .1类初始化场景 5 .2类不被初始化场景 1 .加载1、通过一个类的全限定名获取描述此类的二进制字...原创 2018-04-11 12:41:01 · 1410 阅读 · 0 评论 -
JVM内存模型
内存模型Java内存模型,往往是指Java程序在运行时内存的模型,而Java代码是运行在Java虚拟机之上的,由Java虚拟机通过解释执行(解释器)或编译执行(即时编译器)来完成,故Java内存模型,也就是指Java虚拟机的运行时内存模型。作为Java开发人员来说,并不需要像C/C++开发人员,需要时刻注意内存的释放,而是全权交给虚拟机去管理,那么有就必要了解虚拟机的运行时内存是如...原创 2018-04-14 11:36:23 · 278 阅读 · 0 评论 -
解读ConcurrentHashMap实现和应用 JDK1.7和1.8之间的不同
ConcurrentHashMap相比其他HashMap的 优点 HashMap: 在并发编程的过程中使用可能导致死循环,因为插入过程不是一个原子操作,每个HashEntry 是一个链表节点。很可能在插入的过程中,已经设置了后节点,实际还未插入,最终反而插入在后 节点之后,造成链中出现环,破坏了链表的性质,失去了尾节点,出现死循环。 HashTable:...原创 2018-03-31 16:41:18 · 1131 阅读 · 0 评论 -
Java锁的种类和简单辨析
1. 自旋锁自旋锁是采用让当前线程不停地的在循环体内执行实现的,当循环的条件被其他线程改变时,才能进入临界区。由于自旋锁只是将当前线程不停地执行循环体,不进行线程状态的改变,所以响应速度更快。但当线程数不停增加时,性能下降明显,因为每个线程都需要执行,占用CPU时间。如果线程竞争不激烈,并且保持锁的时间段。适合使用自旋锁2. 阻塞锁阻塞锁,可以说是让线程进入阻塞状态进行等...原创 2018-03-31 13:55:57 · 256 阅读 · 1 评论