当前位置: 首页 > news >正文

【每日八股】复习 MySQL Day3:锁

文章目录

  • 昨日内容复习
    • MySQL 使用 B+ 树作为索引的优势是什么?
    • 索引有哪几种?
    • 什么是最左匹配原则?
    • 索引区分度?
    • 联合索引如何排序?
    • 使用索引有哪些缺陷?
    • 什么时候需要建立索引,什么时候不需要?
    • 使用索引的注意事项
  • 复习 MySQL Day3:锁
    • MySQL 有哪些类型的锁?每种类型的锁当中又具体有哪些锁?
      • 按锁的粒度分类
        • 全局锁
        • 表级锁
          • 表锁
          • 元数据锁(MDL)
        • 行级锁(InnoDB 特有)
          • 记录锁(Record Locks)
          • 间隙锁(Gap Locks)
          • 临键锁(Next-Key Locks)
          • 插入意向锁(Insert Intention Locks)
      • 按锁的模式分类
        • 共享锁(S锁)
        • 排他锁(X锁)
      • 特殊锁类型
        • 自增锁(Auto Inc Locks)
        • 谓词锁(Predicate Locks)
    • 意向锁的作用是什么?什么时候需要加意向锁?
    • MySQL 的全局锁有什么作用?
    • MySQL 如何加锁?
      • 加锁的基本流程
      • 不同操作的加锁规则
      • InnoDB 行锁的加锁过程
      • 锁的升级与转换

昨日内容复习

MySQL 使用 B+ 树作为索引的优势是什么?

B+ 树是一种多叉树,其非叶子结点仅存放索引,而叶子结点存放真正的数据,叶子结点之间通过双向链表连接,可以优化查询效率。

通过 B+ 树存储千万级别的数据,在访问时只需要进行 3 ~ 4 次的磁盘 I/O 操作。在对 B+ 树进行修改时,由于 B+ 树仅在叶子结点存放真正的数据,因此修改数据时不会修改树的结果。与 B 树相比,由于 B 树在叶子结点和非叶子结点都会存放数据,因此 B 树在修改时可能会涉及树的变形。

索引有哪几种?

  • 单值索引:一个索引只包含一个列,一个表可以包含多个单值索引;
  • 唯一索引:索引列的值必须唯一,但允许存在重复的 null;
  • 主键索引:设定数据库表中某个键为主键时,该主键会自动成为主键索引;
  • 复合索引:一个索引包含多个列;
  • 前缀索引:对字符类型的前几个字符建立索引;

什么是最左匹配原则?

MySQL 的最左匹配原则是 B+ 树联合索引的核心特性,指查询时必须从索引的最左列开始,并按照联合索引的定义顺序依次匹配,否则联合索引失效。

需要注意的是,根据最左匹配原则,当复合索引当中出现范围查询时,该范围查询将会生效,但是范围查询之后的条件均不生效。

索引区分度?

当查询优化器发现所使用索引当中某个值出现的比例超过某个阈值(比如 30%)时,查询优化器将放弃走索引,转而进行全表扫描。

联合索引如何排序?

可以利用所有的有序性,在排序列和索引列建立联合索引。

使用索引有哪些缺陷?

索引本身也是一张表,建立索引需要占用存储空间。

此外,索引不宜建立在频繁增删改的字段上,增删改的字段如果建立了索引,那么原表和索引表都需要修改,增加额外的时间开销。

什么时候需要建立索引,什么时候不需要?

需要建立索引

  • 表的主键:自动成为主键索引;
  • 表当中某个字段需要唯一性约束:对该字段建立唯一索引;
  • 直接进行条件查询的字段:经常使用 WHERE 查询的字段,建立索引可以提高效率;
  • 宜对外键建立索引;
  • 对排序字段建立索引可以大大提高排序速度;
  • 常用于 GROUP BY 和 ORDER BY 的字段可以建立联合索引。

不宜建立索引的场景

  • 表中某个需要频繁增删改的字段不宜建立索引;
  • 表的记录很少时,可以直接走全表扫描;
  • 数据重复且分布均匀的字段不宜建立索引;
  • 经常和其他字段一起查询但其他字段的索引值较多的字段不宜建立索引。

