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

MySQL数据库(锁)

1、MySQL有哪些锁?

全局锁:flush tables with read lock   执行以下语句之后,使用全局锁,整个数据库就处于只读状态了,这时其他线程执行对数据的增删改或者对表结构的更改操作操作,都会被阻塞。
全局锁的应用场景:全局锁主要应用于做全库逻辑备份,这样在备份数据库期间,不会因为数据或表结构的更新,而出现备份文件的数据与预期的不一样。
全局锁的缺点 :业务只能读数据,而不能更新数据,这样会造成业务停滞。
备份数据库数据的时候,使用全局锁会影响业务,那有什么其他方式可以避免?
如果数据库的引擎支持的事务 支持可重复读的隔离级别,那么在备份数据库之前先开启事务,会先创建 Read View,然后整个事务执行期间都在用这个 Read View,而且由于 MVCC 的支持,备份期间业务依然可以对数据进行更新操作。
表级锁:
表锁
对学生表(t_student)加表锁,可以使用下面的命令:
//表级别的共享锁,也就是读锁;
lock tables t_student read;
//表级别的独占锁,也就是写锁;
lock tables t_stuent write;
表锁除了会限制别的线程的读写外,也会限制本线程接下来的读写操作。
也就是说如果本线程对学生表加了「共享表锁」,那么本线程接下来如果要对学生表执行写操作的语句,是会被阻塞的,当然其他线程对学生表进行写操作时也会被阻塞,直到锁被释放。
元数据锁(MDL)
当对数据库表进行操作时,会自动给这个表加上 MDL:
对一张表进行 CRUD 操作时,加的是  MDL 读锁
对一张表做结构变更操作的时候,加的是  MDL 写锁
MDL 是为了保证当用户对表执行 CRUD 操作时,防止其他线程对这个表结构做了变更。MDL 是在事务提交后才会释放, 这意味着事务执行期间,MDL 是一直持有的。MDL 锁的操作会形成一个队列, 队列中写锁获取优先级高于读锁,一旦出现 MDL 写锁等待,会阻塞后续该表的所有 CRUD 操作。
所以为了能安全的对表结构进行变更,在对表结构变更前,先要看看数据库中的长事务,是否有事务已经对表加上了 MDL 读锁,如果可以考虑 kill 掉这个长事务,然后再做表结构的变更。
意向锁
意向锁的使用场景:
在使用 InnoDB 引擎的表里对某些 记录加上「共享锁」之前(行锁),需要先在表级别加上一个「意向共享锁」;
在使用 InnoDB 引擎的表里对某些 纪录加上「独占锁」之前(行锁),需要先在表级别加上一个「意向独占锁」;
当执行插入、更新、删除操作,需要先对表加上「意向独占锁」,然后对该记录加独占锁。而普通的 select 是不会加行级锁的,普通的 select 语句是利用 MVCC 实现一致性读,是无锁的。不过,select 也是可以对记录加共享锁和独占锁的,具体方式如下:
//先在表上加上意向共享锁,然后对读取的记录加共享锁
select ... lock in share mode;
//先表上加上意向独占锁,然后对读取的记录加独占锁
select ... for update;
意向共享锁和意向独占锁是表级锁,不会和行级的共享锁和独占锁发生冲突,而且意向锁之间也不会发生冲突,只会和共享表锁(lock tables … read)和独占表锁(lock tables … write)发生冲突。
表锁和行锁是满足读读共享、读写互斥、写写互斥的。
如果没有「意向锁」,那么加「独占表锁」时,就需要遍历表里所有记录,查看是否有记录存在独占锁,这样效率会很慢。
那么有了「意向锁」,由于在对记录加独占锁前,先会加上表级别的意向独占锁,那么在加「独占表锁」时,直接查该表是否有意向独占锁,如果有就意味着表里已经有记录被加了独占锁,这样就不用去遍历表里的记录。
所以, 意向锁的目的是为了快速判断表里是否有记录被加锁。
AUTO-INC锁
在为某个字段声明 AUTO_INCREMENT 属性时,之后可以在插入数据时,可以不指定该字段的值,数据库会自动给该字段赋值递增的值,这主要是通过以下两种方式实现
AUTO-INC 锁实现
AUTO-INC 锁是特殊的表锁机制, 锁不是再一个事务提交后才释放,而是再执行完插入语句后就会立即释放。在插入数据时,会加一个表级别的 AUTO-INC 锁,然后为被 AUTO_INCREMENT 修饰的字段赋值递增的值,等插入语句执行完成后,才会把 AUTO-INC 锁释放掉。那么,一个事务在持有 AUTO-INC 锁的过程中,其他事务的如果要向该表插入语句都会被阻塞,从而保证插入数据时,被 AUTO_INCREMENT 修饰的字段的值是连续递增的。
一种轻量级的锁来实现自增。
一样也是在插入数据的时候,会为被 AUTO_INCREMENT 修饰的字段加上轻量级锁, 然后给该字段赋值一个自增的值,就把这个轻量级锁释放了,而不需要等待整个插入语句执行完后才释放锁。
InnoDB 存储引擎提供了个 innodb_autoinc_lock_mode 的系统变量,是用来控制选择用 AUTO-INC 锁,还是轻量级的锁。
当 innodb_autoinc_lock_mode = 0,采用 AUTO-INC 锁;
当 innodb_autoinc_lock_mode = 2,采用轻量级锁;
当 innodb_autoinc_lock_mode = 1,默认值,两种锁混用,如果能够 确定插入记录的数量就采用轻量级锁,不确定时就采用 AUTO-INC 锁。
AUTO-INC 锁在对大量数据进行插入的时候,会影响插入性能,因为另一个事务中的插入会被阻塞。轻量级锁是性能最高的方式,但是会带来一定的问题。因为并发插入的存在,在每次插入时 自增长的值可能不是连续的, 这在有主从复制的场景中是不安全的
行级锁
InnoDB 引擎支持行级锁的,而 MyISAM 引擎并不支持行级锁。
Record Lock,记录锁 ,锁住的是一条记录。记录锁是有 S 锁(共享) X 锁(独占) 之分
Gap Lock,间隙锁,只存在于可重复读隔离级别,目的是为了解决可重复读隔离级别下幻读的现象。间隙锁虽然存在 X 型间隙锁和 S 型间隙锁,但是并没有什么区别,间隙锁之间是兼容的,即两个事务可以同时持有包含共同间隙范围的间隙锁,并不存在互斥关系,因为间隙锁的目的是防止插入幻影记录而提出的。
Next Lock,临键锁,是 Record Lock + Gap Lock 的组合,锁定一个范围,并且锁定记录本身。如果一个事务获取了 X 型的 next-key lock,那么另外一个事务在获取相同范围的 X 型的 next-key lock 时,是会被阻塞的。
插入意向锁,一个事务在插入一条记录的时候,需要判断插入位置是否已被其他事务加了间隙锁(next-key lock 也包含间隙锁)。如果有的话, 插入操作就会发生阻塞 ,直到拥有间隙锁的那个事务提交为止(释放间隙锁的时刻),在此期间会生成一个 插入意向锁 ,表明有事务想在某个区间插入新记录,但是现在处于等待状态。 它并不是意向锁,它是一种特殊的间隙锁,属于行级别锁。可以看成一种特殊的间隙锁。

