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

MySQL--》理解锁机制中的并发控制与优化策略

        锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中除了传统的计算机资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源,如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素,从这个角度来说锁对数据库而已尤为重要也更加复杂。按照锁的粒度细分,对于MySQL中的锁主要分为以下三类:

1)全局锁:锁定数据库中的所有表

2)表级锁:每次操作锁住整张表

3)行级锁:每次操作锁住对应的行数据

目录

全局锁

表级锁

行级锁


全局锁

全局锁就是对整个数据库实例加锁,加锁后整个实例就处于就读状态,后续的DML的写语句即DDI语句已经更新操作的事务提交语句都将被阻塞,其典型的使用场景是做全库的逻辑备份,对所有表进行锁定从而获得一致性视图,保证数据的完整性。

如下当我们进行数据备份的时候不加全局锁的情况下,就会导致在备份的时候还会发生数据的插入操作导致前后数据不一致:

我们在进行数据备份的时候,可通过如下步骤进行操作,在添加全局锁之后整个数据库只能读不能写,当数据库备份完毕之后我们再释放锁即可:

接下来我们演示如何添加全局锁并进行数据备份操作,如下所示:

添加全局锁:通过执行如下命令来进行添加全局锁操作:

flush tables with read lock;

如下代码当我们设置全局锁的时候,查询操作正常执行但数据更新就不能被执行了:

数据库备份:接下来我们开始进行数据库备份,mysqldump并不是sql命令而是一个工具,这里我们直接在cmd终端允许如下命令即可,-h是地址,-u是用户名,-p是密码,后面的是要备份的数据库名称,路径是要保存的地址:

mysqldump -h localhost -uroot -p123456 mysql_test > D:/mysql_test.sql

如下我们可以看到我们的数据库已经备份成功了,来到我们保存的地址通过文件打开可以看到我们的数据已经成功被备份出来了:

释放数据库:数据成功备份之后,我们要执行如下命令对数据库进行释放全局锁:

unlock tables;

全局锁特点:数据库中添加全局锁是一个比较重的操作,存在以下问题:

1)如果在主库上备份,那么在备份期间都不能执行更新操作,业务基本上就停摆了

2)如果在库上备份,那么在备份期间从库不能执行主库同步过来的二进制日志(binlog),会导致主从延迟

在InnoDB引擎中,我们可以在备份时添加参数 --single-transaction 参数来完成不加锁的一致性数据备份,如下所示:

mysqldump --single-transaction -h localhost -uroot -p123456 mysql_test > D:/mysql_test02.sql

表级锁

表级锁每次操作锁住整张表,锁定粒度大发生锁冲突的概率最高,并发度最低,应用在MySQL、InnoDB、BDB等存储引擎中,对于表级锁主要分为以下三类:

1)表锁:对于表锁主要分为两类:表共享读锁(read lock);表独占写锁(write lock),其语法如下所示:

-- 加锁
lock tables 表名... read/write-- 释放锁
unlock tables / 客户端锻炼连接

读锁:当我们进行读锁的时候,客户1对数据库执行了读锁操作,那其只能读不能写,客户2也是只能读不能写的,如下所示:

写锁:当我们进行写锁的时候,客户1对数据库进行了写锁操作,那其既能读又能写,但客户2却是不能进行读和写的操作,如下所示:

这里我们拿写锁进行演示,如下我们开了两个查询控制台当作两个客户在使用,客户1执行了写锁操作之后,客户2的读写都不能使用了,只有当客户1释放表锁之后,客户2才能正常使用,如下:

2)元数据锁(meta data lock,MDL):MDL加锁过程是系统自动控制,无需显示使用,在访问一张表的时候会自动加上,MDL锁主要作用是维护表元数据的数据一致性,在表上有活动事务的时候,不可以对元数据进行写入操作,为了避免DML和DDL冲突,保证读写的正确性。

在MySQL5.5中引入MDL,当对一张表进行增删改查的时候,加MDL读锁(共享);当对表结构进行变更操作的时候加MDL写锁(排他),如下表所示:

对于SQL锁类型说明
lock tables xxx read/writeSHARED_READ_ONLY / SHARED_NO_READ_WRITE-
select、select...lock in share modeSHARED_READ与SHARED_READ、SHARED_WRITE兼容,与EXCLUSIVE互斥
insert、update、delete、select...for updateSHARED_WRITE与SHARED_READ、SHARED_WRITE兼容,与EXCLUSIVE互斥
alter table...EXCLUSIVE与其他的MDL都互斥

