Java面试Day12

news2024/12/28 21:33:37

1.意向锁是什么?有什么作用?它是表级锁还是行级锁?

意向锁是什么

  • 在使用 InnoDB 引擎的表里时对某些记录加上「共享锁」之前,需要先在表级别加上一个「意向共享锁」

  • 在使用 InnoDB 引擎的表里时对某些记录加上「独占锁」之前,需要先在表级别加上一个「意向独占锁」

也就是,当执行插入、更新、删除操作,需要先对表加上「意向独占锁」,然后对该记录加独占锁。

意向锁的作用

意向共享锁和意向独占锁是表级锁,不会和行级的共享锁和独占锁发生冲突,而且意向锁之间不会发生冲突,只会和共享表锁(lock tables ... read)和独占表锁(lock tables ... write)发生冲突

表锁和行锁是满足读读共享、读写互斥、写写互斥的。

作用:为了快速判断表里是否有记录被加锁

  • 如果没有「意向锁」,那么加「独占表锁」时,就需要遍历表里所有记录,查看是否有记录存在独占锁,这样效率会很慢

  • 那么有了「意向锁」,由于在对记录加独占锁前,先会加上表级别的意向独占锁,那么在加「独占表锁」时,直接查该表是否有意向独占锁,如果有就意味着表里已经有记录被加了独占锁,这样就不用去遍历表里的记录

意向锁是表级锁还是行级锁?

表级别锁有以下几种

  1. 表锁

  2. 元数据锁(MDL)

  3. 意向锁

  4. AUTO-INC锁

所以意向锁是表级别锁

其他

普通的 select 是不会加行级锁的,普通的 select 语句是利用 MVCC 实现一致性读,是无锁的。

不过,select 也是可以对记录加共享锁和独占锁的,具体方式如下:

//先在表上加上意向共享锁,然后对读取的记录加共享锁
select ... lock in share mode;
​
//先表上加上意向独占锁,然后对读取的记录加独占锁
select ... for update;

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

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

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

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

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

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

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

Redis中的任意数据类型的键和值都会被封装成一个RedisObject,即Redis对象。会在Redis对象中主要由三个字段:当前数据结构的类型、编码方式和指向实际数据的指针。

String类型,首先会在Redis对象中指明他的类型为OBJ_STRING。

String类型有三种编码方式

1、其最基本的编码方式是RAW编码,基于简单动态字符串SDS来实现,存储上限为512mb。他就是在内存中申请一个SDS,然后让Redis对象的指针指向SDS即可。

2、当要存储的SDS的长度小于44字节,就会使用EMBSTR编码,此时Redis对象的头部和SDS是在一个连续的内存空间中,申请内存的时候只需要一次分配,效率更高。为什么是44个字节呢?因为Redis对象数据结构中其头部有16个字节。然后SDS中头部3个字节,尾巴结束字符一个字节,加在一起共20个字节,20个字节加上44个字节就是64个字节,因为redis内存分配会以2的n次方进行分配,64个字节不会产生内存碎片。

3、如果要存储的字符串是一个整数,且大小不超过8位二进制能表示的范围。就采用int的编码方式,直接让redis对象的指针位设置为这个整数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/707668.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RK3568 NPU YOLOV5S 目标检测DEMO

视频流解析 硬件环境 开发板:RK356X 系统:Debian11 获取源码 程序源码内置SDK目录 $ ls external/rknpu2/examples/rknn_yolov5_video_demo/build build-android_RK356X.sh build-android_RK3588.sh build-linux_RK356X.sh build-linux_RK3588…

《计算机系统与网络安全》第五章 消息认证与数字签名

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

4.28 周期信号的傅里叶变换

非周期信号的谱之所以是连续的,是因为非周期信号相当于信号是无穷大的,那w -> 0,因此就演变成了连续谱了 原来的Fn变成了高度为无穷小,w谱线之间拼起来的连续谱了,由于无穷小的量我们看不到它,那怎么办呢…

77、基于STM32单片机学生信息管理系统指纹密码控制设计(程序+原理图+参考论文+相关资料+开题报告+任务书+元器件清单等)

单片机主芯片选择方案 方案一:AT89C51是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元&a…

【TCP/IP】利用I/O复用技术实现并发服务器 - epoll

目录 select的缺陷 epoll函数 epoll_create epoll_ctl epoll_wait 基于epoll的回声服务器实现 select的缺陷 在之前,我们使用了select函数完成了对回声服务器端I/O的复用,但是从代码上依然存有缺陷,主要集中在: 每次调用se…

ModaHub魔搭社区:向量数据库Milvus性能优化问题(三)

目录 Milvus 的导入性能如何? 边插入边搜索会影响搜索速度吗? 批量搜索时,用多线程的收益大吗? 为什么同样的数据量,用 GPU 查询比 CPU 查询慢? Milvus 的导入性能如何? 客户端和服务端在同…

__attribute__机制

__attribute__((constructor))和 __attribute__((destructor)) __attribute__((constructor))&#xff1a;放在main函数之前执行的函数的前面。 __attribute__((destructor))&#xff1a;放在main函数之后执行的函数的前面。 测试代码 #include <stdio.h> #include &l…

