11 2020 档案

摘要:这是SpringCloud实战系列中第三篇文章,了解前面第两篇文章更有助于更好理解本文内容: ①SpringCloud 实战:引入Eureka组件,完善服务治理 ②SpringCloud 实战:引入Feign组件,发起服务间调用 简介 Ribbon 是由 Netflix 发布的一个客户端负载均衡器, 阅读全文
posted @ 2020-11-30 14:27 Admol 阅读(1268) 评论(0) 推荐(0) 编辑
摘要:这是SpringCloud实战系列中第二篇文章,了解前面第一篇文章更有助于更好理解本文内容: ①SpringCloud 实战:引入Eureka组件,完善服务治理 简介 Feign 是一个声明式的 REST 客户端,它的目的就是让 REST 调用更加简单。 Feign 提供了 HTTP 请求的模板,通 阅读全文
posted @ 2020-11-26 10:28 Admol 阅读(1061) 评论(0) 推荐(2) 编辑
摘要:Spring 事件监听机制及原理分析 阅读全文
posted @ 2020-11-25 15:48 Admol 阅读(6261) 评论(2) 推荐(8) 编辑
摘要:简介 Netflix Eureka 是一款由 Netflix 开源的基于 REST 服务的注册中心,用于提供服务发现功能。Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件的一部分,基于 Netflix Eureka 进行了二次封装,主要负责完成微服务架 阅读全文
posted @ 2020-11-24 14:18 Admol 阅读(992) 评论(2) 推荐(2) 编辑
摘要:简介 在之前已经有6篇关于AQS源码分析的文章了,关于源码分析的一些问题可以去看看我之前的文章,文章连接可以在文末查看。这一篇文章主要是对AQS的一些总结,或者说是面经。 AQS是什么 AQS 全称是AbstractQueuedSynchronizer,在java.util.concurrent.l 阅读全文
posted @ 2020-11-23 11:34 Admol 阅读(290) 评论(0) 推荐(0) 编辑
摘要:简介 CountDownLatch 是JDK1.5 开始提供的一种同步辅助工具,它允许一个或多个线程一直等待,直到其他线程执行的操作完成为止。在初始化的时候给定 CountDownLatch 一个计数,调用await() 方法的线程会一直等待,其他线程执行完操作后调用countDown(),当计数减 阅读全文
posted @ 2020-11-22 19:20 Admol 阅读(305) 评论(0) 推荐(0) 编辑
摘要:简介 Semaphore 又名计数信号量,从概念上来讲,信号量初始并维护一定数量的许可证,使用之前先要先获得一个许可,用完之后再释放一个许可。信号量通常用于限制线程的数量来控制访问某些资源,从而达到单机限流的目的,比如SpringCloud 中的Zuul 组件用的是 Hystrix 的信号量(sem 阅读全文
posted @ 2020-11-21 16:25 Admol 阅读(363) 评论(0) 推荐(1) 编辑
摘要:标记 — 清除算法(Mark Sweep) 最基本的垃圾收集算法,从它的名字就可以看得出来,算法分为“标记”和“清除”两个阶段:首先标记处所有需要回收的对象,在标记完成后统一回收被标记的对象。 标记清除算法主要不足有两个方面: 效率低 标记和清除两个阶段的效率都不够高 空间碎片问题 标记清除之后会产 阅读全文
posted @ 2020-11-20 23:35 Admol 阅读(120) 评论(0) 推荐(0) 编辑
摘要:简介 StampedLock 是JDK1.8 开始提供的一种锁, 是对之前介绍的读写锁 ReentrantReadWriteLock 的功能增强。StampedLock 有三种模式:Writing(读)、Reading(写)、Optimistic Reading(乐观度),StampedLock 的 阅读全文
posted @ 2020-11-19 21:11 Admol 阅读(427) 评论(0) 推荐(0) 编辑
摘要:简介 ReentrantReadWriteLock 从字面意思可以看出,是和重入、读写有关系的锁,实际上 ReentrantReadWriteLock 确实也是支持可重入的读写锁,并且支持公平和非公平获取锁两种模式。 为什么会出现读写锁? 普通锁可以保证共享数据在同一时刻只被一个线程访问,就算有多个 阅读全文
posted @ 2020-11-18 15:01 Admol 阅读(379) 评论(1) 推荐(2) 编辑
摘要:简介 条件锁,指在获得锁之后,还需要达成某些条件后,才能继续执行的锁。且必须配合Lock一起使用,也就是说必须获得锁之后才可以调用condition.await()方法 源码分析 ReentrantLock 的条件锁使用的 AbstractQueuedSynchronizer 中的Condition 阅读全文
posted @ 2020-11-17 15:27 Admol 阅读(391) 评论(0) 推荐(0) 编辑
摘要:简介 ReentrantLock 是JDK 1.5开始提供的一种可重入的互斥锁,并且构造方法支持公平性参数。 源码分析 类结构体系 ReentrantLock实现了Lock接口: public class ReentrantLock implements Lock, java.io.Serializ 阅读全文
posted @ 2020-11-17 15:20 Admol 阅读(534) 评论(0) 推荐(0) 编辑
摘要:简介 AQS 全称是 AbstractQueuedSynchronizer,位于java.util.concurrent.locks 包下面,AQS 提供了一个基于FIFO的队列和维护了一个状态state变量赖表示状态,可以作为构建锁或者其他相关同步装置的基础框架。AQS 支持两种模式:共享模式 和 阅读全文
posted @ 2020-11-17 15:17 Admol 阅读(333) 评论(0) 推荐(0) 编辑
摘要:简介 synchronized关键字是Java里面最基本的同步手段,它经过编译之后,会在同步块的前后分别生成 monitorenter和 monitorexit字节码指令,这两个字节码指令都需要一个引用类型的参数来指明要锁定和解锁的对象;而直接使用 synchronized 关键字锁定方法时,生成的 阅读全文
posted @ 2020-11-17 15:10 Admol 阅读(519) 评论(0) 推荐(0) 编辑
摘要:高效并发是 JDK1.5 到JDK1.6 的一个重要改进,虚拟机在这个版本上实现了各种锁优化技术,比如:适应性自旋锁、锁消除、锁粗化、轻量级锁、偏向锁等,这些技术都是为了在线程之间更高效的共享数据,以及解决竞争问题。 自旋锁与自适应锁 同步(加锁)对性能最大的影响就是实现阻塞,挂起线程和恢复线程都需 阅读全文
posted @ 2020-11-17 15:08 Admol 阅读(238) 评论(0) 推荐(1) 编辑
摘要:Unsafe是什么 Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等。不能被普通用户直接使用。 基本介绍 如下Unsafe源码所示,Unsafe类为一单例实现,提供静态方法getUnsafe获取Unsafe实例, 阅读全文
posted @ 2020-11-17 15:07 Admol 阅读(416) 评论(0) 推荐(0) 编辑