3)意向锁:为了避免DML在执行时加的行锁与表锁的冲突,在InnoDB中引入了意向锁,使得表锁不用检查每行数据是否加锁,使用意向锁来减少表锁的检查,如下所示:

当我们要对一张表加上表锁的时候,需要遍历整张表中是否加上了行锁,如果加上了行锁再加表锁就可能产生冲突了:

对于意向锁主要分为以下两种:

1)意向共享锁(IS):select ... lock in share mode 添加,与表锁共享锁(read)兼容,与表锁排它锁(write)互斥:

2)意向排他锁(IX):insert、update、delete、select...for update添加,与表锁共享锁(read)及排它锁(write)都互斥,意向锁之间不会互斥。

可以通过以下SQL,查看意向锁及行锁的加锁情况:

select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from performance_schema.data_locks;

行级锁

行级锁:每次操作锁住对应的行数据,锁定粒度最小,发生锁冲突的概率最低,并发度最高,应用在InnoDB存储引擎中,InnoDB的数据是基于索引组织的,行锁是通过对索引上的索引项加锁来实现的,而不是对记录加的锁。对于行级锁,主要分为以下三类:

行锁(recordl lock):锁定单个行记录的锁防止其他事务对此行进行update和delete,在rc、rr隔离级别下都支持,如下所示:

InnoDB实现了以下两种类型的行锁:

1)共享锁(S):允许一个事务去读一行,阻止其他事务获得相同数据集的排它锁。

2)排他锁(X):允许获取排他锁的事务更新数据,阻止其他事务获得相同数据集的共享锁和排他锁。

当我们正常进行增删改查的时候,所加的行锁的类型如下所示:

默认情况下,InnoDB在REPEATABLEREAD事务隔离级别运行,InnoDB使用next-key锁进行搜索和索引扫描,以防止幻读

针对唯一索引进行检索时,对已存在的记录进行等值匹配时,将会自动优化为行锁;InnoDB的行锁是针对于索引加的锁,不通过索引条件检索数据,那么InnoDB将对表中的所有记录加锁,此时就会升级为表锁。

间隙锁(gap lock):锁定索引记录间隙(不含该记录)确保索引记录间隙不变,防止其他事务在这个间隙进行insert产生幻读,在rr隔离级别下都支持,如下所示:

默认情况下,InnoDB在REPEATABLEREAD事务隔离级别运行,InnoDB使用next-key锁进行搜索和索引引扫描,以防止幻读:

1)索引上的等值查询(唯一索引),给不存在的记录加锁时,优化为间隙锁。

2)索引上的等值查询(普通索引),向右遍历时最后一个值不满足查询需求时,next-key lock 退化为间隙锁。
3)索引上的范围查询(唯一索引)--会访问到不满足条件的第一个值为止。

注意:间隙锁唯一目的是防止其他事务插入间隙。间隙锁可以共存,一个事务采用的间隙锁不会阻止另一个事务在同一间隙上采用间隙锁。

临键锁(next-key lock):行锁和间隙锁组合,同时锁住数据并锁住数据前面的间隙gap,在rr隔离级别下支持,如下所示:

相关文章:

MySQL--》理解锁机制中的并发控制与优化策略

锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中除了传统的计算机资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源,如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突…...

2、第一个GO 程序

引言 接下里我们就用Go Land 工具,开发第一个GO程序。大家也可以用其他的开发工具,例如 Vs Code 1、新建项目 第一个是选择你的程序保存位置 (不要有中文)。 第二个是你的Go的编译器的安装地址。 选择完毕后,就点击 …...

解决nginx多层代理后应用部署后访问发现css、js、图片等样式加载失败

