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

[MySQL]事务的理论、属性与常见操作

目录

一、事物的理论

1.什么是事务 

2.事务的属性(ACID)

3.再谈事务的本质

4.为什么要有事务

二、事务的操作

1.事务的支持版本

2.事务的提交模式

介绍

自动提交模式

手动提交模式

3.事务的操作

4.事务的操作演示

验证事务的回滚

事务异常的自动回滚 


一、事物的理论

        场景:一个火车售票系统,从甲地到乙地的票总共有100张,卖到最后的时候,客户端A查看到还有一张票,讲票买了回来,但是还没有执行数据库更新操作的时候,客户端B读取了数据库中票的个数数据,发现也还有一张票,那么就也卖走了,那么客户端A和客户端B买的其实是同一张票,那么就会出问题了。

        场景:在转账的时候,客户端A转了1000元之后,成功扣款了,并更新了客户端A的余额数目,但是没等到客户端B的数据库表更新余额增加1000元,服务器出了一点点小问题,那么就没有执行增加1000元的操作,但是客户端A却少1000元,这样就也是非常不合理的。 

        我们允许特殊情况的发生,但是在特殊情况发生的时候,应该有一套完整的解决方案来解决问题,尤其是数据库在实际开发中都是处于高并发访问的环境下,那么上述的场景就更应该保证不会出问题了。

1.什么是事务 

        事务的本质就是一组DML语句构成的。这些语句在业务逻辑上存在一定的相关性。例如上述的转账操作,有修改A的数据库表,修改B的数据库表等操作,这些操作存在一定的相关性共同构成了一个业务逻辑,这些SQL语句组合起来称为一个事务。所以对于事务,不应该站在MySQL角度,应该站在使用者的角度去看待,使用者想要完成一个业务操作,对应需要使用的一条或者多条SQL语句就是构成了一个事务。

        对于事务的执行操作,如果执行要么就是全部成功,要么就全部失败,事务中的多条DML语句是一个整体。MySQL提高一种机制,保证我们可以达到这种效果。这样的话,上述转账转到一半失败的场景,那么就会将A的值减少1000的操作也视为失败,就不会在操作数据库减少了。

2.事务的属性(ACID)

        在实际应用场景中,同一时间会有大量的业务包装成事务,向MySQL服务器发送事务的请求处理,而每个事务又包含了一个或多个SQL语句,那么这些大量的SQL语句如果访问的是同一张表的话,不加保护就一定会出问题,和多线程的线程安全问题类似。还有就是我们在执行事务的时候,执行到一般不想执行了,该怎么办,对于已经执行过的操作该如何处理呢?

  • 原子性:一个事务中的所有操作,要么全部完成,要么全部不执行,不会结束在中间的某个患者,事务在执行过程中出错,或者不想继续执行的时候,会被回滚到事务开始前的一个状态,所以说之前执行完的操作就会失效了。
  • 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的数据必须完全复合所有的预设规则。
  • 隔离性:数据库允许多个并发的事务同时对数据进行读写和修改的操作,隔离性可以防止多个事务在并发执行的时候,由于交叉执行而导致的数据不一致,事务的隔离又分为了多个级别,分为未提交、都提交、可重复读和串行化。
  • 持久性:事务处理结束之后,对数据的修改是永久性的,即使系统故障也不会丢失,因为已经持久化存放到磁盘当中了。

        对于原子性和持久性比较好理解,那么一致性是什么意思呢?就是事务在执行操作之前,就可以预期到执行的操作以及执行后的结果了,并且执行的时候完全按照预期的操作执行。这样可以预期的操作,就大大降低了出现问题的概率。对于一致性,MySQL是没有做任务的操作和约束策略的,而是通过原子性、持久性和隔离性去实现了事务的一致性,也就是说满足了事务的其他三个属性也就满足了事务的一致性。所以说一致性单纯靠MySQL是无法实现了,还需要用户的配合。

