线程安全 多线程编程中的三个核心概念 1. 原子性:锁(lock)和同步(synchronized)、CAS(compare and swap) 2. 可见性:volatile(乐观锁) 3. 顺序性:happens before原则 参考 "当我们说线程安全时,到底在说什么" "一图带你了解jav ...
分类:
编程语言 时间:
2019-10-29 00:24:53
阅读次数:
98
本篇详解如何使用mysql来实现一个分布式锁,包含详细的设计方案及代码实现,以及分析一下分布式锁中需要注意的问题。 ...
分类:
数据库 时间:
2019-10-28 10:37:58
阅读次数:
112
乐观锁与悲观锁 北京这两天天气不好,时晴时阴,最近有有点累,所以在家里休息了两天,看了一下乐观锁与悲观锁,虽然没有茅塞顿开,但是也有点收获。 先想一想为什么要使用锁? 在用户访问你的网站时,同一时间可能会有多个用户更新相同的记录,这时候他们同时访问数据库,这就会产生冲突,这就是著名的并发(高并发)。 ...
分类:
其他好文 时间:
2019-10-27 01:20:47
阅读次数:
111
分布式锁常见的三种实现方式: 数据库乐观锁; 基于Redis的分布式锁; 基于ZooKeeper的分布式锁。 本地面试考点是,你对Redis使用熟悉吗?Redis中是如何实现分布式锁的。 要点 Redis要实现分布式锁,以下条件应该得到满足 互斥性 在任意时刻,只有一个客户端能持有锁。 在任意时刻, ...
分类:
其他好文 时间:
2019-10-25 13:08:36
阅读次数:
88
1.CountDownLatchCountDownLatch.wait()会使当前线程阻塞,直到CountDownLatch中的计数器递减完毕后继续执行。publicclassCountDownLatchDemo{privatefinalstaticLoggerlog=Logger.getLogger(AtomicIntegerCyclicBarrierDemo.class);publicstat
分类:
编程语言 时间:
2019-10-24 19:31:34
阅读次数:
66
前言 分布式锁一般有三种实现方式: 数据库乐观锁; 基于Redis的分布式锁; 基于ZooKeeper的分布式锁 本篇博客将介绍第二种方式,基于Redis实现分布式锁。 虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正 ...
分类:
编程语言 时间:
2019-10-24 09:48:24
阅读次数:
80
把一个表复制到另一个表 复制表结构:create table newuser like user 导入表数据:insert into newuser select * from user 乐观锁和悲观锁 乐观锁: 首先说明一点的是:乐观锁在数据库上的实现完全是逻辑的,数据库本身不提供支持,而是需要开 ...
分类:
数据库 时间:
2019-10-23 19:45:58
阅读次数:
107
1 首先我们来了解一下 乐观锁与悲观锁的区别 2 3 乐观锁的思路一般是表中增加版本字段,更新时where语句中增加版本的判断,算是一种CAS(Compare And Swep)操作, 4 商品库存场景中number起到了版本控制(相当于version)的作用( AND number=#{numbe... ...
分类:
其他好文 时间:
2019-10-23 13:16:07
阅读次数:
61
场景:两个用户同时读取了数据库中的一条记录,此时用户A对其中一个字段的值进行了修改操作并进行了提交,后来用户B也对这个字段进行了修改,用户B的提交将会覆盖用户A提交的值 参考 ...
分类:
数据库 时间:
2019-10-23 11:27:43
阅读次数:
140
[TOC] 引言:随着金九银十的到来,回首在经历了两周的跳槽求职路后,终于成功拿到offer,距今已经入职快一个月了,因此,这几天抽空将之前的面试题做了个汇总,一方面自己以后回顾学习用,一方面为大家奉送上一份秋收的福利。 JDK jdk1.8版本后的新特性有哪些? 如何避免空指针异常? Dubbo ...
分类:
编程语言 时间:
2019-10-23 09:19:22
阅读次数:
163