自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 重新回顾线程

1、初始化线程的 4 种方式 1)、继承 Thread 实现代码:public static class Thread01 extends Thread { @Override public void run() { System.out.println("当前线程:" + Thread.currentThread().getId()); int i = 10 / 2; System.out

2021-11-02 19:49:33 105

原创 Redisson 完成分布式锁

1、简介 Redisson 是架设在 Redis 基础上的一个 Java 驻内存数据网格(In-Memory Data Grid)。充分 的利用了 Redis 键值数据库提供的一系列优势,基于 Java 实用工具包中常用接口,为使用者提供了一系列具有分布式特性的常用工具类。使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式系统的难度。同时结合各富特色的分布式服务,更进一步简化了分布式环境中程序相互之间的协作。 官方文档:h...

2021-11-02 00:05:03 161

原创 缓存里的数据如何和数据库的数据保持一致

缓存数据一致性 1)、双写模式 2)、失效模式缓存数据一致性-双写模式缓存数据一致性-失效模式

2021-11-01 23:39:16 223

原创 分布式下如何加锁?

分布式锁演进-基本原理我们可以同时去一个地方“占坑”,如果占到,就执行逻辑。否则就必须等待,直到释放锁。 “占坑”可以去redis,可以去数据库,可以去任何大家都能访问的地方。 等待可以自旋的方式。分布式锁演进-阶段一代码实现: //占用分布式锁。去redis占坑 Boolean lock = stringRedisTemplate.opsForValue().setIfAbsent("locl", "111"); if (lock) ..

2021-11-01 11:43:56 760 1

原创 高并发下缓存失效问题-缓存穿透、缓存雪崩、缓存击穿

缓存穿透:指查询一个一定不存在的数据,由于缓存是不命中,将去查询数据库,但是数据库也无此记录,我们没有将这次查询的null写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。缓存穿透的风险:利用不存在的数据进行攻击,数据库瞬时压力增大,最终导致崩溃。解决办法:我们将为null结果存入缓存,并加入短暂过期时间。...

2021-11-01 10:39:10 155

转载 Arraylist 与 LinkedList 区别 、ArrayList 与 Vector 区别、为什么要用Arraylist取代Vector

是否保证线程安全:ArrayList和LinkedList都是不同步的,也就是不保证线程安全; 底层数据结构:Arraylist底层使用的是Object数组;LinkedList底层使用的是双向链表数据结构(JDK1.6 之前为循环链表,JDK1.7 取消了循环。注意双向链表和双向循环链表的区别,下面有介绍到!) 插入和删除是否受元素位置的影响:①ArrayList采用数组存储,所以插入和删除元素的时间复杂度受元素位置的影响。比如:执行add(E e)方法的时候,Arra...

2021-07-17 08:19:50 514

空空如也

空空如也

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

TA关注的人

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