首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Java
Forlogen
创建于2021-08-20
订阅专栏
Java基础知识的相关介绍
暂无订阅
共95篇文章
创建于2021-08-20
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
synchronized实现原理和底层优化解读
1. 线程安全问题2. 概念2.1 基本语法2.3. Monitor3.1 对象内存布局3.2 对象头3.4 重量级锁原理5. 偏向锁原理6. 轻量级锁原理7. 锁膨胀8. 自旋优化9. 锁粗化10. 1. 当多个线程对同一个共享变量执行操作时,就可能会出现线程安全问题。* @V...
深入浅出的理解HsahMap的实现原理及常见面试题
1. 引入2. Map接口3. 背景知识3.1 数据存储3.2 哈希算法3.4. HashMap实现原理4.1 JDK74.1.1 字段4.1.2 构造函数4.1.3 常用方法4.1.3.1 put4.1.3.2 get4.1.3.4.2 JDK84.2.1 字段4.2.2 构造...
Mybatis中DAO执行过程源码分析
1. 查询所有方法源码分析2. 插入、更新、删除方法源码分析3. 1. DAO接口的实现类调用了SqlSession.this.SqlSession session = factory.List<Account> user = session.selectList("dao.Ac...
ReentrantWriteReadLock原理解读
@[toc]1. 引入2. ReentrantWriteReadLock2.1 概念2.2 核心2.3 图解流程2.3. 1. 前面所介绍的解决线程同步的方案中,不管是作为重量级锁的synchronized,或是优化后的synchronized,以及同样支持可重入且可以更好的操作...
volatile关键字原理解读
1. 引入1.1 问题1.2 指令重排序1.2. volatile2.1 概念2.3. 1. 1.共享变量在多线程操作场景下之所以会出现线程安全问题,主要原因就是每个线程对于变量的操作结果对其他线程是不可见。当一个线程已经修改了变量,而另一个线程使用的仍然是旧的变量,那么就会出现...
深入体会优于synchronized的ReentrantLock的实现原理
1. Lock接口1.1 引入1.2. 队列同步器2.1 概念2.2 目标2.3. 自定义同步器4. ReentrantLockd原理4.1 加锁原理4.2 释放锁原理4.3 可重入原理4.4 可打断原理4.1. 1.1.lock():获取锁lockInterruptibly()...
通过线程八锁问题融会贯通synchronized关键字的使用
1. 一锁2. 二锁3. 三锁4. 四锁5. 五锁6. 六锁7. 七锁8. 1. log.log.new Thread(()->{ n1.a(); }, "t1").new Thread(()->{ n1.b(); }, "t2").执行主方法,控制台的输出可能是2 1或是1 2...
线程安全的ConcurrentHashMap源码走读与分析
1. 引入2. ConcurrentHashMap in Jdk 1.72.1 底层结构2.2 类定义2.3 字段(属性)2.4 构造方法2.5 put2.6 get2.6 remove2.7 size2.3. ConcurrentHashMap in Jdk 1.83.1 底层...
Java线程池技术及Executor框架的原理和使用
1. 概念2. 线程池2.1 定义线程池2.2 创建线程池2.2 执行任务2.3. 原理解析3.1 原理3.4. 1. 线程池指一个可容纳多个线程的容器,其中的线程可反复使用,节省了创建和销毁线程的开销。当然也可通过实现RejectExecutionhandler来自定义拒绝策略...
Java原子操作类
1. 原子更新基本类型2. 原子更新数组3. 原子更新引用类型4. java.util.concurrent.atomic包提供了多类用法简单、性能高效、线程安全的原子操作类。1. private static final Unsafe unsafe = Unsafe.this....
Java线程内存模型
1. 硬件内存模型2. Java内存模型(Java Memory Model)3. 内存模型交互操作4. 三大特性4.1 原子性4.2 可见性4.5. 这里熟悉Java内存模型的目的是为了后续对于多线程和并发问题的理解,以及相关源码的走读打下基础。1. 硬件层面的内存模型指的就是...
Java中的fail-fast和fast-safe机制
1. 引入2. fail-fast3. 1. 不管是在ArrayList、Hashtable还是HashMap的源码中,我们在属性字段都可以看见modCount字段的存在。它用来表示集合修改的次数,例如当执行put操作时就会将modCount加1,都是在其他常用的方法中并没有看到...
线程安全的Hashtable + synchronizedMap源码剖析
1. Hashtable1.1 字段1.2 构造方法1.3 get方法1.4 put方法1.3 rehash方法1.5 安全性1.2. synchronizedMap2.1 字段、构造方法2.前面已经学习了HashMap的底层实现原理,并且从源码的角度详细的分析了其中的属性字段、...
Java中自定义类为什么一定要重写HashCode和equals方法?
1. 引入2. 两者都不重写3. 只重写hashCode方法4. 只重写equals方法5. 1. map.map.System.out.println(map.System.out.println(map.get(a) + "---" + map.this.this.if (o...
理解设计模式中的责任链模式
1. 引入2. 概念3. 案例4. 总结5. 1. 责任链模式的思想其实广泛的存在于生活中各个隐秘的角落中,例如以各种维权事件来进行说明。假设Forlogen通过不懈努力的加班,终于攒够了一套小房子的首付,他开开心心的去售楼处交了首付。经过了很长时间的等待,售楼处通知Forlog...
深入浅出的理解ArrayList、LinkedList和Vector的底层实现原理
1. List接口2. ArrayList分析2.1 字段2.2 构造函数2.3 常用方法2.3.1 add2.3.2 set2.3.3. LinkedList分析3.1 字段3.2 构造方法3.3 常用方法3.3.1 add3.3.2 get3.3.3 set3.3.3.4. ...
简单理解Java中的装箱和拆箱
1. 引入2. 装箱和拆箱3. 基本数据类型和包装类的区别:4. 1. 在图形化理解Java中的形参和实参中,我们知道Java中八大基本数据类型,同样也知道了它们各自的取值范围和默认的初始值。那么,既然已经有基本数据类型使用,为什么还要使用包装类呢?Java是一门面向对象的编程语...
Java虚拟机 -- 垃圾回收器(下篇)
1. 引入2. Shenandosh回收器2.1 简介2.2 运行过程2.3. ZGC回收器3.1 简介3.2 染色指针3.3 运行过程3.1. 如上所示,不管是哪一种垃圾回收器,它们都是朝着优化上述的三个指标的方向进行发展。如今硬件技术的发展,内存占用逐渐的没有那么令人担忧,而...
Java虚拟机 -- 垃圾回收器(中篇)
1. 引入2. G1回收器2.1 概述2.2 如何理解First?2.3 特点2.3.1 并发和并行2.3.2 分代收集2.3.3 分区2.3.4 空间整合2.3.3. 垃圾回收过程3.1 年轻代GC3.2 并发标记3.3 混合回收3.4. 相关参数5. 记忆集6. 1. 在垃圾...
从源码实现理解ThreadLocal和InheritableThreadLocal
1. 简介2. 案例3. Thread类4. ThreadLocal类4.1 set()4.2 get()4.3 remove()4.5. InheritableThreadLocal类5.1 createMap()5.2 getMap()5.6. ThreadLocalMap7...
下一页