本文首发于cartoon的博客
转载请注明出处:https://cartoonyu.github.io/c...java
数据结构
-
B+树的特色git
- B+树全部数据都在叶子结点,非叶子结点只存储数据的索引
- 叶子结点间造成链表,范围查询相对于B树减小了检索的次数
- 全部非叶子结点都同时存在与子节点,都是子节点的端口元素
-
跳表的了解github
- 采用以空间换时间的思路实现查询速度的提升
- 应用在Redis的有序集合上
-
操做算法
-
查询sql
- 应用多级索引进行值的比对以及层数的下沉,进而减小了遍历节点的次数
-
插入数据库
- 抛硬币得出插入元素插入索引的层数
- 将插入元素按顺序插入到最底层的链表中
-
删除元素编程
- 删除各层包括删除元素的结点
-
时间复杂度设计模式
- 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. 二叉搜索树的最小绝对差