2、MySQL是怎么加锁的?

对记录加锁时, 加锁的基本单位是 next-key lock ,它是由 记录锁和间隙锁 组合而成的, next-key lock 是前开后闭区间 而间隙锁是前开后开区间。
但是, next-key lock 在一些场景下会退化成记录锁或间隙锁。
唯一索引等值查询
当查询的记录是存在的,在用「唯一索引等值进行查询」时,next-key lock 会退化成「记录锁」。
当查询的记录是不存在的,在用「唯一索引等值进行查询」时,next-key lock 会退化成「间隙锁」。
唯一索引范围查询
先生成next-key lock,再看是否退化。
非唯一索引等值查询
当查询的记录存在时,除了会加 next-key lock 外,还额外加间隙锁,也就是会加两把锁。
当查询的记录不存在时,只会加 next-key lock,然后会退化为间隙锁,也就是只会加一把锁。
非唯一索引范围查询
生成next-key lock,并且不会退化。
非唯一索引和主键索引的范围查询的加锁规则不同之处在于:
唯一索引在满足一些条件的时候,next-key lock 退化为间隙锁和记录锁。
非唯一索引范围查询,next-key lock 不会退化为间隙锁和记录锁。

3、update没加索引会锁全表吗?

当在数据量非常大的数据库表执行 update 语句时,如果没有使用索引,就会给全表的加上 next-key 锁, 那么锁就会持续很长一段时间,直到事务结束,而这期间除了 select ... from语句,其他语句都会被锁住不能执行,业务会因此停滞。
但并不是update 语句的 where 带上索引就能避免全表记录加锁,关键还得看这条语句在执行过程种,优化器最终选择的是索引扫描,还是全表扫描,如果走了全表扫描,就会对全表的记录加锁了。

