考个试 看看你还记得多少

单选题

简答题总分 单选题(每题1分,共10分)

1.在 Spring 框架中,@Autowired 注解用于实现什么功能? (A)

A.自动装配 B.声明依赖c.注入依赖 D.自定义装配

2.Spring框架中的事务管理是通过哪个注解实现的? (A)

A.@Transactional B.@Transaction C.@Autowired D.@Service

3.SpringCloud 是基于哪个框架构建的? ( A)

A. Spring Boot B.Spring MVCC. SpringJDBCD.Spring Security

4.Spring MVC,处理请求的 Controller 方法的参数中哪个参数类型用于获取HTTP请求的内容 C A.HttpServletRequest B.Model C.RequestBody D.PathVariable

5.Spring Boot 是一个用于简化 Spring 应用开发的工具。以下哪个选项不是 Spring Boot的主要特点?D

A.提供自动配置支持 B.简化spring应用的初始搭建以及开发过程 c.提供嵌入式Servlet 容器 D强制使用XML进行配置

6.在Spring框架中,用于实现延迟加载的注解是? A

A.@Lazy B.@Autowired C.@ComponentScan D.@Configuration

7.Spring框架中的AOP(面向切面编程)是通过哪个组件实现的? B

A.AspectJ BSpringAOP模块 C. Spring MVC D.Spring Boot

8.Spring框架中,用于处理HTTP 请求的类是? B

A. HttpServletRequest B. Controller C. Servlet D. Filter

9.MyBatis 中,以下哪个元素用于定义结果集的列名和 Java 对象的属性之间的映射关 D A.<resultMap> B.<resultType>C.<column> D.<property>

10.在 MyBatis 的XML映射文件中,以下哪个元素用于定义查询结果的映射规则? B

A.<select> B.<resultMap> C.<update> D.<insert>

多选题(每题2分,共20分)

1.下列哪个是 Java 中的线程同步机制? ABCD

A,synchronized 关键字 Bwait()方法 C.notify()方法 D.notifyAll()方法

2.下列哪个是 Java 中的基本输入输出流? AC

A. FilelnputStream B. BufferedlnputStream c. FileOutputStream D. BufferedOutputStream

3.下列哪个是 Java 中的集合类? ABC A. List B. Set c.Map D.Queue

4.下列哪个是 Java 中的异常处理语句? ABCD A. try B. catch C. finally D.throw

5.下列哪个是 Java 中的数据类型? ABD A. int B. String C. void D. boolean

6.下列哪个是Springboot 的特性? D

A,自动配置 B.入式 Tomcat/Jetty 容器 C.无XML配置 D.全部都是

7.在Springboot 中,我们可以通过哪个注解来启用自动配置? A

A. @EnableAutoConfiguration B. @EnableConfigurationProperties

C. @EnableAspectJAutoProxy D. @EnableTransactionManagement

8.Springboot 支持哪些数据源配置方式? D A.通过 application.properties 或 application.yml 配置

B.通过 JavaConfig 配置 C.通过 SpringXML配置 D.全部都是

9.下列哪个是 Springboot 的 starter? D A. spring-boot-starter-web B. spring-boot-starter-data-jpa C.spring-boot-starer-batch D.全部都是

10.在Springboot 中,我们可以通过哪个注解来定义 Controller? AB A. @Controller B. @RestController C.@RequestMapping D.@GetMapping

三、填空题(每题1分,共10分)

1.在 Spring 框架中,使用( @Component )注解可以声明一个类作为 Bean,而使用( @Bean )注解可以声明一个方法作为 Bean 的工厂方法。 2.Spring 框架中的依赖注入是通过( DI )机制实现的,它支持通过构造函数、setter 方法和字段注入等方式将 Bean 注入到目标对象中。

3.Spring框架中的数据访问对象(DAO)模式使用( Repositry )接口来封装对数据库的操作,而使用( Service )接口来封装事务管理的代码。

