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

4.2.3 MYSQL事务原理分析

文章目录

  • 4.2.3 MYSQL事务原理分析
    • 1. 事务
      • 1. 前提:并发连接访问
      • 2. 事务定义
      • 3. 事务语句:
      • 4. acid特性
      • 5. undolog-回滚日志
      • 6. redolog-重做日志
    • 2. 隔离级别
      • 1. 四种隔离级别
      • 2. 并发问题解释
      • 3. 隔离级别设置
    • 3. MVCC(Multiversion Concurrency Control,多版本并发控制)(重点)
      • 1. read view
      • 2. 不同隔离级别下MVCC行为
      • 3. 快照读 VS 当前读
      • 4. redo/undo
    • 4. 锁
      • 1. 锁的粒度
      • 2. 锁类型
        • 1. 全局锁
        • 2. 表级锁
        • 3. 行级锁
      • 3. 锁的算法
    • 5. 死锁
      • 1. 相反加锁顺序死锁
      • 2. 锁冲突死锁
      • 3. 查看死锁
      • 3. 如何避免死锁

4.2.3 MYSQL事务原理分析

1. 事务

1. 前提:并发连接访问

在数据库中,多个连接同时访问(并发),容易引发数据混乱,需要事务来保证操作的完整性和正确性

2. 事务定义

是用户定义一系列操作,这些操作要不然都做,要不然都不做,不可分割,告诉mysql这是不可分割的一系列整体

3. 事务语句:

-- 显示开启事务
START TRANSACTION 
-- 提交事务,并使得已对数据库做的所有修改持久化
COMMIT
-- 回滚事务,结束用户的事务,并撤销正在进行的所有未提交的修改
ROLLBACK
-- 创建一个保存点,一个事务可以有多个保存点
SAVEPOINT identifier
-- 删除一个保存点
RELEASE SAVEPOINT identifier
-- 事务回滚到保存点
ROLLBACK TO [SAVEPOINT] identifier

4. acid特性

特性解释备注
A - Atomicity(原子性)事务中的操作要么全部成功,要么全部失败通过 undo log 支持回滚
C - Consistency(一致性)事务执行前后,数据保持一致依靠约束、外键等规则
I - Isolation(隔离性)多个事务之间互不干扰MVCC支持非锁定一致性读
D - Durability(持久性)提交后的数据永久保存,即使系统宕机依靠 redo log

5. undolog-回滚日志

  1. 用于回滚数据
  2. 当事务执行过程中出现错误或被用户取消,undo log 记录修改前的旧值,可以通过它恢复原状
  3. 存在于 InnoDB 引擎中

6. redolog-重做日志

  1. 用于恢复数据
  2. 事务提交前,会先把修改写入 redo log,防止崩溃丢失
  3. 提交时再持久化到磁盘数据页,确保事务的持久性(D)
  4. InnoDB 特有,保证即使宕机也能恢复到提交状态

2. 隔离级别

  1. 并发访问时,如果没有控制好,事务之间互相干扰,可能会产生各种脏读、不可重复读、幻读等问题。
  2. 隔离级别就是用来平衡:并发性能 vs. 数据正确性(隔离得越严格,性能越低,但数据越安全)

1. 四种隔离级别

隔离级别描述可能出现的问题
READ UNCOMMITTED(读未提交)可以读到别的事务未提交的数据脏读、不可重复读、幻读
READ COMMITTED(读已提交)只能读到别的事务已提交的数据不可重复读、幻读
REPEATABLE READ(可重复读)(MySQL默认)同一事务中,多次读取同一数据结果一致幻读(MySQL用Gap锁避免了)
SERIALIZABLE(可串行化)强制事务串行执行,完全隔离无任何并发问题,但性能最低

2. 并发问题解释

  1. 脏读:读到了未提交事务修改的数据。
  2. 不可重复读:同一事务中两次读到的数据不一样(因为别的事务提交了修改)。
  3. 幻读:同一事务中,查询时发现新增了数据行

3. 隔离级别设置

-- 查看当前隔离级别
SELECT @@tx_isolation;--临时修改当前会话隔离级别(只影响当前连接)
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;--修改全局隔离级别(需要重启或新连接生效)
SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;

