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

MySQL TCL 事务控制

文章目录

  • 1.事务四大特性
  • 2.事务并发问题
  • 3.事务隔离级别
  • 4.隔离级别查看与设置
  • 5.动提交事务
    • 5.1 查看自动提交事务
    • 5.2 关闭或开启自动提交事务
  • 6.事务执行的基本流程
  • 7.设置事务的保存点
  • 参考文献

说到事务控制,先说一下数据库的事务是什么以及 MySQL 中我们必知的知识点。

1.事务四大特性

数据库事务(Database Transaction) ,是指对数据库的一系列操作组成的逻辑工作单元(Unit)。

并非任意的对数据库的操作序列都是数据库事务。数据库事务拥有以下四个特性,习惯上被称之为 ACID 特性。

(1)原子性(Atomicity)

事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。

(2)一致性(Consistency)

事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束,如主键约束、唯一约束和外键约束等。

(3)隔离性(Isolation)

多个事务并发执行时,一个事务的执行不应影响其他事务的执行。

(4)持久性(Durability)

已被提交的事务对数据库的修改应该永久保存在数据库中。

MySQL 中并非所有的数据库存储引擎都支持事务操作,比如 MyISAM 就不支持。所以,使用事务处理的时候一定要确定所操作的表示是否支持事务处理,可以通过查看建表语句来查看有没有指定事务类型的存储引擎。当然,事务处理是为了保障表数据原子性、一致性、隔离性、持久性。这些都是要消耗系统资源,要谨慎选择。

本文以数据库引擎 InnoDB 为例来演示命令行模式下事务的基本操作。

2.事务并发问题

在数据库操作中,为了有效保证并发读取数据的正确性,提出了事务隔离级别。

数据库是要被广大客户共享访问的,那么在数据库并发操作过程中很可能会出现一些不确定的情况。

(1)更新丢失(Update Lost)

更新结果别其他事务覆盖。

两个事务同时读取相同数据并分别修改后,一个事务的修改覆盖了另一个事务的修改。这是因为系统没有执行任何锁操作,因此并发事务没有被隔离开来。

第一类更新丢失(回滚丢失)。

比如 A 事务对某一列 +1,B 事务对某一列 +2。B 事务事务提交后,A 事务进行了回滚,导致 B 事务的更新丢失。

第二类更新丢失(逻辑丢失)。

比如 A 事务对某一列 +1,B 事务对某一列 +2,A B 事务执行完成后正常预期结果应该是某一列的值被 +3,但是 B 事务的结果覆盖了 A 事务,导致结果只被 +2,A 事务的更新丢失了。

(2)脏读(Dirty Read)

读取未提交数据。

A 事务读取 B 事务尚未提交的数据,此时如果 B 事务发生错误并执行回滚操作,那么 A 事务读取到的数据就是脏数据。

(3)不可重复读(Non-repeatable Read)

前后多次读取,数据内容不一致。

A 事务在 B 事务开始前读和 B 事务结束后读的数据不一样,因为数据被事务 B 给修改了。

(4)幻读(Phantom Read)

一个行出现在查询结果集中,但不在较早查询的结果集中。

事务 A 在读取某个范围内的记录时,事务 B 在该范围内插入了新记录,事务 A 再次读取该范围内的记录时,会产生幻行。

幻读比不可重复读取更难防范,因为锁定第一个查询结果集中的所有行并不能阻止导致幻像出现的更改。

为了解决上面的问题,于是有了事务隔离。

3.事务隔离级别

MySQL 提供了多个事务隔离级别,每个隔离级别都有不同的特点和能力,以解决并发访问数据库时可能出现的不同问题。

以下是 MySQL InnoDB 支持的四个 SQL:1992 标准定义的四个隔离级别及其解决的问题。

  1. 读未提交(Read Uncommitted)

不允许第一类更新丢失,允许脏读、不可重复读、幻读和第二类更新丢失。