4.在Spring框架中,使用(@ComponentScan )注解可以声明一个类作为组件扫描的包,而使用( @Configuration )注解可以声明一个类作为配置类。

5.MyBatis是( Orm )的一种实现,它通过XML或注解的方式将接口与 SQL语句映射 6.MyBatis 中的( <param> )元素用于配置 SQL语句的参数映射。 7.MyBatis ( resultMap )中的元素用于配置结果映射,将数据库查询结果映射到Java 对像 8.一个索引可以包含多个列,这种索引被称为( 符合 )索引 9.Redis 的五大基本数据类型分别是( list ,set ,zset,string ,hash ) 10.Redis 的持久化解决方案分别是( rdb )和(aof )

四、判断题 (每题1分,共10分 )

1.Spring 是一个轻量级的Java 开发框架,主要用于简化企业级应用的开发。 对 2.Springboot 是 Spring 的一个子项目,用于快速构建基于 Spring 的应用。 对 3.Springboot 的核心功能是自动配置,它可以自动根据项目的依赖关系进行配置。 对 4.Springboot 默认使用 Tomcat 作为嵌入式容器。 对 5.Springboot 支持通过 application.properties 或 application.yml 文件进行配置 。 对 6.Spring 中的@Component 注解用于定义一个普通的Java 类为 Spring 容器管理的 Bean。 对 7.在 MySQL 中,可以使用GROUP BY 子句对查询结果进行排序,并可以选择升序或降序排 错 列,可以使用ORDER BY 子句对查询结果进行分组,使用 WHERE 进行分组的条件筛选。 8.在 MySQL中,可以使用 LIKE 关键字进行模糊查询,且只能使用通配符%。 错 9.在 MySQL 中,可以使用 BETWEEN 关键字进行范围查询,除了能用于数字类型的列以外还 可以用于字符串类型的列。 错 10.在 MysQL 中,可以使用 EXPLAIN 关键字分析查询的执行计划。 对

1.简述下什么是负载均衡? 以及常见负载均衡算法有哪些?

负载均衡是一种技术,它可以将工作负载分配到多个操作单元上,以平衡各单元的负载,提高整体的处理能力和效率。负载均衡常用于网络设备、服务器等场景,可以扩展带宽、增加吞吐量、加强数据处理能力,提高网络的可用性和灵活性。

常见的负载均衡算法包括:

  1. 轮询法:将每个请求依次分配给地址列表中的每个服务器,实现请求的均匀分配。

  2. 随机法:随机选择地址列表中的一个服务器进行请求处理。

  3. 加权轮询法:给每个服务器设置不同的权重,权重高的服务器被选择的可能性更高,以实现根据服务器的配置和负载情况来进行负载均衡。

  4. 加权随机法:根据服务器的配置和负载情况来配置不同的权重,然后按照权重随机选择服务器进行请求处理。

  5. 最小连接数算法:根据服务器当前的连接数来决定将请求分配给哪个服务器,连接数少的服务器被优先选择。

2简述下 SpringBoot 核心注解是什么?包含了那三个注解?分别有什么作用?

SpringBoot的核心注解是@SpringBootApplication,它也是启动类使用的注解,主要包含了3个注解:

  1. @SpringBootConfiguration:它组合了@Configuration注解,实现配置文件的功能。这个注解标注当前类是配置类,会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。

  2. @EnableAutoConfiguration:这个注解具有打开自动配置的功能,也可以关闭某个自动配置的选项。它根据我们添加的组件jar来完成一些默认配置。

  3. @ComponentScan:用于Spring组件扫描。

3简述下 Springloc 容器中的两个核心概念 (IOC、DI) 分别是什么?

Springloc容器中的两个核心概念是控制反转(IOC)和依赖注入(DI)。