3. MVCC(Multiversion Concurrency Control,多版本并发控制)(重点)

  1. 提高并发性能,保证读一致性(不加锁也能读到合理数据)。用来实现一致性的非锁定读;非锁定读是指不需要等待访问的行上X锁的释放

  2. 原理:对每条记录保存多个版本(通过undo log),不同事务读取时根据自己的Read View判断可见性

1. read view

项目作用
m_ids当前活跃的事务ID集合(还未提交的事务)
min_trx_id当前活跃事务中最小的事务ID
max_trx_id下一个即将分配的事务ID
creat_trx_id每一行数据的创建事务ID(trx_id字段)
  1. trx_id < min_trx_id ;说明该记录在创建 read_view 之前已经提交,所以对当前事务可见;
  2. trx_id >= max_trx_id ;说明该记录是在创建 read_view 之后启动事务生成的,所以对当前事务
    不可见;
  3. min_trx_id <= trx_id < max_trx_id ;此时需要判断是否在 m_ids 列表中;
    • 在列表中;生成该版本记录的事务仍处于活跃状态,该版本记录对当前事务不可见;
    • 不在列表中;生成该版本记录的事务已经提交,该版本记录对当前事务可见;

2. 不同隔离级别下MVCC行为

在 read committed 和 read repeatable 隔离级别下,MVCC 采用 read view 来实现的,它们的区别在于创建 read view 时机不同

隔离级别MVCC处理说明
READ COMMITTED(读已提交)每次查询都生成新的 Read View读到别人刚提交的数据(变化的快照)
REPEATABLE READ(可重复读)整个事务期间共用同一个 Read View保证事务内读到的数据不变

3. 快照读 VS 当前读

类型说明举例
快照读(Snapshot Read)非锁定读,走MVCC快照SELECT * FROM table WHERE id = 1;
当前读(Current Read)加锁读,拿最新版本SELECT * FROM table WHERE id = 1 FOR UPDATE;

4. redo/undo

日志作用何时使用
Redo Log用来恢复已提交事务的修改(崩溃恢复)crash后根据redo log恢复
Undo Log保存数据的旧版本,供回滚或MVCC快照读使用回滚或快照读时用

undo log 会随着事务提交后被清理掉(并不是永久保存)

4. 锁

在 MySQL 中,锁是并发控制的核心机制,主要包括不同粒度的锁(行、页、表)和不同类型的锁(共享锁、排他锁、意向锁等)。

1. 锁的粒度

MySQL 中事务使用的是粒度锁(Granular Locking),主要体现在以下三个层次:

  1. 表级锁(Table-Level Lock):作用于整张表,开销小,加锁快,但并发性低。
  2. 页级锁(Page-Level Lock):作用于数据页(主要用于 MyISAM 的索引缓存,InnoDB 不使用)。
    3。 行级锁(Row-Level Lock):作用于某一行记录,开销大,加锁慢,但并发性好,InnoDB 支持。

2. 锁类型

1. 全局锁
  1. 全局只读锁:使用 FLUSH TABLES WITH READ LOCK,可用于做一致性备份,防止其他事务对数据进行修改。
  2. 全局写锁:使用 LOCK TABLES,可用于做表结构变更。
    注意:
  • 全局锁会锁定整个数据库,其他事务无法进行读写操作。
2. 表级锁
  1. 意向共享锁(IS Lock):事务打算对表中某些记录加共享锁
  2. 意向排他锁(IX Lock):事务打算对表中某些记录加排他锁
    意向锁不会阻塞其他意向锁,但会与表级的共享或排他锁发生冲突
3. 行级锁
  1. 共享锁(S Lock):又称读锁,允许其他事务也获得该行的共享锁(读读并发)
  2. 排他锁(X Lock):又称写锁,阻止其他事务获得该行的任何锁(独占写)
    InnoDB 使用MVCC + 行锁结合实现高并发控制

3. 锁的算法

InnoDB 使用多种行锁算法来保证事务隔离性

  1. 记录锁(Record Lock)
    定义:锁定索引上的某一行记录。
    作用:防止其他事务对该记录进行修改或删除。
    示例:
SELECT * FROM user WHERE id = 5 FOR UPDATE;

若 id 有索引,这条语句会对 id=5 的那一条记录加记录锁

  1. 间隙锁(Gap Lock)
    定义:锁定某一范围之间的间隙,不锁定已有记录。
    作用:防止其他事务在该范围内插入新记录,避免“幻读”。
    特点:仅适用于 范围查询,例如 <, >, BETWEEN。
    示例:
SELECT * FROM user WHERE id < 5 FOR UPDATE;

会锁住 (5, ∞) 范围的间隙,阻止插入 id > 5 的新记录。

  1. 临键锁(Next-Key Lock)
    定义:记录锁 + 前一个间隙锁的组合。
    作用:锁定某一条记录及其前面的间隙。
    目的:在可重复读(RR)隔离级别下防止幻读。
    示例:
SELECT * FROM user WHERE id BETWEEN 5 AND 10 FOR UPDATE;

会加多个临键锁,如:
(4, 5],锁住 id=5
(5, 6],锁住 id=6

(9, 10],锁住 id=10

5. 死锁

死锁是指两个或多个事务在执行过程中因争夺资源而互相等待,导致程序无法继续执行下去的现象。在 InnoDB 中,死锁一旦被检测到,会自动回滚其中一个事务来解除死锁

1. 相反加锁顺序死锁

两个事务以不同顺序获取相同资源,互相等待对方释放。

示例:


-- 事务A
LOCK row 1;
LOCK row 2;-- 事务B
LOCK row 2;
LOCK row 1;  -- 等待A释放,造成死锁

2. 锁冲突死锁

一个事务未能及时释放锁,另一个事务等待同一资源,导致互相阻塞。常见于高并发写操作 + 高隔离级别(如可重复读)

解决建议

  1. 降低隔离级别至 Read Committed,避免不必要的间隙锁。
  2. 减小锁粒度,避免大范围更新或范围查询

3. 查看死锁

SHOW ENGINE INNODB STATUS;  -- 查看死锁信息SELECT * FROM information_schema.INNODB_LOCKS;-- 查看当前锁信息
SELECT * FROM information_schema.INNODB_LOCK_WAITS;

3. 如何避免死锁

方法说明
统一加锁顺序所有事务访问资源时使用一致的顺序加锁,避免环形等待
控制事务粒度与范围缩小每个事务锁定的数据范围和执行时间
减少范围查询减少 BETWEEN / < / > 查询,避免间隙锁干扰
合理设置索引避免全表扫描导致不必要的行锁或表锁
设置死锁重试机制(代码层)捕获错误码 1213,程序自动重试一次事务操作
适当降低隔离级别如使用 Read Committed 替代 Repeatable Read

相关文章:

4.2.3 MYSQL事务原理分析

文章目录 4.2.3 MYSQL事务原理分析1. 事务1. 前提&#xff1a;并发连接访问2. 事务定义3. 事务语句&#xff1a;4. acid特性5. undolog-回滚日志6. redolog-重做日志 2. 隔离级别1. 四种隔离级别2. 并发问题解释3. 隔离级别设置 3. MVCC(Multiversion Concurrency Control&…...

极狐GitLab 如何使用文件导出迁移项目和群组?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 用文件导出迁移项目和群组 (FREE ALL) 推荐使用 直接传输 迁移群组和项目。然而&#xff0c;在某些情况下&#xff0c;您可能…...

Linux/AndroidOS中进程间的通信线程间的同步 - 管道和FIFO

前言 管道是 UNIX 系统上最古老的 IPC 方法&#xff0c;它在 20 世纪 70 年代早期 UNIX 的第三个版本上就出现了。管道为一个常见需求提供了一个优雅的解决方案&#xff1a;给定两个运行不同程序的进程&#xff0c;在 shell 中如何让一个进程的输出作为另一个进程的输入呢&…...

第十六届蓝桥杯 2025 C/C++组 破解信息

目录 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; 思路&#xff1a; 思路详解&#xff1a; 代码&#xff1a; 代码详解&#xff1a; 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; P12344 [蓝桥杯 2025 省 B/Python B 第二场] 破解信息…...

[FPGA Video IP] VDMA

Xilinx AXI Video Direct Memory Access IP (PG020) 详细介绍 概述 Xilinx AXI Video Direct Memory Access (AXI VDMA) LogiCORE™ IP 核&#xff08;PG020&#xff09;是一个软核 IP&#xff0c;专为视频应用设计&#xff0c;提供在内存与 AXI4-Stream 视频外设之间的高带宽…...

Ubuntu如何查看硬盘的使用情况,以及挂载情况。