最低的隔离级别,事务可以读取其他事务尚未提交的数据,虽然拥有超高的并发处理能力及很低的系统开销,但很少用于实际应用,因为可能导致数据不一致性。

  1. 读已提交(Read Committed):

不允许第一类更新丢失和脏读。允许不可重复读、第二类更新丢失和幻读。

事务只能读取已经提交的数据,避免了脏读问题,但可能导致不可重复读和幻读。

这是大多数数据库系统的默认隔离级别,但不是 MySQL 默认。

  1. 可重复读(Repeatable Read):

不允许第一类更新丢失、脏读、不可重复读和第二类更新丢失,允许幻读。

事务在整个事务期间保持一致的快照,其他事务的修改不会影响正在运行的事务,从而防止不可重复读问题。

这是 MySQL 默认的事务隔离级别。

  1. 串行化(Serializable):

解决所有事务并发问题。

最高的隔离级别,通过强制事务排序,使之不可能相互冲突,从而解决防止所有并发问题。

在这个级别,可以解决上面提到的所有并发问题,但可能导致大量的超时现象和锁竞争。最直观的体现就是,当数据库隔离级别设置为串行化后,A事务在未提交之前,B事务对A事务数据的操作都会被阻塞。通常数据库不会用这个隔离级别,我们需要其他的机制来解决这些问题:比如乐观锁和悲观锁机制。

下面表格总结了事务并发问题和四大隔离级别的关系。

隔离级别第一类更新丢失脏读不可重复读第二类更新丢失幻读
读未提交x
读未提交xx
读未提交xxxx
读未提交xxxxx

每个隔离级别都在一定程度上解决了并发访问可能导致的问题,但随着隔离级别提升,对并发性能的影响也越大,因为更高级别的隔离通常需要更多的锁和资源开销。因此,在选择隔离级别时,您需要根据应用的需求平衡一致性和性能,选择最适合您应用场景的隔离级别。

4.隔离级别查看与设置

(1)查看全局和当前会话的事务隔离级别。

# 查看全局
SELECT @@global.transaction_isolation; # 查看当前会话
SELECT @@transaction_isolation;
SELECT @@session.transaction_isolation; 
SHOW VARIABLES LIKE 'transaction_isolation';

从 MySQL 8.0 起,tx_isolation 变量被 transaction_isolation 变量替换了,所以请使用最新的变量 transaction_isolation。

(2)更改事务的隔离级别。

MySQL 提供了 SET TRANSACTION 语句,该语句可以改变单个会话或全局的事务隔离级别。

SET [GLOBAL | SESSION] TRANSACTIONtransaction_characteristic [, transaction_characteristic] ...transaction_characteristic: {ISOLATION LEVEL level| access_mode
}level: {REPEATABLE READ| READ COMMITTED| READ UNCOMMITTED| SERIALIZABLE
}access_mode: {READ WRITE| READ ONLY
}

不显示指明 SESSION 或 GLOBAL,默认是 SESSION,即设置当前会话的事务隔离级别。如果使用 GLOBAL 关键字,为之后的所有新连接设置事务隔离级别,需要 SUPER 权限来做这个。

比如更改当前会话事务隔离级别为读已提交。

SET TRANSACTION ISOLATION LEVEL READ COMMITTED;# 或省略 SESSION
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

也可以直接使用 SET 语句为变更系统变量 transaction_isolation 的值修改当前 session 的事务隔离级别。

SET transaction_isolation='READ-COMMITTED';

或者设置全局事务隔离级别为读已提交。

SET @@global.transaction_isolation='READ-COMMITTED';

5.动提交事务

5.1 查看自动提交事务

MySQL 默认事务操作模式是自动提交模式(autocommit )。

系统变量 @@autocommit 用来控制一条SQL语句提交后是否自动执行,默认值是1,表示在mysql命令行模式下每条增删改语句在键入回车后,都会立即生效,而不需要手动commit。我们可以把它关闭,关闭之后需要commit,SQL语句才会真正生效。

