自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 轻量级锁加锁解锁过程

2、1如果是当前线程持有的轻量级锁,说明是可重入锁,由于每次获取轻量级锁都会创建一个锁记录,所以,除第一次锁记录存储markword外,后面均设置为null。使用cas原子的将锁记录中的markword复制到锁对象中,如果成功,则代表解锁成功。如果判断DisplacedMarkWord==null,则代表是可重入锁的解锁,makword不需要复制到锁对象中。2、2如果不是当前线程持有的锁,说明出现锁竞争,可能需要锁升级。1、2将锁对象中的markword复制到锁记录中。...

2022-08-02 11:20:41 236 1

原创 源码中用到的设计模式

动态代理常见的有两种方式,一种是jdk自带的,通过Proxy.newInstance()方法生成实现接口的对象,这样我不需要编写接口的实现类,也能实现接口方法,就可以在处理类的方法中实现对被代理对象方法的增强,在spring中,我们最熟悉的aop就是通过代理实现的,代理模式分为静态代理和动态代理,静态的代理需要为每一个被代理对象增加一个代理对象,实现较为冗余,强调对被适配对象的转换,在mybatis中的日志管理中有应用,Mybatis提供统一的日志分级打印接口,而不同的日志组件的api都不尽相同,.....

2022-07-28 14:37:43 121

原创 项目中高性能解决方案

2、高并发系统需要卡了的点静态资源使用cdn,加入缓存并预热,使用非关系型数据库dynamodb等内存数据库,mysql数据库的读写分离,使用消息队列削峰,异步处理写入。5、限流算法计数器法redis可以实现滑动窗口算法,漏桶算法和令牌桶都可以通过消息队列实现,虽然google的guawa可以实现限流,但是单机限流,分布式环境下无法达到目的。9、消息队列的可靠性,生产者发送重试,消息队列同步复制,异步刷盘,消费者重试消费,到死信队列,重复消费,增加一个去重表。4、使用布隆过滤器解决缓存穿透。...

2022-07-28 10:55:33 176

空空如也

空空如也

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

TA关注的人

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