自定义博客皮肤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)
  • 收藏
  • 关注

原创 利用cas+单向队列实现一个可重入的轻量级的非公平的排他锁,参考部分ReentrantLock源码

实现思路,定义一个state表示锁的状态,state=0,表示锁可以被获取,state>0,表示锁正在被当前线程或者其他线程占用,获取锁的方法,采用cas将state设置为1,如果锁被当前线程占用,再次获取,只需要++state,如果获取不到锁,就将当前线程加入到等待队列中,在释放锁的时候,如果state=0,就通知等待队列中第一个等待的线程取获取锁。具体代码如下:import sun.m...

2020-03-10 09:17:42 2293

原创 手写一个线程安全的非阻塞队列,并且实现入队出队方法

实现思路:利用单向链表来保存队列的数据,在往队列中添加元素的时候,新建一个节点,加入到队尾,加入到队尾的操作,利用CAS原理加乐观锁,另外,还需要将新加的节点设置为新的队尾,此步操作也需要利用CAS,head与tail变量用volatile修饰,保证多线程环境下的线程可见性。相关代码如下:import sun.misc.Unsafe;import java.lang.reflect.Fiel...

2020-03-08 20:43:31 807 1

原创 动态线程池的设计和实现

动态线程池是个什么鬼,可能有些读者看到这里会感到很懵逼,甚至有些人看到这个题目,心里面立马就是一个wocao,其实,动态线程池在美团内部应用是很广泛的呢,出这个东西也是有原因的,下面我就仔细的聊一聊,聊之前呢,咱们先把线程池的一些知识复习一把。1.线程池简介线程池相信大家都不陌生,简单点说就是一个生产者消费者模型,生产者就是咱们自己的业务线程,不断地生产任务,消费者就是线程池中的线程,不断的消费任务。看一看下面的图就知道了。2.线程池的核心参数我相信大家对于创建线程池都不陌生,我们看过阿里爸爸的j

2021-06-30 17:01:34 1478

原创 记录一次RocketMq消费不均的解决方案

>背景:xxx系统有一个打包操作,打包时需要把课件里面所有视频、音频、图片、试题、文本等内容下载下来,视频、图片根据不同需求需要压缩或者转码,然后再上传到服务器,所以根据课件内容不同打包操作需要的时间几十秒到十几分钟不等。我们当时是用RocketMQ做的限流,然而,在2020年12月31日翻车了…,翻车原因是消息堆积太多,造成老师课件不能及时打包,发现问题后第一时间紧急处理解决了,经验很值得分享,跨年解决的。>1. 线上问题分析1.1 当时堆积状态![在这里插入图片描述](https://

2021-06-29 16:22:19 3086

原创 手写一个rpc框架,实现思路利用netty框架+jdk动态代理+自定义协议+自定义编解码器+网络传输

技术难点:TCP粘包拆包问题,解决思路:客户端在往服务端发送消息时(编码),先要将消息的长度(一个int)写入与channel关联的buffer中。客户端在接受消息时,先判断消息的长度是不是够一个int,如果不够,等待下一次事件触发,如果够,判断可读的消息的长度是不是等于客户端传过来的长度,如果不够,继续等待下一次事件触发。自定义编解码器代码如下:自定义编码器:package codec;...

2020-03-16 18:26:41 356

空空如也

空空如也

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

TA关注的人

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