由于系统变量 autocommit 分会话系统变量与全局系统变量,所以查询的时候,最好区别是会话系统变量还是全局系统变量。

查看当前会话是否处于自动提交模式。

SELECT @@autocommit;
SELECT @@session.autocommit;
SHOW SESSION VARIABLES LIKE 'autocommit';

如果返回结果为 1 或 ON,则表示当前会话处于自动提交模式;如果返回结果为 0 或 OFF,则表示当前会话未处于自动提交模式。

如果想查看全局配置,可查看系统变量 @@global.autocommit。

SELECT @@global.autocommit;
SHOW GLOBAL VARIABLES LIKE 'autocommit';

5.2 关闭或开启自动提交事务

  1. 关闭自动提交事务。

MySQL默认自动提交事务,即除非显式的开启事务(BEGIN 或 START TRANSACTION),否则每条 SOL 语句都会被当做一个单独的事务自动执行。但有些情况下,我们需要关闭事务自动提交来保证数据的一致性。

关闭自动提交事务主要有两种方法。一种是临时关闭,只对当前会话有效。第二种是永久关闭,对所有会话有效。

第一种:临时关闭。

关闭当前会话的自动提交事务。

SET autocommit = 0;
SET @@autocommit = 0;
SET @@session.autocommit = 0;
SET SESSION autocommit = 0;

这样之后,所有增删改语句,都必须使用 commit 之后,才能生效。

第二种:永久关闭。

在 MySQL 中,要永久地关闭自动提交事务,必须在配置文件中进行设置,以便在每次启动 MySQL 服务器时都保持这个设置。

找到 MySQL 的配置文件。在大多数情况下,MySQL 的配置文件名为 my.cnf 或 my.ini,具体位置取决于您的操作系统和安装方式。

打开配置文件并找到 [mysqld] 部分,添加或修改下面的配置项。

[mysqld]
init_connect='SET autocommit=0'

保存,然后重新启动 MySQL 服务器即可生效。

  1. 开启自动提交事务。

如果需要,可以开启自动提交模式。

SET autocommit = 1;
SET @@autocommit = 1;
SET @@session.autocommit = 1;
SET SESSION autocommit = 1;

要想永久有效,需要将上面配置文件中的配置项init_connect='SET autocommit=0'删除或设置为 1 即可。

6.事务执行的基本流程

首先创建一个测试数据表,建表语句如下:

CREATE TABLE transaction_test(id int primary key)engine=InnoDB;
  1. 开启一个事务。
BEGIN;
# 或
START TRANSACTION;
  1. 执行一系列增删改语句。
INSERT INTO transaction_test VALUES(1);
  1. 手动提交或回滚。

事务回滚:

ROLLBACK;

回滚后我们查看数据表中的数据。

SELECT * FROM transaction_test;
Empty set (0.00 sec)

表中没有数据,回滚成功。

手动提交事务:

COMMIT;

提交后,再 ROLLBACK 则不能回滚了,数据已经插入到数据表了。这里需要注意的是,在当前会话中,我们还没有手动 COMMIT 提交事务的时候,表中的数据已经被插入了,但对于其它会话,如果事务隔离级别是 READ COMMITED,那么在 COMMIT 之前,查询不到新插入的记录。

7.设置事务的保存点

在 MySQL 中,您可以使用事务保存点(Savepoint)来标记事务中的一个特定位置,以便在事务进行过程中进行部分回滚。事务保存点可以在事务内部创建,并且可以用于回滚到该保存点之前的状态,而不影响事务中的其他操作。

  1. 设置折返点
SAVEPOINT identifier;
  1. 回滚至折返点
ROLLBACK [WORK] TO [SAVEPOINT] identifier

这将撤销从保存点创建后到当前位置之间的所有操作。

  1. 提交或继续事务。

如果您满意回滚后的状态,可以继续进行其他操作,并最终提交事务。

COMMIT; -- 提交事务

通过使用事务保存点,您可以更细粒度地控制事务的回滚操作,以适应复杂的业务需求。请注意,保存点只在当前事务内部有效,并且一旦事务提交或回滚,保存点将被清除。