使用索引的注意事项

  • like 前导模糊查询会使索引失效;
  • 负向查询不能使用索引;
  • 联合查询注意最左匹配原则;
  • 避免过度使用索引,因为建立索引会引入额外的存储与维护开销;
  • 更新频繁的字段不宜建立索引;
  • 避免在索引列引入算式或函数,如是会使索引列失效并退化为全表扫描;

复习 MySQL Day3:锁

在这里插入图片描述

MySQL 有哪些类型的锁?每种类型的锁当中又具体有哪些锁?

按锁的粒度分类

全局锁
  • FLUSH TABLES WITH READ LOCK(FTWRL):锁定整个数据库实例(注意是整个数据库,而不是某个表),所有数据表进入只读状态。全局锁主要用于数据备份的场景。
表级锁
表锁
  • 基本表锁:LOCK TABLES ... READ/WRITE
  • 意向锁(Intention Locks):进一步细分为意向共享锁(IS)和意向排他锁(IX);
  • 与行锁的功能类似,表锁的核心作用也是并发控制:协调多个会话对同一个表的并发访问,防止并发操作导致的数据不一致。表锁以整张表为单位进行锁定,是最简单之间的并发控制方式。
  • 表锁的使用场景包括:数据库备份操作、大批量数据导入/导出、需要确保数据一致性的复杂多表操作。
元数据锁(MDL)

元数据锁:

  • 自动加锁,用于保护表结构的变更;
  • 读锁:查询时自动读取;
  • 写锁:表结构更改时获取。
行级锁(InnoDB 特有)
记录锁(Record Locks)

记录锁用于锁定索引中的单条记录,是最基本的行锁类型。

间隙锁(Gap Locks)
  • 记录锁用于锁定索引记录间的间隙。
  • 可防止幻读现象的发生。
  • 仅在「可重复读」隔离级别下生效。
临键锁(Next-Key Locks)
  • 临键锁是记录锁和间隙锁的组合。
  • 临键锁可以锁定当前记录及当前记录之前的间隙,具体来说,临键锁锁定的是一个「左开右闭」区间,上一条索引值到当前索引值之间的间隙将会被锁定,避免在读写期间有新的记录插入这个区间。
  • 临键锁是 InnoDB 的默认行锁实现方式。
插入意向锁(Insert Intention Locks)
  • 插入意向锁是特殊的间隙锁,需要注意的是,插入意向锁是行锁,要与表级的意向锁区分开来。
  • 一个事务在向数据表中插入一条数据时,需要先判断插入位置是否有间隙锁(注意,临键锁也包含间隙锁)。如果有,那么当前插入操作会被阻塞,直到拥有间隙锁的事务提交。在当前事务阻塞期间,会生成一个插入意向锁,表明事务想在某个区间插入新记录,但是目前处于等待状态。

按锁的模式分类

共享锁(S锁)
  • 共享锁又称读锁,通过 SELECT ... LOCK IN SHARE MODE 的方式加锁。
  • 共享锁允许多个事务同时获取。
排他锁(X锁)
  • 排他锁又称写锁,通过 SELECT ... FOR UPDATE 的方式获取。
  • 排他锁一次只能由一个事务持有。

特殊锁类型

自增锁(Auto Inc Locks)

自增锁用于自增列的插入操作,它是特殊的表级锁。

谓词锁(Predicate Locks)

在串行化隔离级别下生效,锁定满足特定搜索条件的行。

意向锁的作用是什么?什么时候需要加意向锁?

意向锁是 InnoDB 中特殊的表级锁,它在行锁和表锁之间起到了关键的协调作用。

意向锁的核心作用

  • 多粒度锁定协调:解决表锁和行锁的共存问题,使不同粒度的锁能够高效协同工作;
  • 快速冲突检测:提供一种“预先声明”机制,避免在加表锁时还需要检查行锁状态。

意向锁的工作机制
首先,意向锁是表锁。之后,意向锁分为意向共享锁(IS)和意向排他锁(IX)。具体来说:

  • IS:表示事务准备在表的某些行加共享锁;
  • IX:表示事务准备在表的某些行加排他锁。

何时会加意向锁

  • IS:当事务需要加行级 S 锁时,会首先自动加表级的 IS 锁;
  • IX:当事务需要加行级 X 锁时,会首先自动加表级的 IX 锁。

