自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 spring boot项目接口防止重复提交

接口重复提交:是由于网络等原因,造成一瞬间发送多个请求,造成insert,update操作,多次数据被修改。如果多个请求时间间隔足够的小,那么可以理解为并发问题;即并发情况下,只有一次操作成功。实现原理: 自定义注解+AOP切面+分布式锁。1.自定义注解:import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;

2022-01-11 15:12:02 2957

原创 Redis缓存一致性造成原因? 解决方案?

1. Redis 缓存操作流程:2. 在高并发情况下, Redis 不一致产生的原因?2.1 先写MySQL 数据,再删缓存; 先删缓存,再写MySQL数据,都存在缓存不一致的情况。举个例子:先删缓存,再写MySQL数据: 线程1 删除了缓存,但是还没有来的急写MySQL;另外一个线程2 正好读这个缓存,没有发现,线程2去MySQL里面去读取数据,最后原来的线程1更新了数据,那么线程1读到是脏数据。先写MySQL,再删缓存:线程1 写入了MySQL数据,还没有来的急删除数据,此时...

2020-12-23 16:28:51 167 1

原创 Java 面试题目的那些事。。。。。 CAS 机制。对象内存布局,Synchronized  的实现过程, volatile

1. CAS 介绍:CAS 是Java 并发包的基础。 CAS 是 英文单词 compare and swap ,即 比较和交换。什么意思呢? 举一个例子: 当一个线程要去尝试修改一个值 1 变为 0的过程,首先: 线程获取到这个值1 ,然后:将拿着 0 去替换1 的时候,再次比较之前获取的1 与原始值 是不是相等,如果相等则替换,更改为0;否则再次尝试操作之前的动作,知道成功为止。这就是 CAS的大体含义。 从中我们 可以发现这是一种自旋的过程,因此很消耗cup。 不过底层实现仍是 C++编写,通过.

2020-12-10 11:36:37 150 1

原创 java 内存分布,内存溢出,垃圾回收;GC工作流程

Java 内存区域分布Java虚拟机在执行Java程序过程中会将所管理的内存划分若干个区域,如下图为几个运行时数据区: 程序计数器: 它是一小块内存区域,它可以当做当前线程执行字节码行号记录器。字节码解释器通过改变重写程序计数器的值来确定下一步执行那个字节码指令。 虚拟机栈:和程序计数器一样,Java虚拟机栈也是线程私有的。 和当前线程的生命周期一致。当执行一个Java方法时候会创建一个栈帧,用来寄存方法中的局部变量,当方法执行完毕,这个栈也随方法的结束而销毁。 本地方法.

2020-11-11 15:33:44 387 3

原创 elasticsearch 深度分页性能差分析

elasticsearch 探究深度分页性能差的原因这里不的不说es分片(shards)的概念。分片在es的地位雷同于MySQL 的水平分表,es的索引当存储文档的时候,es在多个分片上均匀 的分派文档存储。实列场景:假设 IndexA 有2个分片,我们向 IndexA 中插入10000条数据 (10000个文档),那么这10000条数据会尽可能平均的分为5000条存储在第一个分片,剩下的5000条会存储在另一个分片中。一个shard其实就是一个lunce实例,es的所引倒排是基于lunce实例的,

2020-11-10 11:33:01 778

原创 spring策略模式牛逼的写法(与理解spring源码息息相关)

策略模式:定义策略接口:/** * @author yxh * @date 2022/1/22 11:28 */public interface CommStrategy { String invoke();}策略实现类A:import org.springframework.stereotype.Component;/** * @author yxh * @date 2022/1/22 11:29 */@Component("A")public class

2022-01-22 14:25:00 470

原创 死锁原因和解决,预防(简单的demo,简单明了说明死锁,理解死锁);多线程交替执行任务(synchronized+ wait+notify 实现)

死锁:两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法执行下去。下面通过一个简单的demo ,说明死锁的形成。package com.stcn.news.util;public class ThreadDemo { public static void main(String[] args) { Object lock1=new Object(); Object lock2=new Object();

2020-11-16 10:50:42 331 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除