
java
文章平均质量分 79
java的各种基础技术包括jvm,基础框架一系列技术
隔壁小邓
这个作者很懒,什么都没留下…
展开
-
ConcurrentHashMap的简介
我想有基础的同学知道在jdk1.7中是采用Segment + HashEntry + ReentrantLock的方式进行实现的,而1.8中放弃了Segment臃肿的设计,取而代之的是采用Node + CAS + Synchronized来保证并发安全进行实现。JDK1.8的实现降低锁的粒度,JDK1.7版本锁的粒度是基于Segment的,包含多个HashEntry,而JDK1.8锁的粒度就是HashEntry(首节点)JDK1.8版本的数据结构变得更加简单,使得操作也更加清晰流畅,因为已经使用sy原创 2021-10-18 09:56:30 · 159 阅读 · 0 评论 -
设计模式之策略模式
将每一种算法都封装到具有共同接口的独立的类中,是算法本身和使用算法的对象分离开来,解决了多种相似算法情况下,以往if…else编程带来的复杂和难以维护。1.封装变化。2.使用接口编程。该模式中包含的角色及其职责:1.抽象策略角色:具体策略角色的抽象父类。2.具体策略角色:包装了具体的算法和行为。3.环境角色:内部会持有一个抽象角色的引用,给客户端调用。优点:1.减少了算法类和使用算法类之间的耦合。(扩展性好)2.Strategy类的层次为Context定义了一系列可供重用的算法或功能,有助原创 2021-03-02 14:31:07 · 269 阅读 · 4 评论 -
JDK1.8中hashMap和JDK1.7hashMap的区别
JDK1.8中的HashMap实现跟JDK1.7中的实现有很大差别。下面分析JDK1.8中的实现,主要看put和get方法构造方法的时候并没有初始化,而是在第一次put的时候初始化的数据结构Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Deque接 口。Queue的实现1、没有实现的阻塞接口的LinkedList: 实现了java.util.Queue接口和java.util.AbstractQueue接口 内置的不阻塞队列: PriorityQueue 和 ConcurrentLinkedQueue PriorityQueue 和 ConcurrentL原创 2021-01-26 17:23:30 · 184 阅读 · 0 评论 -
类加载说明
类加载过程1. 加载加载,是指Java虚拟机查找字节流(查找.class文件),并且根据字节流创建java.lang.Class对象的过程。这个过程,将类的.class文件中的二进制数据读入内存,放在运行时区域的方法区内。然后在堆中创建java.lang.Class对象,用来封装类在方法区的数据结构。类加载阶段:(1)Java虚拟机将.class文件读入内存,并为之创建一个Class对象。(2)任何类被使用时系统都会为其创建一个且仅有一个Class对象。(3)这个Class对象描述了这个类原创 2020-12-17 21:32:47 · 81 阅读 · 0 评论 -
ArrayList 扩容原理
面试中经常问到的问题之一就是List的扩容机制了,他是怎么做到扩容的,大家都能答出来底层是数组,复制一个数组来扩容,但是再具体一点来说,大家就不知道该怎么说了,如果不看源码说这么多确实就差不多了,但是看了源码你会说的更多,更详细,更具体,本篇主要看的是jdk1.8 至于其他版本大同小异,看看就知道了,言归正传1)List扩容实现步骤 总的来说就是分两步:1、扩容 把原来的数组复制到另一个内...原创 2020-12-02 18:52:48 · 1002 阅读 · 0 评论