3.再谈事务的本质

        事务的本质就是:在ACID属性的加持下的一条或多条DML语句的集合。从底层来看的话,数据库的使用者会使用特殊SQL语句指明事务的开始,在MySQL内部其实就相当于是创建了一个事务对象,使用者在事务内部输入的SQL语句,都会放到事务对象的内部,然后事务对象会放到数据库的事务运行队列当中。这样就把统一时间的大量事务进行了管理。

4.为什么要有事务

        事务被设计出来是为了应用层服务的,而不是数据库天然就有的,当我们在执行一些业务操作的时候,只有两种情况,我们不需要考虑中间某一部出错该如何处理,要么就都执行,要么就都不执行,方便了程序员的操作。数据库本身设计出来就是为了方便程序员对于数据的管理的,如果让并发访问的安全问题以及操作的错误问题交给程序员来判断和解决的话,那么数据库设计出来的意义就大大降低了,会提高程序员的编程难度。

二、事务的操作

1.事务的支持版本

show engines;

        市面上有很多数据库都支持事务的操作,MySQL也是其中之一,但是是否支持事务是按照存储引擎来划分的,例如Innodb存储引擎就支持事务,而MyISAM存储引擎就不支持事务的操作,可以使用show engines查看数据库支持的存储引擎,其中的Transactions字段就表示是否支持事务。

2.事务的提交模式

介绍

show variables like 'autocommit'             //查看数据库的事务提交方式

set autocommit = 1/0;                              //设置数据库的事务提交方式,1为自动提交

        事务提交分为手动提交和自动提交,可以使用show variables like 'autocommit'进行查看属性字段,如果是ON的话就代表的是自动提交。

        提交模式主要是控制事务的提交行为,他决定了数据库操作是立即提交还是在显示的输入提交语句命令之后再去提交,这里的提交也就是将SQL语句修改的数据库内容,持久化的写入到内存当中,再提交之前都是在数据库内存缓冲区当中进行操作的。

自动提交模式

        在自动提交模式下,每一条SQL语句都会被数据库认为是一个单独的事务,并且在语句执行完成后自动提交,不用我们显示的去输入提交命令了。但是这种只适用于简单的SQL语句,一旦涉及到一些复杂的业务逻辑的话,一条SQL语句作为的事务是无法去完成完整的业务的。

手动提交模式

        在该模式下,需要显示的使用BEGIN或者START TRANSACTION开启一个事务,并进行操作各种SQL操作,但是这些操作都是在内存中的,最后需要手动的使用commit语句才可以完成事务的提交。如果我们设置的是自动提交的话,在我们开启事务的时候,不会受影响,都需要我们手动进行提交操作。

3.事务的操作

启动事务

语句:start transaction; / begin;

        对于功能上的区别不大,都是用来开启一个事务的,但是begin属于SQL标准中的一个关键字,用于开启一个事务,他在大多数支持书屋的数据库系统中都可以使用,有很好的兼容性。而前者则属于是MySQL独有的语法,但是他可以在开启事务的同时,为事务设置一些特性内容,提高了更灵活的事务控制。 

 创建保存点

语句:savepoint xxxx;

回滚操作

语句:rollback [xx];     

        可以设置回滚到哪一个保存点,如果不设置的话,会回滚到最初。但是前提是该事务没有被提交,如果提交了之后就无法进行事务的回滚操作了。 

提交操作

语句:commit;

        事务的操作是原子性的,而commit操作就是证明该操作完整的执行了,那么所有对数据库的操作内容才会被永久的存放到磁盘当中。在没有提交之前所有的操作都是在MySQL的内存缓冲区当中进行的。

        如果说在事务执行到一半的时候,不管什么原因,客户端退出了,没有执行提交操作,基于事务的原子性,那么MySQL会自动回滚到事务的最开始,也就相当于该事务什么都没有操作。可以使用ctrl + \模拟异常终止MySQL数据库。

4.事务的操作演示

前提操作:

//创建数据库表
mysql> create table account (-> id int primary key,-> name varchar(20) default '',-> blance decimal(10, 2) default 0.0-> )engine=innodb charset=utf8;
Query OK, 0 rows affected, 1 warning (0.05 sec)//设置隔离级别为读未提交--以后解释
mysql> set global transaction isolation level READ UNCOMMITtED;
Query OK, 0 rows affected (0.00 sec)//查看是否设置成功
mysql> select @@transaction_isolation;
+-------------------------+
| @@transaction_isolation |
+-------------------------+
| REPEATABLE-READ         |
+-------------------------+
1 row in set (0.00 sec)//重启系统
mysql> quit;
验证事务的回滚
//开启事务
mysql> begin;
Query OK, 0 rows affected (0.00 sec)//设置保存点1
mysql> savepoint save1;
Query OK, 0 rows affected (0.00 sec)//插入数据1
mysql> insert into account values(1, '张三', 100);
Query OK, 1 row affected (0.00 sec)//设置保存点2
mysql> savepoint save2;
Query OK, 0 rows affected (0.00 sec)//插入数据2
mysql> insert into account values(2, '李四', 200);
Query OK, 1 row affected (0.00 sec)//查看此时的表内容
mysql> select * from account;
+----+--------+--------+
| id | name   | blance |
+----+--------+--------+
|  1 | 张三   | 100.00 |
|  2 | 李四   | 200.00 |
+----+--------+--------+
2 rows in set (0.00 sec)//回滚到保存点2
mysql> rollback to save2;
Query OK, 0 rows affected (0.02 sec)//查看数据,发现在保存点2后插入的数据在表中查看不到了
mysql> select * from account;
+----+--------+--------+
| id | name   | blance |
+----+--------+--------+
|  1 | 张三   | 100.00 |
+----+--------+--------+
1 row in set (0.00 sec)//回滚到事务的最开始
mysql> rollback;
Query OK, 0 rows affected (0.01 sec)//查看数据发现表中的所有数据都不见了
mysql> select * from account;
Empty set (0.00 sec)
事务异常的自动回滚 
//客户端A-------------------------------------------------------------
//开启事务
mysql> begin;
Query OK, 0 rows affected (0.00 sec)//插入两条数据
mysql> insert into account values (1, '张山', 100);
Query OK, 1 row affected (0.00 sec)mysql> insert into account values (2, '李四', 100);
Query OK, 1 row affected (0.00 sec)//异常终止客户端A
mysql> Aborted//客户端B-------------------------------------------------------------
//客户端A终止前查看表
mysql> select * from account;
+----+--------+--------+
| id | name   | blance |
+----+--------+--------+
|  1 | 张山   | 100.00 |
|  2 | 李四   | 100.00 |
+----+--------+--------+
2 rows in set (0.00 sec)//终止后查看表
mysql> select * from account;
Empty set (0.00 sec)

相关文章:

[MySQL]事务的理论、属性与常见操作

目录 一、事物的理论 1.什么是事务 2.事务的属性(ACID) 3.再谈事务的本质 4.为什么要有事务 二、事务的操作 1.事务的支持版本 2.事务的提交模式 介绍 自动提交模式 手动提交模式 3.事务的操作 4.事务的操作演示 验证事务的回滚 事务异常…...

JWT实现单点登录

文章目录 JWT实现单点登录JWT 简介存在问题及解决方案登录流程后端程序实现前端保存Tokenstore存放信息的缺点及解决 校验流程:为gateway增加登录校验拦截器 另一种单点登录方法:Token+Redis实现单点登录 JWT实现单点登录 登录流程&#xff…...

docker 学习笔记

一、docker容器快速上手以及简单操作 docker的image和container image镜像 docker image就是一个read.only文件,可以理解成一个模版,docker image具有分层的概念 可以自己制作,也可以从registry拉去 container容器 一个运行中的docker …...

Lesson 119 A true story

Lesson 119 A true story 词汇 story n. 故事,传记,小说,楼层storey 搭配:tell a story 讲故事,说谎    true story 真实的故事    the second floor 二楼 例句:我猜他正在说谎。    I guess he…...

c语言版贪吃蛇(Pro Max版)附源代码