意向锁的价值

  • 避免在加表锁时检查索引行的状态来查看是否有行已经加表锁,直接查看意向锁这个表级锁就可以得知当前表中是否有行被加锁。
  • 意向锁可以预防死锁:在加行锁之前,必须先获取意向锁,然后才能够加行锁。

MySQL 的全局锁有什么作用?

MySQL 全局锁的作用是做全库逻辑备份,加全局锁之后整个数据库处于只读状态,增删改会被阻塞。

全局锁的缺陷在于当数据库数据过多时,全局备份时间较慢,由于不能增删改,因此会使业务停滞。一个优化的方法是通过可重复读隔离级别下的 MVCC。

MySQL 如何加锁?

下面以 InnoDB 引擎为例,简述 MySQL 的加锁过程。

加锁的基本流程

锁的触发时机

  • 自动加锁:DML 语句(INSERT / DELETE / UPDATE)时自动获取;
  • 手动加锁:SELECT ... FOR UPDATE 加排他锁,SELECT ... LOCK IN SHARE MODE 加排他锁;
  • DDL 加锁:表的结构变更时自动加锁。

加锁的基本步骤

  1. 解析 SQL 以确定需要访问的表以及行;
  2. 获取意向锁(表级);
  3. 根据隔离级别和查询条件确定锁的类型以及查询范围;
  4. 在存储引擎层加实际的行锁 / 表锁;
  5. 记录锁信息到内存结构。

不同操作的加锁规则

SELECT 语句

  • 普通 SELECT(快照读):不加锁;
  • SELECT ... FOR UPDATE:加排他锁;
  • SELECT ... LOCK IN SHARE MODE:加共享锁。

DML 语句

  • INSERT:排他锁 + 插入意向锁;
  • UPDATE:先加共享锁查找,再加排他锁修改;
  • DELETE:加排他锁。

InnoDB 行锁的加锁过程

基于索引的加锁

-- 假设有索引 idx_age
UPDATE users SET name='yggp' WHERE age=25;

加锁步骤:

  1. 通过 idx_age 找到 age=25 的记录;
  2. 获取对应行的排他锁;
  3. 如果当前隔离级别是可重复读,那么还会加间隙锁防止幻读。

无索引时加锁

-- 无合适索引的列
UPDATE users SET name='yggp' WHERE phone='123456';

加锁步骤:

  • 全表扫描:对所有扫描到的行加锁;
  • 风险:容易导致大量锁冲突和性能问题。

锁的升级与转换

锁升级条件
当单个事务锁定的行超过 innodb_change_buffer_max_size 时,系统自动将行锁升级为表锁。

锁转换场景
指的是先加共享锁的行如果后续需要修改,那么共享锁将升级为排他锁。UPDATE 语句的加锁过程就是先通过共享锁找到对应的记录,再加排他锁对数据进行修改。

-- 事务内的锁转换示例
BEGIN;
SELECT * FROM accounts WHERE id=1 LOCK IN SHARE MODE;	-- 获取 S 锁
-- 下面执行 UPDATE, S -> X
UPDATE accounts SET balance=100 WHERE id=1;				-- S -> X

相关文章:

【每日八股】复习 MySQL Day3:锁

文章目录 昨日内容复习MySQL 使用 B 树作为索引的优势是什么?索引有哪几种?什么是最左匹配原则?索引区分度?联合索引如何排序?使用索引有哪些缺陷?什么时候需要建立索引,什么时候不需要&#xf…...

2025年KBS新算法 SCI1区TOP:长颖燕麦优化算法AOO,深度解析+性能实测

目录 1.摘要2.算法原理3.结果展示4.参考文献5.文章&代码获取 1.摘要 本文提出了一种新颖的元启发式算法——长颖燕麦优化算法(AOO),该算法灵感来自动画燕麦在环境中的自然行为。AOO模拟了长颖燕麦的三种独特行为:(i) 通过自然…...

1.4 点云数据获取方式——结构光相机

图1-4-1结构光相机 结构光相机作为获取三维点云数据的关键设备,其工作原理基于主动式测量技术。通过投射已知图案,如条纹、点阵、格雷码等,至物体表面,这些图案会因物体表面的高度变化而发生变形。与此同时,利用相机从特定...

2025.4.29总结

