面试突击87:说一下 Spring 事务传播机制?

2022-09-27
阅读 5 分钟
1.1k
既然是“事务传播”,所以事务的数量应该在两个或两个以上,Spring 事务传播机制的诞生是为了规定多个事务在传播过程中的行为的。比如方法 A 开启了事务,而在执行过程中又调用了开启事务的 B 方法,那么 B 方法的事务是应该加入到 A 事务当中呢?还是两个事务相互执行互不影响,又或者是将 B 事务嵌套到 A 事务中执行呢?...
封面图

面试突击86:SpringBoot 事务不回滚?怎么解决?

2022-09-25
阅读 3 分钟
1.3k
在 Spring Boot 中,造成事务不自动回滚的场景有很多,比如以下这些:非 public 修饰的方法中的事务不自动回滚;当 @Transactional 遇上 try/catch 事务不自动回滚;调用类内部的 @Transactional 方法事务不自动回滚;抛出检查异常时事务不自动回滚;数据库不支持事务,事务也不会自动回滚。那么对于上面的这些场景,我...
封面图

面试突击85:为什么事务@Transactional会失效?

2022-09-20
阅读 4 分钟
1.3k
导致 @Transactional 失效的常见场景有以下 5 个:非 public 修饰的方法;timeout 超时时间设置过小;代码中使用 try/catch 处理异常;调用类内部的 @Transactional 方法;数据库不支持事务。很多人只知道答案但不知道原因,这就像只谈恋爱不结婚一样,是不能让人接受的,所以本篇我们就来讨论一下,导致事务失效的背后...
封面图

面试突击84:Spring 有几种事务隔离级别?

2022-09-18
阅读 2 分钟
1k
Spring 中的事务隔离级别和数据库中的事务隔离级别稍有不同,以 MySQL 为例,MySQL 的 InnoDB 引擎中的事务隔离级别有 4 种,而 Spring 中却包含了 5 种事务隔离级别。
封面图

面试突击83:什么情况会导致@Transactional事务失效?

2022-09-14
阅读 4 分钟
1.1k
一个程序中不可能没有事务,而 Spring 中,事务的实现方式分为两种:编程式事务和声明式事务,又因为编程式事务实现相对麻烦,而声明式事务实现极其简单,所以在日常项目中,我们都会使用声明式事务 @Transactional 来实现事务。
封面图

面试突击82:SpringBoot 中如何操作事务?

2022-09-12
阅读 2 分钟
1k
在 Spring Boot 中操作事务有两种方式:编程式事务或声明式事务,接下来我们一起来看二者的具体实现。1.编程式事务在 Spring Boot 中实现编程式事务又有两种实现方法:使用 TransactionTemplate 对象实现编程式事务;使用更加底层的 TransactionManager 对象实现编程式事务。它们的具体实现代码如下。1.1 TransactionTem...
封面图

面试突击81:什么是跨域问题?如何解决?

2022-09-07
阅读 8 分钟
1.4k
跨域问题指的是不同站点之间,使用 ajax 无法相互调用的问题。跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。 但这个保护机制也带来了新的问题,它的问题是给不同站点之间的正常调用,也带来的阻碍,那怎么解决这个问题呢?接下来我们一起来看。
封面图

面试突击80:说一下 Spring 中 Bean 的生命周期?

2022-09-05
阅读 4 分钟
1.3k
Java 中的公共类称之为 Bean 或 Java Bean,而 Spring 中的 Bean 指的是将对象的生命周期,交个 Spring IoC 容器来管理的对象。所以 Spring 中的 Bean 对象在使用时,无需通过 new 来创建对象,只需要通过 DI(依赖注入),从 Spring 中取出要使用的对象即可。那么 Spring 中,Bean 的生命周期又有哪些呢?接下来,我们...
封面图

面试突击79:Bean 作用域是啥?它有几种类型?

2022-08-31
阅读 3 分钟
1k
Spring 框架作为一个管理 Bean 的 IoC 容器,那么 Bean 自然是 Spring 中的重要资源了,那 Bean 的作用域是什么意思?又有几种类型呢?接下来我们一起来看。
封面图

一文快速上手 Nacos 注册中心+配置中心!

2022-08-30
阅读 8 分钟
1.2k
Spring Cloud Alibaba 是阿里巴巴提供的一站式微服务开发解决方案,目前已被 Spring Cloud 官方收录。而 Nacos 作为 Spring Cloud Alibaba 的核心组件之一,提供了两个非常重要的功能:注册中心和配置中心,我们今天来了解和实现一下二者。

