
java
文章平均质量分 81
爱我所爱0505
喜欢编程
展开
-
volatile与synchronized实现原理
一、CPU原子操作原子(atomic)本意是“不能被分割的最小粒子”,而CPU原子操作(atomic operation)为“不可被中断的一个或一系列指令操作”。CPU会自动保证基本内存操作的原子性,如系统内存读或写一个字节时是原子的,即:其他处理器不能访问该字节的内存地址。但是,复杂的内存操作(如:多核CPU对同一缓存行的写、跨总线宽度、跨多个缓存行、跨页表的访问)都不是原子操作,所以CPU提供总线锁定和缓存行锁定两种机制来保证CPU的原子操作。1. 总线锁...原创 2022-02-21 20:32:30 · 513 阅读 · 0 评论 -
Hystrix请求合并
目录一、介绍二、代码示例1. 请求合并HystrixCollapserService2. 批量请求BatchCommandService3. 调用三、参考资料一、介绍Hysrix利用一个合并处理器,将对同一个服务发起的连续请求合并成一个请求批量处理,即:多个单个请求转换为单个批量请求,实际是批量请求模式。 核心类com.netflix.hystrix.HystrixCollapser,默认连续10ms(timerDelayInMillisec...原创 2021-12-08 19:33:56 · 477 阅读 · 0 评论 -
堆缓存 — Guava Cache/Ehcache/MapDB
目录一、Java缓存类型二、Guava Cache/Ehcache/MapDB堆内缓存对比三、代码实例1. 依赖jar包2. Cache定义3. 调用实例三、参考资料一、Java缓存类型类型 优点 缺点 组件 适用场景 注意 堆内缓存 速度最快 1.受JVM堆大小限制 2.JVM重启时数据消失 Guava Cache、 Ehcache、 MapDB原创 2021-11-17 17:57:28 · 1321 阅读 · 0 评论 -
AtomicInteger原理
一、Integer与AtomicInteger测试package com.common.instance.test;import org.junit.jupiter.api.Test;import java.util.concurrent.atomic.AtomicInteger;/** * @description 测试AtomicInteger * @author tcm * @version 1.0.0 * @date 2021/10/29 16:19 **/public原创 2021-11-02 09:51:31 · 378 阅读 · 0 评论 -
Servlet3实现业务隔离(异步上下文)
一、Servlet的同步与异步Servlet2.x规范中,所有处理都是同步。即:解析请求、业务处理、响应结果在同一个线程中。如下步骤:step1:Tomcat解析请求,返回请求对象、响应对象;step2:Servlet处理业务;step3:响应处理结果Servlet3后规范中,可以启动异步上下文(默认同步),业务可以通过线程池处理,达到请求解析与业务处理线程池分离,如下图所示:二、实现实例1. 创建线程池并处理业务注意...原创 2021-10-21 10:44:38 · 348 阅读 · 0 评论