乐观锁与悲观锁 概述 乐观锁 总是假设最好的情况,每次去读数据的时候都认为别人不会修改,所以不会上锁, 但是在更新的时候会判断一下在此期间有没有其他线程更新该数据, 可以使用版本号机制和CAS算法实现。 乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库提供的类似于write_conditio ...
分类:
其他好文 时间:
2019-05-18 15:58:01
阅读次数:
134
在日常开发中,尤其是业务开发,少不了利用 Java 对数据库进行基本的增删改查等数据操作,这也是 Java 工程师的必备技能之一。做好数据操作,不仅仅需要对 Java 语言相关框架的掌握,更需要对各种数据库自身体系结构的理解。今天这一讲,作为补充 Java 面试考察知识点的完整性,关于数据库的应用和 ...
分类:
数据库 时间:
2019-05-18 00:32:58
阅读次数:
162
分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。 首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件: 1. 互斥性。在任意时刻,只有一个客户端能持有锁。 ...
分类:
其他好文 时间:
2019-05-16 21:41:59
阅读次数:
627
恢复内容开始 乐观锁:每次去拿数据的时候,都认为别人不会修改,不会加锁,但在更新的时候会去判断一下,此期间别人有没有更新数据,版本号机制和CAS算法就用到乐观锁,参考了https://blog.csdn.net/u011381576/article/details/79922538; 举一个版本号的 ...
分类:
其他好文 时间:
2019-05-11 00:11:56
阅读次数:
235
前言 分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细 ...
分类:
其他好文 时间:
2019-05-08 09:28:29
阅读次数:
87
zookeeperCLI1,查看所有命令启动zookeeper并使用bin目录下的zkCli.sh连接zookeeper服务器,输入任何zookeeper不能识别的命令,zookeeper都会列出所有可供使用的命令:[zk:127.0.0.1:2184(CONNECTED)105]kZooKeeper-serverhost:portcmdargsstatpath[watch]setpathdata
分类:
其他好文 时间:
2019-05-08 00:21:50
阅读次数:
198
什么是原子操作? 原子操作和数据库的ACID有啥关系? AtomicInteger是怎么实现原子操作的? AtomicInteger是有什么缺点? ...
分类:
编程语言 时间:
2019-05-07 01:33:37
阅读次数:
171
首先悲观锁和乐观锁是基于业务逻辑来讲的,他们和数据库的锁是不同的概念,数据库的锁是实现数据库事务的机制。 乐观锁就在并发情况下,避免覆盖更新的一种机制,是程序员自己通过添加一个version字段实现,每次load数据都读出这个字段,在更新的时候比较下这个version字段是否一致而避免覆盖了不同的版 ...
分类:
数据库 时间:
2019-05-06 20:52:48
阅读次数:
161
前言 乐观锁和悲观锁问题,是出现频率比较高的面试题。本文将由浅入深,逐步介绍它们的基本概念、实现方式(含实列)、适用场景,以及可能遇到的问题面试官追问,希望能帮助你打动面试官。 一、基本概念 乐观锁和悲观锁是两种思想,用于解决并发场景下的数据竞争问题。 乐观锁:乐观锁在操作数据时非常乐观、认为别人不 ...
分类:
其他好文 时间:
2019-05-02 19:03:57
阅读次数:
136