在Ubuntu中查看硬盘使用情况及挂载情况&#xff0c;可通过以下命令实现&#xff1a; 一、查看硬盘使用情况 df -h 显示所有挂载文件系统的磁盘空间使用情况&#xff08;含总容量、已用空间、可用空间等&#xff09;&#xff0c;输出结果以易读格式&#xff08;如GB、MB&#x…...

第十六届蓝桥杯 2025 C/C++组 脉冲强度之和

目录 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; 思路&#xff1a; 思路详解&#xff1a; 代码&#xff1a; 代码详解&#xff1a; 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; P12338 [蓝桥杯 2025 省 B/Python B 第二场] 脉冲强度…...

23种设计模式-行为型模式之中介者模式(Java版本)

Java 中介者模式&#xff08;Mediator Pattern&#xff09;详解 &#x1f9e0; 什么是中介者模式&#xff1f; 中介者模式是一种行为型设计模式&#xff0c;它通过定义一个中介者对象来封装一组对象之间的交互。中介者使得各个对象不需要显式地知道彼此之间的关系&#xff0c…...

集群与存储-lvs-nat实验

一、实验目的 1、熟练掌握ipvsadm 指令的使用 2、理解lvs 负载均衡的原理 3. 熟练掌握lvs-netnfs的配置 二、实验内容 1.拓扑图 2.实验步骤 #在节点服务器中添加网卡&#xff0c;选择仅主机模式 #查看网卡 #启用网卡 nmcli device up ens224 ip a #修改虚拟地址的网关 #…...

Android——Serializable和Parcelable

在Android中传递对象的方式 在 Android 开发中&#xff0c;Parcelable 和 Serializable 是两种用于对象序列化的接口 Serializable public class Student implements Serializable {public int id;public String name;public int age;public Student(int id, String name, i…...

python:sklearn 决策树(Decision Tree)

5. 决策树&#xff08;Decision Tree&#xff09; - 第5章 算法思想&#xff1a;基于信息增益&#xff08;ID3&#xff09;或基尼不纯度&#xff08;CART&#xff09;递归划分特征。 编写 test_dtree_1.py 如下 # -*- coding: utf-8 -*- """ 5. 决策树&…...

0-1背包难题哪家强:回溯法 VS 动态规划 VS 贪心算法

回溯法、动态规划和贪心算法是三种常见的算法设计思想&#xff0c;他们都可以用来解决0-1背包问题&#xff0c;但它们在解决问题的思路、适用条件和效率上存在显著差异。以下从多个维度进行对比分析&#xff1a; 相关系列文章链接: 《贪心算法 vs 动态规划&#xff1a;“急性子…...

JavaSE第12篇:接口interface

一、使用步骤 1.引入库 代码如下&#xff08;示例&#xff09;&#xff1a; import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarnings(ignore) import ssl ssl._create_default_https_con…...

一文掌握 npm 基础与常用指令

初学前端&#xff1f;npm 常用指令不熟&#xff1f;想了解 pnpm、yarn、cnpm 有什么不同&#xff1f; 这篇文章将带你从入门到精通&#xff0c;全面掌握 npm 的使用方法&#xff0c;以及选择适合自己项目的包管理工具&#xff01; 文章目录 一、什么是 npm&#xff1f;二、npm …...

OpenObserve API Usage Guide for Log Management

OpenObserve API Usage Guide for Audit Log Management 1. 概述 1.1 目标 本文档旨在详细介绍 OpenObserve 的 API 使用方法&#xff0c;帮助用户通过 API 实现日志管理功能&#xff0c;包括日志摄入、查询、模糊匹配&#xff08;类似 SQL 的 LIKE&#xff09;、stream 管理…...

机器学习实操 第一部分 机器学习基础 第5章 支持向量机(SVM)

机器学习实操 第一部分 机器学习基础 第5章 支持向量机&#xff08;SVM&#xff09; 内容概要 第5章深入介绍了支持向量机&#xff08;SVM&#xff09;&#xff0c;这是一种功能强大且应用广泛的机器学习模型。SVM适用于线性或非线性分类、回归以及 novelty detection。本章详…...

CSRF(cross-site request forgery)跨域请求访问

