如何通过单纯加锁实现RC隔离级别的隔离效果? 对InnoDB引擎下的mysql数据库支持行级锁,通过对事务访问时增加排他锁(X锁)可以防止其他事务的访问,只有在该事务锁提交也就是commit后才可以访问,避免脏读产生。但是在多读的场景下,一个事务假如在进行update操作,后面有许多请求都想要单纯进 ...
分类:
Web程序 时间:
2020-03-28 13:46:30
阅读次数:
283
一、锁的作用 锁的作用是:使进程产生同步,确保数据的一致性。 二、线程安全和非线程安全 a = 1 ,两个线程分别给a加一次1,理想结果是 a = 3(线程安全) 如果两个线程同时拿到a=1的状态,分别加上1,那么a = 2(非线程安全) 非线程安全转换为线程安全时,就需要在非线程安全上加上锁 三、 ...
分类:
编程语言 时间:
2020-03-27 21:28:00
阅读次数:
56
Go 语言锁机制 Go 语言互斥锁 Go语言的sync包中实现了两种锁 Mutex (互斥锁)和 RWMutex (读写锁),其中 RWMutex 是基于 Mutex 实现的,只读锁的实现使用类似引用计数器的功能。 互斥锁 Mutex 是互斥锁,有 Lock()加锁、Unlock()解锁两个方法,使 ...
分类:
编程语言 时间:
2020-03-27 10:54:44
阅读次数:
78
并发控制 并发情况下,需要做一些控制(一般是加锁),保证共享数据的一致性。 并发操作数据库时,需要给数据库中的数据加锁,确保数据库中数据的一致性。 数据库锁的常见分类 按使用方式来分:悲观锁、乐观锁 按锁级别来分:共享锁、排它锁(主要是这2种,当然还有其他的) 按锁粒度来分:行级锁、表级锁、页级锁 ...
分类:
数据库 时间:
2020-03-25 21:47:21
阅读次数:
82
1. 关系型数据库与非关系型数据库 关系型数据库 优点:① 数据一致性高,冗余低,数据完整性好,便于操作 ② 逻辑类似于二维表格模型,容易理解 ③ 使用方便, 使用sql语句 缺点:① 每次操作要进行sql解析,消耗大 ② 不能满足高并发读写需求,特别是海量数据爆发时,关系型数据库的读写能力不足 ③ ...
分类:
数据库 时间:
2020-03-24 21:46:26
阅读次数:
79
你需要知道的之前我们介绍了排他锁,其实innodb下的记录锁(也叫行锁),间隙锁,next-key锁统统属于排他锁。 行锁记录锁其实很好理解,对表中的记录加锁,叫做记录锁,简称行锁。 生活中的间隙锁编程的思想源于生活,生活中的例子能帮助我们更好的理解一些编程中的思想。生活中排队的场景,小明,小红,小 ...
分类:
数据库 时间:
2020-03-24 17:22:18
阅读次数:
69
1. 加锁的原理- 原子操作、中断、test and set 参考:https://blog.csdn.net/qq_35181209/article/details/78026636 TSL-自旋锁的机制分析:https://blog.csdn.net/u011240016/article/det ...
分类:
其他好文 时间:
2020-03-23 15:09:44
阅读次数:
111
前言 前面已经写了Redisson大多的内容,我们再看看Redisson官网共有哪些组件: image.png 剩下还有Semaphore和CountDownLatch两块,我们就趁热打铁,赶紧看看Redisson是如何实现的吧。 我们在JDK中都知道Semaphore和CountDownLatch ...
分类:
其他好文 时间:
2020-03-23 11:29:23
阅读次数:
73
1.简介 可重入锁ReentrantLock自 JDK 1.5 被引入,功能上与synchronized关键字类似。所谓的可重入是指,线程可对同一把锁进行重复加锁,而不会被阻塞住,这样可避免死锁的产生。ReentrantLock 的主要功能和 synchronized 关键字一致,均是用于多线程的同 ...
分类:
编程语言 时间:
2020-03-22 19:24:01
阅读次数:
85
读了本文,你会知道,为什么不加volatile关键字的单例模式不是线程安全的 有经验的开发者都知道双重锁定检查(DCL,Double Check Lock)的单例是最优秀的,如下文所示: 1 public class Singleton { 2 private static Singleton in ...
分类:
编程语言 时间:
2020-03-22 17:29:48
阅读次数:
80