自我介绍这里一笔带过,给对面介绍自己内在 + 外在 + 校园经历 + 校园项目 + 意向岗位
主要有5个组件,前端控制器、映射器、处理器、处理器适配器、视图解析器
前端控制器也就是中央处理器,它主要负责前端用户的请求和对其他组件的转发调用;
前端控制器接收到请求后,会把请求转发给处理器映射器,处理器会根据配置或注解(@Controller)找到最终要执行的Handler;
然后将Handler(自己的业务处理)对象以及其对应的拦截器,封装到HandlerExecutionChain对象中并以它的形式放回;
前端控制器根据获取到的Handler(Controller),去选择一个合适的HandlerAdapter(它还支持Servlet、HttpRequestHandler、ThrowawayController),成功获取到会先去执行拦截器;
这时将开始对提取Request中的模型数据,并且将Handler的入参进行数据填充,以至于我们写控制层方法时,入参是前端传来的值,在填充过程中,根据自己的配置,Spring还可以帮你做一些额外操作:
Handler执行完成后,返回一个ModelAndView(视图和视图需要填充的模型数据)
前端控制器根据返回的ModelAndView,选择合适的ViewResolver
ViewResolver 结合Model和View,来渲染视图
最终前端控制器将渲染结果返回给客户端
springboot
它可以帮我快速、使用最低代码最少时间开发出一个项目,不想 SpringMVC
,需要繁琐写很多配置信息,我们只关注写业务代码即可。
通过配置文件解耦代码,在一些可能改动的配置信息,可以不通过修改代码再打包部署,而是让代码去外部读取该配置文件,再去运行。
还有SpringBoot
是使用了maven
可以方便对版本的管理,能够让自己不需要考虑版本依赖问题和兼容版本的问题。
有,它是一个缓存数据库,主要存储的是k-v
类型的数据。
嗯?缓存雪崩的话,就是key
集中失效,导致 Redis
相当于宕机,大量请求依旧打到mysql
数据库上了。
这里总结一下,其实雪崩Redis
服务基本不可用了,存储层的调用量会暴增,造成存储层也会挂掉的情况,而且雪崩会出现周期性的峰值,因为就算缓存失效了,请求到了存储层,获取到数据后,是会再做一次缓存的,所以会出现周期性峰值。
致命的原因是存储层在暴增的情况下扛不住调用后,导致数据库直接挂掉了。
嗯?我们可以对那个 key 的缓存时间设置更长一些,缓存雪崩导致的原因是因为太过于集中失效,导致暴增,那么如果我们均摊一下时间,就能避免出现该情况,所以我们可以对缓存时效设置的更随机性一些,且对一些热点数据缓存时间设置永久性。