1 背景 贪吃蛇是一款经典的电子游戏,最早出现在20世纪70年代的街机游戏中。游戏的核心玩法是玩家控制一条蛇在有限的空间内移动,通过吃食物来增长身体长度,同时避免撞到墙壁、障碍物或自身。随着蛇的长度增加,游戏难度逐渐提升。 …...

蓝桥村打花结的花纸选择问题

在这篇文章中,我们将探讨一个有趣的算法问题,这个问题涉及到中国传统手工艺——打花结。我们需要判断给定的矩形花纸是否可以通过折叠操作使其面积变为特定的值 X,从而适合用来打花结。 问题描述 解题思路 这个问题可以通过循环方法来解决。…...

SSM开发(三) spring与mybatis整合(含完整运行demo源码)

目录 本文主要内容 一、Spring整合MyBatis的三个关键点 二、整合步骤 1、创建一个Maven项目 2、在pom.xml文件中添加jar包的依赖 3、配置MyBatis 注解实现方式 XML配置文件实现 4、配置Spring 5、测试运行 本文主要内容 1. Spring + Mybatis整合; 2. MyBatis两种SQL…...

【Matlab高端绘图SCI绘图模板】第006期 对比绘柱状图 (只需替换数据)

1. 简介 柱状图作为科研论文中常用的实验结果对比图,本文采用了3组实验对比的效果展示图,代码已调试好,只需替换数据即可生成相关柱状图,为科研加分。通过获得Nature配色的柱状图,让你的论文看起来档次更高&#xff0…...

Elasticsearch中的度量聚合:深度解析与实战应用

在大数据和实时分析日益重要的今天,Elasticsearch以其强大的搜索和聚合能力,成为了众多企业和开发者进行数据分析和处理的首选工具。本文将深入探讨Elasticsearch中的度量聚合(Metric Aggregations),展示其如何在数据分…...

重回C语言之老兵重装上阵(十六)C语言可变参数

C语言可变参数 在C语言中,标准库提供了一些函数允许接收可变数量的参数。最典型的例子就是 printf 和 scanf,它们能够处理不确定数量的参数。为了实现这一功能,C语言提供了可变参数函数的概念。 1. 可变参数函数的概念 可变参数函数是指函数…...

第4章 神经网络【1】——损失函数

4.1.从数据中学习 实际的神经网络中,参数的数量成千上万,因此,需要由数据自动决定权重参数的值。 4.1.1.数据驱动 数据是机器学习的核心。 我们的目标是要提取出特征量,特征量指的是从输入数据/图像中提取出的本质的数 …...

动态规划——斜率优化DP