4、MySQL死锁了,怎么办?

死锁的四个必要条件: 互斥、占有且等待、不可强占用、循环等待 。只要系统发生死锁,这些条件必然成立,但是只要破坏任意一个条件就死锁就不会成立。
在数据库层面,有两种策略通过「打破循环等待条件」来解除死锁状态:
设置事务等待锁的超时时间。当一个事务的等待时间超过该值后,就对这个事务进行回滚,于是锁就释放了,另一个事务就可以继续执行了。在 InnoDB 中,参数 innodb_lock_wait_timeout 是用来设置超时时间的,默认值时 50 秒。
开启主动死锁检测 。主动死锁检测在发现死锁后,主动回滚死锁链条中的某一个事务,让其他事务得以继续执行。将参数  innodb_deadlock_detect  设置为 on,表示开启这个逻辑,默认就开启。
上面这个两种策略是「当有死锁发生时」的避免方式。
我们可以回归业务的角度来预防死锁,对订单做幂等性校验的目的是为了保证不会出现重复的订单,那我们可以直接将 order_no 字段设置为唯一索引列,利用它的唯一下来保证订单表不会出现重复的订单,不过有一点不好的地方就是在我们插入一个已经存在的订单记录时就会抛出异常。

5、表级锁和行级锁有什么区别?

MyISAM 仅仅支持表级锁(table-level locking),一锁就锁整张表,这在并发写的情况下性非常差。InnoDB 不光支持表级锁(table-level locking),还支持行级锁(row-level locking),默认为行级锁。
行级锁的粒度更小,仅对相关的记录上锁即可(对一行或者多行记录加锁),所以对于并发写入操作来说, InnoDB 的性能更高。
表级锁和行级锁对比
  • 表级锁: MySQL 中锁定粒度最大的一种锁(全局锁除外),是针对非索引字段加的锁,对当前操作的整张表加锁,实现简单,资源消耗也比较少,加锁快,不会出现死锁。不过,触发锁冲突的概率最高,高并发下效率极低。表级锁和存储引擎无关,MyISAM 和 InnoDB 引擎都支持表级锁。
  • 行级锁: MySQL 中锁定粒度最小的一种锁,是 针对索引字段加的锁 ,只针对当前操作的行记录进行加锁。 行级锁能大大减少数据库操作的冲突。其加锁粒度最小,并发度高,但加锁的开销也最大,加锁慢,会出现死锁。行级锁和存储引擎有关,是在存储引擎层面实现的。

6、共享锁和排他锁?

不论是表级锁还是行级锁,都存在共享锁(Share Lock,S 锁)和排他锁(Exclusive Lock,X 锁)这两类:
  • 共享锁(S 锁):又称读锁,事务在读取记录的时候获取共享锁,允许多个事务同时获取(锁兼容)。
  • 排他锁(X 锁):又称写锁/独占锁,事务在修改记录的时候获取排他锁,不允许多个事务同时获取。如果一个记录已经被加了排他锁,那其他事务不能再对这条事务加任何类型的锁(锁不兼容)。
排他锁与任何的锁都不兼容,共享锁仅和共享锁兼容。
由于 MVCC 的存在,对于一般的  SELECT  语句,InnoDB 不会加任何锁。不过, 你可以通过以下语句显式加共享锁或排他锁。

7、意向锁有什么作用呢?