CSRF 当我们在成功登录一个网站后&#xff0c;会将后端返回的cookie数据进行存放&#xff0c;每一次访问该域名都会将cookie存放在请求头&#xff0c;也就相当于用户登录凭证&#xff0c; 但这种同域自动携带cookie存在一种问题 那就是当恶意网站也进去请求时&#xff0c;同样…...

Kafka的Rebalance机制可能引发什么问题?如何优化?怎么减少不必要的Rebalance

Rebalance机制的核心目的是确保每个消费者都能处理适当数量的分区&#xff0c;以实现负载均衡和高可用性。 一般是消费者组发生变化的时候&#xff0c;比如订阅主题&#xff0c;消费者数量等等发生变化&#xff0c;可能会导致rebalance&#xff0c;rebalance会导致消费者组短时…...

【和春笋一起学C++】函数——C++的编程模块

目录 1. 原型句法 2. 函数分类 3. 函数参数之按值传递 4. 数组作为函数参数 在C中&#xff0c;要使用函数&#xff0c;必须要有这三个方面&#xff1a; 函数原型&#xff0c;函数原型描述了函数到编译器的接口&#xff0c;函数原型一般放在include文件中。函数原型告诉编译…...

Java高频面试之并发编程-11

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天又来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;父子线程如何共享数据&#xff1f; 在Java中&#xff0c;父子线程共享数据可以通过以下几种方式实现&#xff0c;具体…...

LangChain入门(四) 部署应用程序

1、使用LangServe部署应用程序 安装langserve pip install langserve[all] 代码示例 from fastapi import FastAPI from langchain.chat_models import init_chat_model from langchain_core.messages import SystemMessage, HumanMessage from langchain_core.output_parser…...

精益数据分析(31/126):电商关键指标深度解析与实战策略

精益数据分析&#xff08;31/126&#xff09;&#xff1a;电商关键指标深度解析与实战策略 在创业和数据分析的探索之路上&#xff0c;每一次深入学习都像是解锁了新的技能&#xff0c;让我们离成功更近一步。今天&#xff0c;我依旧带着和大家共同进步的想法&#xff0c;深入…...

【MongoDB篇】MongoDB的集合操作!

目录 引言第一节&#xff1a;集合的“诞生”——自动出现还是手动打造&#xff1f;&#x1f914;第二节&#xff1a;集合的“查阅”——看看这个数据库里有哪些柜子&#xff1f;&#x1f4c2;&#x1f440;第三节&#xff1a;集合的“重命名”——给文件柜换个名字&#xff01;…...

antd中的表格穿梭框(Transfer)如何使用

穿梭框是什么?怎么使用? 需求如下: 有一组端口需要分配给具体接口 功能要求: 1. 需要展示当前端口名称及其所属的接口 2. 需支持搜索功能可对端口名或接口名进行筛选便于分配 3. 分配端口时,需检测当前接口内的端口是否满足此接口最低要求 4. 提供Select下拉框,可供查…...

联邦学习与安全多方计算的结合是隐私保护机器学习领域

联邦学习(Federated Learning, FL)与安全多方计算(Secure Multi-Party Computation, MPC)的结合是隐私保护机器学习领域的前沿方向,其框架设计需兼顾计算效率、安全性和可扩展性。以下是结合两者的框架设计与实现流程的详细解析: 一、框架设计核心目标 隐私保护:确保多…...

mongoose的介绍,连接数据库

Mongoose 是一个基于 Node.js 的 MongoDB ODM&#xff08;Object Data Modeling&#xff09;库&#xff0c;用于在 MongoDB 和 Node.js 应用之间提供结构化的模型层&#xff0c;帮助你更优雅、安全地操作数据库。 &#x1f9fe; 一、Mongoose 简介 &#x1f4e6; 功能&#xff…...

Pytest中的fixture装饰器详解

pytest是Python生态中最流行的自动化测试框架&#xff0c;它通过简洁的语法、强大的功能(如fixture、参数化、插件扩展等)和丰富的插件生态&#xff0c;帮助开发者高效完成单元测试、集成测试和端到端测试。fixture是pytest框架中最核心、最强大的功能之一&#xff0c;它提供了…...

Linux系统配置JDK

目录 一、xftp传输JDK包 1、新建xftp会话并连接到我们的服务器 2、上传jdk包 二、配置环境变量 为了方便javaweb项目的建立&#xff0c;我们需要在搭建好的linux环境下配置安装JDK环境 一、xftp传输JDK包 因为jdk包文件比较大了&#xff0c;这时候不能使用简单的linux上传…...

