摘要:
Eureka的负载均衡 负载均衡原理 负载均衡流程 老版本流程介绍 当order-servic发起的请求进入Ribbon后会被LoadBalancerInterceptor负载均衡拦截器拦截,拦截器获取到请求中的服务名称,交给RibbonLoadBanlancerCient,然后RibbonLoad 阅读全文
摘要:
服务的提供者和消费者 服务之间可以通过Spring提供的RestTemplate来进行http请求去请求另一个Springboot的项目,这就叫做服务间的远程调用。 当一个服务通过远程调用去调用另一个服务时,被调用的服务就叫做服务的提供者,调用服务的服务就叫做服务的消费者。 一个服务可以既是服务的提 阅读全文
摘要:
各种锁的理解 公平锁、非公平锁 公平锁:先到先得(不可插队) 非公平锁:达者为先(可插队) >默认 public ReentrantLock() { //默认非公平锁 sync = new NonfairSync(); } //重载的构造方法,通过fair控制是否公平 public Reentran 阅读全文
摘要:
原子引用 带版本号的原子操作! 解决ABA问题,引入原子引用(乐观锁思想) AtomicStampedReference类解决ABA问题 package org.example.cas; import java.util.concurrent.TimeUnit; import java.util.c 阅读全文
摘要:
深入理解CAS 什么是CAS 为什么要学CAS:大厂你必须深入研究底层!有所突破! java层面的cas >compareAndSet compareAndSet(int expectedValue, int newValue) 期望并更新,达到期望值就更新、否则就不更新! package org. 阅读全文
摘要:
彻底玩转单例模式 单例中最重要的思想 >构造器私有! 恶汉式、懒汉式(DCL懒汉式!) 恶汉式 package single; //饿汉式单例(问题:因为一上来就把对象加载了,所以可能会导致浪费内存) public class Hungry { /* * 如果其中有大量的需要开辟的空间,如new b 阅读全文
摘要:
Volatile 保证可见性 private volatile static Integer num = 0; 使用了volatile关键字,即可保证它本身可被其他线程的工作内存感知,即变化时也会被同步变化。 不保证原子性 原子性:不可分割 线程A在执行任务时是不可被打扰的,也不能被分割,要么同时成 阅读全文
摘要:
JMM 请你谈谈对Volatile的理解 Volatile是java虚拟机提供的轻量级的同步机制 1、保证可见性 2、不保证原子性 3、禁止指令重排 什么是JMM JVM->java虚拟机 JMM->java内存模型,不存在的东西,概念!约定 关于JMM的一些同步的约定: 线程解锁前,必须把共享变量 阅读全文
摘要:
异步回调 Future设计的初衷:对将来的某个事件的结果进行建模 在Future类的子类中可以找到CompletableFuture,在介绍中可以看到这是为非异步的请求使用一些异步的方法来处理 点进具体实现类中,查看方法,可以看到CompletableFuture中的异步内部类,里面是实现的异步方法 阅读全文
摘要:
ForkJoin 什么是ForkJoin ForkJoin在JDK1.7,并发执行任务!大数据量时提高效率。 大数据:Map Reduce(把大任务拆分成小任务) ForkJoin特点:工作窃取 为什么可以取窃取其他线程的任务呢?因为这里面维护的都是双端队列(即队列的两端都可以取元素) ForkJo 阅读全文