面试突击78:@Autowired 和 @Resource 有什么区别?

2022-08-29
阅读 4 分钟
1.2k
@Autowired 和 @Resource 都是 Spring/Spring Boot 项目中,用来进行依赖注入的注解。它们都提供了将依赖对象注入到当前对象的功能,但二者却有众多不同,并且这也是常见的面试题之一,所以我们今天就来盘它。@Autowired 和 @Resource 的区别主要体现在以下 5 点:
封面图

快速搭建 SpringCloud Alibaba Nacos 配置中心!

2022-08-28
阅读 5 分钟
1.2k
Spring Cloud Alibaba 是阿里巴巴提供的一站式微服务开发解决方案,目前已被 Spring Cloud 官方收录。而 Nacos 作为 Spring Cloud Alibaba 的核心组件之一,提供了两个非常重要的功能:服务注册中心(服务注册和发现)功能,和统一配置中心功能。
封面图

面试突击77:Spring 依赖注入有几种?各有什么优缺点?

2022-08-24
阅读 4 分钟
1k
IoC 和 DI 是 Spring 中最重要的两个概念,其中 IoC(Inversion of Control)为控制反转的思想,而 DI(Dependency Injection)依赖注入为其(IoC)具体实现。那么 DI 实现依赖注入的方式有几种?这些注入方式又有什么不同?接下来,我们一起来看。
封面图

面试突击76:${} 和 #{} 有什么区别?

2022-08-23
阅读 4 分钟
954
${} 和 #{} 都是 MyBatis 中用来替换参数的,它们都可以将用户传递过来的参数,替换到 MyBatis 最终生成的 SQL 中,但它们区别却是很大的,接下来我们一起来看。
封面图

面试突击75:SpringBoot 有几种读取配置文件的方法?

2022-08-17
阅读 5 分钟
1.2k
Spring Boot 中读取配置文件有以下 5 种方法:使用 @Value 读取配置文件。使用 @ConfigurationProperties 读取配置文件。使用 Environment 读取配置文件。使用 @PropertySource 读取配置文件。使用原生方式读取配置文件。它们的具体使用方法如下,为了方便测试,我们在 Spring Boot 配置文件 application.properties 添...
封面图

面试突击74:properties和yml有什么区别?

2022-08-15
阅读 2 分钟
1.8k
properties 和 yml 都是 Spring Boot 支持的两种配置文件,它们可以看作是 Spring Boot 在不同时期的两款“产品”。在 Spring Boot 时代已经不需要使用 XML 文件格式来配置项目了,取而代之的是 properties 或 yml 文件。
封面图

面试突击73:IoC 和 DI 有什么区别?

2022-08-10
阅读 3 分钟
1.1k
IoC 和 DI 都是 Spring 框架中的重要概念,就像玫瑰花与爱情一样,IoC 和 DI 通常情况下也是成对出现的。那 IoC 和 DI 什么关系和区别呢?接下来,我们一起来看。
封面图

面试突击72:输入URL之后会执行什么流程?