如果需要用到表锁的话,如何判断表中的记录没有行锁呢,一行一行遍历肯定是不行,性能太差。我们需要用到一个叫做意向锁的东东来快速判断是否可以对某个表使用表锁。
意向锁是表级锁,共有两种:
  • 意向共享锁(Intention Shared Lock,IS 锁):事务有意向对表中的某些记录加共享锁(S 锁),加共享锁前必须先取得该表的 IS 锁。
  • 意向排他锁(Intention Exclusive Lock,IX 锁):事务有意向对表中的某些记录加排他锁(X 锁),加排他锁之前必须先取得该表的 IX 锁。
意向锁是由数据引擎自己维护的,用户无法手动操作意向锁,在为数据行加共享/排他锁之前,InnoDB 会先获取该数据行所在在数据表的对应意向锁。
意向锁之间是互相兼容的。
意向锁和共享锁和排它锁互斥(这里指的是表级别的共享锁和排他锁,意向锁不会与行级的共享锁和排他锁互斥)。

8、当前读和快照读有什么区别?

快照读 (一致性非锁定读)就是单纯的  SELECT  语句,但不包括下面这两类  SELECT  语句:
SELECT ... FOR UPDATE   
SELECT ... LOCK IN SHARE MODE
快照即记录的历史版本,每行记录可能存在多个历史版本(多版本技术)。
快照读的情况下,如果读取的记录正在执行 UPDATE/DELETE 操作,读取操作不会因此去等待记录上 X 锁的释放,而是会去读取行的一个快照
只有在事务隔离级别 RC(读取已提交) 和 RR(可重读)下,InnoDB 才会使用一致性非锁定读:
  • 在 RC 级别下,对于快照数据,一致性非锁定读总是读取被锁定行的最新一份快照数据。
  • 在 RR 级别下,对于快照数据,一致性非锁定读总是读取本事务开始时的行数据版本。
快照读比较适合对于数据一致性要求不是特别高且追求极致性能的业务场景。
当前读 (一致性锁定读)就是给行记录加 X 锁或 S 锁。
当前读的一些常见 SQL 语句类型如下:

相关文章:

MySQL数据库(锁)

1、MySQL有哪些锁? 全局锁:flush tables with read lock 执行以下语句之后,使用全局锁,整个数据库就处于只读状态了,这时其他线程执行对数据的增删改或者对表结构的更改操作操作,都会被阻塞。 全局锁的应…...

Mac Android studio 升级LadyBug 版本,所产生的bug

当Build 出现,这样的文字以后: Your build is currently configured to use incompatible Java 21.0.3 and Gradle 7.3.3. Cannot sync the project. We recommend upgrading to Gradle version 8.9. The minimum compatible Gradle version is 8.5. …...

springboot/ssm社区助老志愿者服务平台Java代码编写web志愿捐赠活动项目

springboot/ssm社区助老志愿者服务平台Java代码编写web志愿捐赠活动项目 基于springboot(可改ssm)vue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库&am…...

基于Java+Jsp Servlet Mysql实现的Java Web在线商城项目系统设计与实现

一、前言介绍: 1.1 项目摘要 随着互联网技术的飞速发展,电子商务已成为现代商业活动的重要组成部分。在线商城作为电子商务的一种重要形式,以其便捷性、高效性和广泛覆盖性,受到了越来越多消费者的青睐。同时,随着消…...

安装K8s集群

文章首发于我的博客 :https://blog.liuzijian.com/post/9aa6d426-a01c-05b0-6f7a-5da4343f0f9e.html 因阿里云加速服务调整,镜像加速服务自2024年7月起不再支持,拉取镜像,下载网络插件等操作,需要科学上网访问DockerHu…...

【数据科学导论】第一二章·大数据与数据表示与存储

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀数据处理与分析_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言…...

LabVIEW数字式气压计自动检定系统

开发了一个基于LabVIEW开发的数字式气压计自动检定系统。在自动化检定PTB220和PTB210系列数字气压计,通过优化硬件组成和软件设计,实现高效率和高准确度的检定工作,有效降低人力成本并提升操作准确性。 项目背景 随着自动气象站的广泛部署&a…...

按行分割文本函数(C++)

文本分割函数SplitText2Line解析 以下是对SplitText2Line函数的详细介绍&#xff1a; void SplitText2Line(s8* strText, std::vector<std::string>& vecStrLines) {// 1. 清空存储结果的向量vecStrLines.clear();// 2. 打印原始文本信息&#xff08;用于调试目的&…...

