1.还是那些东西。。自我介绍,项目介绍啥的。。。。
2.说一说mybatisPlus的一级缓存、二级缓存、批量插入、#{} 和 ${}符号的区别
一级缓存:
mybatisPlus的一级缓存是Session缓存,作用域:SqlSession,每个sqlSession之间有一个单独的mapper,彼此之前不受影响,第一次查询的时候会先从数据库查,然后放到缓存里,第二次如果执行相同的SQL语句,就会直接从缓存里面拿取。
缓存失效:执行增删改操作,会把缓存里面的数据清空,为了防止出现脏读。
二级缓存:
mybatisPlus的二级缓存是Mapper,作用域是同一个nameSpace下的Mapper文件内容,每个SqlSession共用一个Mapper。 一次会话查询一条数据,会把这个数据放到当前会话的一级缓存里,如果当前会话失效了,就会把一级缓存的数据放到二级缓存里,然后新的会话就会参考二级缓存。
3.redis的缓存雪崩
缓存雪崩的含义是在某个时间点,缓存key大量失效,导致请求全都落在数据库服务器上,对数据库服务器造成巨大的压力,可能会引起系统的崩溃。
解决办法:
1.可以对请求进行限流。
2.可以设置redis集群,保证服务的高可用。
4.说一下你的项目中SpringCloud用到了哪些组件?
Nacos(注册中心)、gateWay(网关)、Sentinel(熔断器)、Ribbon(负载均衡)、SpringSecurity + oauth2.0(安全认证授权中心)
5.你有没有用到其他的注册中心?(除去nacos)
Zookeeper、Dubbo
6.简单说一下Spring是什么?
Spring有两个核心概念:IOC控制反转和AOP切面,IOC就是说Spring创建完bean的时候,把bean统一交给Spring容器来保管。Aop切面就是对某个类的某个方法进行增强,Aop是基于动态代理实现的,常见的动态代理方式有:JDK动态代理,CGLIB动态代理。
7.怎样解决Spring的循环依赖问题?
循环依赖问题:
Spring应用了缓存模式来解决循环依赖问题:
三级缓存:
一级缓存:singletonObjects 用于保存实例化、注入、初始化完成的bean实例。
二级缓存:earlySingleton 用于保存实例化完成的bean实例。
三级缓存:根据bean来创建工厂,用于以后扩展生成代理对象。
8.SpringMVC怎么设置重定向和转发?
重定向:redirect
转发:forward
9.SpringMVC有哪些注解?
@RequstBody
@RequestParam
@PathVariable
@RestController
@RequestMapping
...
10.SpringBoot和SpringCloud的区别?
首先SpringBoot是单体架构,SpringCloud的微服务架构,可以实现低耦合,高内聚,简化开发,使服务器减少压力,实现高可用。
11.Nginx负载均衡和Ribbon的负载均衡有什么不同?
Nginx负载均衡是基于服务器的负载均衡,可以对所有请求进行转发到Nginx服务器,然后用Nginx分发服务。Ribbon是基于客户端进行负载均衡,将Eureka或者Nacos上的服务地址缓存到本地,然后通过Ribbon的负载均衡策略来达到均衡分发服务的效果。
12.当涉及到判断语句中有聚合函数应该用哪个?(肯定不是where)
用Having。