文章目录
- Java从1.7到1.8的升级 ⭐️2
- ConcurrentHashMap的实现⭐️2
- 红黑树的结构和应用
- B+树的结构和应用
- Java中IO流的分类
- static的作用
- 类加载的过程
- Java异常的基类
- 深拷贝、浅拷贝的区别
- 重载和重写的区别
- double和float的区别
- java里如何精确表示小数
- java里的数据结构
- java里的数据类型
- jre、jdk、jvm的概念
- HashMap的Put过程
- HashMap的查找?⭐️
- HashMap和HashSet的原理区别
- HashMap中null的处理⭐️
- HashSet的遍历顺序
- Java list的实现
- Java面向对象的三大特征
- 多态的实现
- 反射的机制
- 什么是动态代理?
- Hashmap数组大小为2的幂次的原因⭐️
- 死锁产生的条件
- 死锁问题如何解决⭐️
- java反射的使用⭐️(需要例子)
- 包装类的使用场景
- 迭代器和增强for循环
- ConcurrentHashMap的线程安全
- synchronized的底层原理
- ReentrantLock
- ConcurrentHashMap的加锁机制
- sycronized和volatile的原理
- 接口和抽象类的区别
- Files的常用方法
- == 和Equals的区别⭐️
- 哪个集合接口可以实现List的并发安全⭐️
- CopyOnWriteArrayList 原理
- 栈在内存中的生长方向
Java从1.7到1.8的升级 ⭐️2
有很多,但是最重要的就是Lambda表达式以及Stream流了
ConcurrentHashMap的实现⭐️2
JDK1.7是数组+列表
JDK1.8是数组+列表+红黑树
红黑树的结构和应用
- 红黑树是一种自平衡的二叉查找树
- 节点要么是红色要么是黑色
- 红黑树的根节点一定是黑色
- 红色的叶子节点一定是黑色的
- 从根节点出发,到每一个叶子节点的末尾,都包含相同数目的黑色节点
- 红黑树的应用:HashMap
B+树的结构和应用
首先B树的结构:B树的每个叶子节点都存数据,但是相邻的叶子节点之间没有指针连接
B+树的结构:非叶子节点不存数据只存数据的索引,并且相邻的叶子节点有指针相互连接
这种底层是一个双向链表,双向链表的结构更适用于我们的范围查找
应用:在查询一条数据的时候很显然B树更加适合因为每个叶子节点都存数据,最好的情况就是O(1)
但是在范围查找的时候B树的确定就暴露出来了,因为如果使用B树作为Mysql的索引的话,在查询过程中会产生大量的I/O所以在综合考虑下下选择B+树作为Mysql的索引
Java中IO流的分类
- 从数据的流向:输入流、输出流
- 处理的字节单位:字节、字符
static的作用
- static关键字可以修饰:属性、方法、内部类、代码块;
- static修饰的资源属于类级别,是全体对象共享的资源
- 使用static修饰的属性、静态属性是在类加载过程中初始化的,使用类名.属性进行访问
类加载的过程
java文件从编码到最终运行分成俩个阶段:编码期、运行期
编码期就是执行Javac命令让java文件变成,class文件
运行期就是把.class文件交给JVM去执行
而类加载的过程就是:将.class文件的元数据加载到内存,创建class并且解析、初始化类变量的过程
Java异常的基类
Throwable是 Java 语言中所有错误和异常的基类。它有两个主要的子类:Error 和 Exception,这两个类分别代表了 Java 异常处理体系中的两个分支。
深拷贝、浅拷贝的区别
浅拷贝:拷贝基本数据类型的值、引用类型的地址值、而对于引用类型变量指向的堆中的对象不会拷贝。
深拷贝:完全拷贝一个对象,拷贝被拷贝对象的成员变量的值,堆中的对象也会拷贝一份。
重载和重写的区别
重载:一个类有多个名字,但是参数的个数不相同的方法
重写:子类和父类有一样的方法(参数相同、返回值相同、方法名字相同、但是方法体可能不同)
double和float的区别
范围:float的指数位有8位,而double的指数位有11位
精度:float是单精度 double是双精度
double和float的精度损失
float的精度为7~8位有效数字,7位肯定能保证,8位的值也存在。
double的精度为16~17位有效数字
针对浮点数丢失精度的问题,我们可以通过BigDecimal来解决
java里如何精确表示小数
通过BigDecimal来解决
java里的数据结构
数组、链表、栈、队列、二叉树、哈希表
java里的数据类型
基础数据类型:byte、short、int、long、float、double、char、布尔
引用数据类型:接口、数组、类
jre、jdk、jvm的概念
JVM:Java Virtual Machine,也就是 Java 虚拟机,是 Java 实现跨平台的关键所在,针对不同的操作系统,有不同的 JVM 实现。JVM 负责将 Java 字节码转换为特定平台的机器码,并执行。
JRE:Java Runtime Environment,也就是 Java 运行时环境,包含了运行 Java 程序所必需的库,以及 Java 虚拟机(JVM&#x