- 博客(6)
- 问答 (1)
- 收藏
- 关注
原创 AQS详解
Doug Lea(小名:李二狗)Java并发编程核心在于java.concurrent.util包而juc当中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这个行为的抽象就是基于AbstractQueuedSynchronizer简称AQS,AQS定义了一套多线程访问共享资源 的同步器框架,是一个依赖状态(state)的同步器。
2022-09-24 18:11:19 115 1
原创 CAS详解
CAS是compare and swap的缩写,即我们所说的比较交换(乐观锁)。cas有三个操作数----内存对象(V)、预期原值(A)、新值(B)。CAS原理就是对v对象进行赋值时,先判断原来的值是否为A,如果为A,就把新值B赋值到V对象上面,如果原来的值不是A(代表V的值放生了变化),就不赋新值。Unsafe提供的API大致可分为内存操作、CAS、Class相关、对象操作、线程调度、系统 信息获取、内存屏障、数组操作等几类,下面将对其相关方法和应用场景进行详细介绍。1、内存操作。
2022-09-24 17:44:55 239
原创 ExecutorCompletionService导致的Full GC内存溢出问题
项目场景:日常维护的系统,碰上没有常规需求,没有发版,导致某天夜里疯狂Full GC告警了。为了紧急处理当时先做应用重启,重启后好了。问题描述:连续1个月没有发版,导致系统FULL GC告警。原因分析:分析dump文件,发现java.util.concurrent.ConcurrentHashMap占用了总量95%的堆内存,跟踪发现是ExecutorCompletionService中的LinkedBlockingQueue队列导致的。项目中ExecutorCompletionServic
2021-10-20 16:41:38 563
转载 化解日常Bug的50个大法(覆盖数据库、代码层面、缓存)
化解日常Bug的50个大法(覆盖数据库、代码层面、缓存)前言一、数据库篇1、慢查询1 ) 是否命中索引2 ) 数据量大,考虑分库分表3 )不合理的SQL2、 数据库字段注意点1 )字段是否会超长2 )字段为空,是否会导致空指针等3 )字段缺失4 )字段类型是否支持表情5 )谨慎使用text、blob字段3、事务失效的场景1 )@Transactional 在非public修饰的方法上失效2)本地方法直接调用3 )异常被try...catch吃了,导致事务失效4 )rollbackFor属性设置错误5 )底层
2021-10-15 17:13:52 336
空空如也
求支持多人协作网页版流程图工具
2021-10-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人