面试题30天打卡-day12

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 面试题30天打卡-day12

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


Redis 中的 String 是使用简单动态字符串(SDS)实现的。SDS 是一种可变长度的字符串实现,它可以动态地调整自己的大小,而不像 C 语言中的字符串一样需要预先分配固定大小的内存空间。


SDS 在 Redis 中的优点是:


空间预分配:SDS 内部的空间预分配策略避免了多次重分配的操作,从而减少了内存碎片;

二进制安全:SDS 内部没有以空字符(‘\0’)来表示字符串的结尾,这样可以避免字符串中含有空字符时出现截断的问题,使得 SDS 成为一个二进制安全的字符串类型;

支持缓存长度信息:SDS 内部存储了字符串的长度信息,这样可以避免每次需要获取字符串长度时都需要遍历整个字符串。

除此之外,SDS 在 Redis 中还支持了很多其他的功能,比如可以实现高效的字符串追加、高效的字符串查找和替换等。


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


Spring 是一个非常流行的 Java 开源容器框架,提供了一种全面的编程和配置模型,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系。其核心就是控制反转(IOC),和面向切面(AOP),是一个分层的轻量级开源框架。


SpringMVC 是基于 Spring 框架的一个 MVC 框架,专注于 Web 应用程序的开发,它使用控制器(Controller)、模型(Model)和视图(View)的分离思想,用于替代servlet(处理请求,获取表单参数,表单校验等),SpringMVC是一个MVC的开源框架,springMVC相当于Struts2 + Spring。


Spring Boot 是基于 Spring 框架的快速开发框架,它提供了一种快速构建 Spring 应用程序的方式,延续了spring框架的核心思想IOC和AOP,Spring Boot简化了Spring应用的创建、运行、调试、部署等,使用开发者可以专注于Spring应用的开发,而无需过多关注XML的配置。


Springboot特性:


创建独立的spring应用。

内嵌Tomcat, JettyUndertow 不需要部署。

提供的“starters” poms来简化Maven配置。

尽可能自动配置spring应用。

绝对没有代码生成和XML配置要求。

三者之间的关系


Spring MVC < Spring < Springboot

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


意向锁(Intent Lock)是一种数据库锁机制,用于在行级锁的情况下,减少锁冲突带来的性能开销。


当一个事务需要锁定某个表的某个行时,它需要先获取到行级锁,这样其他的事务就不能同时修改这行数据。但是,如果有其他事务也需要锁定这个表,比如锁定整张表进行全表扫描等,这个时候就会出现意向锁。意向锁是表级锁,它只是表示一个意向,并不是真正的锁,表明这个事务打算给这个表上行级锁。意向锁只是表明事务的意向,从而帮助优化行级锁的申请。


意向锁包括两种:


意向共享锁(Intent Shared Lock,IS):表示一个事务打算在这个表的某些行上加共享锁(即多个事务可以同时读取这些行的数据,但是不能修改这些数据)。

意向排它锁(Intent Exclusive Lock,IX):表示一个事务打算在这个表的某些行上加排它锁(即只有这个事务可以读取和修改这些数据)。

意向锁的作用在于,当一个事务需要获取行级锁时,需要先判断这个表是否已经存在意向锁。如果有其他事务持有排它锁或者意向排它锁,那么这个事务就需要等待;如果没有排它锁或者意向排它锁,但是有其他事务持有共享锁或者意向共享锁,那么这个事务可以获取共享锁;如果既没有排它锁也没有共享锁,那么这个事务可以获取行级锁。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
Java 关系型数据库 MySQL
面试题30天打卡-day03
面试题30天打卡-day03
26 0
|
JavaScript 前端开发 Java
面试题30天打卡-day05
面试题30天打卡-day05
40 0
|
Cloud Native 关系型数据库 MySQL
面试题30天打卡-day18
面试题30天打卡-day18
41 0
|
前端开发 JavaScript 开发工具
【面试题2】2
【面试题2】
|
缓存 JavaScript 前端开发
【面试题1】
【面试题1】
|
6月前
面试题 03.04:化栈为队
面试题 03.04:化栈为队
36 5
|
存储 Java 大数据
面试题30天打卡-day07
面试题30天打卡-day07
29 0
|
存储 NoSQL 关系型数据库
面试题30天打卡-day20
面试题30天打卡-day20
61 0
|
存储 缓存 NoSQL
面试题30天打卡-day19
面试题30天打卡-day19
37 0
|
存储 NoSQL Java
面试题30天打卡-day24
面试题30天打卡-day24
40 0