2022-08-08
阅读 3 分钟
888
在浏览器中输入 URL 之后,它会执行以下几个流程:执行 DNS 域名解析;封装 HTTP 请求数据包;封装 TCP 请求数据包;建立 TCP 连接(3 次握手);参数从客户端传递到服务器端;服务器端得到客户端参数之后,进行相应的业务处理,再将结果封装成 HTTP 包,返回给客户端;服务器端和客户端的交互完成,断开 TCP 连接(4 次...
封面图

面试突击71:GET 和 POST 有什么区别?

2022-08-03
阅读 2 分钟
1.4k
GET 和 POST 是 HTTP 请求中最常用的两种请求方法,在日常开发的 RESTful 接口中,都能看到它们的身影。而它们之间的区别,也是一道常见且经典的面试题,所以我们本文就来详细的聊聊。HTTP 协议定义的方法类型总共有以下 10 种:
封面图

面试突击70:什么是粘包和半包?怎么解决?

2022-08-01
阅读 10 分钟
1.3k
粘包和半包问题是数据传输中比较常见的问题,所谓的 粘包问题是指数据在传输时,在一条消息中读取到了另一条消息的部分数据,这种现象就叫做粘包。 比如发送了两条消息,分别为“ABC”和“DEF”,那么正常情况下接收端也应该收到两条消息“ABC”和“DEF”,但接收端却收到的是“ABCD”,像这种情况就叫做粘包,如下图所示:
封面图

面试突击69:TCP 可靠吗?为什么?

2022-07-31
阅读 3 分钟
1.3k
相比于 UDP 来说,TCP 的主要特性是三个:有连接、可靠、面向数据流。所谓的“有连接”指的是 TCP 中的连接管理机制,也就是著名的三次握手和四次挥手,就像打电话一样,想要正常的交流,必须先和对方建立起连接,这就是所谓的“有连接”,而面向数据流的机制咱们以后再讲,我们今天要讨论的主题是:TCP 是如何保证可靠性的...
封面图

面试突击68:为什么 TCP 需要 3 次握手?

2022-07-26
阅读 1 分钟
1.1k
TCP 三次握手是一道经典的面试题,它是指 TCP 在传递数据之前,需要进行 3 次交互才能正式建立起连接,并进行数据传递。TCP 之所以需要 3 次握手是因为 TCP 双方都是全双工的。所谓全双工指的是,TCP 任何一端既是发送数据方,又是接收数据方,因此这就要求 TCP 通讯双方既要保证自己的发送能力,又要保证自己的接收能力...
封面图

面试突击67:说一下 TCP/IP 协议?以及每层的作用?

2022-07-22
阅读 2 分钟
1.5k
TCP/IP 包含四层模型,从上层往下层分别是:应用层、传输层、网络层、数据链路层。有些资料也会说 TCP/IP 是五层模型,所谓的五层模型指的是在数据链路层下面还有一个物理层,而作为软件工程师一般不需要关注物理层,所以通常我们说 TCP/IP 四层模型更多一些。
封面图

面试突击66:请求转发和请求重定向有什么区别?

2022-07-18
阅读 2 分钟
1.6k
在 Java 中,跳转的实现方式有两种:请求转发和请求重定向,但二者是完全不同的,所以我们今天就来盘它。请求转发和请求重定向主要区别,包含以下 5 点:
封面图

面试突击65:为什么要用HTTPS?它有什么优点?

2022-07-13
阅读 3 分钟
1.1k
说到 HTTPS 相信大部分人都是不陌生,因为目前我们使用的绝大数网站都是基于 HTTPS 的,比如以下这些:那么问题来了,他们为什么要使用 HTTPS 呢?HTTPS 有哪些过人之处呢?
封面图

面试突击64:了解 HTTP 协议吗?

2022-07-11
阅读 2 分钟
1.1k
HTTP(Hyper Text Transfer Protocol)超文本传输协议,下文简称 HTTP,它的作用是用于实现服务器端和客户端的数据传输的。它可以传输任意的数据类型,如文本、HTML、图片、文件、声音等类型。简单来说,HTTP 的作用就像一个“快递”一样,用来承载客户端(浏览器)和服务器端的数据传输,如下图所示:
封面图

面试突击63:MySQL 中如何去重?

2022-07-06
阅读 3 分钟
1.3k
在 MySQL 中,最常见的去重方法有两个:使用 distinct 或使用 group by,那它们有什么区别呢?接下来我们一起来看。1.创建测试数据 {代码...} 最终展现效果如下:2.distinct 使用distinct 基本语法如下: {代码...} 2.1 单列去重我们先用 distinct 实现单列去重,根据 aid(文章 ID)去重,具体实现如下:2.2 多列去重除...
封面图

面试突击62:group by 有哪些注意事项?

2022-07-06
阅读 2 分钟
1.1k
注意:本文以下内容基于 MySQL 5.7 InnoDB 数据库引擎。1.group by 后面不能加 where在 MySQL 中,所有的 SQL 查询语法要遵循以下语法顺序:selectfromwheregroup byhavingorder bylimit以上语法顺序是不能前后互换的,否则报错。比如我们不能在 group by 之后添加 where 查询语句,否则会出现如下错误:语法顺序的执行...

面试突击61:说一下MySQL事务隔离级别?

2022-06-29
阅读 4 分钟
880
MySQL 事务隔离级别是为了解决并发事务互相干扰的问题的,MySQL 事务隔离级别总共有以下 4 种:READ UNCOMMITTED:读未提交。READ COMMITTED:读已提交。REPEATABLE READ:可重复读。SERIALIZABLE:序列化。1.四种事务隔离级别1.1 READ UNCOMMITTED读未提交,也叫未提交读,该隔离级别的事务可以看到其他事务中未提交的...
封面图

面试突击60:什么情况会导致 MySQL 索引失效?

2022-06-27
阅读 3 分钟
943
explain 使用如下,只需要在查询的 SQL 前面添加上 explain 关键字即可,如下图所示:而以上查询结果的列中,我们最主要观察 key 这一列,key 这一列表示实际使用的索引,如果为 NULL 则表示未使用索引,反之则使用了索引。
封面图