一般是采用前后端分离部署方式,被上一层ng代理后,通过域名访问报错,例如:sqx.com.cn/应用代理路径。 修改nginx配置,配置前端页面的路径: location / {proxy_pass http://前端页面所在服务器的IP:PORT;pro…...

【Notepad++】Notepad++如何删除包含某个字符串所在的行

Notepad如何删除包含某个字符串所在的行 一,简介二,操作方法三,总结 一,简介 在使用beyoundcompare软件进行对比的时候,常常会出现一些无关紧要的地方,且所在行的内容是变化的,不方便进行比较&…...

Python的秘密基地--[章节11] Python 性能优化与多线程编程

第11章:Python 性能优化与多线程编程 在开发复杂系统时,性能优化和并发编程是不可忽视的重点。Python 提供了多种工具和技术用于优化代码性能,并通过多线程、多进程等方式实现并发处理。本章将探讨如何在 Python 中提升性能,并实…...

【Unity3D】利用IJob、Burst优化处理切割物体

参考文章: 【Unity】切割网格 【Unity3D】ECS入门学习(一)导入及基础学习_unity ecs教程-CSDN博客 【Unity3D】ECS入门学习(十二)IJob、IJobFor、IJobParallelFor_unity ijobparallelfor-CSDN博客 工程资源地址&…...

初学stm32 --- ADC模拟/数字转换器工作原理

目录 常见的ADC类型 并联比较型工作示意图 逐次逼近型工作示意图 ADC的特性参数 STM32各系列ADC的主要特性 ADC框图简介 参考电压/模拟部分电压 输入通道( F1为例) 转换序列(F1为例) 规则组和注入组执行优先级对比 规则…...

【MySQL】SQL菜鸟教程(一)

1.常见命令 1.1 总览 命令作用SELECT从数据库中提取数据UPDATE更新数据库中的数据DELETE从数据库中删除数据INSERT INTO向数据库中插入新数据CREATE DATABASE创建新数据库ALTER DATABASE修改数据库CREATE TABLE创建新表ALTER TABLE变更数据表DROP TABLE删除表CREATE INDEX创建…...

BM25(Best Match 25):信息检索的排序函数;稠密矩阵检索技术:RoBERTa

BM25(Best Match 25):信息检索的排序函数 常用于搜索引擎等场景,以下是关于它检索的内容及举例说明: 一、BM25检索的内容 文本数据: 文档集合:可以是大量的网页、学术论文、新闻文章、书籍内容等各种形式的文本集合。例如,一个学术搜索引擎可能会使用BM25对包含数百万…...

高级软件工程-复习

高级软件工程复习 坐标国科大,下面是老师说的考试重点。 Ruby编程语言的一些特征需要了解要能读得懂Ruby程序Git的基本命令操作知道Rails的MVC工作机理需要清楚,Model, Controller, View各司什么职责明白BDD的User Story需要会写,SMART要求能…...

Java常用设计模式

单例模式 单例模式就是: 在程序运行期间, 某些类有且最多只有一个实例对象 饿汉模式(静态常量) 饥饿模式又称为饿汉模式, 指的是JVM在加载类的时候就完成类对象的创建 //饿汉式(静态常量) public class Singleton1 {//构造器私有化,外部不能newprivate Singleto…...

29.Java 集合线程安全(ArrayList 类线程安全问题处理方案、HashSet 、HashMap 类线程安全问题处理方案)

一、ArrayList 类线程安全问题 1、概述 ArrayList 类存在线程安全问题 2、异常演示 ListNoSafeTest.java,演示 ArrayList 类线程安全问题 package com.my.listsafe;import java.util.ArrayList; import java.util.UUID;public class ListNoSafeTest {public st…...

解锁企业数字化转型新力量:OpenCoze(开源扣子)

在当今数字化浪潮席卷之下,企业对于高效管理和协同运作的需求愈发迫切,而开源技术正逐渐成为众多企业破局的关键利器。今天,想给大家介绍一款极具潜力的开源项目 ——OpenCoze,中文名称 “开源扣子”。 一、OpenCoze 是什么&…...

Docker 使用Dockerfile创建镜像

创建并且生成镜像 在当前目录下创建一个名为Dockerfile文件 vi Dockerfile填入下面配置 # 使用 CentOS 作为基础镜像 FROM centos:7# 设置工作目录 WORKDIR /app# 复制项目文件到容器中 COPY bin/ /app/bin/ COPY config/ /app/config/ COPY lib/ /app/lib/ COPY plugin/ /a…...

linux网络 | https前置知识 | 数据加密与解密、数据摘要

前言:本节内容讲述https的相关内容。 https博主会着重讲解https如何让一个请求和一个响应能够安全的进行交互。 https博主将用两篇文章进行讲解。本篇是两篇中第一篇。会把http的安全问题引出来, 然后说一下https的基本解决方法。 下面废话不多说, 开始我…...

01 Oracle自学环境搭建(Windows系统)

1 Oracle12C安装 1.1 下载 官网地址:https://www.oracle.com/ 进入官网→Resource→Customer Downloads 如果没有登录,会提示登录后后才能下载 选择适合自己的版本(我电脑是Windows系统 64位) 选择需要的安装包进行下载 双击下载…...

负载均衡原理及算法

什么是负载均衡? 负载均衡 指的是将用户请求分摊到不同的服务器上处理,以提高系统整体的并发处理能力以及可靠性。负载均衡服务可以有由专门的软件或者硬件来完成,一般情况下,硬件的性能更好,软件的价格更便宜&#x…...

STM32第5章、IWDG

一、简介 IWDG:全称是Independent watchdog,即独立看门狗。本质上是一个能产生系统复位信号的计数器。 特性: 是一个递减计数器。 时钟信号由独立的RC振荡器提供,可在待机和停止模式下运行。 看门狗被激活后,当递减计…...

[python3]Uvicorn库

Uvicorn 是一个用于运行 ASGI(Asynchronous Server Gateway Interface)应用程序的轻量级服务器。ASGI 是 Python Web 应用程序接口的一种扩展,它不仅支持传统的同步 Web 请求处理,还支持异步请求处理、WebSockets 以及 HTTP/2。 h…...

openEuler 22.04使用yum源最快速度部署k8s 1.20集群

本文目的 openEuler的官方源里有kubernetes 1.20,使用yum源安装是最快部署一个k8s集群的办法 硬件环境 主机名系统架构ipmasteropenEuler release 22.03 (LTS-SP2)arm192.168.3.11edgeopenEuler release 22.03 (LTS-SP2)arm192.168.3.12deviceopenEuler release 22.…...

【深度学习】数据预处理

为了能用深度学习来解决现实世界的问题,我们经常从预处理原始数据开始, 而不是从那些准备好的张量格式数据开始。 在Python中常用的数据分析工具中,我们通常使用pandas软件包。 像庞大的Python生态系统中的许多其他扩展包一样,pan…...

Oracle:ORA-00904: “10“: 标识符无效报错详解

1.报错Oracle语句如下 SELECT YK_CKGY.ID,YK_CKGY.DJH,YK_CKGY.BLRQ,YK_CKGY.ZBRQ,YK_CKGY.SHRQ,YK_CKGY.YT,YK_CKGY.ZDR,YK_CKGY.SHR,YK_CKGY.BZ,YK_CKGY.JZRQ,YK_CKGY.ZT,YK_CKGY.CKLX,(case YK_CKGY.CKLXwhen 09 then药房调借when 02 then科室退药when 03 then损耗出库when…...

CentOS 7 下 Nginx 的详细安装与配置

1、安装方式 1.1、通过编译方式安装 下载Nginx1.16.1的安装包 https://nginx.org/download/nginx-1.16.1.tar.gz 下载后上传至/home目录下。 1.2、通过yum方式安装 这种方式安装更简单。 2、通过编译源码包安装Nginx 2.1、安装必要依赖 sudo yum -y install gcc gcc-c sudo…...

Vue.js:现代前端开发的灵活框架

大家好!我是 [数擎 AI],一位热爱探索新技术的前端开发者,在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情,欢迎关注我的文章,我们一起成长、进步! 开发领域:前端开发 | A…...

VideoPlayer插件的功能和用法

文章目录 1. 概念介绍2. 使用方法2.1 实现步骤2.2 具体细节3. 示例代码4. 内容总结我们在上一章回中介绍了"如何获取文件类型"相关的内容,本章回中将介绍如何播放视频.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 播放视频是我们常用的功能,不过Flutter官方…...

GPT-SoVITS学习01

1.什么是TTS TTS(Text-To-Speech)这是一种文字转语音的语音合成。类似的还有SVC(歌声转换)、SVS(歌声合成)等。 2.配置要求 GPT-SoVITS对电脑配置有较高的要求。 训练:对于Windows电脑&#…...

C语言程序环境和预处理详解

本章重点: 程序的翻译环境 程序的执行环境 详解:C语言程序的编译链接 预定义符号介绍 预处理指令 #define 宏和函数的对比 预处理操作符#和##的介绍 命令定义 预处理指令 #include 预处理指令 #undef 条件编译 程序的翻译环境和执行环…...

DBeaver执行本地的sql语句文件避免直接在客户端运行卡顿

直接在客户端运行 SQL 语句和通过加载本地文件执行 SQL 语句可能会出现不同的性能表现,原因可能包括以下几点: 客户端资源使用: 当你在客户端界面直接输入和执行 SQL 语句时,客户端可能会消耗资源来维护用户界面、语法高亮、自动完…...

【Linux】5.Linux常见指令以及权限理解(3)

文章目录 3. Linux指令如何把自己的公网IP配置到XShell里面日志3.9 时间相关的指令3.10 Cal指令3.11 find指令:(灰常重要)3.12 grep指令3.13 zip/unzip指令:3.14 tar指令(重要):打包/解包&#…...

QT鼠标、键盘事件

一、鼠标 鼠标点击 mousePressEvent 鼠标释放 mouseReleaseEvent 鼠标移动 mouseMoveEvent 鼠标双击 mouseDoubleClickEvent 鼠标滚轮 QWheelEvent 二、键盘 键盘按下 keyPressEvent 键盘松开keyReleaseEvent 一、鼠标 #include <QMouseEvent> 鼠标点击 mouse…...

LabVIEW启动时Access Violation 0xC0000005错误

问题描述 在启动LabVIEW时&#xff0c;可能出现程序崩溃并提示以下错误&#xff1a;Error 0xC0000005 (Access Violation) ​ Access Violation错误通常是由于权限不足、文件冲突或驱动问题引起的。以下是解决此问题的全面优化方案&#xff1a; 解决步骤 1. 以管理员身份运行…...

WPF中组件之间传递参数的方法研究

在 WPF (Windows Presentation Foundation) 中&#xff0c;组件&#xff08;或称为控件&#xff09;之间传递参数的方法有很多种。不同的传递方式适用于不同的应用场景&#xff0c;具体选择取决于应用需求、性能、可维护性等因素。以下是几种常见的传递参数的方法&#xff0c;并…...

本地大模型工具哪家强?对比Ollama、LocalLLM、LM Studio

前言 对于AIGC的初学者&#xff0c; 你一定想尝试在本地搭建一个私有的开源大模型&#xff0c;比如常见的chatglm、llama或者qwen。在实践过程你会发现&#xff0c;每个模型单独配置环境&#xff0c;下载模型文件&#xff0c;还要确保它们互不干扰。这不仅耗时耗力&#xff0c…...

dify 常见问题总结 2025 持续更新

任何 Dify 问题评论区留言。 问题总结 Q&#xff1a;模型在回答时出现异常情况该如何处理&#xff1f; A&#xff1a; 可以通过记录异常情况并分析其原因来进行处理。通常可以调整提示词、重新训练模型或增加异常处理机制来改进模型的表现。 关键词&#xff1a;提示词、模型、…...

贪心算法笔记

贪心算法笔记 大概内容 贪心就是对于一个问题有很多个步骤,我们在每一个步骤中都选取最优的那一个,最后得出答案。就是在一些函数中可行,但是有些比如二次函数,因为它的转折点不一定最优,就是不可行的。那么如何判断贪心呢?有这么几种 看时间复杂度,一般的就是 O ( n…...

切比雪夫插值

切比雪夫插值是一种基于切比雪夫节点的多项式插值方法&#xff0c;其优势是减少插值误差(特别是龙格现象&#xff1a;表现为高维插值时在边缘处插值误差骤增)。本文对其基本操作进行说明。 1. 切比雪夫节点 切比雪夫插值的核心是使用切比雪夫节点作为插值点。切比雪夫节点是切…...

西电-神经网络基础与应用-复习笔记

此为24年秋研究生课程复习笔记 导论 神经网络的研究方法分为 连接主义&#xff0c;生理学派&#xff0c;模拟神经计算。高度的并行、分布性&#xff0c;很强的鲁棒和容错性。便于实现人脑的感知功能(音频图像的识别和处理)。符号主义&#xff0c;心理学派&#xff0c;基于符号…...

【面试题】简单聊一下什么是云原生、什么是k8s、容器,容器与虚机相比优势

云原生&#xff08;Cloud Native&#xff09; 定义&#xff1a;云原生是一种构建和运行应用程序的方法&#xff0c;旨在充分利用云计算的优势。它涵盖了一系列技术和理念&#xff0c;包括容器化、微服务架构、自动化部署与管理等。特点&#xff1a;云原生应用程序被设计为可弹性…...

Vue 3 Diff 算法过程及基本实现方式

Vue 3 的 Diff 算法 Vue 3 使用的是一种高效的 DOM Diff 算法&#xff0c;主要用于在虚拟 DOM 树发生变化时&#xff0c;计算最小的操作以更新真实 DOM。相比 Vue 2&#xff0c;Vue 3 的 Diff 算法做了很多优化。 Diff 算法的背景与目的 虚拟 DOM 树的对比&#xff1a;在 Vue…...

EasyCVR视频汇聚平台如何配置webrtc播放地址?

EasyCVR安防监控视频系统采用先进的网络传输技术&#xff0c;支持高清视频的接入和传输&#xff0c;能够满足大规模、高并发的远程监控需求。平台支持多协议接入&#xff0c;能将接入到视频流转码为多格式进行分发&#xff0c;包括RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HLS、W…...

PowerApps助力PowerBI实现数据写回

原文发布日期: 2019-08-01 06:03:50 0000 注&#xff1a;本文旨在介绍Power BI如何利用PowerApps实现用户在前端对数据源进行增删查改&#xff0c;关于此&#xff0c;你也可以在Google上找到更详细但较零散的资料 正文 在SSAS多维数据集中&#xff0c;开发者可以给数据开启&q…...

数据结构:DisjointSet

Disjoint Sets意思是一系列没有重复元素的集合。一种常见的实现叫做&#xff0c;Disjoint-set Forest可以以接近常数的时间复杂度查询元素所属集合&#xff0c;用来确定两个元素是否同属一个集合等&#xff0c;是效率最高的常见数据结构之一。 Wiki链接&#xff1a;https://en…...

React 元素渲染

React 元素渲染 React 是一个用于构建用户界面的 JavaScript 库&#xff0c;它允许开发人员创建大型应用程序&#xff0c;这些应用程序可以随着时间的推移而高效地更新和渲染。React 的核心概念之一是元素渲染&#xff0c;它描述了如何将 JavaScript 对象转换为 DOM&#xff0…...

【Leetcode 每日一题】3270. 求出数字答案

问题背景 给你三个 正 整数 n u m 1 num_1 num1​&#xff0c; n u m 2 num_2 num2​ 和 n u m 3 num_3 num3​。 数字 n u m 1 num_1 num1​&#xff0c; n u m 2 num_2 num2​ 和 n u m 3 num_3 num3​ 的数字答案 k e y key key 是一个四位数&#xff0c;定义如下&…...

eNSP之家----ACL实验入门实例详解(Access Control List访问控制列表)(重要重要重要的事说三遍)

ACL实验&#xff08;Access Control List访问控制列表&#xff09;是一种基于包过滤的访问控制技术&#xff0c;它可以根据设定的条件对接口上的数据包进行过滤&#xff0c;允许其通过或丢弃。访问控制列表被广泛地应用于路由器和三层交换机。 准备工作 在eNSP里面部署设备&a…...

【git】-2 分支管理

目录 一、分支的概念 二、查看、创建、切换分支 1、查看分支-git branch 2、创建分支- git branch 分支名 3、切换分支- git checkout 分支名 三、git指针 -实现分支和版本间的切换 四、普通合并分支 git merge 文件名 五、冲突分支合并 ​​​​​​【git】-初始gi…...

硬件设计-齐纳管

目录 摘要 详情 齐纳管的工作电流、 摘要 齐纳管&#xff08;Zener Diode&#xff09;是一种特殊的二极管&#xff0c;它能够在特定的反向电压下保持电流稳定。正常情况下&#xff0c;二极管只允许正向电流通过&#xff0c;而阻止反向电流流过。而齐纳管在一定的反向电压下可…...

Github出现复杂问题 无法合并 分支冲突太多 如何复原

目录 问题再现 解决思路 当然我所指的是在 main 分支开一个新的分支 删除本地文件夹 重新克隆 开一个新分支 切换分支 下载远程分支 文件覆盖 合并到主分支 ​​​​​​​问题再现 太复杂了 无法更改 编译器现状 全部崩溃了 无法更改 即使创建一个新的分支也无济于…...

《分布式光纤传感:架设于桥梁监测领域的 “智慧光网” 》

桥梁作为交通基础设施的重要组成部分&#xff0c;其结构健康状况直接关系到交通运输的安全和畅通。随着桥梁建设规模的不断扩大和服役年限的增长&#xff0c;桥梁结构的安全隐患日益凸显&#xff0c;传统的监测方法已难以满足对桥梁结构健康实时、全面、准确监测的需求。分布式…...

java_抽象类最佳实践-模板设计模式

基本介绍 模板设计模式可解决的问题 最佳实践 Template类 package com.hspedu.abstract_; abstract public class Template { //抽象类-模板设计模式public abstract void job();//抽象方法public void calculateTime() {//实现方法&#xff0c;调用 job 方法//得到开始的时间…...