java
文章平均质量分 88
MrDeng886
这个作者很懒,什么都没留下…
展开
-
一图读懂java IO
通过画图的方式来清晰展示java.io包中各个类的关系和功能原创 2022-08-24 18:42:29 · 196 阅读 · 1 评论 -
深入理解NIO底层源码——进阶
NIO源码详解原创 2022-02-23 14:32:46 · 1460 阅读 · 0 评论 -
深入理解NIO底层源码——基础
深入了解NIO源码的基础准备,例如了解IO模型、socket工作机制等原创 2022-02-15 14:52:15 · 1160 阅读 · 0 评论 -
MySQL事务并发控制(再也不怕面试官问MySQL了)
大纲事务ACID特性MySQL实现事务事务并发运行带来的问题并发调度可能引发的问题:如何解决事务并发带来的问题锁的分类封锁协议一级封锁协议:二级封锁协议:三级封锁协议:两段锁协议封锁协议带来的问题死锁事务事务是一个不可再分的工作单位;事务中的一系列操作要么全部执行,要么全不执行;其中,事务满足ACID特性ACID特性原子性(Atomicity):对数据的修改要么全部执行,要么全不执行一致性(Consistency):事务执行前和执行后数据库必须满足一致性(事务执行过程中可以不满足)。例如从账户A中原创 2021-12-28 20:59:18 · 1698 阅读 · 0 评论 -
Springboot启动执行特定代码的几种方式
大纲实现InitializingBean接口或使用@PostConstruct注解实现ApplicationListener接口实现CommandLineRunner或ApplicationRunner 接口实现InitializingBean接口或使用@PostConstruct注解实现InitializingBean如下public class AnotherExampleBean implements InitializingBean { @Override public vo原创 2021-12-02 15:35:10 · 1849 阅读 · 0 评论 -
java虚拟机面经总结
大纲虚拟机栈和本地方法栈的区别?垃圾回收算法知道哪些,CMS 说一下,并发标记阶段处理速度慢的原因可能是什么。怎么进行优化?java虚拟机有哪些分区?请简单描述一下类的加载过程?还有CMS采用哪种回收算法?使用CMS怎样解决内存碎片的问题呢?如何判断对象已死?介绍一下引用?发生Young GC的时候需要扫描老年代的对象吗?虚拟机栈和本地方法栈的区别?简单的来说,虚拟机栈是为虚拟机执行字节码指令(java方法)服务,而本地方法栈是为了虚拟机执行本地native方法而服务。垃圾回收算法知道哪些,CMS 说原创 2021-11-08 21:51:48 · 2347 阅读 · 1 评论 -
OutOfMemoryError(OOM)和StackOverflowError(SOF)异常总结
大纲Java虚拟机运行时数据区会发生OOM和SOF异常的内存区域堆虚拟机栈本地方法栈方法区本机直接内存Java虚拟机运行时数据区OOM和SOF都是内存溢出异常,与java内存区域的关系密不可分,所以要先了解java各个内存区域会发生OOM和SOF异常的内存区域首先明确的是,程序计数器是在《java虚拟机规范中》唯一一个没有规定任何OutOfMemoryError情况的内存区域,像其它方法区、虚拟机栈、本地方法栈、堆都有可能会抛出OOM和SOF异常。下面会对各个内存区域进行细说。堆 堆是jav原创 2021-11-03 13:57:16 · 1494 阅读 · 3 评论 -
java虚拟机系列:深入理解Java类加载机制
大纲前言类加载机制类加载器双亲委派机制为什么要使用双亲委派机制?分析ClassLoaderloadClass()findClass()defineClass(String name, byte[] b, int off, int len)resolveClass(Class<?> c)自定义类加载器通过继承URLClassLoader来实现自定义类加载器URLClassLoaderfindClass()Launcher类getExtClassLoader()createExtClassLoad原创 2021-11-02 14:42:04 · 403 阅读 · 3 评论 -
类文件结构(java虚拟机系列:一文明解 .class 文件)
一次编写,到处运行,.class文件功不可没 java在刚刚诞生的时候有一个很著名的口号,叫做"write once,run anywhere"(一次编写,到处运行),这句话体现了java语言跨平台的特性,但在先前就没有跨平台的语言了吗?答案是否定的。在c语言里也有一句话叫做"一次编写,到处编译",也就是说编写了c语言的源文件,然后拿到不同操作系统分别进行编译,再运行,看起来也是跨平台的,但这必须有一个前提,就是c语言源文件中使用的都必须是标准的类库,而因为c语言标准类库中实现的接口很少 ,所以各个系统原创 2021-10-30 13:30:43 · 251 阅读 · 2 评论 -
ConcurrentHashMap源码详解(大厂面试)
大纲前言为什么要用ConcurrentHashMap?ConcurrentHashMap简介CAS(Compare and Swap)从putVal()方法起阅读源码initTable()——ConcurrentHashMap的初始化sizeCtlcasTabAt()修改tab的元素tabAt() 获取tab数组某个索引上节点内存不可见性putTreeVal() 用于把节点添加进红黑树里lockRoot()unlockRoot()treeifyBin() 把单链转化为红黑树tryPresize()自动扩容r原创 2021-10-28 21:34:26 · 338 阅读 · 3 评论 -
HashMap源码详解(一文掌握所有核心知识)
大纲前言HashMap解决了什么问题查询速率不高的问题哈希冲突自动扩容从put()方法开始了解源码resize()实现扩容的关键(e.hash & oldCap) == 0 到底是什么?split()扩容时对红黑树的处理关于红黑树的最少必要知识红黑树插入后保持平衡treeify()建立红黑树(基于双链生成红黑树)untreeify()把双链变单链balanceInsertion()确保插入后的平衡性putTreeVal()往红黑树里插入数据总结为什么HashMap的容量一定是2的幂次为什么负载因子是原创 2021-10-25 16:36:57 · 910 阅读 · 3 评论 -
掌握JAVA反射机制
前言本人近期在研究spring源码和caffeine源码的时候,发现其底层运用了java反射机制,以及在jdk7后新增的java.lang.invoke包下面的类,发现对其掌握程度不足,故专门对其整理总结。了解java反射机制java的反射API能够使java程序在运行当中获取类的域(字段)、方法构造器等,并且可以与这些元素交互,例如使用获取到的构造器实例化一个对象,为字段赋值,执行获取到的方法等。这为java语言提供了动态性。Java反射机制被称为框架设计的灵魂。而若想执行上述操作,需要借助Clas原创 2021-10-15 14:59:42 · 136 阅读 · 3 评论