利用ConcurrentHashMap和计数器实现锁

概述 在某些场景下,我们想让线程根据某些业务数据进行排队,简单代码如下:import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.co...
阅读(524) 评论(0)

ThreadPoolExecutor 并发调用

概述 通常为了提供任务的处理速度,会使用一些并发模型,ThreadPoolExecutor中的invokeAll便是一种。 代码 package test.current;import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.concurrent.Callable;...
阅读(865) 评论(0)

系统防刷的一些基本方法

概述 上周系统被刷了,由于系统是纯db操作,没有缓存的,所以db的压力非常大,后续的请求已经无法拿到db连接了。虽然系统用几十个数据库分库,但是黑客就只是刷一个商品,这样所有的请求就会落到同一个DB。当时刚好我是值班人员,全程参与了整个过程。系统被刷了应该如何处理以及系统如何做防刷,算是有一点点心得。 将商品下线 如果某个热门商品被刷了,可以紧急联系后台业务人员,将商品做下线处理,这样可以防止请...
阅读(1771) 评论(3)

请求量稍微比较大-尽量避免长事务

概述 某些后台应用经常需要频繁的操作DB,为了保证数据出错时能回滚数据,通常都会使用事务。在使用事务的时候,尽量避免使用长事务,比如说:某个业务操作需要批量插入数据,而且数据量还不少,如果这整个操作都包在一个事务里面,只有等到数据操作完了,DB连接才会被释放,一旦外部系统发起请求,并发调用这个操作,那么一下子将有大量的DB连接被持有而没有被释放掉,这个时候,如果还有其他请求到来,就很大可能获取不到数...
阅读(827) 评论(0)
    个人资料
    • 访问:318791次
    • 积分:3484
    • 等级:
    • 排名:第9907名
    • 原创:118篇
    • 转载:5篇
    • 译文:0篇
    • 评论:163条
    博客专栏