通义千问最新一代大语言模型Qwen3发布了

通义千问Qwen3全面解析&#xff1a;最强开源大模型Ollama本地运行实战 &#x1f525; 最新重大好消息&#xff01; 经过漫长的等待&#xff0c;今天凌晨阿里云正式发布了Qwen3大语言模型&#xff01;本次更新带来了0.6b 1.7b 4b 8b 14b 30b 32b 235b超大参数模型&#xff0c;更…...

想做博闻强记的自己

2025年4月29日&#xff0c;13~25℃&#xff0c;还好 待办&#xff1a; 冶金《物理》期末测试 阅卷&#xff08;冶金《物理》期末测试试卷&#xff09; 重修《物理》《物理2》电子材料归档 规则变更&#xff0c;《高等数学2》期末试卷推倒重来 遇见&#xff1a;直播画面。 感受…...

爱普生SG2520HHN晶振数据中心服务器的理想解决方案

在当今数字化时代&#xff0c;数据中心作为海量数据存储、处理与传输的核心枢纽&#xff0c;其服务器的高效稳定运行至关重要。服务器作为其核心设备&#xff0c;对时钟信号的精度和稳定性提出了严苛要求——微小的时序误差可能导致数据传输失败或系统宕机。爱普生 SG2520HHN 差…...

【Prometheus-MySQL Exporter安装配置指南,开机自启】

目录 1. 创建 MySQL 监控用户2. 配置 MySQL 认证文件3. 安装 mysqld_exporter4. 配置 Systemd 服务5. 启动并验证服务6. 修改Prometheus配置常见错误排查错误现象排查步骤 6. 验证监控数据关键注意事项 1. 创建 MySQL 监控用户 mysql -uroot -p123456 # 登录MySQL-- 1. 创建监…...

Linux 服务管理两种方式service和systemctl

Linux 服务管理两种方式service和systemctl 确定当前系统使用的哪种命令用来启动服务 SysV init 或者 systemd 使用下面的命令&#xff1a; ps -p 1例如&#xff0c;输出&#xff1a; PID TTY TIME CMD1 ? 00:00:02 systemdSysV init service命令用于对系统…...

P1494 [国家集训队] 小 Z 的袜子 Solution

Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1​,a2​,⋯,an​)&#xff0c;有 q q q 次查询&#xff0c;每次查询给定 ( l , r ) (l,r) (l,r). 你需要求出 2 ∑ i ≤ i < j ≤ r [ a i a j ] ( r − l ) ( r − l 1 ) \dfrac{2\sum…...

(开源)视频画面增强模型:Ev-DeblurVSR (可以解决视频画面不清晰的问题)

在计算机视觉领域&#xff0c;模糊视频超分辨率&#xff08;BVSR&#xff09;是一个复杂且具有挑战性的任务&#xff0c;目标是从低分辨率&#xff08;LR&#xff09;和模糊的输入生成高分辨率&#xff08;HR&#xff09;视频。传统方法常常因缺乏足够运动信息和高频细节而表现…...

探索豆包WEB/PC超能创意1.0:创意新利器的全面解析

在当今数字化创意蓬勃发展的时代&#xff0c;新工具不断涌现&#xff0c;为创作者们带来了更多的可能性。豆包WEB/PC超能创意1.0便是其中一款备受瞩目的产品&#xff0c;它的出现为创意工作者和爱好者们打开了一扇充满无限可能的大门。 一、体验信息&#xff1a;探索创意新领域…...

五、UI自动化测试05--PyTest框架

目录 一、PyTest 框架2. 特点2. 安装步骤3. 基本使⽤3.1 测试函数形式3.2 执⾏⽅式3.3 测试类形式3.4 执⾏⽅式3.5 另⼀种执⾏⽅式: 主函数执⾏3.6 特殊⽅法: 函数级别3.7 特殊⽅法: 类级别3.8 特殊⽅法: 函数级别和类级别同时使⽤ 4. pytest 配置⽂件4.1 选项字段获取4.2 编写…...

51LA使用方法与悟空统计,网站数据分析的双重选择

