一江溪水
12
30
什么是自旋锁 什么是自旋锁
前言阻塞或唤醒一个Java线程需要操作系统切换CPU状态来完成,这种状态转换需要耗费处理器时间。如果同步代码块中的内容过于简单,状态转换消耗的时间有可能比用户代码执行的时间还要长。 自旋锁在有些场景中,同步资源的锁定时间很短,为了这一小段时
2021-12-30
27
悲观锁VS乐观锁 悲观锁VS乐观锁
前言Java中有很多锁,每种锁因其特性的不同,在适当的场景下的效率也有很大的差别。今天我们对比一下乐观锁和悲观锁,看看他们有什么不同和相同。 乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。在Java和数据库中都有比较广泛的
2021-12-27
26
JDK锁升级过程 JDK锁升级过程
synchronizedJava对象头synchronized是悲观锁,在操作同步资源之前需要给同步资源先加锁,这把锁就是存在Java对象头里的,对象头主要包括两部分数据: Mark Word(标记字段) Klass Pointer(类型
2021-12-26
04
Redis为什么这么快? Redis为什么这么快?
Redis经常被用作做缓存, 一致性要求不高的场景,还可以当做kv存储使用。 另外, Redis还提供了消息订阅、事务、索引等特性。我们还可以利用集群特性搭建分布式存储服务,实现非强一致性的分布式锁服务。 Redis用到上述场景, 都有一个
2021-12-04
11
27
Redis分布式锁如何自动续期 Redis分布式锁如何自动续期
Redis 实现分布式锁 指定一个 key 作为锁标记,存入 Redis 中,指定一个 唯一的用户标识作为 value。 当 key 不存在时才能设置值,确保同一时间只有一个客户端进程获得锁,满足互斥性特性。 设置一个过期时间,防止因系统异
2021-11-27
21
20
一致性哈希算法 一致性哈希算法
什么是一致性哈希算法一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。 一致性哈希修正了CARP使用的简 单哈希算法带来的问题,
20
生产者-消费者模型 生产者-消费者模型
什么是生产者消费者模型生产者 - 消费者模型( Producer-consumer problem) 是一个非常经典的多线程并发协作的模型,在分布式系统里非常常见。 这个模型由两类线程和一个缓冲区组成来组成 生产者线程:生产数据,并把数据
2021-11-20
19
Spring AOP是怎么实现的 Spring AOP是怎么实现的
概述Spring的AOP实现是通过动态代理实现的。如果我们为Spring的一个bean配置了AOP切面,那么Spring在创建这个bean的时候,实际上创建的是这个bean的一个代理对象,我们后续对bean中方法的调用,实际上调用的是代理类
2021-11-19
18
BIO、NIO、AIO的区别 BIO、NIO、AIO的区别
同步与异步同步和异步指的是一个执行流程中每个方法是否必须依赖前一个方法完成后才可以继续执行。假设我们现在有两个方法:方法一和方法二。 同步指的是调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。即方法二一定要等到方法一执行完
2021-11-18
17
Java反射机制 Java反射机制
什么是反射在程序的运行状态中, 可以构造任意一个类的对象, 可以了解任意一个对象所属的类, 可以了解任意一个类的成员变量和方法, 可以调用任意一个对象的属性和方法。 这种动态获取程序信息以及动态调用对象的功能称为 Java 语言的反射机
2021-11-17
14
MySQL如何避免幻读 MySQL如何避免幻读
事务的并发问题 脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据 不可重复读:事务A多次读取同一数据,事务B在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致。 幻读:A事
2021-11-14
1 / 7