参考文献

13.3 Transactional and Locking Statements
MySQL 8.0 Reference Manual :: MySQL Glossary
15.7.2.1 Transaction Isolation Levels - MySQL
13.3.7 SET TRANSACTION Statement
MySQL 8.0 Reference Manual :: 5.1.8 Server System Variables
脏读、不可重复读、幻读、两类丢失更新与四大隔离级别 - 51cto

相关文章:

MySQL TCL 事务控制

文章目录 1.事务四大特性2.事务并发问题3.事务隔离级别4.隔离级别查看与设置5.动提交事务5.1 查看自动提交事务5.2 关闭或开启自动提交事务 6.事务执行的基本流程7.设置事务的保存点参考文献 说到事务控制,先说一下数据库的事务是什么以及 MySQL 中我们必知的知识点…...

【Ubuntu】从Graylog到Grafana Loki:构建更强大的网络设备管理和监控系统

在将Graylog部署到生产环境时,我们遇到了一些问题,其中最主要的是无法安装MongoDB并且无法随时重启机器去修改BIOS设置来修复问题 【WARNING: MongoDB 5.0 requires a CPU with AVX support, and your current system does not appear to have that! 】。…...

[JavaWeb]【八】web后端开发-Mybatis

目录 一 介绍 二 Mybatis的入门 2.1 快速入门 2.1.1 准备SpringBoot工程 2.1.2 创建数据库mybatis以及对应库表user 2.1.3 创建User实体类 2.1.4 配置application.properties数据库连接信息 2.1.5 编写sql语句(注解方式) 2.1.6 测试运行 2.1.7 配…...

Flink源码之Checkpoint执行流程

Checkpoint完整流程如上图所示: JobMaster的CheckpointCoordinator向所有SourceTask发送RPC触发一次CheckPointSourceTask向下游广播CheckpointBarrierSouceTask完成状态快照后向JobMaster发送快照结果非SouceTask在Barrier对齐后完成状态快照向JobMaster发送快照结…...

【工具使用】Git的使用

dev代表开发版 1. git clone 命令 通过 git add <name> 对文件进行跟踪&#xff0c;把<name>加入到暂存区 git commit -m XXXXXXX 提交修改并补充XXXXX作为注释 “暂存”状态&#xff1a;出现了一些修改&#xff0c;但是还没有提交 对于Java来说&#xff0c;.cl…...

无涯教程-PHP Installation on Windows NT/2000/XP with IIS函数

在Windows Server上运行IIS的PHP的安装比在Unix上简单得多,因为它涉及的是预编译的二进制文件而不是源代码。 如果您打算在Windows上安装PHP,那么这是先决条件列表- 运行中的PHP支持的Web服务器。一个正确安装的PHP支持的数据库,如MySQL或Oracle等。(如果您打算使用的话) PHP…...

EureKa快速入门

EureKa快速入门 远程调用的问题 多个服务有多个端口&#xff0c;这样的话服务有多个&#xff0c;硬编码不太适合 eureKa的作用 将service的所有服务的端口全部记录下来 想要的话 直接从注册中心查询对于所有服务 每隔一段时间需要想eureKa发送请求 保证服务还存活 动手实践 …...

Sectigo EV代码签名申请步骤

一、EV代码签名申请前提 1、单位成立时间不低于&#xff1a;3个月 2、单位工商及企查查可查 3、单位经营正常 4、注册地址真实存在&#xff0c;禁止使用集中注册地址 5、企查查登记电话和邮箱&#xff0c;确定查询结果的电话可以接听、邮箱可以接收邮件&#xff0c;如果信…...

生信学院|08月25日《SOLIDWORKS PDM帮助企业对设计数据版本的管理应用》

课程主题&#xff1a;SOLIDWORKS PDM帮助企业对设计数据版本的管理应用 课程时间&#xff1a;2023年08月25日 14:00-14:30 主讲人&#xff1a;车立洋 生信科技 PDM专家 1、图纸&文档的版本管理对于企业的重要性 2、SolidWorks PDM对图纸&文档版本的管理 3、SolidW…...

