【MySQL数据库】事务
目录
1,事务的详细介绍
2,事务的属性
3,事务常见的操作方式
1,事务的详细介绍
在MySQL数据库中,事务是指一组SQL语句作为一个指令去执行相应的操作,这些操作要么全部成功提交,对数据库产生影响;要么全部失败回滚(撤销当前事务所做的更改),不对数据库产生任何影响。事务确保了数据库的一致性和完整性,即保证了不同的客户端看到的数据是不相同的,以下是事务的通俗说明:
事务就是要做的或所做的事情,主要用于处理操作量大,复杂度高的数据。假设一种场景:你毕业了,学校的教务系统后台 MySQL 中,不在需要你的数据,要删除你的所有信息,那么要删除你的基本信息(姓名,电话,籍贯等)的同时,也删除和你有关的其他信息,比如:你的各科成绩等。这样,就需要多条 MySQL 语句构成,那么所有这些操作合起来,就构成了一个事务。
为什么要有事务呢?事务本质是为了当应用程序访问数据库的时候,事务能够简化我们的编程模型,不需要我们去考虑各种各样的潜在错误和并发问题。事务不仅保证了数据的一致性和完整性,还提高了系统的可靠性。通过正确地使用事务,可以有效地管理和维护数据库的状态。总的来说,事务是数据库管理系统中不可或缺的一部分。
注意:在 MySQL 中,只有使用了 Innodb 存储引擎的数据库或表才支持事务。
2,事务的属性
一个 MySQL 数据库上,可不止一个事务在运行,同一时刻,甚至有大量的请求被包装成事务,在向 MySQL 服务器发起事务处理请求。而每条事务至少一条 SQL,甚至有更多个 SQL,如果大家都访问同样的表数据,在不加保护的情况,就绝对会出现问题。因为事务由多条 SQL 构成,所以这里就会出现很多问题,比如 SQL 执行到一半出错或中途停止往后执行的情况。因此,一个完整的事务,绝对不是简单的 sql 集合,还拥有四个属性:
- 原子性:事务是一个不可分割的工作单位,要么全部完成,要么全部不完成,不会在中间某个环节结束。若事务在执行过程中发生错误,它就会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。
- 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、关联性,以及后续数据库可以自发性地完成事先预定的工作。
- 隔离性:一个事务所做的修改在最终提交以前,对其它事务是不可见的。数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
- 持久性:事务处理结束后,其所做的修改就会永久保存在数据库中。
事务的四个属性可以简称为 ACID。
3,事务常见的操作方式
1,事务的提交方式
事务的提交方式常见的有两种:自动提交和手动提交。
自动提交意味着每执行完一条语句,MySQL 会自动将更改指令提交到数据库,使更改永久化。自动提交方式下,这里的每个单独 SQL 语句都被视为一个独立的事务,在执行后会立即被提交到数据库。
手动提交意味着,在你执行一系列的 SQL 语句之后,需要手动执行指令(commit指令)来提交事务,使所有更改生效。具体的流程后面运用时会说明。
查看事务的提交方式:show variables like 'autocommit';
上面图中,ON表示自动提交,OFF表示手动提交。默认情况下是自动提交(ON)。
修改事务的提交方式,用 set 指令:set autocommit=0;
说明:0表示禁止自动提交,1表示开启自动提交
注意:上面操作选择手动提交和自动提交时,仅是对当前会话的操作,其它终端启动时仍是MySQL 默认的情况。
2,事务的隔离
事务的隔离是指事务的隔离性,它确保了不同的事务在并发执行时不会互相干扰。事务的隔离并不是将所有的数据都隔离,因为不同的事务之间可能存在联系,因此,在数据库中,允许事务受不同程度的干扰,就有了一种重要特征:隔离级别。
MySQL支持四种标准的事务隔离级别:
读未提交:这是最低的隔离级别,在这个级别上,事务可以读取未被其他事务提交的数据,这可能会出现脏读,即一个事务能够看到另一个事务尚未提交的更改,导致事务读取到的数据是一个临时数据或错误数据。(实际生产中不可能使用这种隔离级别的,它相当于没有提供事务间的隔离)
读提交:事务只能读取已经被其他事务提交的数据,也就是说事务没有提交之前,其它正在运行的事务都是看不到的。这种隔离级别会引起不可重复读,也就是同一个事务在不同时间点读取同一行数据可能会得到不同的结果,例如:事务A提交了数据,那么事务B就会看到已经被事务A修改过的数据,原本的数据已经被修改了。
可重复读:这是 MySQL 默认的隔离级别。在这个级别上,一个事务在执行中,多次读取操作数据时,会看到同样的数据行,即使其他事务对数据进行了修改并提交。这意味着在一个事务开始后,它将不会看到其他事务所做的任何更改,从而避免了不可重复读的问题。不过,在此隔离级别下,仍然可能存在幻读问题,即在同一事务中两次查询可能得到不同的行集合,通常是因为其他事务插入了记录(其他事务的插入操作,可重复读无法屏蔽其操作)。例如:事务A提交了数据,事务B看到的数据仍然是最开始的数据,即便事务A修改了此数据,除非结束事务B。
串行化:这是事务的最高隔离级别,它通过强制事务排序,使之不可能相互冲突, 从而解决了幻读的问题。具体操作是,它在每个读取操作上都会加上共享锁,导致事务按顺序执行,这会极大地降低性能,并发度最低,因为可能会导致超时和锁竞争。(这种隔离级别太极端,实际生产基本不使用)
3,设置事务的隔离级别
四种隔离级别:READ UNCOMMITTED(读未提交)、READ COMMITTED(读已提交)、REPEATABLE READ(可重复读)、SERIALIZABLE(可串行化)。默认情况下,MySQL数据库对应的是REPEATABLE READ(可重复读)
查看当前会话的事务隔离级别(只影响当前连接):
select @@transaction_isolation;
查看全局的事务隔离级别(整个MySQL服务器采用的事务隔离级别,也是所有新连接的默认设置):
select @@global.transaction_isolation;
设置当前会话的事务隔离级别
set session transaction isolation level [隔离的四种级别];
设置全局的事务隔离级别
set global transaction isolation level [隔离的四种级别];
4,事务的操作流程
MySQL运用事务时,具体的详细流程是:
1,根据需求,选择事务的隔离级别,MySQL默认是REPEATABLE READ(可重复读)。
2,查看事务的提交方式,根据需求进行设置。默认情况下的提交方式是自动提交,一条单独的 SQL 语句就是一个独立的事务,直接 SQL 指令操作即可,如同平常的一般操作。如果你希望执行一系列操作作为一个整体(也就是一个事务),然后进行提交,那么就需要使用手动提交。下面的操作流程都是按照手动提交的方式进行的,自动提交没有任何流程。
3,开启一个事务。需注意,使用指令开启一个新事务时,这隐含地使用手动提交方式,即set autocommit=0;(关闭自动提交),但不会改变全局或会话变量的实际值,也就是说使用 show variables like 'autocommit'; 查看到的提交方式仍没有变化。
(除非你显式设置)。
开启一个事务:start transaction; 或 begin; 此时的提交方式是手动提交
4,设置保存点。保存点可根据需求自由选择设置。在复杂的事务中,可能需要部分回滚。MySQL允许你在事务中设置保存点,然后选择性地回滚到某个保存点。至于保存点的释放也是可选择的,因为 MySQL 在事务结束后会自动释放未释放的保存点。
设置保存点:savepoint [保存点名称];
释放保存点:release savepoint [保存点名称];
例如:
创建一个保存点save1:savepoint save1;
释放保存点save1:release savepoint save1;
5,执行事务中的 SQL 操作。这里就开始进行 SQL 操作了。
注意:4和5通常是一体的,即每次操作时,先设置保存点,然后指定 SQL 操作。
6,回滚事务。回滚操作也是自由选择的操作。该操作是为了防止事务在处理过程中所发生的错误。回滚操作分为两类:1,回滚到事务开始的最初状态,即撤销事务中的所有操作。2,选择性地回滚到某个保存点,即回滚到某一个保存点所保存的指令。
回滚到最初状态:rollback;
回滚到保存点:rollback to [保存点名称];
例如:rollback to save2; 回滚到保存点save2
7,提交事务。当你完成了事务中的所有操作,就可以提交对事务所做的操作了,即手动提交,结束事务。这时,事务中的所有更改都会被保存到数据库中。
提交事务:commit
下面来以具体的样例说明:
创建一个 test 表:create table test(id int primary key,name varchar(50));
查看提交方式:show variables like 'autocommit';
开始一个事务:begin;
创建一个保存点save1:savepoint save1;
插入一条记录:insert into test values (1, '李白');
创建一个保存点save2:savepoint save2;
插入一条记录:insert into test values (2, '杜甫');
查看操作:select * from test; 数据已经存在,但没有commit,此时只是在该终端下查看
回滚到保存点save2:rollback to save2;
再次查看:select * from test; 此时没有(2,'杜甫')的记录,因为发生了回滚
回滚在最开始:rollback; 此时再次查看发现一条记录也没有了
注意:事务的操作过程中,当操作异常时,MySQL会自动回滚。
事务的隔离底层往往是运用相应的锁来控制。隔离级别越严格,安全性就越高,但数据库的并发性能也就越低,实际情况中往往需要在两者之间找一个平衡点。
如果系统运行发生中断,使某个事务尚未完成而被迫中断,这时,使用 InnoDB 存储引擎的MySQL 数据库能够通过其内置的日志和恢复机制来维护数据的一致性和完整性。对于未提交的事务,它会被回滚。
总结一下,不可重复读的重点是修改和删除,即同样的条件,读取过的数据再次读取出来时,发现值不一样了。幻读的重点在于新增行,即同样的条件,第1次和第2次读出来的记录数不一样。MySQL 默认的隔离级别是可重复读,一般情况下不要修改。
相关文章:
【MySQL数据库】事务
目录 1,事务的详细介绍 2,事务的属性 3,事务常见的操作方式 1,事务的详细介绍 在MySQL数据库中,事务是指一组SQL语句作为一个指令去执行相应的操作,这些操作要么全部成功提交,对数据库产生影…...
《Python实战进阶》No45:性能分析工具 cProfile 与 line_profiler
Python实战进阶 No45:性能分析工具 cProfile 与 line_profiler 摘要 在AI模型开发中,代码性能直接影响训练效率和资源消耗。本节通过cProfile和line_profiler工具,实战演示如何定位Python代码中的性能瓶颈,并结合NumPy向量化操作…...
intellij idea最新版git开启Local Changes
习惯了在idea的git插件里,查看项目已修改的文件,但是新版idea默认不展示了,用起来很难受。 参考网上教程开启方法如下: 1. 确保安装Git Modal Commit Interface插件并开启该插件 2. 在Advanced Settings开启Use Modal Commit In…...
C++ RAII 编程范式详解
C RAII 编程范式详解 一、RAII 核心概念 RAII(Resource Acquisition Is Initialization,资源获取即初始化) 是 C 的核心编程范式,通过将资源生命周期与对象生命周期绑定实现安全、自动化的资源管理。 核心原则: 资源…...
什么是美颜SDK?美颜SDK安卓与iOS端开发指南
在视频拍摄场景,一个出色的美颜SDK,正在悄然支撑起整个视觉体验体系。那么,什么是美颜SDK?它的底层原理、应用场景、核心功能有哪些?安卓与iOS平台又该如何开发与集成美颜SDK?本文将为你详细解析࿰…...
为什么沟通是设计传递和验证的关键
设计转移和验证流程是研发(R&D)规划与项目执行之间的关键桥梁。这一阶段确保设计能够准确转化为生产,将代价高昂的延误降至最低,并保证产品质量。最近,我有幸与乔希・古德曼(Josh Goodman)进…...
计算机考研精炼 操作系统
第 14 章 操作系统概述 14.1 基本概念 14.1.1 操作系统的基本概念 如图 14 - 1 所示,操作系统是计算机系统中的一个重要组成部分,它位于计算机硬件和用户程序(用户)之间,负责管理计算机的硬件资源,为用户和…...
多商户电商系统整套源码开源,支持二次开发,构建多店铺高效联动运营方案
在数字化浪潮席卷全球的今天,电商行业竞争愈发激烈,多商户电商平台凭借其独特的生态优势,成为众多企业和创业者的热门选择。一套优质的多商户电商系统不仅能为商家提供稳定的销售渠道,还能为平台运营者创造巨大的商业价值。分享一…...
MS31860T——8 通道串行接口低边驱动器
MS31860T 是一款 8 通道低边驱动器,包含 SPI 串口通信、 PWM斩波器配置、过流保护、短路保护、欠压锁定和过热关断功能, 芯片可以读取每个通道的状态。MS31860T 可以诊断开路的负载情况,并可以读取故障信息。外部故障引脚指示芯片的故障状态。…...
解决GoLand无法Debug的问题
文章目录 解决GoLand无法Debug的问题问题描述解决方案方法一:安装并替换Delve调试工具方法二:通过GoLand自动安装方法三:配置自定义Delve路径 验证解决方案常见问题排查总结 解决GoLand无法Debug的问题 问题描述 在使用GoLand进行Go语言开发…...
centos升级glibc
描述 参考的文章 基于CentOS更新 glibc - 解决 GLIBC_2.29‘ not found_glibc2.29-CSDN博客 执行步骤 # 下载资源 wget https://ftp.gnu.org/gnu/libc/glibc-2.34.tar.gztar xvf glibc-2.34.tar.gz 服务器上可以能会出现下载较慢的情况,可以再自己的电脑上下载&…...
【Unity】如何解决UI中的Button无法绑定带参数方法的问题
问题描述: 1.直接为Button绑定一个带参数方法,报错了。 解决办法: 将该方法通过另一个方法进行封装即可。...
回收铼树脂RCX-5143
Tulsimer RCX-5143 是一种专为回收铼(Re)设计的大孔弱碱阴离子交换树脂,其核心功能是从酸性浸出液中选择性吸附高铼酸根,并通过高效洗脱实现铼的富集与纯化。以下从技术参数、工艺应用、经济性及行业案例等维度展开分析࿱…...
蓝桥杯赛后总结
首先需要声明一下,编程小白博主参加的是第十六届蓝桥杯大赛(软件赛)C/C组。 个人感受而言,第十六届蓝桥杯软件赛C/C组是比较有难度的,特别是填空题,一共两道题,小白的我是一道填空题也不会做&a…...
PCB设计工艺规范(三)走线要求
走线要求 1.走线要求2.固定孔、安装孔、过孔要求3.基准点要求4.丝印要求 1.走线要求 印制板距板边距离:V-CUT 边大于 0.75mm,铣槽边大于0.3mm。为了保证 PCB 加工时不出现露铜的缺陷,要求所有的走线及铜箔距离板边:V-CUT边大于 0.75mm,铣槽边…...
第十节:文本编辑
理论知识 文本编辑器的基本概念:文本编辑器是用于创建和编辑文本文件的工具。在 Linux 系统中,常见的文本编辑器有 vi、vim、nano 等。vi 和 vim 编辑器:vi 是一款经典的文本编辑器,vim 是 vi 的增强版,提供了更多的功…...
【Hive入门】Hive性能优化:执行计划分析EXPLAIN命令的使用
目录 1 EXPLAIN命令简介 1.1 什么是EXPLAIN命令? 1.2 EXPLAIN命令的语法 2 解读执行计划中的MapReduce阶段 2.1 执行计划的结构 2.2 Hive查询执行流程 2.3 MapReduce阶段的详细解读 3 识别性能瓶颈 3.1 数据倾斜 3.2 Shuffle开销 3.3 性能瓶颈识别与优化 4 总结 在大…...
Spring AI应用系列——基于ARK实现多模态模型应用
ARK 在这里指的是阿里云推出的 AIGC 研发平台 ARK,是阿里云面向开发者和企业用户打造的一站式 AIGC(AI Generated Content,人工智能生成内容)开发平台。 1. 引言 本文将深入探讨 ARK Multi-Model 的实现原理、架构设计以及关键参…...
从边缘到云端:边缘计算与云计算的协同未来
在数字化转型的浪潮中,云计算和边缘计算作为两种重要的计算范式,正在深刻改变着我们的生活和工作方式。云计算以其强大的计算能力和数据存储能力,已经成为企业数字化转型的核心支撑;而边缘计算则凭借其低延迟和高效率的特点&#…...
基于策略模式实现灵活可扩展的短信服务架构
基于策略模式实现灵活可扩展的短信服务架构 引言 在企业级应用开发中,短信服务是不可或缺的基础功能之一。随着业务发展,我们可能需要接入多个短信服务提供商(如阿里云、腾讯云、第三方短信网关等),并能够在不修改核…...
安全指南 | MCP安全检查清单:AI工具生态系统的隐形守护者
随着大型语言模型(LLM)技术的迅猛发展,MCP(Model Context Protocol)已经成为连接AI模型与外部工具、数据源的关键桥梁。它为AI应用(如Claude Desktop、Cursor等)提供了更高效的集成体验…...
ChipCN IDE KF32 导入工程后,无法编译的问题
使用ChipON IDE for KungFu32 导入已有的工程是时,发现能够编译,但是点击,同时选择硬件调试时 没有任何响应。查看工程调试配置时,发现如下问题: 没有看到添加有启动配置,说明就是这里的问题了(应该是IDE的…...
Win下的Kafka安装配置
一、准备工作(可以不做,毕竟最新版kafka也不需要zk) 1、Windows下安装Zookeeper (1)官网下载Zookeeper 官网下载地址 (2)解压Zookeeper安装包到指定目录C:\DevelopApp\zookeeper\apache-zoo…...
Vue2 vs Vue2.7 深度对比
Vue2 vs Vue2.7 深度对比 前言 作为 Vue 生态中承前启后的重要版本,Vue2.7 在保留 Vue2 核心特性的同时,引入了 Vue3 的诸多创新设计。本文将深入解析二者差异,通过架构对比、代码实战和性能基准测试,为企业技术选型提供决策依据…...
WPF使用高性能图表
WPF高性能图表实现方案 一、WPF图表技术选型对比 技术方案优点缺点适用场景WPF原生控件无需第三方依赖,完全可控开发成本高,性能有限简单图表需求OxyPlot轻量级,跨平台,开源功能相对基础中小型应用LiveCharts现代API,支持动画复杂场景性能一般中…...
当算力遇上贫困补助:能否让补助精准到户?
目录 一、让"贫困画像"从模糊到高清 二、破解扶贫"三大世界难题" 三、算力扶贫路上的三座大山 算力应该温暖谁? 以往扶贫的画面是“扶贫干部背着米面油翻山越岭”,当算力发展到一定程度,会呈现出一种新的画面:农民伯伯用手机扫描…...
基于连接感知的实时困倦分类图神经网络
疲劳驾驶是导致交通事故的主要原因之一。脑电图(EEG)是一种直接从大脑活动中检测睡意的方法,已广泛用于实时检测驾驶员的睡意。最近的研究表明,使用基于脑电图数据构建的大脑连接图来预测困倦状态的巨大潜力。然而,传统的脑连接网络与下游预测…...
Set系列之HashSet源码分析:原理剖析与实战对比
引言:哈希集合的基石 1.1 集合框架的核心地位 数据存储的三大特性:唯一性、无序性、快速访问HashSet的市场占有率:Java集合框架中使用率TOP3(占日常开发场景的45%) 1.2 为什么需要深入理解HashSet? 隐藏…...
vscode vim插件操作查缺补漏
一.多光标编辑 在 VSCode 中使用 Vim 插件 (VSCodeVim) 实现多光标选择和同时编辑的常用方法: 1. 逐个添加匹配项 (推荐) 快捷键: CtrlD (Win/Linux) / CmdD (Mac)操作: 将光标放在想选中的单词上。重复按此快捷键,会依次选中下…...
Python 爬取微店商品列表接口(item_search)的实战指南
在电商数据分析、市场调研或竞品分析中,获取商品列表信息是常见的需求。微店作为知名的电商平台,提供了丰富的商品资源和相应的 API 接口。本文将详细介绍如何使用 Python 爬虫技术,通过微店的 item_search 接口根据关键词搜索商品列表&#…...
游戏性能测试
1. 分阶段,看目的,确定高中低三档测试机,最低档机的确定需要和客户端主程和制作人等共同确定 确定三档机的方式: 1. 要上线地区的top100,根据用户占比,划分出三档 2. 根据用研部门提供的数据,确…...
Webug4.0通关笔记06- 第8关CSV注入
目录 CSV注入漏洞 1.CSV漏洞简介 2.漏洞原理 (1)公式执行 (2)DDE机制 (3)OS命令执行 3.漏洞防御 第08关 CSV注入 1.打开靶场 2.修改源码 3.注入命令 4.导出excel表 5.打开excel表 CSV注入漏洞…...
最新DeepSeek-Prover-V2-671B模型 简介、下载、体验、微调、数据集:专为数学定理自动证明设计的超大垂直领域语言模型(在线体验地址)
DeepSeek-Prover-V2-671B模型 简介、下载、体验、微调、数据集:专为数学定理自动证明设计的超大垂直领域语言模型(在线体验地址) 体验地址:[Hugging Face 在线体验]https://huggingface.co/playground?modelIddeepseek-ai/DeepS…...
iView Admin的side menu改为top menu
和iView Admin结缘于某次在“顾问群”里问,“有什么开源前端框架推荐吗?”。群里一位老开发答,“试试iView Admin”。于是我就试了试,发现很好用,对新手也很友好,试过撸一个管理后台的前端用了4天ÿ…...
2025上海车展 | 移远通信推出自研NG-eCall QuecOpen方案,助力汽车安全新标准加速落地
4月29日,在2025上海国际汽车工业展览会期间,全球领先的物联网和车联网整体解决方案供应商移远通信宣布,正式发布自主研发的NG-eCall(下一代紧急呼叫系统)QuecOpen解决方案。 该方案凭借高度集成的软硬件协同设计&…...
使用gitea发布软件包
1、新建hello工程 (1)HelloApplication.java package cn.ac.trimps.sv;import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplicati…...
如何加速机器学习模型训练:深入探讨与实用技巧
在机器学习和深度学习的应用中,训练模型通常需要耗费大量时间。随着数据集的增大、模型复杂度的提升以及任务的多样化,训练速度变得越来越重要。无论是在学术研究中,还是在工业应用中,加速训练过程不仅能提高工作效率,…...
HBuider中Uniapp去除顶部导航栏-小程序、H5、APP适用
文件pages.json中改"globalStyle" "globalStyle": {"navigationBarTextStyle": "black","navigationBarBackgroundColor": "#F8F8F8","backgroundColor": "#F8F8F8","titleNView"…...
scGPT-spatial:持续预训练scGPT用于空间转录组
空间转录组学已成为一种关键技术,可在细胞的空间环境中对其基因表达进行分析。公开可用的空间数据的迅速增长,为我们进一步理解驱动细胞命运决定和疾病进展的微环境提供了契机。然而,现有的基础模型大多是在scRNA-seq数据上进行预训练的&…...
ERP管理系统对企业财务管理有什么重要意义
在知识经济浪潮的推动下,企业的核心资产正经历着从传统厂房设备向知识产权的历史性跨越。专利技术、品牌价值、人才储备等无形资产逐渐成为驱动企业发展的核心引擎,但这类资产的非实体性与价值波动性,却让传统财务管理工具陷入"看得见摸…...
【数据库原理及安全实验】实验五 数据库备份与恢复
指导书原文 数据库的备份与恢复SSMS 【实验目的】 1) 熟悉并掌握利用界面操作进行数据库备份和恢复的原理和操作。 【实验原理】 1) 数据库的恢复包括大容量日志恢复模式和简单恢复模式。其中大容量日志恢复模式,简单地说就是要对大容量操作进行最小日志记录&a…...
【人脸去遮挡前沿】三阶段级联引导学习如何突破真实场景遮挡难题?
一、现实痛点:当人脸被遮挡,AI “认脸” 有多难? 你是否遇到过这样的场景? 中考体育测试:2025 年天津泰达街中考考场要求考生 “脸部无遮挡” 才能通过人脸识别入场,戴口罩、帽子的学生需现场调整发型。智能门锁:奇景光电在 CES 2025 推出的 WiseEye 掌静脉模块,通过掌…...
Kettle下载安装教程
## 什么是Kettle Kettle(现在也称为Pentaho Data Integration,简称PDI)是一款开源的ETL(Extract-Transform-Load)工具,用于数据抽取、转换和加载。它允许用户通过图形化界面设计和执行数据集成流程…...
树的序列化 - 学习笔记
树的序列化可以有很多种类:可以变成 dfs 序,可以变成欧拉序,还有什么括号序的科技。 但是除了第一个以外其他的都没什么用(要么也可以被已有的算法给替代掉)。所以表面上是讲树的序列化,实际上还是讲的 df…...
数电发票整理:免费实用工具如何高效解析 XML 发票数据
如今数字电子发票越来越普及,但是数电发票的整理还是颇有讲究~ 今天给大家介绍一个 XML 发票阅读器。使用它完全不收取任何费用,且无广告干扰,对财务人员而言十分实用。 01 软件介绍 这款软件就是XML格式(数电票)阅读…...
ubuntu22.04 qemu arm64 环境搭建
目录 创建 安装 Qemu 启动 # 进入qemu虚拟机后执行 qemu编译器安装 创建 qemu-img create ubuntu22.04_arm64.img 40G 安装 qemu-system-aarch64 -m 4096 -cpu cortex-a57 -smp 4 -M virt -bios QEMU_EFI.fd -nographic -drive ifnone,fileubuntu-22.04.5-live-server-a…...
数据转储(go)
随着时间推移,数据库中的数据量不断累积,可能导致查询性能下降、存储压力增加等问题。数据转储作为一种有效的数据管理策略,能够将历史数据从生产数据库中转移到其他存储介质,从而减轻数据库负担,提高系统性能&…...
LeetCode167_两数之和 Ⅱ - 输入有序数组
LeetCode167_两数之和 Ⅱ - 输入有序数组 标签:#数组 #双指针 #二分查找Ⅰ. 题目Ⅱ. 示例 0. 个人方法官方题解一:二分查找官方题解二:双指针 标签:#数组 #双指针 #二分查找 Ⅰ. 题目 给你一个下标从 1 开始的整数数组 numbers …...
【AI平台】n8n入门5:创建MCP服务,及vscode调用MCP测试
前言 用n8n搭建一个MCP服务,然后用开发环境的MCP测试工具,测试调用一下。例子简单,只为了解原理。在开发环境,安装测试mcp服务的工具,vscode和Trae操作类似,而且在一个机器上的话,安装的插件公…...
第六部分:实战项目与拓展
欢迎来到 OpenCV 教程的第六部分!你已经走过了从像素操作到特征提取、再到基础目标检测的旅程。现在,我们将迎接更激动人心的挑战:将这些技术结合起来,构建更贴近实际应用的系统。 本部分将带领你从更高层面思考如何设计一个计算…...