RocketMQ 详解

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;RocketMQ 详解 ✅创作者&#xff1a;林在闪闪发光 ⏰预计时间&#xff1a;30分钟 &#x1f389;个人主页&#xff1a;林在闪闪发光的个人主页 &#x1f341;林在闪闪发光的个人社区&#xff0c;欢迎你的加入: 林在闪闪发光…

【Shell】复制用户传参的文件夹

授权 cd /Users/lion/Downloads/shell-test-demos chmod ux *.sh#!/bin/bashprintHelp() {echo "-p pic (required) path for pic"exit 1 }while getopts p:h OPT; docase $OPT inp) path"$OPTARG" ;;esac done# check api_key exists if [ -z "$pat…

IDEA字体配置

IDEA默认字体&#xff1a;JetBrains Mono 1、下载Monaco字体&#xff08;windows版&#xff09;&#xff1a;下载地址&#x1f448; 2、双击安装 3、在IDEA中切换Monaco字体

帆软Json数据集插件,数据查询及参数控件传参

先看Demo 文本查询&#xff0c;下拉复选框查询&#xff0c;无参数时查全部 有参数传参时 1.定义数据连接 测试地址&#xff1a; http://fine-doc.oss-cn-shanghai.aliyuncs.com/book.json 2.新建json数据集&#xff0c;查询全表 2.1.查询全表 2.2.查询单个字段 3. 上述是简单…

CLion开发STM32

CLion开发STM32 opencd https://gnutoolchains.com/arm-eabi/openocd/ gcc-arm-none-eabi https://launchpad.net/gcc-arm-embedded/download arm-none-eabi-gcc -v“gcc-arm-none-eabi是GNU项目下的软件,是一个面向裸机arm的编译器。 mingw 需要把opencd和的工具链添加…

移远通信全新3GPP NTN R17模组正式上线,助力实现空天地海网络全覆盖

6月29日&#xff0c;在2023上海世界移动通信大会期间&#xff0c;物联网整体解决方案供应商移远通信正式宣布&#xff0c;推出符合3GPP NTN R17标准的全新5G卫星通信模组——CC950U-LS。该产品面向国内物联网市场&#xff0c;将为蜂窝网络无法覆盖的森林、海洋、沙漠等偏远地区…

抖音SEO矩阵源码开发(一)

前言&#xff1a; 1.抖音SEO矩阵系统源码开发 是一项技术密集型工作&#xff0c;需要对大数据处理、人工智能等领域有深入了解。该系统开发过程中需要用到多种编程语言在服务器上安装LNMP环境&#xff0c;包括Linux操作系统、Nginx、MySQL、PHP等&#xff0c;如Java、Python等…

CTF安全竞赛介绍

目录 一、赛事简介 二、CTF方向简介 1.Web&#xff08;Web安全&#xff09; &#xff08;1&#xff09;简介 &#xff08;2&#xff09;涉及主要知识 2.MISC&#xff08;安全杂项&#xff09; &#xff08;1&#xff09;介绍 &#xff08;2&#xff09;涉及主要知识 3…

Vue3 刨析响应式原理

ref 目标 了解 Vue &#xff0c;手写一个方法&#xff0c;实现响应式&#xff0c;并读懂响应式 源码 class MyRef {constructor(value) {this._value value}// 访问器get value() {console.log(触发 getter 函数 访问);return this._value}// 读取器set value(newVal) {cons…

基于Android新生预报到系统APP的设计与实现

1.引言 随着国家的教育方针政策的不断改变&#xff0c;自20世纪初以来&#xff0c;政府开始实施扩招计划&#xff0c;截至2020年我国大学生总规模己经攀升至近5000万&#xff0c;大学教育的普及化正在逐渐实现。随着大学新生数量的不断增多&#xff0c;到了每年的9月份&#x…

实现Linux(Ubuntu22.04)与Windows文件互通共享(双方永久往来~)

Samba服务器了解&#xff08;防守&#xff09; Samba是一个开源软件套件&#xff0c;它允许在不同操作系统之间共享文件、打印机和其他资源。它是基于SMB/CIFS协议&#xff0c;这是一种用于在Windows系统中共享文件和打印机的网络协议。Samba服务器可以在Linux、Unix、macOS和…

玩转C++调试之Python的GDB库增强

玩转C调试之Python的GDB库增强 0.导语 调试是软件开发过程中不可或缺的一环&#xff0c;而GDB&#xff08;GNU调试器&#xff09;作为一款功能强大的调试工具&#xff0c;在开发者中得到广泛应用。除了传统的命令行调试功能外&#xff0c;GDB还提供了Python的GDB库&#xff0c;…

2024考研408-计算机组成原理第五章-中央处理器学习笔记

文章目录 前言一、CPU的功能与基本结构1.1、CPU的功能1.2、运算器与控制器需要实现功能1.3、运算器的基本结构1.3.1、基本结构构成&#xff08;七个部分&#xff09;1.3.2、各个部件详细介绍①算数逻辑运算单元②通用寄存器组&#xff08;介绍数据通路的基本结构2个&#xff09…