vue页面转pdf后分页时文字被横向割裂

效果 预期效果 //避免分页被截断async outPutPdfFn (id, title) {const _t this;const A4_WIDTH 592.28;const A4_HEIGHT 841.89;// dom的id。let target document.getElementById(pdf);let pageHeight target.scrollWidth / A4_WIDTH * A4_HEIGHT;// 获取分割dom&#xf…...

数据结构——队列(C语言)

需求&#xff1a;无 本篇文章将解决一下几个问题&#xff1a; 队列是什么&#xff1f;如何实现一个队列&#xff1f;什么场景下会用队列&#xff1f; 队列的概念&#xff1a; 队列&#xff1a;一种只允许一端进行插入数据操作&#xff0c;在另一端进行删除操作的特殊线性表。…...

WGS84地球坐标系,GCJ02火星坐标系,BD09百度坐标系简介与转换 资料收集

野火 ATGM332D简介 高性能、低功耗 GPS、北斗双模定位模块 STM32 GPS定位_为了维护世界和平_的博客-CSDN博客 秉火多功能调试助手上位机开源&#xff01;共六款软件&#xff0c;学到你吐... , - 电脑上位机 - 野火电子论坛 - Powered by Discuz! https://www.firebbs.cn/for…...

【面试题】前端面试复习6---性能优化

前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 性能优化 一、性能指标 要在 Chrome 中查看性能指标&#xff0c;可以按照以下步骤操作&#xff1a; 打开 Chrome 浏览器&#xff0c;并访问你想要测试…...

隧道HTTP具备的条件

作为一名专业的爬虫代理供应商&#xff0c;我们都知道使用代理是保证爬虫的高效性和稳定性的重要手段之一。而隧道代理则是近年来备受推崇的一种代理形式&#xff0c;它通过将请求通过隧道传输&#xff0c;可以有效地隐藏爬虫的真实IP地址&#xff0c;提高爬虫的反爬能力。 在…...

部署FTP服务(二)

目录 2.访问FTP服务 1.使用ftp命令行工具 2.使用浏览器 3.使用FileZilla Client 3.Serv-U 1.定义新域 2.创建用户 4. windowsserver搭建ftp服务器 一、FTP工具 二、Windows资源管理器 三、IE浏览器访问 2.访问FTP服务 下面在一台装有Windows10操作系统的计算机中&#…...

缓存的变更(JVM本地缓存->Redis分布式缓存)

在一次需求修改中&#xff0c;下游的服务附加提出了&#xff0c;针对某个业务数据缓存的生效时间的要求 原JVM设计方案&#xff1a; 采用jvm本地缓存机制&#xff0c;定时任务30秒刷新一次 现在redis方案&#xff1a; 因为很多地方使用了这个业务数据缓存&#xff0c;使用方…...

springMVC Unix 文件参数变更漏洞修复

错误信息如下&#xff1a; 解决方案&#xff1a; 原因&#xff1a;未对用户输入正确执行危险字符清理 未检查用户输入中是否包含“…”&#xff08;两个点&#xff09;字符串&#xff0c;比如 url 为 /login?action…/webapps/RTJEKSWTN26635&typerandomCode cookie为Coo…...

【LeetCode】494.目标和

题目 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - &#xff0c;然后串联起所有整数&#xff0c;可以构造一个 表达式 &#xff1a; 例如&#xff0c;nums [2, 1] &#xff0c;可以在 2 之前添加 &#xff0c;在 1 之前添加 - &#x…...

KaiwuDB 荣获哈佛商业评论 2023“高能韧性团队奖”

8月18日&#xff0c;《哈佛商业评论》中文版携手 FESCO 成功举办“第九届人才经济论坛”暨“2022-2023 高能团队奖颁奖典礼”。论坛秉承前沿的全球视野及权威的管理理念&#xff0c;发掘并展示本土企业组织管理的最佳实践&#xff0c;并重磅揭晓第二届“高能团队奖”评选结果。…...