控制反转(IOC)是一种设计原则,通过控制反转,对象的创建和依赖关系的管理被交给Spring容器来处理,而不是由对象自身来处理。这种设计降低了代码之间的耦合度,提高了系统的可扩展性和可维护性。

依赖注入(DI)是实现控制反转的一种方式。通过依赖注入,对象的依赖关系被自动地注入到对象中,而不是由对象自身创建或管理这些依赖关系。这种技术降低了代码的复杂度,提高了代码的可读性和可维护性。

在Spring容器中,通过DI机制,可以将一个或多个对象注入到目标对象中,这些对象可以是同一个类的实例,也可以是不同类的实例。DI的实现方式包括构造函数注入、属性注入和设置方法注入。

以上内容仅供参考,建议查阅Springloc相关文档或咨询技术人员,以获取更准确的信息。

4简述下 Mysgl 索引什么时候会失效 (至少写出 5条以上) ?

  1. 隐式类型转换:当查询条件中的数据类型与索引列的数据类型不匹配时,可能会导致索引失效。例如,使用字符串类型进行数值比较。

  2. 函数或运算:在索引列上使用函数或进行某些运算(如正则表达式)可能导致索引失效。

  3. LIKE查询:以通配符开头的LIKE查询(如LIKE '%value')无法有效地使用索引。

  4. OR条件:在某些情况下,使用OR连接的多个条件可能导致索引失效。

  5. NULL值:对于包含NULL值的列,如果没有正确地使用IS NULL或IS NOT NULL,则可能不会使用索引。

  6. 不选择性索引:如果一个索引的选择性很低(即索引列中的大部分值都相同),那么该索引可能不会被使用。

  7. 低基数列:如果一个列的基数很低(即该列的不同值的数量很少),那么即使对该列创建了索引,也可能不会被使用。

  8. 全表扫描更快:在某些情况下,全表扫描可能比使用索引更快,因此优化器可能会选择全表扫描而不是使用索引。

  9. 覆盖索引:如果查询只需要从索引中获取信息,而不需要访问实际的数据表,则可以使用覆盖索引来提高查询性能。但如果查询需要访问数据表中的其他列,则覆盖索引可能不会被使用。

  10. 联合索引的选择性问题:在使用联合索引时,如果查询条件的顺序与联合索引的顺序不匹配,可能会导致索引失效

    5简述下 Mysql 中聚簇索引和非聚簇索引的区别?

    1. 数据存储方式

      • 聚簇索引(Clustered Index):聚簇索引决定了数据在磁盘上的物理存储顺序。也就是说,数据行实际上存储在索引的叶子节点上。在InnoDB存储引擎中,主键索引(PRIMARY KEY)就是聚簇索引。如果没有明确定义主键,MySQL会选择一个唯一的非空索引代替,如果没有这样的索引,MySQL会生成一个隐藏的聚簇索引。

      • 非聚簇索引(Non-clustered Index):非聚簇索引与数据的物理存储顺序是分离的。也就是说,数据行并不存储在索引的叶子节点上,而是存储在数据文件中。非聚簇索引只是数据的一个副本,它们指向实际的数据行。

    2. 唯一性

      • 聚簇索引:由于聚簇索引决定了数据的物理存储顺序,因此每个表只能有一个聚簇索引。

      • 非聚簇索引:一个表可以有多个非聚簇索引。非聚簇索引不决定数据的物理存储顺序,所以它们可以在不影响其他已有非聚簇索引的情况下添加到表中。

    3. 查询性能

      • 聚簇索引:由于数据行直接存储在聚簇索引的叶子节点上,所以对聚簇索引的查询通常更快,因为数据库只需要直接定位到数据而不需要额外的查找。

      • 非聚簇索引:虽然非聚簇索引可以加速查询,但它们需要额外的查找步骤,因为它们并不直接包含数据行。数据库需要先通过非聚簇索引找到对应的数据行位置,然后再去数据文件中获取实际的数据行。

    4. 插入和更新性能

      • 聚簇索引:由于聚簇索引决定了数据的物理存储顺序,插入和更新操作可能会更慢,因为可能需要移动大量的数据来保持聚簇索引的连续性。

      • 非聚簇索引:非聚簇索引与数据的物理存储顺序是分离的,所以插入和更新操作可能更快,因为不需要移动大量的数据来保持连续性。

    5. 覆盖索引(Covering Index)

      • 在MySQL中,如果一个查询只需要从索引中获取信息,而不需要访问实际的数据表,则可以使用覆盖索引来提高查询性能。对于聚簇索引和非聚簇索引,都可能存在覆盖索引的情况。但要注意的是,如果一个非聚簇索引是覆盖索引,那么它仍然需要额外的查找步骤来获取实际的数据行。

    总的来说,聚簇索引和非聚簇索引在数据存储、唯一性、查询性能、插入和更新性能以及覆盖索引等方面存在显著差异。选择使用哪种类型的索引取决于特定的查询需求和数据操作的性能要求。

