-
put()
的时候导致的多线程数据不一致(丢失数据) -
resize()
操作会导致环形链表 -
jdk1.8已解决环链的问题(声明两对指针,维护两个连链表)
-
fail-fast机制,对当前HashMap同时进行删除/修改会抛出ConcurrentModificationException异常
G1收集器的设计目标是取代CMS收集器,它同CMS相比,在以下方面表现的更出色:
-
G1是一个有整理内存过程的垃圾收集器,不会产生很多内存碎片。
-
CMS采用的是标记清除垃圾回收算法,可能会产生不少的内存碎片
-
G1的Stop The World(STW)更可控,G1在停顿时间上添加了预测机制,用户可以指定期望停顿时间。
分享几条常见解决重复提交的方案:
-
同步锁(单线程,在集群可能会失效)
-
分布式锁如redis(实现复杂)
-
业务字段加唯一约束(简单)
-
令牌表+唯一约束(简单推荐)---->实现幂等接口的一种手段
-
mysql的insert ignore或者on duplicate key update(简单)
-
共享锁+普通索引(简单)
-
利用MQ或者Redis扩展(排队)
-
其他方案如多版本控制MVCC 乐观锁 悲观锁 状态机等。。