文章目录
基础编程
JavaSE
面向对象
什么是面向对象,就是对世界存在的事物和关系,抽象成对象,将事物的属性和行为描述成类,通过继承、实现、组合的方式囊括万事万物,实现对世界的抽象。
集合容器
Map
Collection
注解
并发编程
- 锁:synchronize锁升级过程
- Lock系列
- 信号量Semaphore
- 线程和进程,线程状态
- 死锁,哲学家问题-顺序加锁
- 线程池
【其他…】
- velocity
算法
- 六大排序算法
- 贪心
- 分治
- 动态规划
- 回溯
- 牛客网、LeetCode
JavaEE
- H5
- Session、Cookie
- servlet、拦截器、过滤器
网络
- OSI七层模型
- TCP/UDP 三次握手四次挥手
- 路由协议
- 子网划分
数据库
- 内连接:典型的联接运算,使用像 = 或 <> 之类的比较运算符
- 左(外)连接 :左外连接(left join)以左表为主表(查询全部), 右表为辅表(没有的显示null)
- 右(外)连接:以右表为主表(查询全部), 左表为辅表(没有的显示null)
- 全连接:两个表的所有数据都展示出来,相当于左外连接并上右外连接
三大范式
- 第一范式:每个列都不可以再拆分。
- 第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。
- 第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。
Mysql
引擎
- InnoDB
- MyISAM
索引
- 最左原则
- B+树
- 自增主键:按顺序存放,增删数据速度快,对于检索非常有利;字型,占用空间小,易排序;使用整形才可以使用AUTO_INCREAMENT,不用担心主键重复问题。
- 聚簇索引:将数据与索引放到了一块,索引结构的叶子节点存储了行数据,找到索引也就找到了数据
- 非聚簇索引:将数据与索引分开存储,索引结构的叶子节点存储的是行数据的地址
分库分表
- MyCat
性能优化
主从复制
事务
- 四大特性(ACID),原子、一致、隔离、持久
- 脏读:一个事务读取到另外一个事务未提交的数据
- 不可重复读;一个事务读取同一条记录2次,得到的结果不一致
- 幻读;幻读发生在两个完全相同的查询,得到的结果不一致,比如select count(1) from tb_user
隔离级别
- READ-UNCOMMITTED(读未提交):最低的隔离级别,一个事务可以读取另一个事务更新但未提交的数据。可能会导致脏读、不可重复读或幻读。
- READ-COMMITTED(读已提交):一个事务提交后才能被其他事务读取到,可以阻止脏读,但是不可重复读或幻读仍有可能发生。
- REPEATABLE-READ(可重复读):对同一记录的多次读取结果都是一致的,除非数据是被本身事务所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。
- SERIALIZABLE(可串行化):最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。
锁
- 行锁,表锁
设计模式
原型
单例
工厂
策略
代理
…
框架
Spring
IOC
AOP
事务
循环依赖
SpringMVC
执行流程
Mybatis
缓存、延迟加载
SpringBoot
自动配置
全局异常
Shiro
Spring Security
SpringCloud
其他
Rabbit MQ
Redis
数据类型
雪崩、穿透、击穿
事务
持久
集群