工作:最近手头活变得多起来了,毕竟要测两个版本,有时候觉得很奇怪,活少的时候,又想让别人多分点活,活多的时候,又会有些许不自然。这种反差往往伴随着项目的节奏,伴随着两个极端。所…...

初探RAG

源码 核心工作流程 读取文件的内容将内容保存在向量数据库检索向量数据库用户的问题用户问题 上下文【向量数据】 > LLM 读取文件内容【pdf为例】 from pdfminer.high_level import extract_pages from pdfminer.layout import LTTextContainerclass PDFFileLoader():d…...

AIGC(生成式AI)技术全景图:从文本到图像的革命

AIGC(生成式AI)技术全景图:从文本到图像的革命 前言 生成式人工智能(AIGC)正以惊人的速度重塑数字内容的生产方式。从GPT系列模型的文本生成,到Stable Diffusion的图像创作,再到Sora的视频合成…...

通信协议:数字世界的隐形语言——从基础认知到工程实践-优雅草卓伊凡

通信协议:数字世界的隐形语言——从基础认知到工程实践-优雅草卓伊凡 一、理解通信协议:数字世界的”隐形语法” 1.1 通信协议的不可见性与现实存在 通信协议如同空气中的无线电波,虽然看不见摸不着,却实实在在支撑着现代数字世…...

RPC复习

RPC复习 RPC (远程过程调用) 全面解析一、RPC 定义与核心作用1. 什么是RPC?2. 核心作用 二、主流RPC框架对比三、RPC适用场景四、RPC的缺陷五、RPC vs REST vs GraphQL六、Java实现案例:使用Dubbo框架案例描述1. 环境准备2. 定义服务接口3. 服务提供方实…...

Express 文件上传不迷路:req.files 一次性讲明白

前言 在开发后台接口的江湖中,文件上传堪称“隐藏副本”,难度不大但坑点极多。本来只想优雅接收一张图片,结果 undefined、报错、路径错乱轮番登场,逼得人想重拾卖烤红薯的梦想。别慌,本文将用轻松幽默的方式,深入拆解 req.files.file 的每个属性,从前端表单到后台处理…...

Leetcode 3530. Maximum Profit from Valid Topological Order in DAG

Leetcode 3530. Maximum Profit from Valid Topological Order in DAG 1. 解题思路2. 代码实现 题目链接:3530. Maximum Profit from Valid Topological Order in DAG 1. 解题思路 这一题的整体思路就是一个动态规划的思路,我们只需要在当前可以访问的…...

Mysql中索引的知识

Mysql中的索引的定义和种类 核心概念:索引是什么? 想象一下你有一本很厚的书,你想找到其中关于某个特定主题的内容。你有两种方法: 从头到尾翻阅整本书:这就像数据库中的全表扫描 (Full Table Scan)。如果书很长&…...

VSCode Verilog编辑仿真环境搭建

VSCode Verilog环境搭建 下载Iverilog安装Iverilog验证安装VS Code安装插件 下载Iverilog 官网下载Iverilog 安装Iverilog 一定要勾选这两项 建议勾选这两项 验证安装 运行Windows PowerShell输入命令:iverilog输入命令:Get-Command gtkwave …...

linux修改环境变量

添加环境变量注意事项。 vim ~/.bashrc 添加环境变量时,需要source ~/.bashrc后才能有效。同时只对当前shell窗口有效,当打开另外的shell窗口时,需要重新source才能起效。 1.修改bashrc文件后 2.source后打开另一个shell窗口则无效&#xff…...

为什么要学习《金刚经》

《金刚经》作为佛教般若经典的核心,以"缘起性空"为思想根基,通过佛陀与须菩提的对话,揭示了破除执著、见真实相的智慧。 以下从核心要义、精髓段落和现实应用三个维度进行解读: 一、核心思想精髓 1. "凡所有相&am…...

【阿里云大模型高级工程师ACP习题集】2.7 通过微调增强模型能力 (上篇)(⭐️⭐️⭐️ 重点章节!!!)

习题集: 【单选题】在大模型微调中,与提示工程和RAG相比,微调的独特优势在于( ) A. 无需外部工具即可提升模型表现 B. 能让模型学习特定领域知识,提升底层能力 C. 可以更高效地检索知识 D. 能直接提升模型的知识边界,无需训练 【多选题】以下关于机器学习和传统编程的说…...

