Java
文章平均质量分 77
末盾
这个作者很懒,什么都没留下…
展开
-
ConcurrentHashMap源码(JDK1.8)-volatile
成员变量// 最大容量2的30次方private static final int MAXIMUM_CAPACITY = 1 << 30;// 默认容量private static final int DEFAULT_CAPACITY = 16;// static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;private static final int DEFAULT_CONCURRENCY_LEVEL = 16;pr原创 2021-06-30 19:56:14 · 704 阅读 · 0 评论 -
Java多线程wait为什么用while而不是if
Java多线程wait为什么用while而不是if?这个问题可以用生产者消费者的例子来测试。public class Pc { public static void main(String[] args) { Data data = new Data(); new Thread(()->{ for (int i = 0; i < 10; i++) { try {原创 2021-06-06 11:17:03 · 311 阅读 · 0 评论 -
Exception encountered during context initialization - cancelling refresh attempt: org.springframewor
"C:\Program Files\Java\jdk1.8.0_191\bin\java.exe" -Dvisualvm.id=34350697281200 -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:E:\JetBrains\IntelliJ IDEA 2020.1.4\lib\idea_rt.jar=53549:E:\JetBrains\IntelliJ IDEA 2020.1.4\bin" -Dfile.encoding=UTF-8 -原创 2021-03-28 19:00:05 · 357 阅读 · 0 评论 -
类加载
1 类加载机制,不是类加载几个过程1.1JVM类加载机制虚拟机把描述类的数据从Class文件 加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型 , 这就是虚拟机的类加载机制。*Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能,这里就是我们经常能见到的Class类。类从被加载到原创 2021-03-26 15:12:37 · 111 阅读 · 0 评论 -
JVM
JVM内存结构Java虚拟机由 类加载子系统、执行引擎、JVM运行时数据区 构成运行分析每个线程都有自己私有的数据区,如下图方法用入栈的方式调用代码调试例子public class HelloWorld { public int add() { int a = 1; int b = 2; int c = (a + b) * 100; return c; } /** * 程序入口原创 2021-03-24 16:02:56 · 93 阅读 · 0 评论 -
JDK动态代理
JDK动态代理因为要学习AOP,所以提前了解什么是代理首先思考两个问题:什么是动态代理?使用jdk的反射机制,创建对象的能力,创建的是代理类的对象。而不用你创建类文件。动态:在程序执行时,调用jdk提供的方法才能创建代理类的对象。动态代理能做什么?可以在不改变原来目标方法功能的前提下,可以在代理中增强自己的功能代码。程序开发中的意思:比如,你所在的项目中,有一个功能是其他人(公司的其他部门,其他小组的人)写好的,你可以使用。GoNong.class , GoNong gn = n原创 2021-03-22 13:50:40 · 275 阅读 · 0 评论 -
AQS解读
1.概述/框架AbstractQueuedSynchronized抽象队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch…AQS维护了一个volatile int state(代表共享资源)和一个FIFO线程等待队列(多线程争用资源被阻塞时会进入此队列)state的访问方式有三种:getState()setState()compareAndSetState()AQS定原创 2021-03-13 10:49:45 · 144 阅读 · 0 评论 -
HashMap源码Java8
成员变量// 默认初始容量2的4次方static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;// 最大容量2的30次方static final int MAXIMUM_CAPACITY = 1 << 30;// 默认负载因子0.75static final float DEFAULT_LOAD_FACTOR = 0.75f;// 由链表变成红黑树的门槛8static final int TREEIFY_THRESHOLD原创 2021-03-12 08:30:04 · 149 阅读 · 0 评论 -
Java面试题
Java集合set是无序的,不能有重复的元素(用对象的equals()方法来区分元素是否重复),list是有序的,可以有重复的元素,是线程不安全的,map是key-value的映射,映射关系可以是一对一或多对一,key不可以重复,通过指定的key可以取出value。Set和Map容器都有基于哈希存储和排序树的两种实现版本,基于哈希存储的版本理论存取时间复杂度为O(1),而基于排序树版本的实现在插入或删除元素时会按照元素或元素的键(key)构成排序树从而达到排序和去重的效果。TreeSet和Has..原创 2021-03-10 15:34:12 · 574 阅读 · 0 评论 -
LinkedList源码阅读
LinkedList源码阅读LinkedList介绍内部类属性有参构造方法addAll()方法检测头插法尾插法LinkedList介绍LinkedList底层是双向链表特点:增删速度快,查找速度慢内部类LinkedList定义了一个私有的内部类Node,表示链表数据结构private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<原创 2021-02-06 22:53:38 · 85 阅读 · 0 评论