会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
先让我睡饱
Don’t hurry say have no choice, perhaps, next intersection will meet hope.
博客园
首页
新随笔
联系
订阅
管理
2021年2月17日
Phaser使用
摘要: Phaser是jdk1.7引入的同步工具类,与countdownlatch和cyclicbarrier 功能重叠,但是又覆盖他们的功能。 package com.alibaba.dubbo.common.test; import java.util.concurrent.*; /** * @auth
阅读全文
posted @ 2021-02-17 18:50 以梦为码
阅读(196)
评论(0)
推荐(0)
2021年2月16日
CyclicBarrier使用场景
摘要: CyclicBarrier是java提供的同步辅助类。一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point),才得以继续执行。阻塞子线程,当阻塞数量到达定义的参与线程数后,才可继续向下执行。 public class BarrierMain {
阅读全文
posted @ 2021-02-16 21:04 以梦为码
阅读(1970)
评论(0)
推荐(0)
信号量Semaphore使用
摘要: semaphore:信号量,又称许可管理器,来控制线程的并发数量。 例如: 1、主线程设置许可数为2,标识最大允许并发线程数为2,前边的线程释放许可后,阻塞的线程才可以继续获取许可。信号量可以设置公平和非公平,当前设置为非公平 public static void main(String[] arg
阅读全文
posted @ 2021-02-16 20:22 以梦为码
阅读(180)
评论(0)
推荐(0)
2021年1月19日
RabbitMQ 延迟队列实现
摘要: 1、延迟队列,可以通过rabbitmq自带机制实现:TTL+死信队列(通过设置消息或者队列的TTL,过期后进行消息的投递,从而达到delay的效果)。 但存在问题: 1)设置队列TTL:同一个队列的所有消息从入队列到TTL的时间,过期后会投递到相应死信交换机。这样如果消息的过期时间不尽相同,会创建n
阅读全文
posted @ 2021-01-19 15:57 以梦为码
阅读(1489)
评论(0)
推荐(0)
2020年6月26日
电商商城如何避免重复订单
摘要: 由于用户提交订单后,用户同时又可以再下相同的一单,这类不算为重复提交。规避的是一份订单重复提交两次。 思路1: 创建订单服务保证其幂等性。后端添加订单号服务,在用户订单页面返回给页面唯一的订单号,在提交订单时传向后端订单号, 同时数据库中订单表的订单号字段设置为唯一索引,若已提交,则抛出异常,从而避
阅读全文
posted @ 2020-06-26 12:23 以梦为码
阅读(1427)
评论(0)
推荐(0)
2020年2月20日
CAS
摘要: CAS是一种常用的硬件同步原语,即由一组计算机硬件提供的原子操作。 CAS的逻辑: 有三个参数:p-要改变变量的指针;old-旧值;new-新值。执行时先比较p和old值是不是相等,如果相等,就把new赋值给p,并返回true.否则不改变,返回false。 java在1.5之后引入CAS,主要放在J
阅读全文
posted @ 2020-02-20 19:57 以梦为码
阅读(487)
评论(0)
推荐(0)
CountDownLatch用法
摘要: CountDownLatch是用来解决线程之间通信的。 CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成了任务,然后
阅读全文
posted @ 2020-02-20 18:41 以梦为码
阅读(3726)
评论(0)
推荐(0)
2020年2月18日
死锁
摘要: 死锁定义为一组互相竞争资源的线程因互相等待,导致永久阻塞的情况。 即; 如何解决死锁: 1、一次性申请所有的资源,直到拿到所有资源的锁再进行操作 2、主动释放其所占有的资源,synchronized是做不到的,使用lock 3、按资源id的从小到大的顺序去申请锁
阅读全文
posted @ 2020-02-18 20:13 以梦为码
阅读(127)
评论(0)
推荐(0)
2020年2月16日
缓存置换策略-LRU算法
摘要: LRU算法 LRU算法定义: LRU算法是指最近最少使用算法,意思是LRU认为最近使用过的数据,将来被访问的概率会大,最近没有被访问的数据意味着以后刚问的概率小。 为何要用LRU算法: 1、我们的存储空间是有限的,当存储空间满了之后,要删除哪些数据呢,才能会时缓存的命中率高一些呢 2、LRU算法还是
阅读全文
posted @ 2020-02-16 20:08 以梦为码
阅读(1002)
评论(0)
推荐(0)
缓存穿透
摘要: 缓存穿透是指 查询一个不存在的数据,每次都需要查询数据库。由于写入缓存是被动操作,并且数据库每次查询为空,所以不会向缓存中写入数据,导致每次查询会越过缓存直接查询数据库,访问量大时增加数据库压力 解决方案: 1、回写空值: 查询完数据库时,将空值塞入缓存并加入较短的过期时间。需要评估一下缓存容量是否
阅读全文
posted @ 2020-02-16 19:01 以梦为码
阅读(206)
评论(0)
推荐(0)
下一页
公告