6.简述下 Mysql 都有哪些索引分类? 从三个维度 (数据结构、物理存储、逻辑维度)回答

在MySQL中,聚簇索引和非聚簇索引是两种不同类型的索引,它们在数据存储和查询性能方面存在显著差异。以下是它们的主要区别:

  1. 数据存储方式

    • 聚簇索引(Clustered Index):聚簇索引决定了数据在磁盘上的物理存储顺序。也就是说,数据行实际上存储在索引的叶子节点上。在InnoDB存储引擎中,主键索引(PRIMARY KEY)就是聚簇索引。如果没有明确定义主键,MySQL会选择一个唯一的非空索引代替,如果没有这样的索引,MySQL会生成一个隐藏的聚簇索引。

    • 非聚簇索引(Non-clustered Index):非聚簇索引与数据的物理存储顺序是分离的。也就是说,数据行并不存储在索引的叶子节点上,而是存储在数据文件中。非聚簇索引只是数据的一个副本,它们指向实际的数据行。

  2. 唯一性

    • 聚簇索引:由于聚簇索引决定了数据的物理存储顺序,因此每个表只能有一个聚簇索引。

    • 非聚簇索引:一个表可以有多个非聚簇索引。非聚簇索引不决定数据的物理存储顺序,所以它们可以在不影响其他已有非聚簇索引的情况下添加到表中。

  3. 查询性能

    • 聚簇索引:由于数据行直接存储在聚簇索引的叶子节点上,所以对聚簇索引的查询通常更快,因为数据库只需要直接定位到数据而不需要额外的查找。

    • 非聚簇索引:虽然非聚簇索引可以加速查询,但它们需要额外的查找步骤,因为它们并不直接包含数据行。数据库需要先通过非聚簇索引找到对应的数据行位置,然后再去数据文件中获取实际的数据行。

  4. 插入和更新性能

    • 聚簇索引:由于聚簇索引决定了数据的物理存储顺序,插入和更新操作可能会更慢,因为可能需要移动大量的数据来保持聚簇索引的连续性。

    • 非聚簇索引:非聚簇索引与数据的物理存储顺序是分离的,所以插入和更新操作可能更快,因为不需要移动大量的数据来保持连续性。

  5. 覆盖索引(Covering Index)

    • 在MySQL中,如果一个查询只需要从索引中获取信息,而不需要访问实际的数据表,则可以使用覆盖索引来提高查询性能。对于聚簇索引和非聚簇索引,都可能存在覆盖索引的情况。但要注意的是,如果一个非聚簇索引是覆盖索引,那么它仍然需要额外的查找步骤来获取实际的数据行。

总的来说,聚簇索引和非聚簇索引在数据存储、唯一性、查询性能、插入和更新性能以及覆盖索引等方面存在显著差异。选择使用哪种类型的索引取决于特定的查询需求和数据操作的性能要求。