Docker 容器双网卡访问物理雷达网络教程

作者: 陈梓洋 环境: ubuntu 22.04lts 时间: 2025年4月29日 Docker 容器双网卡访问物理雷达网络教程 这个教程适用于这样的场景:容器保留原有 ROS 通信网络(如 bridge 网络),同时需要访问一个物…...

C++:Lambda表达式

C:Lambda表达式 C中lambda的基本语法1. 捕获列表(Capture List)2. 示例代码示例 1:简单的lambda示例 2:捕获变量示例 3:按引用捕获示例 4:捕获所有变量示例 5:作为函数参数 3. lambd…...

Vim 中替换字符或文本

在 Vim 中替换字符或文本可以使用 替换命令(substitute),其基本语法为: :[range]s/old/new/[flags]1. 基本替换 命令说明:s/foo/bar/替换当前行的第一个 foo 为 bar:s/foo/bar/g替换当前行的 所有 foo 为 bar:%s/foo/bar/g替换 …...

Thinkphp开发自适应职业学生证书查询系统职业资格等级会员证书管理网站

主要功能介绍 1.PHP MYSQL开发,开源,方便二次开发。 2.后台管理界面清新 3.可批量导入导出数据,格式为:JsoN、CSV、 Excel等。 4.自适应手机端,PC端 5.数据修改,添加,删除非常方便,手机上就可以解决 6.可以增加管理员权限等 7.界面可以个性定制开发...

OpenAI Embedding 和密集检索(如 BERT/DPR)进行语义相似度搜索有什么区别和联系

OpenAI Embedding 和密集检索(如 BERT/DPR)其实是“同一种思想的不同实现”,它们都属于Dense Retrieval(密集向量检索),只不过使用的模型、部署方式和调用方式不同。 🧠 首先搞清楚:…...

C语言复习笔记--数据在内存中的存储

今天我们来复习一下数据在内存中的存储方式.话不多说进入正题. 整数在内存中的存储 整数的2进制表⽰⽅法有三种,即原码、反码和补码.三种表⽰⽅法均有符号位和数值位两部分,符号位都是⽤0表⽰“正”,⽤1表⽰“负”,⽽数值位最⾼位…...

笔试专题(十二)

文章目录 主持人调度题解代码 小红的ABC题解代码 不相邻取数题解代码 空调遥控题解代码 主持人调度 题目链接 题解 1. 排序 2. 先按左端点的大小进行排序,保证时间是连续的,如果后一个点的左端点大于等于前一个点的右端点就是和法的,否则…...

Tauri(2.5.1)+Leptos(0.7.8)开发桌面应用---后台调用Python Matplotlib绘制图形

Rust语言最接近Python Matplotlib绘图库的应该是Plotters,但是试用下来还是没有Matplotlib效果好,所以尝试在Tauri Leptos项目中,后台调用Python Matplotlib绘制图形,并返回给前端Leptos展示。 具体效果如下: 1. 前端…...

Qemu-STM32(十七):STM32F103加入AFIO控制器

概述 本文主要描述了在Qemu平台中,如何添加STM32F103的AFIO控制器模拟代码,AFIO是属于GPIO引脚复用配置的功能。 参考资料 STM32F1XX TRM手册,手册编号:RM0008 添加步骤 1、在hw/arm/Kconfig文件中添加STM32F1XX_AFIO&#x…...

刀客doc:小红书商业技术负责人苍响离职

根据大厂日爆的爆料,小红书商业化再度迎来高层人事变动,原商业平台技术负责人苍响(薯名),职级L2,已于本月正式离职,其下属团队现由电商业务负责人接管。 根据刀客doc获得的资料,苍响…...

CC52.【C++ Cont】滑动窗口

目录 1.题目 2.分析 方法1:暴力枚举 方法2:暴力枚举的优化:"同向双指针",也称滑动窗口 前置知识 核心操作 例子解释 代码 提交结果 1.题目 LCR 008. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target…...

linux中由于编译选项-D_OS64BIT导致的核心已转储问题

linux中由于编译选项-D_OS64BIT导致的核心已转储问题排查解决: 原因: a.so b.so a.so使用b.so 程序1 程序2 使用a.so 程序1运行正常,程序2启动后提示核心已转储。 程序1和程序2运行的代码都一致,只执行创建xApplication app&…...

