
锁
明月(Alioo)
一个在互联网行业浪迹多年的IT民工,集闷骚与博爱于一身,擅长JAVA,喜欢折腾Linux,热衷于研究各类B/S系统。对各类新奇技术保持极大的热情,行迹诡异,早年经常流窜于移动互联网领域,现藏身于朝林阑珊处。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。
展开
-
分布式锁实现方案1、基于Redis的SETNX操作实现的分布式锁
分布式锁实现方案1、基于Redis的SETNX操作实现的分布式锁/** * <pre> * 基于Redis的SETNX操作实现的分布式锁 * </pre> * @author lzc.java@icloud.com * */public class RedisDistributedLock { private Cluster redis; // 锁的名字 priva原创 2017-08-28 14:36:03 · 8295 阅读 · 0 评论 -
并发编程 :Concurrent 用户指南 ( 下 )
并发编程 :Concurrent 用户指南 ( 下 ) 2017-09-04 ImportNew来源:高广超, www.jianshu.com/p/8cb5d816cb69锁 Lockjava.util.concurrent.locks.Lock 是一个类似于 synchronized 块的线程同步机制。但是 Lock 比 synchronized 块更加 灵活、精细。顺便说转载 2018-01-11 13:46:01 · 210 阅读 · 0 评论 -
ReadWriteLock几点特性
ReadWriteLock几点特性readLock 与 readLock 不互斥 readLock 与 writeLock 互斥 writeLock 与 readLock 互斥 writeLock 与 writeLock 互斥举例来说: 线程1, 先拿到readLock, 线程2试图拿readLock, 可以拿到 线程1, 先拿到readLock, 线程2试图原创 2018-01-22 14:25:26 · 313 阅读 · 0 评论 -
分布式锁实现方案2、基于Redis的SET操作实现的分布式锁
继上一篇文章 分布式锁实现方案1、基于Redis的SETNX操作实现的分布式锁 实现方案之后,redis又提供了更加强大的set方法,可以解决分布式锁实现方案1中提到的缺陷,直接看代码package com.alioo.lock;import com.jd.jim.cli.Cluster;import java.util.concurrent.TimeUnit;/** * *原创 2018-01-22 18:24:54 · 803 阅读 · 1 评论 -
第二章 ZAB协议介绍
第二章 ZAB协议介绍 ZAB ( ZooKeeper Atomic Broadcast , ZooKeeper 原子消息广播协议)是zookeeper数据一致性的核心算法。 ZAB 协议并不像 Paxos 算法那样,是一种通用的分布式一致性算法,它是一种特别为 ZooKeeper 设计的崩溃可恢复的原子消息广播算法。 ZAB协议主要实现了: 1.使用一个单一的主进程来接收转载 2018-01-30 10:09:58 · 249 阅读 · 0 评论 -
缓存雪崩,缓存穿透,缓存击穿,解决方案分析
前言设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。缓存雪崩缓存雪崩是指在我们设置缓存时采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬时压力过重雪崩。解决方案缓存失效时的雪崩效应对底层系统的冲击非常可怕。大多数系统设计者考虑用加锁或者队列的方式保证缓存的单线 程(进程)写,从而避免失效时大量的并发请求落到底层存储...转载 2018-03-12 11:53:58 · 316 阅读 · 0 评论 -
一个mysql事务引发的思考(血案)
问题简述大家都知道mysql是支持ACID,支持事务的,事务是非常重要的一个特性,要不都执行成功,要不都不成功。我们在coding时也会大量用到,但是随着业务代码的累加与使用人数的增加,系统有某些场景下会出现下面这个错误11:48:40.265[http-nio-8999-exec-3] ERROR c.x.e.l.c.e.ExceptionHandleFilter - excepti...原创 2018-07-04 20:20:26 · 497 阅读 · 0 评论 -
jdk中synchronized加锁原理以及新版本的优化
java中每个对象都可作为锁,锁有四种级别,按照量级从轻到重分为:无锁、偏向锁、轻量级锁、重量级锁。并且锁只能升级不能降级。在讲这三个锁之前,我先给大家讲清楚自旋和对象头的概念。自旋现在假设有这么一个场景:有两个线程A,B在竞争一个锁,假设A拿到了,这个时候B被挂起阻塞,一直等待A释放了锁 B才得到使用权。在操作系统中阻塞和唤醒是一个耗时操作,如果A在很短的时间内就释放了锁,当这个时间与阻塞...转载 2019-03-27 20:45:55 · 1130 阅读 · 0 评论 -
CAS存在的问题以及解决方案
CAS存在的问题以及解决方案CAS虽然很高效的解决原子操作,但是CAS仍然存在三大问题。ABA问题,循环时间长开销大和只能保证一个共享变量的原子操作ABA问题因为CAS需要在操作值的时候检查下值有没有发生变化,如果没有发生变化则更新,但是如果一个值原来是A,变成了B,又变成了A,那么使用CAS进行检查时会发现它的值没有发生变化,但是实际上却变化了。ABA问题的解决思路就是使用版本号。在变...转载 2019-05-24 17:33:22 · 10543 阅读 · 0 评论