自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java并发编程(同步工具):CountDownLatch、CyclicBarrier、Semaphore区别及方法

一、CountDownLatch(线程计数器 ) 介绍: CountDownLatch 类在 java.util.concurrent 包下,利用它可以实现类似计数器的功能。 final CountDownLatch latch = new CountDownLatch(2); new Thread(){ public void run() { System.out.println("子线程"+Thread.currentThread().getName()+"正在执行"); Th

2021-09-08 22:50:12 199

原创 二分查找算法:递归-非递归

二分查找 二分查找又叫折半查找要求待查找的序列有序。 每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字 /** * 非递归方式 * @param srcArray 数组集 * @param key 查找的key * @return */ public static int binS

2021-09-08 17:29:54 177

原创 Redis分布式锁实现

分布式锁的实现 需要注意的点 1、锁不安全: 任意客户端获得锁后,在释放锁之前该服务一旦崩溃宕机,锁将永远都不会释放简单来讲:其他服务都将竞争不到锁,竞争不到锁的线程在不断自旋,与此同时还会不断有新的请求接入,最终导致服务宕机,Redis宕机 2、锁不失效: 假设过期时间10S,服务A可能在10S内还没搞完业务逻辑,锁超时后服务B获得了锁,这时服务A执行完了业务逻辑,这样错误的释放了由服务B加的锁,就会导致锁失效。 3、锁超时: 太长的话 如果某个服务宕机后,其他服务需要等待很久才能获得锁 就没有必要

2021-09-08 16:22:35 135

原创 防止高并发缓存穿透:双重检测同步锁

缓存穿透 我们在项目中使用缓存通常都是先检查缓存中是否存在,如果存在直接返回缓存内容,如果不存在就直接查询数据库然后再缓存查询结果返回,这个时候如果我们查询的某一个数据在缓存中一直不存在,就会造成每一次请求都查询DB。这样缓存就失去了意义,在流量大时,可能DB就挂掉了 简单理解为:频繁查询一个不存在的数据,由于缓存不命中,每次都要查询持久层。从而失去缓存的意义。 通常解决方案: 用一个bitmap和n个hash函数做布隆过滤器过滤没有缓存的键 持久层查询不到就缓存空结果,有效时间为数分钟 准备工

2021-09-08 15:50:58 397

原创 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题

一、缓存雪崩 我们可以简单的理解为:由于缓存失效,新缓存未到 我们设置缓存时间的时候采用的相同的的过期时间,在同一时刻大面积缓存过期!这个时间本来应该访问缓存的请求都去查询数据库了,对DB造成了很大的压力,可能严重的会导致DB的宕机,然后导致一系列的连锁反应,造成系统的崩溃 解决办法: 一般并发量不是特别多的时候,使用最多的解决方案是加锁排队。 给每一个缓存数据增加相应的缓存标记,记录缓存的是否失效,如果缓存标记失效,则更新数据缓 存。 为 key 设置不同的缓存失效时间。 二、缓存穿透 缓存穿透是指用

2021-09-08 14:50:15 184

dingtalk_downloader.exe

钉钉

2021-09-09

空空如也

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

TA关注的人

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