一、Java基础
1.Java集合类
HashMap:
数组+链表+红黑树
2.Java异常
Throwable:error、exception(编译异常和运行时异常)
error:系统中的错误。
exception:程序可以处理的异常。
throw是语句抛出一个异常;
throws是声明一个方法可能抛出的异常信息。
未检查的异常(RuntimeException或Error)会触发回滚,已检查的异常(CheckedException)不会触发回滚。
下图红框为未检查的异常(UncheckedException)。
参考:JAVA基础之异常详解
3.Java I/O流
4.Java反射机制
二、Java高级
1.JVM
JDK > JRE > JVM
JVM = 类加载器子系统(classloader) + 运行时数据区域+ 执行引擎(即时编译器+垃圾收集器)
JVM执行Java程序的过程:1) 加载.class文件(字节码解释器) 2) 管理并分配内存 3) 执行垃圾收集。
JVM在整个jdk中处于最底层,负责于操作系统的交互,用来屏蔽操作系统环境,提供一个完整的Java运行环境,因此也就是虚拟计算机。
1.1类加载器子系统(classloader)
jvm中类的生命周期:加载、连接(验证、准备、解析)、初始化、使用和卸载
类加载机制:双亲委派机制
1)加载过程中会先检查类是否被已加载,检查顺序是自底向上,从Custom ClassLoader到BootStrap ClassLoader逐层检查,只要某个classloader已加载就视为已加载此类,保证此类只所有ClassLoader加载一次。而加载的顺序是自顶向下,也就是由上层来逐层尝试加载此类
2)在加载类时,每个类加载器会将加载任务上交给其父,如果其父找不到,再由自己去加载。
3)Bootstrap Loader(启动类加载器)是最顶级的类加载器了,其父加载器为null。
类加载器:
1)BootstrapClassLoader(启动类加载器)
2)ExtensionClassLoader(标准扩展类加载器)
3)AppClassLoader(系统类加载器)
4)CustomClassLoader(自定义加载器)
Java类的初始化顺序:先父类后子类,先静态后普通,最后构造器。成员和初始化块按类中的顺序初始化。
1)父类静态成员和静态初始化块
2)子类静态成员和静态初始化块
3)父类普通成员和普通初始化块
4) 父类构造方法
5)子类普通成员和普通初始化块
6)子类构造方法
1.2运行时数据区域
1)程序计数器:线程私有的,是一块很小的内存空间,可以认作为当前线程的行号指示器
2)Java栈:线程私有的,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。它主要用于存放Java对象的引用。
3)本地方法栈:线程私有的,为执行本地方法(Native Method)服务的。
4)堆:所有线程共享的,在JVM中只有一个堆。Java中的堆是用来存储Java对象以及数组(数组引用是存放在Java栈中的)。
5)方法区:所有线程共享的,存储了Java类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。
堆中存的是对象。栈中存的是基本数据类型和堆中对象的引用。栈代表了处理逻辑,而堆代表了数据。
非线程共享的那三个区域的生命周期与所属线程相同,而线程共享的区域与JAVA程序运行的生命周期相同
参考:JVM内存模型详解
1.3GC垃圾收集器(收集的场所线程共享区域-堆和方法区)
GC检测算法:
1)引用计数法
对象引用类型分为强引用、软引用、弱引用和虚引用。
只用收集计数为0的对象。缺点:无法处理循环(相互)引用的问题。
2)可达性分析算法
GC回收算法:
1)标记/清除算法【最基础】缺点:产生内存碎片
2)复制算法 缺点:需要两倍内存空间
3)标记/整理算法
4)分代算法:新生代、老年代、元空间(扩容)。担保机制
1.4JVM调优
参考:JVM调优总结
jvm调优工具:Jconsole(JDK自带),jProfile,VisualVM(JDK自带)
2.Java多线程和高并发
3.数据结构
3.1队列,栈,堆栈,数组,链表特点与区别:
1) 队列可以看成是有2个口的集合一个口叫队头一个叫队尾,只能在对头进行删除操作,在队尾做插入。根据这样的操作。队列特点是先进先出。
2)堆栈可以看成是有1个口的集合,这个口叫栈顶。插入和删除操作只能在栈顶操作。根据这样的操作。堆栈的特点是是后进先出。
3)链表是一种存储方式,它可以在非连续的内存空间里面存储一个集合的元素。
4)和它对应的是数组,数组要在连续的空间里存储集合的元素。
队列、栈是线性数据结构的典型代表,而数组、链表是常用的两种数据存储结构;队列和栈均可以用数组或链表的存储方式实现它的功能
3.2树(二叉树、B树、红黑树)
3.3图
3.算法(时间和空间复杂度)
程序=数据结构+算法
4.加密算法
6.数据库(Oracle)
Oracle体系机构:逻辑结构、物理结构和实例。
sql执行顺序
sql性能调优
存储结构
执行计划
索引
锁
事务
7.设计模式
三、互联网流行框架
SpringMVC Spring MyBatis
Ngnix Redis(缓存)
Docker Zookeeper + Dubbo SpringBoot + SpringCloud
消息队列(message queue):(RabbitMQ、Kafka)
异步:批量数据的异步处理
解耦:串行任务的并行化
削峰:高负载任务的负载均衡
Elasticsearch
四、集群和分布式部署
session共享
线程池
锁