删除ubuntu开始菜单中的图标

背景 本来是很好看干净的界面 更新谷歌浏览器后出现了Gmail&#xff0c;幻灯片&#xff0c;谷歌硬盘等跟谷歌相关的乱七八糟东西搞得界面就很丑 解决问题 删掉那个图标 输入命令 sudo nautilus /usr/share/applicationssudo nautilus ~/.local/share/applications可以…...

信息系统项目管理基础知识学习笔记 - IT 治理基础 - IT治理的驱动因素

信息系统项目管理基础知识学习笔记 - IT 治理基础 - IT治理的驱动因素 IT治理的驱动因素组织的IT战略驱动组织开展高质量IT治理因素IT治理的内涵IT 治理体系信息系统项目管理基础知识学习笔记 - IT 治理基础 - IT治理的驱动因素 IT治理的驱动因素 组织信息系统建设和运行需要…...

8月21-22日上课内容 第一章 MySQL数据库初始

本章结构 数据库的基本概念 概述&#xff08;总览&#xff09; 结构&#xff1a; 数据 表 数据库 数据库管理系统 数据库系统原理 数据 (Data) 描述事物的符号记录 包括数字&#xff0c;文字、图形、图像、声音、档案记录等以“记录”形式按统一的格式进行存储表 将不同…...

等级查询发布助手

考试成绩的发布是学校教学工作中的一项重要任务&#xff0c;传统的手工录入、统计和发布成绩的方式既耗时又容易出错。为了提高老师的工作效率和准确性&#xff0c;推荐老师们试一试易查分考试等级发布系统。 易查分是一个查询/发布发布平台 1. 快速高效&#xff1a;老师只需将…...

手搭手入门MyBatis-Plus