在网站运营与数据分析领域&#xff0c;51LA作为国内较早的流量统计工具&#xff0c;曾为许多用户提供基础的访问数据监测服务。然而&#xff0c;随着技术的发展和用户需求的升级&#xff0c;越来越多的企业开始寻求功能更全面、体验更优的统计工具。小编今天将给大家介绍一款更…...

MongoDB的下载安装与启动

MongoDB的下载安装与启动&#xff0c; 一、MongoDB下载安装 1. 官网下载 打开官网&#xff1a;https://www.mongodb.com/try/download/community选择&#xff1a; 版本&#xff08;Version&#xff09;&#xff1a;选最新版或者根据需要选旧版。平台&#xff08;OS&#xff0…...

解决ktransformers v0.3 docker镜像中 operator torchvision::nms does not exist 问题

问题背景 更新ktransformers docker镜像到v0.3版本后&#xff08;之前为v0.2.4post1&#xff09;&#xff0c;使用更新前启动命令无法正确启动服务&#xff0c;提示以下错误&#xff1a; Traceback (most recent call last):File "/workspace/ktransformers/ktransforme…...

MySQL事务隔离级别的实现原理MVCC

一、什么是MVCC? MVCC(Multi-Version Concurrency Control)&#xff0c;即多版本并发控制&#xff0c;是并发读写场景下&#xff0c;数据库层面提供的一种解决方案。 数据库的并发场景有以下三种&#xff1a; 读读 当多个事务同时进行读取操作时&#xff0c;它们之间不存在…...

EtherCAT 分布式时钟(DC)补偿技术解析

一、技术定义 EtherCAT 分布式时钟(Distributed Clock, DC)是一种基于硬件的高精度同步机制,旨在解决工业自动化系统中多设备协同控制的时间同步问题。其核心功能包括: 初始偏移补偿:消除从站本地时钟与主站系统时间的初始偏差,确保所有设备在启动阶段的时间基准一致。…...

7.进程概念(三)

一、进程优先级 是什么&#xff1f; 进程得到CPU资源的先后顺序。 为什么要有进程优先级&#xff1f; 目标资源稀缺&#xff0c;导致要通过优先级确定谁先谁后。 如何比较和分配&#xff1f; 进程优先级也是一种数字&#xff0c;int&#xff0c;task_struct 值越低&#xff0c;…...

MATLAB小试牛刀系列(2)

问题描述 捷运公司在下一年度 1 - 4 月的 4 个月内拟租用仓库堆放物资。已知各月所需仓库面积列于表 1.1。仓库租借费用随合同期而定&#xff0c;期限越长&#xff0c;折扣越大&#xff0c;具体数字见表 1.1。租借合同每月初都可办理&#xff0c;每份合同具体规定租用面积和期…...

一个SciPy图像处理案例的全过程

本文利用SciPy进行图像处理&#xff0c;并记录图像处理的全过程&#xff0c;处理过程包含高斯模糊、腐蚀等操作。 代码 import matplotlib.pyplot as plt import numpy as np from scipy import ndimage# 设置图像的大小为 128x128&#xff0c;即 128x128 的逻辑像素 l 128 …...

修改输入框选择框颜色

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 有时候需要改写element原来输入框/选择框的颜色 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 输入框的话需要hover时边框颜色修改&#xff0c;选择值的时候边框颜色修改以及选…...

rust 全栈应用框架dioxus

逛github时发现了一个号称全栈应用框架dioxus,适用于web / desktop / mobile。零配置、集成了热启动和基于信号的状态管理。是由rust编写的&#xff0c;所以也就不受平台限制。 既然说的这么好&#xff0c;那就来试试构建一下三种平台的应用&#xff0c;构建的应用编译成web 、…...

电子电器框架 --- 数据连接性和云集成在增强电气/电子架构方面的作用

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

Nvidia 可能会发布具有增强内存配置的 RTX 5080 和 5070 Super

距离英伟达正式发布RTX 50系列显卡仅过去数月&#xff0c;有关"Super"系列升级版显卡的传闻已甚嚣尘上。据硬件爆料平台Chiphell论坛&#xff08;该消息源可靠性参差不齐&#xff09;用户透露&#xff0c;英伟达可能正在研发配备24GB显存的RTX 5080 Super和16GB显存的…...

预留库存的实现

1. 实体类 import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data;import java.sql.Timestamp;Data TableName("products") public class Product {private Long id;private String name;private int stock; }Data TableName("shopping_c…...