1. 年轻代里面的区域

新生代里面分为Eden区和SurvivorFrom (S0) 和 SurvivorTo (S1) 区, 分别占 8/10, 1/10, 1/10,  MinorGC的时候会先把Eden区活着的对象复制到S0区, 然后清空Eden区, 下一次会把Eden区和S0区活着的对象复制到S1区, (S0区和S1区是一样的作用, 用来相互复制), 如此反复15次, 还活着的对象就进入老年代.

2. 布隆过滤器

3. Spring事务隔离级别(应该是数据库的) 事物传播机制, 数据库引擎类型 数据库索引类型 B+Tree和BTree区别/B+Tree查找过程

4. ES选举/集群

Elasticsearch在满足如下时间点的时候会触发选举

  1. 集群启动初始化
  2. 集群的Master崩溃的时候
  3. 任何一个节点发现当前集群中的Master节点没有得到n/2 + 1节点认可的时候(防止脑裂),触发选举

Bully 算法: 简单暴力地通过选出 ID 最大的候选者来完成,ES 的选举与 Bully 算法有所出入,它选举的是ID 最小的节点

5. springMVC请求执行过程

执行流程

  1. 首先客户端发起用户请求,以http形式进入到servlet容器中,servlet容器解析http数据成为一个endpoint对象,endpoint对象包含了请求url、http header以及解析完或者读取完的body数据流。
  2. 然后进入用户自定义的filter,在filter中用户可以对request进行处理,然后经过多个filter处理完后,进入到dispatcherservlet,也就是springmvc的入口。
  3. 然后会先进入到一些常用的解析器中,比如用来解析上传文件的MultipartResolver,如果请求是Multipart,也就是说header包含Multipart,springmvc就会解析上传的请求里面的上传文件,解析成字节流,以及把一些字符串k、v读出来,封装到对象中以供后续的comtroller进行接收,从解析器出来后,就是根据请求url寻找handler(controller)的过程。
  4. 由于我们在controller方法中使用requestMapping注解定义了url映射,在启动过程中springmvc就会将controller及对应的方法注册到HandlerMapping中,如果无法在handlerMapping中找到请求对应的controller,就会报404错误。
  5. 找到controller后进入到HandlerInterceptor,即拦截器,在拦截器中可以进行打印日志,身份鉴权等操作。
  6. 经过拦截器后,springmvc会对数据进行绑定(与方法参数进行绑定),及数据验证,反射调用我们的controller方法,执行方法体中的业务逻辑,执行完成后创建ModelAndView。model就是数据,此时的view只是个viewName(String)。
  7. 如果我们定义了异常处理器,在拦截器处理数据绑定、数据验证、业务处理这些所有环节,只要出现了异常,都会被异常处理器拦截,可以在异常处理中返回相应的错误页面。