严格锁和乐观锁

2024-06-15 11:28
文章标签 乐观 严格

本文主要是介绍严格锁和乐观锁,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

严格锁和乐观锁

严格锁

含义

  • 当一个开发者正在编辑某个文件时,其他开发者将无法同时对该文件进行编辑。确保在某一时刻只有一个开发者能够访问和修改该文件
  • 严格锁机制通常用于那些需要高度一致性和准确性的场景,例如配置文件、数据库脚本等

示例

假设我在同一段时间内后台只允许一次将数据提交给数据库,那么可以在redis配置一个10秒后自动过期的值,如果请求访问时redis值存在,则返回False并报错状态码,反之存入数据并设置redis锁

乐观锁

含义

  • 严格锁不同,它基于一个假定:大多数时候,并发修改不会引起冲突。因此,它允许多个开发者同时修改同一文件
  • 当一个开发者尝试提交修改时,Git会检查该文件是否自上次获取后已被其他开发者修改。如果该文件在此期间未被其他开发者修改,则提交成功;否则,会提示冲突并需要开发者手动解决

示例

依旧是一个数据库,存储数据时需要提交版本号,每次提交版本号都+1然后返回给前端,如果两个相同版本号的数据同时提交到数据库那么只能有一个提交成功

区别

他和严格锁的区别本身并不在于锁,而是在于上锁的方式,严格锁相当于在那10秒内门都是不会打开的,但是乐观锁只要你携带的参数正确那么就可以开门

这篇关于严格锁和乐观锁的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1063315

相关文章

MySQL 如何实现乐观锁?

MySQL 如何实现乐观锁? 可以基于版本号实现乐观锁,修改数据的时候带上版本号(或者时间戳): UPDATE student SET name = '小李', version = 2 WHERE id = 100 AND version = 1 在每次数据更新的时候,都带上版本号,同时将版本 + 1,比如现在要更新 id = 1,版本号为 2 的记录,这时候就要先获取 id = 1的

面试官问:说说悲观锁、乐观锁、分布式锁?都在什么场景下使用?有什么技巧?...

点击上方“朱小厮的博客”,选择“设为星标” 后台回复"书",获取 后台回复“k8s”,可领取k8s资料 如何确保一个方法,或者一块代码在高并发情况下,同一时间只能被一个线程执行,单体应用可以使用并发处理相关的 API 进行控制,但单体应用架构演变为分布式微服务架构后,跨进程的实例部署,显然就没办法通过应用层锁的机制来控制并发了。 那么锁都有哪些类型,为什么要使用锁,锁的使用场景有哪些? 锁类别

MySQL 如何使用乐观锁和悲观锁

首先要说明的是:乐观锁和悲观锁并不是锁,而是锁的设计思想。 在 MySQL 中,乐观锁和悲观锁是两种用于解决数据库并发问题的机制。 悲观锁 悲观锁是指在访问数据时,认为数据会被其他事务修改,因此会采取锁定数据的方式来防止其他事务的修改。使用悲观锁时,一旦一个事务获取了锁,其他事务必须等待,直到第一个事务释放锁为止。 在 MySQL 中,悲观锁通常通过以下两种方式实现: SELECT … F

Mybatis Plus乐观锁实现

1 引言 乐观锁的主要作用在于提高系统的并发性能和减少锁冲突,同时保证数据的一致性。‌其原理简单来说就是,在修改数据的时候,判断数据是否被其他人改过,如果已被其他人改过,则修改失败。 2 代码 在SpringBoot 3.x+Mybatis Plus多数据源极简配置中的项目基础上更新代码,下面列出需要更新的代码。 2.1 org/example/mapper/InventoryMappe

【Hibernate】Hibernate对“悲观”和“乐观”锁的支持

首先,“锁”这个东西,可以认为是一种思想,悲观锁还是乐观锁,是人定义出来的一种概念,并非理解为DBMS的专属。换个称呼,叫做“悲观并发控制”或者“乐观并发控制”更便于我们理解二者的意义。          一、概念        ----(该部分内容来源于网络:http://www.open-open.com/lib/view/open1452046967245.html

Redis中事务与乐观锁

1. Redis中的事务 Redis中的事务类似于关系型数据库中的事务,但其功能相对较轻量。事务通过以下命令组合实现: MULTI:标记一个事务的开始。多条命令:在MULTI之后的所有命令会被放入一个队列中,但不会立即执行。EXEC:执行事务队列中的所有命令。DISCARD:取消事务,丢弃队列中的所有命令。 事务的特点: 原子性:事务中的命令要么全部执行,要么全部不执行。当使用EXEC命令

以谨慎乐观的态度拥抱AI——Google DeepMind CEO Demis Hassabis访谈精华

随着人工智能(AI)技术的迅猛发展,越来越多的专家和公众开始关注其带来的潜在影响。Google DeepMind 的首席执行官 Demis Hassabis 在最近的一次访谈中分享了他的见解,强调了我们应该以“谨慎乐观”的态度来面对 AI 的未来发展。本文将概述 Hassabis 的主要观点,并探讨 AI 的现状、挑战及其在社会中的应用前景。 AI 的现状与挑战 Hassabis 指出,尽管当

乐观锁和悲观锁——独占锁和共享锁

乐观锁和悲观锁:数据库的锁机制 在数据库管理系统中的并发控制是为了确保多个事务之间同时读取数据库中同一个数据时,不破坏事务的隔离性和统一性以及数据库的统一性。实现并发控制的手段大致可以分为乐观并发控制和悲观并发控制。 悲观锁:每次去拿数据的时候,都默认别人会修改这个数据,所以都会上锁,这样就会阻止其他人修改该数据,直至锁被释放。乐观锁:每次去拿数据的时候,都默认别人不会修改这个数据,所以不会上锁

马云都说不要周报了,那互联网公司是否需要执行严格的考勤制度?

从整个行业部来看,互联网行业普遍都是实行的弹性考勤制度,就阿里而言采用的是弹性且无打卡。阿里的同学对时间的规划还是挺合理的,但是在内部的部门有领导会强调一般不迟于10:00,签完加班很晚可以晚于10:00。这样人员的及i集性也很高,加班都是自主的。          有的企业严格考勤9点,没有任何弹性,理由是CEO看到研发人员来的晚,和以前金融企业的作息不符,然后强制改外9点。

最长的严格递增或递减子数组

给你一个整数数组 nums 。 返回数组 nums 中  严格递增 或 严格递减 的最长非空子数组的长度。  示例 1: 输入:nums = [1,4,3,3,2] 输出:2 解释: nums 中严格递增的子数组有[1]、[2]、[3]、[3]、[4] 以及 [1,4] 。 nums 中严格递减的子数组有[1]、[2]、[3]、[3]、[4]、[3,2] 以及 [4,3] 。 因