Ubuntu搭建 Nginx以及Keepalived 实现 主备

目录 前言1. 基本知识2. Keepalived3. 脚本配置4. Nginx前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器,无代码爬取,就来:bright.cn Java基本知识: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRU…...

Knife4j 接口文档添加登录验证流程分析

Knife4j 接口文档添加登录验证流程是非常必要的&#xff0c;否则接口文档一旦暴露到外面是很危险的&#xff0c;今天我们详细分析一下。在1.9.6的版本时&#xff0c;作者把swagger-bootstrap-ui项目重命名为Knife4j&#xff0c;今天分析2.0.6版本。 1、pom.xml文件引入 <pa…...

C++之string

string 是C中常见的一个用于处理和操作字符串的类。一直有用它来存储字符串&#xff0c;今天来介绍介绍一下它的定义和一些基本用法吧。 1、头文件 #include <string>2、定义和初始化 #include <iostream> #include <string> using namespace std;int main…...

【含文档+PPT+源码】基于SSM的电影数据挖掘与分析可视化系统设计与实现

项目介绍 本课程演示的是一款基于SSM的电影数据挖掘与分析可视化系统设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本…...

DeepSeek提示词技巧

以下是使用Deepseek等AI工具时提升效果的提示词模式总结&#xff0c;涵盖核心规律、应用场景及效果对比&#xff1a; 规律一&#xff1a;结构化提示&#xff08;解决模糊性问题&#xff09; 问题&#xff1a;开放式问题导致回答笼统 模式&#xff1a;角色任务约束输出格式 例子…...

软考高项(信息系统项目管理师)第 4 版全章节核心考点解析(第4版课程精华版)

一、核心输入输出速记体系&#xff08;力扬老师独家口诀&#xff09; &#xff08;一&#xff09;规划阶段万能输入&#xff08;4 要素&#xff09; 口诀&#xff1a;章程计划&#xff0c;组织事业 ✅ 精准对应&#xff08;ITTO 核心输入&#xff09;&#xff1a; 章程&#…...

【linux网络】网络基础概念

1. 初始协议 1.1 OSI 七层模型 OSI&#xff08;Open System Interconnection&#xff0c;开放系统互连&#xff09;七层网络模型称为开放式系统互联参考模型&#xff0c;是一个逻辑上的定义和规范&#xff1b; 把网络从逻辑上分为了 7 层. 每一层都有相关、相对应的物理设备&a…...

【PyTorch动态计算图实战解析】从原理到高效开发

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比二、实战演示环境配置要求核心代码实现案例1:梯度计算可视化案例2:动态控制流案例3:自定义反向传播运行结果验证三、性能对比测试方法论…...

【专题五】位运算(1):常见位运算操作总结

&#x1f4dd;前言说明&#xff1a; 本专栏主要记录本人的基础算法学习以及LeetCode刷题记录&#xff0c;按专题划分每题主要记录&#xff1a;&#xff08;1&#xff09;本人解法 本人屎山代码&#xff1b;&#xff08;2&#xff09;优质解法 优质代码&#xff1b;&#xff…...

react-native-vector-icons打包报错并且提示:copyReactNativeVectorIconFonts相关信息

使用react-native-vector-icons&#xff0c;打包时会报&#xff1a; FAILURE: Build failed with an exception. * What went wrong: Some problems were found with the configuration of task :app:copyReactNativeVec torIconFonts (type Copy).- Gradle detected a proble…...

【Sqlalchemy Model转换成Pydantic Model示例】