MyBatis-Plus Mybatis-Plus介绍 为简化开发而生 MyBatis-Plus(opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis(opens new window) 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 特性 无侵入&#…...

AI 绘画Stable Diffusion 研究(十一)sd图生图功能详解-美女换装

免责声明: 本案例所用安装包免费提供&#xff0c;无任何盈利目的。 大家好&#xff0c;我是风雨无阻。 为了让大家更直观的了解图生图功能&#xff0c;明白图生图功能到底是干嘛的&#xff0c;能做什么事情&#xff1f;今天我们继续介绍图生图的实用案例-美女换装的制作。 对于…...

Servlet+JDBC实战开发书店项目讲解第14讲:订单管理功能

ServletJDBC实战开发书店项目讲解第14讲&#xff1a;订单管理功能 欢迎阅读本系列教程的第14讲&#xff01;在本篇文章中&#xff0c;我们将深入讲解如何在书店项目中实现订单管理功能。通过这个实例&#xff0c;你将学习到如何使用Servlet和JDBC来处理后台管理的订单管理操作…...

基于Linux操作系统中的shell脚本

目录 前言 一、概述 1、什么是shell&#xff1f; 2、shell脚本的用途有哪些&#xff1f; 3、常见的shell有哪些&#xff1f; 4、学习shell应该从哪几个方面入手&#xff1f; 4.1、表达式 1&#xff09;变量 2&#xff09;运算符 4.2、语句 1&#xff09;条件语句&am…...

8.22笔记

8.22笔记 8.22笔记一、Hive的HQL语法重点问题1.1 DDL1.1.1 Hive中数据表的分类问题1.1.2 特殊的数据类型 1.2 DML1.3 DQL1.3.1 查询语法和MySQL大部分都是一致的 1.4 讲了三个数据库的可视化工具1.4.1 navicat1.4.2 dbeaver1.4.3 chat2db 二、Hive中重点问题&#xff1a;Hive函…...

【以太网通信】RS232 串口转以太网

最近和 RK 研发同事在调试通信接口&#xff0c;排查与定位 RK3399 接收数据出错的问题。FPGA 与 RK3399 之间使用一路 RS232 串口进行通信&#xff0c;由于串口数据没有分包&#xff0c;不方便排查问题&#xff0c;想到可以开发一个 RS232 串口转以太网的工具&#xff0c;将串口…...

分享两道Java面试的算法上机题目(后续会持续补充更多)

所有题目参考答案均是小编自己想法&#xff0c;仅供参考&#xff0c;解法很多&#xff0c;大可不必局限&#xff0c;有更优解的大神无解&#xff0c;可评论或私聊博主指正&#xff01; 题目1 找大串&#xff0c;给定一个字符串其中包含任意组连续字符&#xff0c;我们把超过3个…...

如何使用CSS实现一个平滑过渡效果?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用CSS实现平滑过渡效果⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚…...

网络常见设备

目录 1.网络常见设备 1.交换路由设备 2.网络安全设备 3.无线网络设备 4.网络设备生产厂商 1.网络常见设备 当用户通过电子邮件给远方的朋友送去祝福时&#xff0c;一定不会想到这封邮件在网络中将会经历怎样复杂的行程。就好比将一封真实的信件投到邮局后&#xff0c;无法了解…...

数据结构与算法:通往编程高地的必修课(文末送书)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

python小脚本——批量将PDF文件转换成图片

语言&#xff1a;python 3 用法&#xff1a;选择PDF文件所在的目录&#xff0c;点击 确定 后&#xff0c;自动将该目录下的所有PDF转换成单个图片&#xff0c;图片名称为: pdf文件名.page_序号.jpg 如运行中报错&#xff0c;需要自行根据报错内容按照缺失的库 例如&#x…...

cUrl的介绍和基本使用

cURL 如果你在开发接口的时候&#xff0c;需要调试。那么cUrl将是你必备的技能。也许你用过postman,但这个未免太重量级了。curl将会是你最佳轻量级&#xff0c;调试接口的工具&#x1f600; 1.Curl函数的基本选项✨ 1.1 --request和 -x —request 和 -X 指定与HTTP服务器通信…...

ONLYOFFICE协作空间服务器如何一键安装自托管私有化部署

ONLYOFFICE协作空间服务器如何一键安装自托管私有化部署 如何在 Ubuntu 上部署 ONLYOFFICE 协作空间社区版&#xff1f;https://blog.csdn.net/m0_68274698/article/details/132069372?ops_request_misc&request_id&biz_id102&utm_termonlyoffice%20%E5%8D%8F%E4…...

java分析公司名称:AI智能工具助力提取地名、品牌名、行业名

java分析公司名称&#xff1a;AI智能工具助力提取地名、品牌名、行业名 一、java智能提取地名 /*** 通过“武汉”补全省市区* throws Exception*/public void getPlace4() throws Exception{String r1 "武汉";String fileName2 "D:\\Personal\\Desktop\\txt…...

php 二维数组排序

要对二维数组进行排序&#xff0c;可以使用 PHP 的函数 array_multisort()。该函数可以按照指定的键值对对数组进行排序。 下面是一个示例代码&#xff0c;展示如何对二维数组按照某个键进行排序&#xff1a; // 定义一个二维数组 $students array(array(name > John, ag…...

postgresql 性能调优

性能调优是为了提高 PostgreSQL 数据库的性能和响应速度。下面是一些常见的 PostgreSQL 性能调优技巧&#xff1a; 1 确保合适的硬件资源&#xff1a;确保数据库服务器具有足够的内存、处理器和磁盘空间&#xff0c;以满足数据库负载的需求。2 优化查询语句&#xff1a;检查并优…...

派森 #P128. csv存json格式

描述 编写一个 Python 程序&#xff0c;读取movie.in&#xff08;csv格式&#xff0c;utf-8编码&#xff09; 的数据&#xff0c;将数据转成保存到movie.out(接送格式&#xff0c;utf-8编码)文件中。 格式 输入 movie.in文件&#xff0c;测试格式&#xff0c;utf-8编码。 …...

iPhone开启“轻点唤醒”功能但点击屏幕无反应怎么解决?

iPhone的“轻点唤醒”功能启用时&#xff0c;用户只需手指轻触或点击手机屏幕即可快速唤醒设备&#xff0c;无需按压任何按钮。然而&#xff0c;有些用户在使用“轻点唤醒”功能唤醒屏幕时&#xff0c;遇到该功能失灵&#xff0c;无法正常唤醒屏幕的情况&#xff0c;这是怎么回…...

论AI与大数据之间的关系

前言 在21世纪&#xff0c;"AI"和"大数据"已经成为科技领域的热门词汇。它们不仅是创新的代名词&#xff0c;更是现代技术发展的双翼。然而&#xff0c;很多人对于AI与大数据之间的关系仍然停留在表面的理解。本文旨在深入探讨这两者之间的深厚关系&#…...

6.ES基础概念及术语详细解读

一、Elasticsearch概述&#xff1a; ES是基于Lucene的搜索服务器&#xff0c;它提供了一个分布式多用户能力的全问搜索引擎&#xff0c;且ES支持RestFulweb风格的url访问。ES是基于Java开发的开源搜索引擎&#xff0c;设计用于云计算&#xff0c;能够达到实时搜索&#xff0c;…...

大语言模型微调实践——LoRA 微调细节

1. 引言 近年来人工智能领域不断进步&#xff0c;大语言模型的崛起引领了自然语言处理的革命。这些参数量巨大的预训练模型&#xff0c;凭借其在大规模数据上学习到的丰富语言表示&#xff0c;为我们带来了前所未有的文本理解和生成能力。然而&#xff0c;要使这些通用模型在特…...

国内ChatGPT对比与最佳方案

很久没写内容了&#xff0c;主要还是工作占据了太多时间。简单分享下我这段时间的研究吧,由于时间仓促&#xff0c;有很多内容没有具体写&#xff0c;请自行到我分享的网站体验查看。 前言 ChatGPT 的出现确实在很大程度上改变了世界。许多人已经亲身体验到了ChatGPT作为一个…...

绝美的古诗词AI作画,惊艳到我了!

前言 时光荏苒&#xff0c;科技的飞速发展催生出了许多令人惊叹的创新成果。近年来&#xff0c;人工智能技术在艺术领域的应用日益引人注目&#xff0c;其中最为引人瞩目的莫过于AI作画。这项技术将传统的古诗词与现代的人工智能相结合&#xff0c;创造出一幅幅令人叹为观止的…...

数据结构—排序

8.排序 8.1排序的概念 什么是排序&#xff1f; 排序&#xff1a;将一组杂乱无章的数据按一定规律顺序排列起来。即&#xff0c;将无序序列排成一个有序序列&#xff08;由小到大或由大到小&#xff09;的运算。 如果参加排序的数据结点包含多个数据域&#xff0c;那么排序往…...

GraphScope,开源图数据分析引擎的领航者

文章首发地址 GraphScope是一个开源的大规模图数据分析引擎&#xff0c;由Aliyun、阿里巴巴集团和华为公司共同开发。GraphScope旨在为大规模图数据处理和分析提供高性能、高效率的解决方案。 Github地址&#xff1a; https://github.com/alibaba/GraphScope GraphScope 的重…...

【Linux】邮件服务器搭建 postfix+dovecot+mysql (终极版 超详细 亲测多遍无问题)

&#x1f341;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; 文章目录 前言基础原理准备工作一 、安装关于权…...

GitLab与GitLab Runner安装(RPM与Docker方式),CI/CD初体验

背景 GitLab 是一个强大的版本控制系统和协作平台&#xff0c;记录一下在实际工作中关于 GitLab 的安装使用记录。 一开始使用 GitLab 时&#xff0c;是在 CentOS7 上直接以 rpm 包的方式进行安装&#xff0c;仅作为代码托管工具来使用&#xff0c;版本&#xff1a; 14.10.4 …...