春招复习:零散的八股文

一、 Spring、SpringMVC、SpringBoot 三者之间是什么关系?

Spring、SpringMVC、SpringBoot 是三个独立的框架,它们之间的关系是:

  1. Spring 是一个 Java 的轻量级应用框架,提供了基于 IoC 和 AOP 的支持,用于构建企业级应用。Spring 有多个模块,包括 Spring Core、Spring Context、Spring JDBC、Spring Web 等,每个模块提供了不同的功能。

  1. SpringMVC 是 Spring 框架的一部分,是基于 MVC 设计模式的 Web 框架,用于构建 Web 应用程序。它提供了控制器、视图解析器、数据绑定、异常处理等功能,使得开发 Web 应用变得更加简单。SpringMVC 还支持 RESTful 架构。

  1. SpringBoot 是基于 Spring 框架的一个开发框架,用于快速构建独立的、生产级别的 Spring 应用程序。它通过自动配置和约定优于配置的方式,简化了 Spring 应用程序的配置和开发过程。SpringBoot 集成了很多常用的第三方库和工具,例如 Spring Data、Spring Security、Thymeleaf、Logback 等,可以极大地提高开发效率。

因此,SpringBoot 可以看作是在 Spring 的基础上,通过自动配置和约定优于配置的方式,提供了更加简单、快速的开发体验。而 SpringMVC 则是 Spring 框架中用于构建 Web 应用程序的模块。

二、Redis 基础类型中的 String 底层实现是什么?

Redis 中的 String 类型底层实现是一个简单动态字符串(SDS,Simple Dynamic String),也就是字符串动态增长实现的一种方式。SDS 是 Redis 自己实现的字符串库,相对于 C 语言原生的字符串,SDS 在空间使用上更加灵活,而且支持 O(1) 复杂度的长度计算,避免了 C 语言字符串计算长度时的 O(N) 时空复杂度问题。

SDS 是一种动态字符串,它有如下特点:

  1. 首先 SDS 对内存的分配和释放进行了封装,使得字符串的空间可以根据需要进行增长或缩减,避免了 C 语言字符串需要手动分配空间的问题。

  1. SDS 除了记录字符串本身的长度外,还记录了分配给字符串的空间的长度,可以方便地计算出字符串是否需要扩容。

  1. SDS 使用了惰性空间释放,不会在空间缩减时立即释放空间,而是等到需要扩容时再重新分配内存。

  1. SDS 提供了字符串追加操作,可以在 O(1) 的时间内完成追加操作。

在 Redis 中,String 类型并不仅仅只是字符串类型,它还支持一些其他的操作,如递增/递减操作、位运算等,这些操作都是基于 SDS 底层实现的。

三、意向锁是什么?有什么作用?它是表级锁还是行级锁?

意向锁是一种 MySQL 数据库中的锁,用于表级锁协调多个行级锁的使用。在表级锁定一个表之前,MySQL 需要先获得一个意向锁,以表明要获取的锁类型(读锁或写锁),避免其他事务锁定整个表或锁定一部分表时引发死锁。

意向锁是一种轻量级锁,它不会影响其他事务的读操作,只有在某个事务要对表进行写操作时才会加上意向锁,而其他事务在读取表时只需要获取读锁,不需要等待意向锁的释放。

意向锁可以提高数据库并发性能,防止死锁的发生。它是表级锁,而不是行级锁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值