MySQL的事务隔离级别有四个,分别是:

  1. 读未提交(Read Uncommitted):这是最低的隔离级别,事务中的修改,即使未提交,对其他事务也是可见的。

  2. 读已提交(Read Committed):这是大多数数据库系统的默认隔离级别(但不是MySQL的默认)。一个事务只能看到已经提交的事务所做的更改。

  3. 可重复读(Repeatable Read):这是MySQL的默认隔离级别。在这个级别,从同一字段读取的结果是一致的,除非数据被同一事务改变。

  4. 串行化(Serializable):这是最高的隔离级别。它通过强制事务串行执行,避免了读写和写写的冲突。

这些隔离级别决定了事务处理中数据的可见性和并发控制的行为。不同的应用和场景可能需要不同的隔离级别以满足其数据一致性和性能要求。

简述下 Mysql 事务的隔离级别有几个?分别是什么?

MySQL支持多种类型的索引,这些索引可以从三个维度进行分类:数据结构、物理存储和逻辑维度。

  1. 数据结构维度

    • B-Tree索引:这是MySQL中最常用的索引类型,包括B+Tree和B-Tree变种。大多数MySQL的存储引擎都支持B-Tree索引。

    • Hash索引:基于哈希表的索引,适用于等值查询,但不适用于范围查询。

    • Full-text索引:用于全文搜索,主要在MyISAM和InnoDB存储引擎中可用。

    • R-tree索引:主要用于空间数据类型的索引,如地理空间数据。

  2. 物理存储维度

    • 聚集索引:如前所述,这是根据表中数据的物理存储顺序构建的索引。在InnoDB存储引擎中,主键索引默认就是聚集索引。

    • 非聚集索引:数据行和索引分开存储,数据行存储在数据文件中,而索引存储在单独的索引文件中。这是MyISAM存储引擎的默认索引方式。

  3. 逻辑维度

    • 主键索引:表中的主键列会有一个唯一的索引,即主键索引。在InnoDB中,如果没有明确定义主键,MySQL会选择一个唯一的非空索引作为主键索引。

    • 唯一索引:不允许两行具有相同的索引值。唯一索引和非主键索引是等价的。

    • 非唯一索引:允许索引列包含重复的值。这是除唯一索引和主键之外的所有常规索引的默认类型。

    • 复合索引:由表中的多个列组成的索引。这种类型的索引在查询时可以同时利用多个列进行优化。

    • 前缀索引:只对字符串列的前N个字符创建索引,用于减少索引的大小,但可能会降低查询性能。

以上是从三个维度对MySQL中常见的索引分类的简述。不同的存储引擎和不同的应用场景可能需要不同类型的索引来获得最佳的性能,因此需要根据具体情况进行选择和优化。

简述下 Mysql 中聚簇索引和非聚簇索引的区别?

MySQL的索引在某些情况下可能会失效,导致全表扫描。以下是可能导致索引失效的一些常见情况:

  1. 隐式类型转换:当查询条件中的数据类型与索引列的数据类型不匹配时,可能会导致索引失效。例如,使用字符串类型进行数值比较。

  2. 函数或运算:在索引列上使用函数或进行某些运算(如正则表达式)可能导致索引失效。

  3. LIKE查询:以通配符开头的LIKE查询(如LIKE '%value')无法有效地使用索引。

  4. OR条件:在某些情况下,使用OR连接的多个条件可能导致索引失效。

  5. NULL值:对于包含NULL值的列,如果没有正确地使用IS NULL或IS NOT NULL,则可能不会使用索引。

  6. 不选择性索引:如果一个索引的选择性很低(即索引列中的大部分值都相同),那么该索引可能不会被使用。

  7. 低基数列:如果一个列的基数很低(即该列的不同值的数量很少),那么即使对该列创建了索引,也可能不会被使用。

  8. 全表扫描更快:在某些情况下,全表扫描可能比使用索引更快,因此优化器可能会选择全表扫描而不是使用索引。

  9. 覆盖索引:如果查询只需要从索引中获取信息,而不需要访问实际的数据表,则可以使用覆盖索引来提高查询性能。但如果查询需要访问数据表中的其他列,则覆盖索引可能不会被使用。

  10. 联合索引的选择性问题:在使用联合索引时,如果查询条件的顺序与联合索引的顺序不匹配,可能会导致索引失效。