【Sqlalchemy Model转换成Pydantic Model示例】 由于Sqlalchemy和Pydantic的模型字段类型可能有差异, 所以需要一个通用的装换类 def sqlalchemy_to_pydantic_v2(sqlalchemy_model, pydantic_model):"""通用函数&#xff0c;将 SQLAlchemy 模型实例转换为 Pyd…...

探索语音增强中的多尺度时间频率卷积网络(TFCM):代码解析与概念介绍

探索语音增强中的多尺度时间频率卷积网络&#xff08;TFCM&#xff09;&#xff1a;代码解析与概念介绍 在现代音频处理领域&#xff0c;语音增强技术始终是一个备受关注的研究热点。其主要目标是通过去除背景噪声、回声或其他混杂信号&#xff0c;提升语音通话或录音的质量。…...

私有知识库 Coco AI 实战(四):打造 ES 索引参数小助手

经过前面的实战&#xff0c;我们已经能够快速、准确的检索 ES 官方文档的内容了&#xff0c;但是还是要自己去阅读。既然 Coco AI 能与大模型交互&#xff0c;我们何不直接用大模型来阅读文档&#xff0c;回答我们的问题&#xff1f; 模型配置 我们进入 Coco AI 管理后台&…...

苍穹外卖心得体会

1 登录认证 技术点&#xff1a;JWT令牌技术&#xff08;JSON Web Token&#xff09; JWT&#xff08;JSON Web Token&#xff09;是一种令牌技术&#xff0c;主要由三部分组成&#xff1a;Header头部、Payload载荷和Signature签名。Header头部存储令牌的类型&#xff08;如JW…...

Ubuntu上搭建python环境并安装第三方库

Ubuntu上搭建python环境并安装第三方库 更新系统包列表安装Python和pip验证安装创建并使用虚拟环境虚拟环境中安装第三方库编写并测试python脚本运行.py文件 使用Ubuntu 24.04搭建python环境并安装第三方库 更新系统包列表 sudo apt update安装Python和pip sudo apt install…...

redis高阶2 高性能

灵魂拷问&#xff1a; redis 为什么块&#xff1f; 纯内存访问单线程避免上下文切换渐进式ReHash , 缓存时间戳 Redis 的 key 和 value组织结构&#xff1a; 全局哈希表&#xff1a; 为了实现从键到值的快速访问。 redis 使用了一个哈希表 来保存所有键值对。一个哈希表 其实就…...

go编解码json和http请求

1.json概述 json是日常工作中http请求的最重要的数据格式。对比日常使用python中的json&#xff0c;获得http请求后json.loads和json.dumps函数&#xff0c;go中显的非常麻烦&#xff0c;这里结合json和http请求的总结下&#xff0c;便于积累和学习。这里给出一个json的类型&a…...

洛谷题解 | CF1979C Earning on Bets

目录 题目描述输入格式输出格式输入输出样例 #1输入 #1输出 #1 说明/提示题目思路AC 代码 题目描述 You have been offered to play a game. In this game, there are $ n $ possible outcomes, and for each of them, you must bet a certain integer amount of coins. In th…...

在线文章系统自动化测试报告

目录 1. 项目简介 1.1. 用户登录页面 1.2. 文章列表页面 1.3. 文章详情页面 1.4. 文章编辑与发布页面 2. 测试计划 3. 测试环境/工具/技术栈 4. 编写自动化测试用例​编辑 5. 自动化测试脚本开发 5.1. 项目整体结构 5.2. 配置utils.py 5.2.1. 导入必要的库 5.2.2.…...

C++ 类和对象(3)初始化列表、友元函数、内部类

文章目录 再谈构造函数构造函数体内赋值 初始化列表初始化列表特点 类型转换static成员static特点C11中成员初始化的新用法 友元友元函数友元函数特点 友元类友元类的特点 内部类内部类的特点 再谈构造函数 构造函数体内赋值 当我们创建对象时&#xff0c;编译器会调用构造函…...

CF4C Registration system(哈希实现)

解题思路&#xff1a;因为这道题在每次输入一个字符串后&#xff0c;都需要进行一次查找以判断是否需要按照规则生成新的用户名&#xff0c;故这道题使用STL容器map进行哈希是最合适的(map的查找时间复杂度为log n)&#xff0c;在题目描述中&#xff0c;如果用户名已经被注册&a…...

DDI0487--A1.7

Introduction RAS(Reliability&#xff0c;Availability&#xff0c;Serviceability&#xff09; RAS是衡量一个系统可靠性的三个方面: Reliability——持续提供正确服务的能力。 Availability——正确提供服务的准备状态。 Serviceability——能够进行修改和修复的能力。 R…...

MySQL事务(transaction)(笔记)

事务(Transaction)&#xff08;必须掌握必须理解&#xff09; 1.什么是事务? 一个事务是一个完整的业务逻辑单元&#xff08;一个业务逻辑单元常常涉及到多条DML语句共同执行完成&#xff09;,不可再分&#xff08;最小的工作单元&#xff09; 一个事务就是一个业务,完成一个…...