跳至主要內容

中间件专题

wangdx大约 1 分钟

Redis 有哪些高级功能?

Hash 槽动态扩容缩容演示

虚拟卡槽 2^32-1

插入数据的 key 取模,根据值在环上,顺时针找节点存放

三色标记法实现原理?

GC Root Set

White 尚未被垃圾收集器访问过

Gray 已被收集器访问过,但存在引用未被扫描

Black 已被收集器访问过,且引用皆以被扫描

SATB 算法为什么比 CMS 的增量标记快

GC Root Set

效率比增量标记快但可能属于多标问题。只能等到下轮标记标记才能被清除。以空间换时间

MVCC 怎么判断某个版本的可见性

Low_limit_id 高水位 & up_limit_id 低水位

Spring 执行流程?

  1. 配置阶段
  • 配置 web.xml ---- DispatcherServlet
  • 设定 init-param ---contextConfigLoacation = classpath:application.xm
  • 设定 url-pattern ---- ///*
  • 配置 Annotation --- @Controller @Service @Autowrited @RequestMapping ...
  1. 初始化阶段

ioc

  • 调用 init()方法 加载配置文件
  • IOC 容器初始化 Map/<String,Object/>
  • 扫描相关的类 scan-package=“com.tuling.tianming”
  • 创建实例化并保存至容器 通过反射机制将类实例化放入 IOC 容器中

di

  • 进行 DI 操作
  • 扫描 IOC 容器中的实例,给没有赋值的属性自动赋值

MVC

  • 初始化 HandlerMapping 将一个 URL 和一个 Method 进行一对一的关联映射 Map<String,Method>
  1. 运行阶段
  • 调用 doPost()/doGet() Web 容器调用 doPost/doGet 方法,获得 request/response 对象
  • 匹配 HandlerMapping 从 request 对象中获得用户输入的 url,找到其对应的 Method
  • 反射调用 method.invoker() 利用反射调用方法并返回结果
  • response.getWrite().write() 将返回结果输出到浏览器

上次编辑于: