![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 62
基础知识、锁、集合等
Java之面向对象没对象
这个作者很懒,什么都没留下…
展开
-
springboot工作中一种常用设计结构
模板方法+工厂设计模式原创 2023-02-13 19:27:11 · 65 阅读 · 0 评论 -
String&StringBuilder问题
关于字符串的使用原创 2023-02-10 11:26:44 · 90 阅读 · 0 评论 -
ReentrantLock底层原理之AbstractQueuedSynchronizer(AQS详解)
在java中,好多时候需要考虑线程安全问题,我们一般选择是使用Sychornized或JUC中Lock接口的实现类来实现Sychornized底层原理是JVM层面的,而Lock实现类ReentrantLock实现线程独占是为什么原理呢?下面我们将按这个思路去理解AQS原理,本篇不会搬太多AQS理论主要以ReentrantLock来理解AQSReentrantLock的简单应用 public void test() { Lock lock = new ReentrantLock()原创 2020-12-13 16:29:11 · 327 阅读 · 0 评论 -
java基础-字符串常量池
关于字符串常量池的那些事字符串intern()特殊字符的问题直接上代码intern()返回值问题寻找在哪儿有定义该常量菜鸟求教,望高人指点字符串intern()特殊字符的问题intern()方法是返回常量池中字符串的引用(针对java8而言),并且这个引用是该字符串第一次在堆中出现时的引用直接上代码String str = new StringBuilder("aaa").append("bbb").toString();System.out.println(str.intern());//aaa原创 2020-12-09 10:49:00 · 211 阅读 · 1 评论 -
记录LRU算法的两种实现方式
手写LRU算法利用LinkedHashMap实现参照哈希双链表结构手写LRU算法LRU全称是Least Recently Used,即最近最久未使用的意思利用LinkedHashMap实现LinkedHashMap底层就是用的HashMap+双链表实现的,且自身已经实现了按照访问顺序的存储,且java源码注释中也说非常适合用作LRU缓存This kind of map is well-suited to building LRU cachesLinkedHashMap自身实现了removeEld原创 2020-12-14 17:28:36 · 179 阅读 · 0 评论 -
Java类加载器
目录Java类加载器什么是Java类加载器?种类双亲委派机制Java类加载器什么是Java类加载器?类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class类的一个实例。每个这样的实例用来表示一个 Java 类。种类Bootstrap ClassLoader(启动类加载器):加载jre/lib/rt.jarExtension ClassLoader(扩展类加载器):加载jre/lib/ext原创 2021-01-07 14:31:07 · 69 阅读 · 0 评论 -
ArrayList
ArrayList底层原理数据结构继承关系扩容机制线程安全底层原理数据结构底层数据结构就是一个Object数组 /** * Shared empty array instance used for empty instances. */ private static final Object[] EMPTY_ELEMENTDATA = {};继承关系扩容机制ArrayList默认初始化大小为:10 /** * Default initial capacity.原创 2021-01-07 14:36:57 · 57 阅读 · 0 评论 -
记录JUC中同步辅助类
JUC中的同步辅助类CountDownLatch/** * 减法计数器 */public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch = new CountDownLatch(3); for (int i = 1; i <= 3; i++)原创 2021-01-07 14:51:27 · 48 阅读 · 0 评论 -
解决哈希冲突的方法
目录解决哈希冲突的方法开放定址法链地址法再哈希法、建立公共溢出区总结四种方法解决哈希冲突的方法开放定址法m 为表长度增量di有如下取法:线性探测再散列 di = 1 , 2 , 3 , … , m-1平方探测再散列 di = 1 , -1 , 2, -2 , 3 , -3 , … , k , -k(取相应数的平方)随机探测再散列 di 是一组伪随机数列链地址法HashMap就是这么实现的再哈希法、建立公共溢出区建立一个公共溢出区域,就是把冲突的都放在另一个地方,不在表里面。原创 2021-03-04 14:21:21 · 84 阅读 · 0 评论 -
AtomicReference、AtomicInteger、手写自旋锁
目录AtomicReference源码分析UnSafe类AtomicInteger代码实现(手写自旋锁)手写自旋锁,根据CAS思想实现,AtomicReference,AtomicInteger等底层均使用了CASAtomicReference源码分析value值用volatile关键字,实现可见性private volatile V value;compareAndSet方法 public final boolean compareAndSet(V expect, V updat原创 2021-01-07 14:24:41 · 309 阅读 · 1 评论 -
JVM之GC roots
目录什么是GC roots?什么是垃圾?判断对象是否可以回收的方法有哪些?1.引用计数法2. 枚举根节点可达性分析java中可作为GC root的对象什么是GC roots?常说的GC(Garbage Collector) roots,特指的是垃圾收集器(Garbage Collector)的对象,GC会收集那些不是GC roots且没有被GC roots引用的对象。什么是垃圾?简单说就是内存中已经不再被使用到的空间就是垃圾判断对象是否可以回收的方法有哪些?1.引用计数法Java中,引用和对原创 2021-01-07 14:28:12 · 110 阅读 · 0 评论