乐观锁 乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更新),如果失败则要重复读-比较-写的操作。 ...
分类:
其他好文 时间:
2020-03-02 22:36:07
阅读次数:
64
事务隔离级别 四个级别, 只会?用到读已提交和可重复读这两个 mysql默认为可重复读 更建议使?用 不会加间隙锁(影响并发) 索引没触发, 不会锁表, 只是锁行 不可重复和幻读问题, ?般不需要管, 如果有强?致性要求, 加悲观锁/乐观锁 事务隔离级别指的是在处理同一个数据的多个事务中,一个事务修 ...
分类:
其他好文 时间:
2020-02-29 18:51:56
阅读次数:
70
事务 事务(Transaction),一般是指要做的或所做的事情,这些事情必须全部都完成,或者造成的影响和改变全部都撤销。 四大特性 Java中,事务有四个特性(ACID):原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 ...
分类:
编程语言 时间:
2020-02-29 00:36:54
阅读次数:
64
1、悲观锁: 执行操作前假设当前的操作肯定(或有很大几率)会被打断(悲观)。基于这个假设,我们在做操作前就会把相关资源锁定,不允许自己执行期间有其他操作干扰。Redis不支持悲观锁。Redis 作为缓存服务器使用时,以操作为主,很少写操作,相应的操作被打断的几率较少。不采用悲观锁是为了防止降低性能。 ...
分类:
其他好文 时间:
2020-02-24 18:34:24
阅读次数:
120
常用的分布式锁 一、.基于数据库实现分布式锁 1. 悲观锁 利用select … where … for update 排他锁 注意: 其他附加功能与实现一基本一致,这里需要注意的是“where name=lock ”,name字段必须要走索引,否则会锁表。有些情况下,比如表不大,mysql优化器会 ...
分类:
其他好文 时间:
2020-02-24 09:22:34
阅读次数:
116
整个的体系图 悲观锁,乐观锁 是一个广义概念;体现的是看待线程同步的不同角度。 悲观锁 认为在自己使用数据的时候一定有别的线程来修改数据,在获取数据的时候会先加锁,确保数据不被别的线程修改。 实现:关键字synchronized,接口Lock的实现类 适用场景:写操作多,先加锁可以保证写操作时的数据 ...
分类:
编程语言 时间:
2020-02-20 22:14:44
阅读次数:
64
引言 这部分内容详解线程的同步与互斥,解决线程同步与互斥的主要方式是 CAS、synchronized 和 lock。 CAS 与 ABA 问题 什么是 CAS ? CAS 是乐观锁的一种实现方式,是一种轻量级锁,JUC 中很多工具类的实现都是基于 CAS 的,用于解决线程的同步与互斥。解决线程同步 ...
分类:
编程语言 时间:
2020-02-18 13:21:40
阅读次数:
100
面试官:你了解乐观锁和悲观锁吗? 乐观锁和悲观锁是两种思想,用于解决并发场景下的数据竞争问题。 悲观锁的实现方式是加锁,加锁既可以是对代码块加锁(如Java的synchronized关键字),也可以是对数据加锁(如MySQL中的排它锁)。 乐观锁的实现方式主要有两种: "CAS机制" 和版本号机制, ...
分类:
其他好文 时间:
2020-02-15 15:47:54
阅读次数:
85
第一部分 悲观锁 1 概念(来自百科) 悲观锁,正如其名,它指的是对数据被外界(包括当前系统的其它事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排它性,否则, ...
分类:
数据库 时间:
2020-02-15 13:30:28
阅读次数:
71
数据库锁: 首先引用一张其他博主的图: 下面我就针对这图中的锁逐一进行一下解释: 悲观锁: 数据库总是认为多个数据库并发操作会发生冲突,所以总是要求加锁操作。悲观锁主要表锁、行锁、页锁。 乐观锁: 数据库总是认为多个数据库并发操作不会发生冲突,所以总是不加锁操作。所以在数据进行提交更新的时候,才会正 ...
分类:
数据库 时间:
2020-02-15 13:18:30
阅读次数:
99