自用的粗糙知识索引
偶尔记录一下使用过的知识,技术概念
让自己更快的在脑子里 回顾知识内容、它们的关系、形成知识网
文章目录
一、基础编程
1 JavaSE
1.1 面向对象
什么是面向对象,就是对世界存在的事物和关系,抽象成对象,将事物的属性和行为描述成类,通过继承、实现、组合的方式囊括万事万物,实现对世界的抽象。
1.2 集合容器
1.3 注解
1.4 并发编程
- 锁:synchronize锁升级过程
- 什么是CAS
- Lock系列
- 信号量Semaphore
- 线程和进程,线程状态
- 死锁,哲学家问题-顺序加锁
- 线程池
2 算法
- 我的算法练习专栏
- 排序:史上最全经典排序算法总结(Java实现)
- 贪心
- 分治
- 动态规划
- 回溯
2.1 JavaEE
- servlet、拦截器、过滤器
2.2 网络
- OSI七层模型
- TCP/UDP 三次握手四次挥手
- 路由协议
- 子网划分
2.3 数据库
- 内连接:典型的联接运算,使用像 = 或 <> 之类的比较运算符
- 左(外)连接 :左外连接(left join)以左表为主表(查询全部), 右表为辅表(没有的显示null)
- 右(外)连接:以右表为主表(查询全部), 左表为辅表(没有的显示null)
- 全连接:两个表的所有数据都展示出来,相当于左外连接并上右外连接
2.3.1 三大范式
- 第一范式:每个列都不可以再拆分。
- 第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。
- 第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。
2.3.1 Mysql
引擎
- InnoDB
- MyISAM
索引
- 最左原则
- B+树
- 自增主键:按顺序存放,增删数据速度快,对于检索非常有利;字型,占用空间小,易排序;使用整形才可以使用AUTO_INCREAMENT,不用担心主键重复问题。
- 聚簇索引:将数据与索引放到了一块,索引结构的叶子节点存储了行数据,找到索引也就找到了数据
- 非聚簇索引:将数据与索引分开存储,索引结构的叶子节点存储的是行数据的地址
分库分表
- MyCat
性能优化
主从复制
事务
-
四大特性(ACID),原子、一致、隔离、持久
-
脏读:一个事务读取到另外一个事务未提交的数据
-
不可重复读;一个事务读取同一条记录2次,得到的结果不一致
-
幻读;幻读发生在两个完全相同的查询,得到的结果不一致,比如select count(1) from tb_user
隔离级别
- READ-UNCOMMITTED(读未提交):最低的隔离级别,一个事务可以读取另一个事务更新但未提交的数据。可能会导致脏读、不可重复读或幻读。
- READ-COMMITTED(读已提交):一个事务提交后才能被其他事务读取到,可以阻止脏读,但是不可重复读或幻读仍有可能发生。
- REPEATABLE-READ(可重复读):对同一记录的多次读取结果都是一致的,除非数据是被本身事务所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。
- SERIALIZABLE(可串行化):最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。
锁
- 行锁,表锁
3 设计模式
二、框架/中间件/其他
1.Spring
2.SpringMVC
SpringMVC面试题
执行流程
3. Mybatis
4.SpringBoot
Spring boot知识点总结
自动配置
4.1 全局异常
5 Shiro
6 Spring Security
7 SpringCloud
8 Rabbit MQ
9 Redis
- 雪崩:大量缓存短时间内同时失效,数据库压力突然增大。
- 穿透:访问一个不存在的key。
- 击穿:同一时刻大量访问同一个过期的key,由于找不到都去请求数据库。解决:热点key永不过期、加锁