要确定MySQL是否使用了索引,可以使用EXPLAIN命令来查看查询的执行计划。

4.简述下 Mysgl 索引什么时候会失效 (至少写出 5条以上) ?

Springloc容器中的两个核心概念是控制反转(IOC)和依赖注入(DI)。

控制反转(IOC)是一种设计原则,通过控制反转,对象的创建和依赖关系的管理被交给Spring容器来处理,而不是由对象自身来处理。这种设计降低了代码之间的耦合度,提高了系统的可扩展性和可维护性。

依赖注入(DI)是实现控制反转的一种方式。通过依赖注入,对象的依赖关系被自动地注入到对象中,而不是由对象自身创建或管理这些依赖关系。这种技术降低了代码的复杂度,提高了代码的可读性和可维护性。

在Spring容器中,通过DI机制,可以将一个或多个对象注入到目标对象中,这些对象可以是同一个类的实例,也可以是不同类的实例。DI的实现方式包括构造函数注入、属性注入和设置方法注入。

以上内容仅供参考,建议查阅Springloc相关文档或咨询技术人员,以获取更准确的信息。

简述下 Springloc 容器中的两个核心概念 (IOC、DI) 分别是什么?

SpringBoot的核心注解是@SpringBootApplication,它也是启动类使用的注解,主要包含了3个注解:

  1. @SpringBootConfiguration:它组合了@Configuration注解,实现配置文件的功能。这个注解标注当前类是配置类,会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。

  2. @EnableAutoConfiguration:这个注解具有打开自动配置的功能,也可以关闭某个自动配置的选项。它根据我们添加的组件jar来完成一些默认配置。

  3. @ComponentScan:用于Spring组件扫描。

以上内容仅供参考,建议查阅SpringBoot官方文档或咨询技术人员,以获取更准确的信息。

7.简述下 Redis 持久化解决方案有哪些? 以及有什么区别?

RDB持久化

RDB 持久化是通过生成数据集的内存快照来实现数据持久化的。在指定的时间间隔内,Redis 会将内存中的数据集快照写入磁盘。具体操作过程是,Redis 会创建一个子进程,先将数据写入到一个临时文件中,待持久化过程完成后,再用这个临时文件替换上次持久化好的文件。RDB 的优点在于性能较好,因为生成快照的过程可以fork一个子进程进行操作,不会占用太多CPU时间。但RDB也存在数据安全性问题,即在最后一次持久化后的数据可能丢失。

AOF持久化

AOF 持久化是通过记录所有写操作命令来实现数据持久化的。Redis 服务启动时,会读取 AOF 文件中的所有命令并执行,以恢复数据。AOF 持久化的优点在于数据安全性高,因为它记录了所有写操作命令,即使数据丢失了也可以通过这些命令重新构建出来。此外,AOF 文件是以追加的形式进行写入的,不会对已有的 AOF 文件进行修改,这使得 AOF 的写操作不需要加锁,避免了性能损耗。但 AOF 持久化的性能相对于 RDB 来说会差一些,因为每次执行写操作都需要记录命令。

区别

  1. 性能:RDB 持久化性能较高,而 AOF 持久化相对较慢。

  2. 数据安全性:AOF 持久化数据安全性更高,而 RDB 在最后一次持久化后的数据可能丢失。

  3. 配置:RDB 持久化可以根据需要配置不同的策略,而 AOF 持久化配置较为简单。

.简述下 SpringBoot 核心注解是什么?包含了那三个注解?分别有什么作用?

