2021-10-21面试题

这篇博客汇总了2021年10月21日的面试题,涵盖了GC垃圾回收机制、数据库索引的作用、Spring的IOC和DI、SpringMVC的处理流程、Mybatis的工作原理、SpringCloud微服务概念以及Redis的相关知识,还包括数据库优化和SQL安全等内容。
摘要由CSDN通过智能技术生成

目录

GC垃圾回收机制

 数据库索引的作用

spring:IOC和DI

springMVC

 什么是springmvc

springmvc的处理流程

 Mybatis

什么是mybatis?

Mybatis工作流程

resultType和resultMap的区别

              SpringCloud

分布式系统是什么?

微服务是什么?

微服务和分布式的区别是什么?

nacos

feign

 为什么要使用feign

sentinel

Nginx

                Linux常见命令

数据库及常用的sql优化

 什么是数据库的事务

 数据库的字段约束

 数据库的优化方案

什么是SQL攻击?如何解决

 Redis

哨兵机制(Sentinel):

集群(cluster):

概念

数据类型:


GC垃圾回收机制

在java中,堆被划分为两个不同的区域:新生代、老年代,新生代有三个分区:Eden、ToSurvivor、FromSurvivor,新生代使用复制算法完成回收,老年代使用标记算法。在易电源区执行第一次GC,用可达性分析算法分析死亡的对象被回收,存活的对象被分配到From区,然后再采用复制算法将Eden和From区一起清理,存活的被复制到to区,移动一次年龄加一,当年龄大于一定值的时候直接移动到老年区,年龄默认值是15。当老年代存满后,使用Full GC清理整个堆包括年轻代和老年代。

 数据库索引的作用

为了提高数据库的查询效率,给查询需要量大,字段值比较大的情况加索引,因为创建索引所占的空间比较大,所以不是所有条件都适合加索引。例如:如果每次都需要取到所有表记录,进行全表扫描;非唯一字段,例如“性别”这种大量重复的字段。

spring:IOC和DI

IOC:将对象的创建,对象的存储(map),对象的管理(依赖查找、依赖注入)交给了spring容器。

DI:组件之间的依赖关系由容器在应用系统运行期来决定,也就是容器动态的将某种依赖关系的目标对象实例注入到应用系统中的各个关联组件之间.

AOP:把系统分为核心关注点和横切关注点。核心主要处理业务逻辑,横切是权限验证,日志,事务处理。

AOP面向切面编程:切面:piontcut与point的组合

​                 连接点:程序执行过程中明确的点。

​                 通知:前置通知、后置通知、环绕通知、返回后通知、异常通知

​                 切点:提供一组规则来匹配Joinpoint

​                 目标对象:包含连接点的对象。也被称作被通知或被代理的对象。

​                 AOP代理:AOP框架创建的对象,包含通知。在spring中,AOP代理可以是JDK动态代理或者CGLIB代理。

​                 织入:组装方面来创建一个通知对象。这可以在编译时完成也可以在运行时完成。spring在运行时完成。

springMVC

 什么是springmvc

SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架。通过把Model,View,Controller分离,把较为复杂的web应用分成逻辑清晰的几部分,是为了简化开发,减少出错。

springmvc的处理流程

1.浏览器发送请求,被前端控制器dispatcherservlet捕获。

2.dispacherservlet通过请求的url解析到请求资源标识uri,然后根据该uri调用handlermapping,获取对应的handler。

3.得到handler后,开始有handleradpter适配器进行操作。

4.handleradpter根据handler来调用controller控制器,开始处理请求,处理具体业务。

5.处理器处理完业务后会返回一个ModelAndView对象,Model是数据对象,View是个逻辑上的view。

6.ViewResolver视图解析器通过逻辑view查找实际的view。

7.dispacherservlet把model交给view进行视图渲染。

8.最后再把view返回给浏览器

 Mybatis

什么是mybatis?

MyBatis 是一款优秀的**持久层框架**,它支持定制化 SQL、存储过程以及高级映射。 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

Mybatis工作流程

1.mybatis应用程序通过sqlSessionFactoryBuilder从mybatis-config.xml配置文件中构建出sqlSessionFactory。

2.sqlSessionFactory的实例直接开启一个sqlSession

3.再通过SqlSession实例获得Mapper对象

4.执行Mapper映射的SQL语句,完成对数据库的CRUD操作和事务提交

5.关闭sqlSession

   sqlSession是单线程对象,因为他是非线程安全的,是持久化操作的独享对象。

resultType和resultMap的区别

resultType是直接表示返回类型的,resultMap是对外部resultMap的引用,resultType和resultMap不能同时存在。

(1)返回类型属性是resultType时,Mybatis会将Map里面的键值对取出赋给resultType所指定对象对应的属性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值