# note_blogs_docsify
**Repository Path**: panda_code_note/note_blogs_docsify
## Basic Information
- **Project Name**: note_blogs_docsify
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-05-22
- **Last Updated**: 2023-07-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
> git remote add github https://github.com/xiaoliuxuesheng/singular.git
# [class00_办公软件](class00_办公软件/class00_办公软件.md)
- [part01_office](class00_办公软件/part01_office/part01_office.md)
- [part01_office](class00_办公软件/part01_office/part01_office.md)
- [part02_ui](/class00_办公软件/part02_ui/part02_ui.md)
- [part03_notebook](/class00_办公软件/part03_notebook/part03_notebook.md)
- [point01_gitbook](class00_办公软件/part03_notebook/point01_Gitbook/point01_gitbook.md)
- [point02_hexo](class00_办公软件/part03_notebook/point02_hexo/point02_hexo.md)
- [point03_docsify](class00_办公软件/part03_notebook/point03_Docsify/point03_Docsify.md)
- [part04_uml](/class00_办公软件/part04_uml/part04_uml.md)
- [part02_ui](/class00_办公软件/part02_ui/part02_ui.md)
- [part03_notebook](/class00_办公软件/part03_notebook/part03_notebook.md)
- [part04_uml](/class00_办公软件/part04_uml/part04_uml.md)
# [class01_学前必备](class01_学前必备/class01_学前必备.md)
- [part01_计算机组成](/class01_学前必备/part01_计算机组成/part01_计算机组成.md)
- [part02_计算机操作系统](/class01_学前必备/part02_计算机操作系统/part02_计算机操作系统.md)
- [part03_计算机网络原理](/class01_学前必备/part03_计算机网络原理/part03_计算机网络原理.md)
# [class02_java全栈](class02_java全栈/class02_java全栈.md)
- [part01_java基础](/class02_java全栈/part01_java基础/part01_java基础.md)
- [part02_java高级](/class02_java全栈/part02_java高级/part02_java高级.md)
- [part03_自动化构建](/class02_java全栈/part03_自动化构建/part03_自动化构建.md)
- [part04_javaEE开发](/class02_java全栈/part04_javaEE开发/part04_javaEE开发.md)
- [part05_java核心框架](/class02_java全栈/part05_java核心框架/part05_java核心框架.md)
- [part06_java工具集](/class02_java全栈/part06_java工具集/part06_java工具集.md)
- [part07_微服务技术栈](/class02_java全栈/part07_微服务技术栈/part07_微服务技术栈.md)
- [part08_后端架构技术整理](/class02_java全栈/part08_后端架构技术整理/part08_后端架构技术整理.md)
# [class03_数据库](class03_数据库/class03_数据库.md)
- [part01_oracle](/class03_数据库/part01_oracle/part01_oracle.md)
- [part02_mysql](/class03_数据库/part02_mysql/part02_mysql.md)
- [part03_redis](/class03_数据库/part03_redis/part03_redis.md)
- [part04_mongodb](/class03_数据库/part04_mongodb/part04_mongodb.md)
# [class04_产品开发](class04_产品开发/class04_产品开发.md)
- [part01_产品基础](/class04_产品开发/part01_产品基础/part01_产品基础.md)
- [part01_产品基础](/class04_产品开发/part01_产品基础/part01_产品基础.md)
- [part02_产品设计](/class04_产品开发/part02_产品设计/part02_产品设计.md)
- [part02_产品设计](/class04_产品开发/part02_产品设计/part02_产品设计.md)
# [class05_前端全栈](class05_前端全栈/class05_前端全栈.md)
- [part01_前端基础](/class05_前端全栈/part01_前端基础/part01_前端基础.md)
- [part02_前端进阶](/class05_前端全栈/part02_前端进阶/part02_前端进阶.md)
- [part03_前端框架](/class05_前端全栈/part03_前端框架/part03_前端框架.md)
- [part04_工具扩展](/class05_前端全栈/part04_工具扩展/part04_工具扩展.md)
# [class06_大数据](class06_大数据全栈/class06_大数据全栈.md)
- [part01_linux](/class06_大数据全栈/part01_linux/part01_linux.md)
- [part02_docker](/class06_大数据全栈/part02_docker/part02_docker.md)
- [part03_技术栈](/class06_大数据全栈/part03_技术栈/part03_技术栈.md)
- [part04_大数据](/class06_大数据全栈/part04_大数据/part04_大数据.md)
# 面试整理
## 001_Redis面试题
1. Redis有哪些数据类型
- String、List、Set、ZSet、Hash
2. 什么是Redis的持久化
- RDB:是Redis默认的持久化方式,按照一定的时间把内存的数据用快照的方式保存到磁盘;
- AOP:是把Redis执行的写命令记录到文件中,Redis会优先选择AOF恢复
3. Redis过期键的删除策略
- 定时过期:每个设置过过期时间的key会创建对应的定时器,到期就清除;会占用CPU资源处理过期数据
- 惰性过期:访问key的时候才会判断是否过期,过期则清除;过期的数据任然在内存中;
- 定期清理:每隔一段时间,扫描数据库中的key;
4. 为什么Redis效率高
- 纯内存操作
- 核心是基于非阻塞的IO多路复用
- 单线程避免线程之间切换的损耗
## 002_MySQL面试
### ▲ 事务的四大特性
1. A(Atomic):原子性,事务中的操作要不全部成功,要不全部失败;
2. C(Consistency):一致性,在事务执行前后,数据保持一致
3. I(Isolation):事务并发访问数据库,事务直接不会相互干扰;
4. D(Durability):持久性,事务提交后,对数据库中数据的改变是永久的;
### ▲ MySQL事务隔离级别
1. 未提交读:其他事务可以看到本事务没有提交的修改,如果本事务回滚会造成脏读;
2. 已提交图:其他事务只能读到本事务已提交的部分,有不可重复读的问题:因为同一个事务内两次读取拿到的结果可能不一样;
3. 可重复读:是MySQL默认的隔离级别,指同一个事务中多次读的数据是一致的,
4. 串行读:串行执行事物;
### ▲ MySQL的SQL执行步骤
1. 连接器:管理连接,权限验证;
2. 查询缓存:默认是关闭的,命中缓存返回结果;
3. 分析器:解析SQL语法
4. 优化器:生成执行计划,选择索引
5. 执行器:执行优化后的SQL,调用存储引擎获取数据,返回结果
## 003_Spring
### ▲ 事务传播机制
- 事务传播机制是指:多个事务方法间调用时,事务在这些方法中的作用方式
1. required(默认):如果上下文中有事务了,就加入到事务中执行,如果当时上下文中不存在事务,则新建事务;
2. supports(支持事务):是指运行环境中有事务就运行在事务中,否则以非事务运行;
3. mandatory(强制):是指只能运行在已有的事务环境中,如果当前事务不存在会抛异常;
4. requires_new(新事务):事务方法运行需要新建一个事务,并且将上下文中事务挂起,当前事务执行完成后,上下文事务再恢复执行;
5. not_supported(不支持事务):当方法运行在事务环境时,会暂停已开启的事务,并且当前方法以非事务方式运行完毕后,再继续执行上下文中的事务
6. never(永远不):不能运行在事务中,如果运行在事务中抛出异常;
7. nested(嵌套事务):如果上下文中存在事务,则运行在事务中,如果不存在事务,则新建事务;
### ▲ Spring事务失效
- Spring事务在使用@Transactional注解事务失效的原因是AOP不起作用
1. 方法不是public的
2. 方法属于当前类自调用
3. 数据库不支持事务
4. 当前方法所在类不是Spring的Bean
5. 默认回滚RuntimeException,如果异常被catch或者不属于RuntimeException就会失效
### ▲ SpringMVC工作流程
1. 客户端发送请求到前端控制器:DispatcherServlet
2. 前端控制器(DispatcherServlet)将请求发送给处理器映射器:HandlerMapping,处理器映射器(HandlerMapping)会根据请求,找到对应的处理器,封装为执行器链(HandlerExecutionChain)并返回给前端控制器;
3. 前端控制器根据执行器链中的处理器,找到可以执行改处理器的适配器,调用具体的处理器(Controllers),并返回ModelAndView;
4. 前端控制器根据ModelAndView交给视图解析器(ViewREslover),返回具体View;
5. 前端控制器根据View进行渲染视图,封装数据交给前端控制器并相应给客户端;
### ▲Spring启动流程
1. 首先是读取配置文件,解析出来需要加载到Spring中的Bean的信息封装成BeanDefinition(有不同的实现,解析xml、Java主键,yaml等等)
2. Spring中BeanFactory的作用就是通过 解析BeanDefinition,通过反射创建出Bean的实例对象,添加到IOC容器中,但是BeanDefinition交给BeanFactory之前,Spring还可以通过BeanFactoryPostProcessor对BeanDefinition进行修改;
3. BeanFactory拿到修改后的BeanDefinition后,就开始实例化Bean了,实例化过程:
- 第一步:反射创建未初始化的对象;
- 第二步:初始化对象,给属性赋值:三级缓存解决循环依赖,为属性赋值;
- 第三步:通过Aware接口,对对象进行功能扩展;
- 第四步:通过BeanPostProcessor,在执行init方法前后执行接口中的两个方法;
- 第五步:创建完整对象完成,销毁对象之前执行销毁方法;
### Spring三级缓存
1. Spring项目添加事物的方式
- 使用在Spring Beand的方法上@Transactional注解:事物粒度比较大,只能控制整个方法;
- TransactionTemplate:在execute方法方法中执行事物,事物粒度小,执行单条SQL,但是不能设置事物属性;
- PlatformTransactionManager通过TransactionDefinition获取到TransactionStatus:执行完成后commit,执行失败后rollback,,事物粒度小,执行单条SQL,并且可以设置事物属性;
## 004_SpringCloud
### 005_JVM
# 架构
1. 高并发相关理论
- 瓶颈分析
- CPA理论
2. 高并发技术
- 流量网关:全局流量控制、日志统计、SQL注入、web攻击、黑名单控制、
- 业务网关:安全、权限、路由、过滤、流控、缓存、服务路由、业务聚合