负载均衡是一种技术,它可以将工作负载分配到多个操作单元上,以平衡各单元的负载,提高整体的处理能力和效率。负载均衡常用于网络设备、服务器等场景,可以扩展带宽、增加吞吐量、加强数据处理能力,提高网络的可用性和灵活性。

常见的负载均衡算法包括:

  1. 轮询法:将每个请求依次分配给地址列表中的每个服务器,实现请求的均匀分配。

  2. 随机法:随机选择地址列表中的一个服务器进行请求处理。

  3. 加权轮询法:给每个服务器设置不同的权重,权重高的服务器被选择的可能性更高,以实现根据服务器的配置和负载情况来进行负载均衡。

  4. 加权随机法:根据服务器的配置和负载情况来配置不同的权重,然后按照权重随机选择服务器进行请求处理。

  5. 最小连接数算法:根据服务器当前的连接数来决定将请求分配给哪个服务器,连接数少的服务器被优先选择。

9.简述下 Spring、SpringMVC、Springboot、SpringCloud、SpringCloudAlibaba 的区别?

  1. Spring:Spring 是一个开源的 Java 开发框架,它为开发者提供了全面的企业级应用开发解决方案。Spring 的核心是控制反转(IoC)和面向切面(AOP),主要用于处理企业应用开发中的各种基础模块,如事务管理、数据访问、安全性等。

  2. SpringMVC:SpringMVC 是 Spring 框架的一个模块,专门用于构建 Web 应用程序。它实现了 Model-View-Controller(MVC)设计模式,能够处理请求和响应,提供 MVC 模式的 Web 应用程序开发,使开发人员能够对 Web 应用程序进行更好的控制,并且开发效率更高。

  3. SpringBoot:SpringBoot 是 Spring 框架上的一个子项目,它的目标是简化 Spring 应用程序的创建和部署。通过自动配置,SpringBoot 可以快速搭建独立的、生产级别的应用程序。它简化了项目的配置流程,同时提供了大量插件以支持各种功能。

  4. SpringCloud:SpringCloud 是基于 Spring Boot 的微服务框架,用于构建分布式系统。在微服务架构中,它解决了复杂的分布式系统问题,例如服务发现、配置管理和负载均衡等。通过使用 SpringCloud,可以更加轻松高效地实现微服务开发。

  5. SpringCloudAlibaba:这是基于 Spring Cloud 的 Alibaba 技术栈,是一套完整的微服务解决方案。它提供了丰富的微服务组件,如分布式事务、服务发现、配置中心等,可以帮助开发者快速搭建高可用、高性能的微服务应用。

简述下 MyBatis 的一级缓存和二级缓存的区别?

MyBatis 提供了两级缓存机制:一级缓存和二级缓存。这两级缓存的主要区别在于其作用范围和生命周期。

一级缓存

一级缓存是 MyBatis 默认的缓存机制,也称为 SqlSession 级别的缓存。一级缓存的生命周期与 SqlSession 相同,一旦 SqlSession 被关闭或者清空,那么一级缓存就会被清空。一级缓存是 session 级别的,也就是说,如果你在多个执行器中使用了相同的 SqlSession,那么它们之间是无法共享一级缓存的。

二级缓存

二级缓存是跨 SqlSession 的,也称为 Mapper 级别的缓存。与一级缓存不同,二级缓存的生命周期与 Mapper 对象相关,只要 Mapper 不被垃圾回收,那么二级缓存就会一直存在。也就是说,只要是在同一个应用中,不同的 SqlSession 可以共享二级缓存。

总结一下,一级缓存和二级缓存的主要区别在于:

  • 一级缓存是 SqlSession 级别的,生命周期与 SqlSession 相同,无法跨 SqlSession 共享;

  • 二级缓存是 Mapper 级别的,生命周期与 Mapper 相关,可以在多个 SqlSession 中共享。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值