glinlf-2019-03-27
推荐去看 Java并发编程的艺术(虽然感觉讲的不是非常深入 不过很适合入门,基本够用!)
-
Volatile 相关
- 内存可见性 和 防止指令重排
-
Synchronized相关 done
- 1.6后对Synchronized的优化 偏向锁 轻量锁 重量锁。
-
ReenTrantLock使用 done
- ReenTranLock 源码分析
- AQS同步器原理(实现各种同步器)模板方法模式,继承并冲重写AQS方法 主要是加锁和解锁
-
java 创建线程池相关 done
- 不推荐使用Excutors工具类去创建默认的几种线程池。会有OOM风险...要么核心线程树可能过多要么 工作队列没有限制。 推荐使用ThreadPoolExecutor构造方法自己定制创建。设置适合的核心数,选择合适的阻塞队列类型以及大小。
- 线程池的工作原理
- 拒绝策略
-
Java Thread状态切换 done
-
原子类相关笔记 done
-
需要保证 1 原子性 2 可见性 3 顺序性 三大特性。
-
- 线程私有的:
- 程序计数器
- 虚拟机栈
- 本地方法栈
- 线程共享
- 堆
- 方法区 (1.8之前,1.8之后 在直接内存中分配一块 元空间)
- 直接内存(非运行时数据区的一部分)
-
- 程序计数器
- java虚拟机栈
- 本地方法栈
- 堆
- 方法区(1.7)
- 运行时常量池(是方法区的一部分...)
- 直接内存
-
-
判断一个对象是否可以被回收
- 引用计数法算法
- 可达性分析算法
- 方法区的回收
- finalize()
-
引用类型
- 强引用
- 软引用
- 弱引用
- 虚引用
-
垃圾收集算法
- 标记-清楚
- 标记-整理
- 复制
- 分代收集
-
垃圾收集器
- HotSpot 7个收集器
- 单线程与多线程:单线程指的是垃圾收集器只使用一个线程,而多线程使用多个线程;
- 串行与并行:串行指的是垃圾收集器与用户程序交替执行,这意味着在执行垃圾收集的时候需要停顿用户程序;并行指的是垃圾收集器和用户程序同时执行。除了 CMS 和 G1 之外,其它垃圾收集器都是以串行的方式执行。
- Serial 收集器
- ParNew收集器
- Parallel Scavenge 收集器
- Serial Old 收集器
- Parallel Old 收集器
- CMS 收集器
- G1 收集器
- HotSpot 7个收集器
-
-
-
内存分配策略
-
回收策略:
-
触发Full GC的条件
-
-
-
类的生命周期
-
包括以下 7 个阶段:
- 加载(Loading)
- 验证(Verification)
- 准备(Preparation)
- 解析(Resolution)
- 初始化(Initialization)
- 使用(Using)
- 卸载(Unloading)
-
类加载过程
-
-
类加载器的分类
-
双亲委派模型
- 工作过程:
- 好处:
-
- 什么是索引
- 如何创建索引
- 创建索引的原则
- 索引使用的注意点(具体优化)
- 索引的优点
- 创建索引的条件
-
- 事务遵循的规则
- 事务隔离级别
- 事务的传播级别
-
(细粒度分类)
- 表锁
- 行锁 (是否可写分类)
- 共享锁(读锁)
- 排它锁(写锁)
- 死锁和避免死锁
-
- B树
- B+树 MYISAM 非聚集索引 叶节点data域存放数据记录的地址,辅助索引和主索引的区别是辅助索引可以有重复的key InnoDB 聚集索引 叶节点data域存放完整的数据记录,数据文件本身要按主键聚集(必须要主键),辅助索引都引用主键作为data域(所以使用辅助索引查寻,理论要查询两次)。
-
- 限定数据范围
- 读写分离
- 垂直分表
- 水平分区(分片的常见方案)
- 客户端代理(Sharding-JDBC)
- 中间件代理(mycat)
参考https://www.cnblogs.com/jiangyu666/p/8522547.html
解决方案: 1. 基于XA协议的两阶段提交方案。 2. TCC方案 3. 基于消息的最终一致性方案 4. GTS--分布式事务解决方案
-
- InnoDB
- MyISAM
-
- 快照RDB
- AOF存储
-
-
单线程两个串行化执行
-
文件事件
-
时间事件
-
-
- 单线程 IO多路复用模型!
-
- 缓存穿透
- 缓存击穿
- 缓存雪崩
- 缓存预热
-
- 在计算机网络中中和OSI和TCP/IP的优点,采用一种只有五层协议的体系结构。
- OSI:应用层 表示层 回话层 运输层 网络层 数据链路层 物理层
- TCP/IP:应用层 运输层 网际层IP 网络接口层
- 五层协议:应用层 运输层 网络层 数据链路层 物理层
-
- 三次握手:
- 四次挥手(断开TCP连接)
- 为什么要四次挥手(双方完全关闭连接)
- 为什么建立连接是三次握手,关闭连接确是四次挥手呢?
- 注意 Https和Http的区别;Http在三次握手后还需要一次 SSL握手操作。
数组
链表
队列
hash
二叉树
红黑树 TreeSet HashMap-J1.8+
B+树 Mysql
LMS树 HBase
- 排序算法
1. 冒泡排序
2. 选择排序
3. 插入排序
4. 快速排序
5. 归并排序
6. 快速排序
- 查询算法 --TODO
二分查找法
- 设计模式六大原则
- 工厂模式
- 抽象工厂模式
- 单例模式
- 模仿方法模式
- 策略模式
- 适配器模式
- 代理模式
- 装饰者模式
- 日志为什么是线程安全的
https://juejin.im/entry/5707d6f11ea4930055a894ca
https://www.jianshu.com/p/7850fad8b61d
https://www.cnblogs.com/dongfuye/p/3888128.html
https://www.oschina.net/question/124592_136609
http://developer.51cto.com/art/200803/67666.htm
- springboot 相关
- 初始化过程
- springboot 相关注解
- 什么是springboot 有什么好处?
- Spring
- bean注入的方式
- IOC AOP等理论
- MVC 工作原理
- bean的生命周期
- 事务注解失效原因
1. mybatis
1. 实现原理 -对JDBC的封装...
2. 相关知识
2. Spring-data-Jpa 和 Hibernate相关
-
Java current包下相关锁
-
springboot 相关
-
mybatis相关
-
Spring-data-Jpa 和 Hibernate相关
-
SpringCloud相关
-
Vue相关
-
算法相关 LeetCode...
-
Go预言学习 GoWeb相关框架学习!
-
Docker和K8s升入理解
- tomcat
- nginx
- netty
- jboss