要查询 `user` 表中 `we_chat_subscribe` 和 `we_chat_union_id` 列不为空的用户数量

文章目录 1、we_chat_subscribe2、we_chat_union_id 1、we_chat_subscribe 要查询 user 表中 we_chat_subscribe 列不为空的用户数量&#xff0c;你可以使用以下 SQL 查询语句&#xff1a; SELECT COUNT(*) FROM user WHERE we_chat_subscribe IS NOT NULL;解释&#xff1a; …...

【C语言程序设计——选择结构程序设计】预测你的身高(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 1、输入数值 2、选择结构语句 3、计算结果并输出 编程要求 测试说明 通关代码 测试结果 任务描述 本关任务&#xff1a;编写一个程序&#xff0c;该程序需输入个人数据&#xff0c;进而预测其成年后的身高。 相关知识 为了完成本…...

使用Excel制作通达信自定义外部数据,安排!!!

Excel相信大家电脑上都有这个工具&#xff0c;相比敲编程代码&#xff0c;用这个去做自定义数据对大多数人&#xff0c;应该是比较友好的。自定义数据分为外部序列数据&#xff0c;看了一下内容理解起来比较多&#xff0c;分两期给大家介绍。为了照顾电脑基础薄弱的朋友&#x…...

阿里云镜像服务使用指南

阿里云容器镜像服务ACR&#xff08;Alibaba Cloud Container Registry&#xff09;是面向容器镜像、Helm Chart等符合OCI标准云原生制品安全托管及高效分发平台。ACR企业版支持全球同步加速、大规模和大镜像分发加速、多代码源构建加速等全链路加速能力&#xff0c;与容器服务A…...

adb无法连接到安卓设备【解决方案】报错:adb server version (40) doesn‘t match this client (41);

下载老版本Platformtools​​​​​​​​​​​​​​https://dl.google.com/android/repository/platform-tools_r28.0.2-windows.zip?hlzh-cn 替换原来的platform-tools文件夹即可。 问题原因分析&#xff1a;电脑端adb client版本&#xff08;41&#xff09;和安卓端adb …...

WPF TextBox 输入限制 详解

总目录 前言 通常对于WPF输入框 输入的控制无非以下方式 1 直接禁止输入(包括粘贴) 不符合要求的字符 如只可输入数字的输入框&#xff0c;当你输入字母的时候是无法输入的 2 输入后&#xff0c;校验内容是否符合要求&#xff0c;然后提示错误&#xff0c;禁止提交信息 如只可…...

安装Visual studio2022后,没法新建.net 4.5.2的项目

在Visual Studio 2022中无法新建.NET Framework 4.5.2的项目&#xff0c;通常是因为Visual Studio 2022默认不再支持较旧的.NET Framework版本&#xff0c;如4.5或4.5.2。不过&#xff0c;你可以通过一些手动步骤来使Visual Studio 2022支持.NET Framework 4.5.2项目。以下是一…...

【读书笔记】《论语别裁》孝道是这样一个东西

一、内容摘要 本章通过比较人类与其他动物的生存方式&#xff0c;探讨了孝道和人文文化的重要性。作者提到&#xff0c;在自然界中&#xff0c;所有生物都在为自身生存而努力&#xff0c;动物之间的亲子关系如母鸡保护小鸡体现了母性的重要性。虽然人类在外表上与动物无异&…...

【magic-dash】01:magic-dash创建单页面应用及二次开发

文章目录 一、magic-dash是什么1.1 安装1.2 使用1.2.1 查看内置项目模板1.2.2 生成指定项目模板1.2.3 查看当前magic-dash版本1.2.4 查看命令说明1.2.5 内置模板列表二、创建虚拟环境并安装magic-dash三、magic-dash单页工具应用开发3.1 创建单页面项目3.1.1 使用命令行创建单页…...

Python编程构建动态的圣诞画面

Python编程构建动态的圣诞画面 引言 今天是圣诞节&#xff0c;空气中弥漫着节日的气息。让我们利用Python编程技能&#xff0c;为我们的屏幕带来一丝节日的温暖。本文将引导你通过Python代码创建一个动态的圣诞场景&#xff0c;包括闪烁的圣诞树和房屋画面&#xff0c;所有这…...

2025年创业投资前瞻:AI、可持续发展与基础设施建设的深度整合

随着科技的进步和社会需求的变化,2025年的创业环境将更加复杂且充满机遇。本篇文章旨在为寻求在这一关键时期启动或扩展业务的企业家提供一份详尽的投资指南,聚焦于人工智能(AI)、可持续发展和基础设施建设三大核心领域。 1. 智能政府与公民服务 自动化行政流程:通过引入…...

vulnhub靶场-matrix-breakout-2-morpheus攻略(截止至获取shell)

扫描出ip为192.168.121.161 访问该ip&#xff0c;发现只是一个静态页面什么也没有 使用dir dirsearch 御剑都只能扫描到/robots.txt /server-status 两个页面&#xff0c;前者提示我们什么也没有&#xff0c;后面两个没有权限访问 扫描端口&#xff0c;存在81端口 访问&#x…...

C++软件设计模式之类型模式和对象型模式

在 C 软件设计模式中&#xff0c;通常将设计模式分为两大类&#xff1a;类型模式&#xff08;Type Patterns&#xff09;和对象型模式&#xff08;Object Patterns&#xff09;。这两种模式在实现和应用上有不同的特点和目的。 类型模式&#xff08;Type Patterns&#xff09;…...

Oracle、ACCSEE与TDMS的区别

Oracle、ACCSEE和TDMS都是不同类型的数据管理和存储工具&#xff0c;它们各自有独特的用途、结构和复杂性。Oracle是一个功能强大的关系型数据库管理系统&#xff0c;适用于大规模企业级应用&#xff0c;支持复杂查询和事务管理。ACCSEE主要应用于实时数据采集和过程监控&#…...

视频监控平台:Liveweb视频汇聚融合平台智慧安防视频监控应用方案

Liveweb是一款功能强大、灵活部署的安防视频监控平台&#xff0c;支持多种主流标准协议&#xff0c;包括GB28181、RTSP/Onvif、RTMP等&#xff0c;同时兼容海康Ehome、海大宇等厂家的私有协议和SDK接入。该平台不仅提供传统安防监控功能&#xff0c;还支持接入AI智能分析&#…...

【ES6复习笔记】箭头函数(5)

简介 本教程将介绍如何在 JavaScript 中使用箭头函数&#xff0c;包括箭头函数的基本语法、特点以及在实际开发中的应用。通过本教程&#xff0c;你将学会如何使用箭头函数来简化代码&#xff0c;提高代码的可读性和简洁性。 箭头函数的基本语法 箭头函数是 ES6 引入的一种新…...

数字IC前端学习笔记:脉动阵列的设计方法学(四)

相关阅读 数字IC前端https://blog.csdn.net/weixin_45791458/category_12173698.html?spm1001.2014.3001.5482 引言 脉动结构&#xff08;也称为脉动阵列&#xff09;表示一种有节奏地计算并通过系统传输数据的处理单元(PEs)网络。这些处理单元有规律地泵入泵出数据以保持规则…...

基于web的音乐网站(Java+SpringBoot+Mysql)

目录 1系统概述 1.1 研究背景 1.2研究目的 1.3系统设计思想 2相关技术 2.1?MYSQL数据库 2.2?B/S结构 2.3?Spring Boot框架简介 3系统分析 3.1可行性分析 3.1.1技术可行性 3.1.2经济可行性 3.1.3操作可行性 3.2系统性能分析 3.2.1 系统安全性 3.2.2 数据完整…...

从 GitLab.com 到 JihuLab.com 的迁移指南

本文分享从 GitLab.com 到 JihuLab.com 的迁移指南。 近期&#xff0c;GitLab Inc. 针对其 SaaS 产品做了限制&#xff0c;如果被判定为国内用户&#xff0c;则会建议使用其在国内的发布版本极狐GitLab。从 GitLab SaaS 产品&#xff08;GitLab.com&#xff09;迁移到极狐GitL…...

纯真社区版IP库CZDB数据格式使用教程

1. 概述 纯真社区版IP库是一种免费且公开的IP地理位置数据库&#xff0c;主要面向非商业用途。其最新推出的CZDB格式是一种全新的数据文件格式&#xff0c;自2024年10月起将成为官方维护和更新的唯一版本。该格式支持同时存储IPv4和IPv6地址信息&#xff0c;具备以下优点&…...

go window安装protoc protoc生成protobuf文件

1. 下载&#xff1a; Releases protocolbuffers/protobuf GitHub 2. 解压缩&#xff1a; 3. 配置环境变量&#xff1a; 选择系统变量->Path -> 新增 解压缩后的bin路径 4. 打印版本&#xff1a; protoc --version 5. 安装protoc-gen-go cmd 下输入安装命令&#xff0…...

ChildLife“童年时光杯”足球联赛启动 共促青少年健康成长

2024年12月21日至22日&#xff0c;由美国知名婴幼儿营养品牌ChildLife童年时光赞助的“童年时光杯”青少年足球联赛将在上海拉开帷幕。本次赛事U7/U8组别共有16支足球队参赛&#xff0c;包括上海幸运星足球俱乐部旗下的明星球队&#xff0c;以及其他青少年俱乐部的优秀队伍&…...

Erlang语言的数据结构

题目&#xff1a;Erlang数据结构&#xff1a;构建高效并发世界的基石 一、引言 在编程世界中&#xff0c;数据结构是组织和管理数据的关键工具&#xff0c;它不仅影响着程序的效率&#xff0c;还直接关系到代码的可读性和可维护性。Erlang&#xff0c;这门为高并发、容错性设…...

宏定义介绍

假设我们有以下代码&#xff1a; LOG_INFO("rkipc_ini_path_ is %s, rkipc_iq_file_path_ is %s, rkipc_log_level is %d\n",rkipc_ini_path_, rkipc_iq_file_path_, rkipc_log_level);1. LOG_INFO 宏定义 根据之前的 LOG_INFO 宏定义&#xff1a; #define LOG_IN…...

攻防世界 - Web - Level 1 unseping

关注这个靶场的其它相关笔记&#xff1a;攻防世界&#xff08;XCTF&#xff09; —— 靶场笔记合集-CSDN博客 0x01&#xff1a;Write UP 本关是一个 PHP 代码审计关卡&#xff0c;考察的是 PHP 反序列化漏洞以及命令执行的一些绕过手段&#xff0c;下面笔者将带你一步步过关。…...

【ES6复习笔记】ES6的模块化(18)

模块化的概念 模块化是指将一个复杂的系统分解为多个模块&#xff0c;每个模块完成一个特定的功能&#xff0c;模块之间通过接口进行通信。模块化的目的是提高代码的可读性、可维护性和可重用性。 模块化规范产品&#xff0c; ES6 之前的模块化规范有&#xff1a; CommonJS …...

[项目][boost搜索引擎#4] cpp-httplib使用 log.hpp 前端 测试及总结

目录 编写http_server模块 1. 引入cpp-httplib到项目中 2. cpp-httplib的使用介绍 3. 正式编写http_server 九、添加日志到项目中 十、编写前端模块 十一. 详解传 gitee 十二、项目总结 项目的扩展 写在前面 [项目详解][boost搜索引擎#1] 概述 | 去标签 | 数据清洗 |…...

vue3入门教程:计算属性

计算属性的基本用法 计算属性是通过computed函数创建的&#xff0c;它接受一个getter函数作为参数&#xff0c;并返回一个只读的响应式ref对象。该ref对象通过.value属性暴露getter函数的返回值。 <template><div><p>原始数据: {{ count }}</p><p…...

Linux大数据方向shell

一、概述 shell是一个命令行解释器&#xff0c;它接收应用程序/用户命令&#xff0c;然后调用操作系统内核&#xff0c;还是一个功能相当强大的编程语言&#xff0c;易编写&#xff0c;易调试&#xff0c;灵活性强。 二、shell入门 1.输出hello world touch helloworld.sh&…...

深度学习blog-卷积神经网络(CNN)

卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;是一种广泛应用于计算机视觉领域&#xff0c;如图像分类、目标检测和图像分割等任务中的深度学习模型。 1. 结构 卷积神经网络一般由以下几个主要层组成&#xff1a; 输入层&#xff1a;接收…...

Unity3D如何优化物理模拟?

在Unity3D中优化物理模拟可以显著提高游戏的性能和稳定性。以下是一些常见的优化策略&#xff1a; 1. 调整物理引擎设置 物理时间步长&#xff08;Physics Time Step&#xff09;&#xff1a;这是物理引擎每次更新的时间间隔。较小的值可以提高物理模拟的精度&#xff0c;但会…...

C项目 天天酷跑(下篇)

上篇再博客里面有&#xff0c;接下来我们实现我们剩下要实现的功能 文章目录 碰撞检测 血条的实现 积分计数器 前言 我们现在要继续优化我们的程序才可以使这个程序更加的全面 碰撞的检测 定义全局变量 实现全局变量 void checkHit() {for (int i 0; i < OBSTACLE_C…...

认识Python语言

Python背景介绍 Python的作者是荷兰人 Guido van Rossum&#xff08;龟叔&#xff09;Python正是诞生于1991年Python目前有两个版本&#xff0c;Python2和Python3 代码不完全兼容源文件.py文件名后缀Python的解释如今有多个语言实现&#xff0c;我们常用的是Cpython或者IPytho…...

Python——day09

os模块 sys模块 time模块 logging模块...

机器视觉检测相机基础知识 | 颜色 | 光源 | 镜头 | 分辨率 / 精度 / 公差

注&#xff1a;本文为 “keyence 视觉沙龙中机器视觉检测基础知识” 文章合辑。 机器视觉检测基础知识&#xff08;一&#xff09;颜色篇 视觉检测硬件构成的基本部分包括&#xff1a;处理器、相机、镜头、光源。 其中&#xff0c;和光源相关的最重要的两个参数就是光源颜色和…...

在 CentOS 系统上安装 ClickHouse

在 CentOS 系统上安装 ClickHouse 数据库相对简单&#xff0c;可以通过官方提供的安装包来进行。以下是详细的安装步骤。 1. 更新系统 首先&#xff0c;确保你的系统是最新的&#xff0c;更新软件包和系统库&#xff1a; sudo yum update -y2. 安装依赖库 ClickHouse 需要一…...

FreeSql

官网 1、安装包 Install-Package FreeSql Install-Package FreeSql.Provider.SqlServer2、Program.cs 文件 using FreeSql; using Microsoft.OpenApi.Models; using System.Configuration;var builder WebApplication.CreateBuilder(args);builder.Services.AddController…...

webpakc介绍

介绍 因为不确定打出的前端包所访问的后端IP&#xff0c;需要对项目中IP配置文件单独拿出来&#xff0c;方便运维部署的时候对IP做修改。 因此&#xff0c;需要用webpack单独打包指定文件。 CommonsChunkPlugin module.exports {entry: {app: APP_FILE // 入口文件},outpu…...

自然语言处理基础

目录 一&#xff1a;文本表示 1&#xff1a;词的独热表示 2&#xff1a;词的分布式表示 &#xff08;1&#xff09;最初分布式表示 &#xff08;2&#xff09;&#xff1a;点互信息&#xff08;PMI&#xff09; &#xff08;3&#xff09;奇异值分解&#xff08;SVD&…...

创新引领,从零到一:陶氏减速机在高精密领域的深耕与突破

在高精密机械传动中&#xff0c;陶氏智能正以一款革命性的“第四类”减速机——环面包络多齿啮合减速机&#xff0c;书写着属于自己的传奇篇章。这款减速机不仅代表了技术的飞跃&#xff0c;更是对传统工业自动化领域的一次深刻革新&#xff0c;其影响力横跨航天航空、工业机器…...

神经网络-VggNet

2014年VggNet被推出&#xff0c;获取了ILSVRC2014比赛分类项目的第二名&#xff0c;第一名是GoogleNet&#xff0c;该网络在下节介绍&#xff0c;本节主要介绍VggNet。 VggNet可以称为是一个家族&#xff0c;根据层数的不同包括了A、A-LRN、B、C、D等网络结构&#xff0c;其中…...

服务器数据恢复—Lustre分布式文件系统下服务器节点进水的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 5台节点服务器&#xff0c;每台节点服务器上有一组RAID5阵列。每组RAID5阵列上有6块硬盘&#xff08;其中1块硬盘设置为热备盘&#xff0c;其他5块硬盘为数据盘&#xff09;。上层系统环境为Lustre分布式文件系统。 机房天花板漏水导致…...