题目清单 acwing300.任务安排1 状态表示f[i]: 集合:完成前i个任务且第i个任务为最后一个批次最后一个任务的方案。 属性:min 状态计算: f [ i ] m i n { f [ j ] s u m t [ i ] ∑ j 1 i w [ u ] s ∑ j 1 n w [ i ] } f[i]min\{f[j…...

函数栈帧的创建和销毁

1、总述: 大家在前期学习函数的时候,肯定会有诸多疑惑: 1、局部变量怎么创建的? 2、为什么有时候局部变量是随机值? 3、函数是怎么传参的?传参的顺序如何? 4、形参和实参是什么样的关系&am…...

【MQ】探索 Kafka

高性能 消息的顺序性、顺序写磁盘 零拷贝 RocketMQ内部主要是使用基于mmap实现的零拷贝,用来读写文件 减少cpu的拷贝次数和上下文切换次数,实现文件的高效读写操作 Kafka 零拷贝 Kafka 使用到了 mmap 和 sendfile 的方式来实现零拷贝。分别对应 Jav…...

c++ set/multiset 容器

1. set 基本概念 简介: 所有元素都会在插入时自动排序本质: set/multiset属于关联式容器,底层结构是用二叉树实现。set 和 multiset 区别: set容器不允许有重复的元素。 multiset允许有重复的元素。2. set 构造和赋值 构造&a…...

react-bn-面试

1.主要内容 工作台待办 实现思路: 1,待办list由后端返回,固定需要的字段有id(查详细)、type(本条待办的类型),还可能需要时间,状态等 2,一个集中处理待办中转路由页,所有待办都跳转到这个页面…...

【C++数论】880. 索引处的解码字符串|2010

本文涉及知识点 数论:质数、最大公约数、菲蜀定理 LeetCode880. 索引处的解码字符串 给定一个编码字符串 s 。请你找出 解码字符串 并将其写入磁带。解码时,从编码字符串中 每次读取一个字符 ,并采取以下步骤: 如果所读的字符是…...

shiro学习五:使用springboot整合shiro。在前面学习四的基础上,增加shiro的缓存机制,源码讲解:认证缓存、授权缓存。

文章目录 前言1. 直接上代码最后在讲解1.1 新增的pom依赖1.2 RedisCache.java1.3 RedisCacheManager.java1.4 jwt的三个类1.5 ShiroConfig.java新增Bean 2. 源码讲解。2.1 shiro 缓存的代码流程。2.2 缓存流程2.2.1 认证和授权简述2.2.2 AuthenticatingRealm.getAuthentication…...

Python案例--养兔子

兔子繁殖问题是一个经典的数学问题,最早由意大利数学家斐波那契在13世纪提出。这个问题不仅在数学领域具有重要意义,还广泛应用于计算机科学、生物学和经济学等领域。本文将通过一个具体的Python程序,深入探讨兔子繁殖问题的建模和实现&#…...

【搜索回溯算法】:BFS的魔力--如何使用广度优先搜索找到最短路径

✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:搜索回溯算法篇–CSDN博客 文章目录 一.广度优先搜索(BFS)解决最短路…...

JavaSE第十一天——集合框架Collection

一、List接口 List接口是一个有序的集合,允许元素有重复,它继承了Collection接口,提供了许多额外的功能,比如基于索引的插入、删除和访问元素等。 常见的List接口的实现类有ArrayList、LinkedList和Vector。 List接口的实现类 …...

Three城市引擎地图插件Geo-3d

一、简介 基于Three开发,为Three 3D场景提供GIS能力和城市底座渲染能力。支持Web墨卡托、WGS84、GCJ02等坐标系,支持坐标转换,支持影像、地形、geojson建筑、道路,植被等渲染。支持自定义主题。 二、效果 三、代码 //插件初始化…...

深度学习|表示学习|卷积神经网络|详细推导每一层的维度变化|14

如是我闻: 一个经典的卷积神经网络(CNN)架构,呈现的是输入图像通过多个卷积层、池化层以及全连接层,最终输出分类结果的过程。整个过程的核心是理解输入特征图的尺寸如何在每一层发生变化,我们可以通过卷积…...

多级缓存(亿级并发解决方案)

多级缓存(亿级流量(并发)的缓存方案) 传统缓存的问题 传统缓存是请求到达tomcat后,先查询redis,如果未命中则查询数据库,问题如下: (1)请求要经过tomcat处…...

BOM对象location与数组操作结合——查询串提取案例

BOM对象location与数组操作结合——查询串提取案例 前置知识 1. Location 对象 Location 对象是 JavaScript 提供的内置对象之一,它表示当前窗口或框架的 URL,并允许你通过它操作或获取 URL 的信息。可以通过 window.location 访问。 主要属性&#…...

读书笔记--分布式服务架构对比及优势

本篇是在上一篇的基础上,主要对共享服务平台建设所依赖的分布式服务架构进行学习,主要记录和思考如下,供大家学习参考。随着企业各业务数字化转型工作的推进,之前在传统的单一系统(或单体应用)模式中&#…...

GOGOGO 枚举

含义:一种类似于类的一种结构 作用:是Java提供的一个数据类型,可以设置值是固定的 【当某一个数据类型受自身限制的时候,使用枚举】 语法格式: public enum 枚举名{…… }有哪些成员? A、对象 public …...

【Linux】Linux基础开发工具

1 Linux 软件包管理器 yum 1.1软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的…...

嵌入式C语言:结构体的多态性之结构体中的void*万能指针

目录 一、void*指针在结构体中的应用 二、实现方式 2.1. 定义通用结构体 2.2. 定义具体结构体 2.3. 初始化和使用 三、应用场景 3.1. 内存管理函数 3.2. 泛型数据结构(链表) 3.3. 回调函数和函数指针 3.4. 跨语言调用或API接口(模拟…...

重构进行时:一秒告别 !=null 判空

重构进行时:一秒告别 !null 判空 空指针异常(NullPointerException)是Java开发中常见的错误之一。 许多开发者在遇到空指针问题时,往往会习惯性地使用! null来进行判断。 然而,当代码中频繁出现这种判断时&#xff…...

React 中hooks之useSyncExternalStore使用总结

1. 基本概念 useSyncExternalStore 是 React 18 引入的一个 Hook,用于订阅外部数据源,确保在并发渲染下数据的一致性。它主要用于: 订阅浏览器 API(如 window.width)订阅第三方状态管理库订阅任何外部数据源 1.1 基…...

Semaphore 与 线程池 Executor 有什么区别?

前言:笔者在看Semaphone时 突然脑子宕机,啥啥分不清 Semaphore 和 Executor 的作用,故再次记录。 一、什么是Semaphore? Semaphore 是 Java 并发编程(JUC)中一个重要的同步工具,它的作用是 控…...

Rust:高性能与安全并行的编程语言

引言 在现代编程世界里,开发者面临的最大挑战之一就是如何平衡性能与安全性。在许多情况下,C/C这样的系统级编程语言虽然性能强大,但其内存管理的复杂性导致了各种安全漏洞。为了解决这些问题,Rust 作为一种新的系统级编程语言进入…...

论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(六)(完结)

Understanding Diffusion Models: A Unified Perspective(六)(完结) 文章概括指导(Guidance)分类器指导无分类器引导(Classifier-Free Guidance) 总结 文章概括 引用: …...

Redis --- 分布式锁的使用

我们在上篇博客高并发处理 --- 超卖问题一人一单解决方案讲述了两种锁解决业务的使用方法,但是这样不能让锁跨JVM也就是跨进程去使用,只能适用在单体项目中如下图: 为了解决这种场景,我们就需要用一个锁监视器对全部集群进行监视…...

电脑怎么格式化?格式化详细步骤

格式化是我们在日常使用电脑时可能会用到的一种操作,无论是清理磁盘空间、安装新系统,还是解决磁盘读写错误,都可能需要格式化。不过,对于一些不熟悉电脑操作的用户来说,格式化听起来可能有些复杂。其实,只…...

TikTok广告投放优化策略:提升ROI的核心技巧

在短许多品牌和商家纷纷投入广告营销,争夺这片潜力巨大的市场。然而,在激烈的竞争环境中,如何精准有效地投放广告,优化广告效果,实现更高的投资回报率(ROI)成为了广告主关注的核心。 一. 精准受…...

视觉语言模型 (VLMs):跨模态智能的探索

文章目录 一. VLMs 的重要性与挑战:连接视觉与语言的桥梁 🌉二. VLMs 的核心训练范式:四种主流策略 🗺️1. 对比训练 (Contrastive Training):拉近正例,推远负例 ⚖️2. 掩码方法 (Masking):重构…...

第05章 08 绘制脑部体绘制图的阈值等值面

绘制脑部体绘制图的阈值等值面,例如肌肉和头骨骼,需要对医学图像数据进行阈值处理,并使用体绘制技术来可视化这些结构。以下是一个基于VTK/C的示例代码,展示如何读取DICOM图像数据,应用阈值过滤器来提取特定组织&#…...

类和对象(4)——多态:方法重写与动态绑定、向上转型和向下转型、多态的实现条件

目录 1. 向上转型和向下转型 1.1 向上转型 1.2 向下转型 1.3 instanceof关键字 2. 重写(overidde) 2.1 方法重写的规则 2.1.1 基础规则 2.1.2 深层规则 2.2 三种不能重写的方法 final修饰 private修饰 static修饰 3. 动态绑定 3.1 动态绑…...

动态规划<九>两个数组的dp

目录 引例 LeetCode经典OJ题 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 6.第六题 7.第七题 引例 OJ传送门LeetCode<1143>最长公共子序列 画图分析&#xff1a; 使用动态规划解决 1.状态表示 ------经验题目要求 经验为选取第一个字符串的[0,i]区间以及第二个字…...

Go:基于Go实现一个压测工具

文章目录 写在前面整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理 客户端模块Http客户端处理Grpc客户端处理Websocket客户端处理 连接处理模块GrpcHttp 统计数据模块统计原理实现过程 写在前面 本篇主要是基于Go来实现一个压测的工具&#xff0c;关于压测的内…...

2025年数学建模美赛 A题分析(2)楼梯使用频率数学模型

2025年数学建模美赛 A题分析&#xff08;1&#xff09;Testing Time: The Constant Wear On Stairs 2025年数学建模美赛 A题分析&#xff08;2&#xff09;楼梯磨损分析模型 2025年数学建模美赛 A题分析&#xff08;3&#xff09;楼梯使用方向偏好模型 2025年数学建模美赛 A题分…...

在Ubuntu上用Llama Factory命令行微调Qwen2.5的简单过程

半年多之前写过一个教程&#xff1a;在Windows上用Llama Factory微调Llama 3的基本操作_llama-factory windows-CSDN博客 如果用命令行做的话&#xff0c;前面的步骤可以参考上面这个博客。安装好环境后&#xff0c; 用自我认知数据集微调Lora模块&#xff1a;data/identity.j…...

虹科分享 | 汽车NVH小课堂之听音辨故障

随着车主开始关注汽车抖动异响问题&#xff0c;如何根据故障现象快速诊断异响来源&#xff0c;成了汽修人的必修课。 一个比较常用的方法就是靠“听”——“听音辨故障”。那今天&#xff0c;虹科Pico也整理了几个不同类型的异响声音&#xff0c;一起来听听看你能答对几个吧 汽…...

RoboVLM——通用机器人策略的VLA设计哲学:如何选择骨干网络、如何构建VLA架构、何时添加跨本体数据

前言 本博客内解读不少VLA模型了&#xff0c;包括π0等&#xff0c;且如此文的开头所说 前两天又重点看了下openvla&#xff0c;和cogact&#xff0c;发现 目前cogACT把openvla的动作预测换成了dit&#xff0c;在模型架构层面上&#xff0c;逼近了π0​那为了进一步逼近&#…...

【SpringBoot教程】Spring Boot + MySQL + HikariCP 连接池整合教程

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 在前面一篇文章中毛毛张介绍了SpringBoot中数据源与数据库连接池相关概念&#xff0c;今天毛毛张要分享的是关于SpringBoot整合HicariCP连接池相关知识点以及底层源码…...

0.91英寸OLED显示屏一种具有小尺寸、高分辨率、低功耗特性的显示器件

0.91英寸OLED显示屏是一种具有小尺寸、高分辨率、低功耗特性的显示器件。以下是对0.91英寸OLED显示屏的详细介绍&#xff1a; 一、基本参数 尺寸&#xff1a;0.91英寸分辨率&#xff1a;通常为128x32像素&#xff0c;意味着显示屏上有128列和32行的像素点&#xff0c;总共409…...

【insert函数】

在 C 中&#xff0c;std::string::insert 是一个功能强大的成员函数&#xff0c;用于在字符串的指定位置插入内容。它有多个重载版本&#xff0c;支持插入 字符、字符串、子字符串 等。以下是 insert 所有相关函数的详细介绍&#xff1a; 1. 插入字符串 函数签名&#xff1a; …...

Python 如何进行文本匹配:difflib| python 小知识

Python 如何进行文本匹配&#xff1a;difflib| python 小知识 difflib是Python标准库中的一个工具&#xff0c;用于比较和处理文本差异。它提供了一组用于比较和处理文本差异的功能&#xff0c;可以用于比较字符串、文件等。本文将详细介绍difflib模块的用法和实现细节&#x…...