共计 1670 个字符,预计需要花费 5 分钟才能阅读完成。
本文首发于 cartoon 的博客
转载请注明出处:https://cartoonyu.github.io/c…
数据结构
B+ 树的特点
- B+ 树所有数据都在叶子结点,非叶子结点只存储数据的索引
- 叶子结点间形成链表,范围查询相对于 B 树减少了检索的次数
- 所有非叶子结点都同时存在与子节点,都是子节点的端口元素
跳表的了解
- 采用以空间换时间的思路实现查询速度的提高
- 应用在 Redis 的有序集合上
操作
查询
- 应用多级索引进行值的比对以及层数的下沉,进而减少了遍历节点的次数
插入
- 抛硬币得出插入元素插入索引的层数
- 将插入元素按顺序插入到最底层的链表中
删除元素
- 删除各层包括删除元素的结点
时间复杂度
- O(log n)
数据库
Mysql 索引的了解
目的
- 为了加快等值查询以及范围查询的速度
分类
- 主键索引
- 普通索引
- 唯一索引
- 全文索引
- 多列索引
- 组合索引
实现
- B+ 树
- B 树
- Hash 树
Mysql 查询条件带索引的查询语句的执行流程
MySQL5.6 之前
- 最左前缀查找符合条件的第一个索引列值
- 回表到主键索引树查找符合条件的结果集合
MySQL5.6 之后
- 最左前缀查找符合条件的第一个索引列值
- 索引下推查找符合条件的下一索引值
- 回表到主键索引树查找符合条件的结果集合
网络
混合加密的原理以及使用场景
- 使用非对称加密利用随机数产生的公钥
- 公钥传输完成并解密后传输的双方采用对称加密的方式传输数据
解决问题
- 对称加密中公钥的传输问题
- 减少传输中使用非对称加密中加解密的时间
java
静态代理与动态代理的区别
- 静态代理与动态代理都是代理模式的一种实现
区别
确立对象方面
- 静态代理在编译时已经确立好代理对象的类型
- 动态代理在运行时采用反射机制动态创建对象
特点
- 静态代理编码相对简单,而且实际运行速度会比动态代理快
- 动态代码可以有效解决多对象代理编码重复性的问题
Spring
AOP 的概念了解
- AOP 是 Spring Framework 的一个重要模块,基于 Core 模块进行实现
- AOP 缓解了原来 OOP 编程的不同功能之间的代码耦合问题,将原来顺序化执行的程序看作一个个切面
底层实现
- 在字节码层面上进行代理的实现
使用 JDK 动态代理或者 cglib 代理
- JDK 动态代理中代理类必须实现接口
- cglib 代理不需要接口,更灵活
Spring MVC 的运行流程
Spring MVC 组件
视图解析组件
- ThemeResolver
- LocaleResolver
- ViewResolver
处理类组件
- HandlerAdapter
- HandlerExceptionResolver
- RequestToViewNameResolver
- MuitipartResolver
管理类
- HandlerMapping
- FlashResolver
步骤
- 请求到达 DispatchServlet
DispatchServlet 调用 HandlerMapping 查找处理的 Controller
- 若查找的 url 修饰的方法不符合 Spring 的要求,则调用 HandlerAdapter 进行请求的转换
- 若分发过程出错,调用 HandlerExceptionResolver 进行异常处理
- Controller 调用 Service 进行业务逻辑的处理,Service 返回结果,Controller 利用 RequestToViewNameResolver 进行结果的包装,并返回 ModelAndView 对象到 DispatchServlet
- DispatchServlet 分发 ModelAndView 到视图渲染器
视图渲染器根据 ModelAndView 调用 ViewResolver 进行视图的渲染以及数据的填充
- 若请求带有对国际化的处理,调用 LocaleResolver 进行渲染
- 若请求带有不同主题的切换,调用 ThemeResolver 进行渲染
- 视图渲染返回页面到 DispatchServlet,DispatchServlet 返回页面到请求方
操作系统
- I/ O 的控制方式
- 程序直接控制
- 中断控制
- 直接内存存取方式
- 通道控制方式
设计模式
- 单例模式的四种实现
- 饿汉式
- 类加载时已经初始化对象
- 懒汉式
- 调用 newInstance 方法时初始化对象
- DCL 式
- 双重加锁检查对象
- 静态内部类
算法
- 530. 二叉搜索树的最小绝对差
正文完
发表至: java
2019-07-28