![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
北铭_有瑜
顺则乘风破浪,挫则逆流而上
展开
-
java实现链表反转的三种方式
分别通过栈、递归、指针的方式实现:import java.util.Stack;public class ReverseLinkedList { public static void main(String[] args) { ReverseLinkedList reverseLinkedList = new ReverseLinkedList(); ...原创 2020-01-21 14:19:00 · 1549 阅读 · 0 评论 -
用java探究“2020年有五个神奇的周六”是否很罕见
前两天看到公众号推送的一篇文章,说是2020年有五个神奇的周六:2020年4月4号是周六,6月6号是周六,8月8号是周六,10月10号是周六,12月12号也是周六。这个确实挺有意思,我就写个简单的demo去测试了一下”五个神奇的周六“是否罕见,下面是测试代码(只为图方便,用了Date已经失效的方法,仅供参考) //初始年份1900+120=2020,终止年份=2050 fo...原创 2020-01-05 21:36:02 · 352 阅读 · 2 评论 -
【限流算法】java实现漏桶算法
本文实现了一种基本的漏桶算法漏桶算法思想:以固定速率消费请求,漏桶容量固定,每次用户请求都得放入桶中,桶满则拒绝请求或等待。达到平滑网络请求的效果。代码逻辑:线程池每0.5s发送随机数量的请求,每次请求计算当前桶内的水量及剩余容量,请求数量超出当前桶容量,则产生限流。@Slf4jpublic class LeakyBucketLimiter { private Schedu...原创 2019-11-30 20:02:06 · 6892 阅读 · 4 评论 -
【限流算法】java实现redis分布式时间窗口计数器算法
本文实现一种基于java的分布式固定时间窗口计数器算法//每次请求进来,查询一下当前的计数值,如果超出请求数阈值,则拒绝请求,返回系统繁忙提示private long limitFlow(String key) { //Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值。设置成功返回1,设置失败返回0 ...原创 2019-11-18 20:37:33 · 3688 阅读 · 0 评论 -
【限流算法】java实现滑动时间窗口算法
本文实现了一种基于java的滑动时间窗口计数器算法滑动时间窗口计数器算法思想:针对固定时间算法会在临界点存在瞬间大流量冲击的场景,滑动时间窗口计数器算法应运而生。它将时间窗口划分为更小的时间片段,每过一个时间片段,我们的时间窗口就会往右滑动一格,每个时间片段都有独立的计数器。我们在计算整个时间窗口内的请求总数时会累加所有的时间片段内的计数器。时间窗口划分的越细,那么滑动窗口的滚动就越平滑,限流...原创 2019-11-18 20:32:02 · 17706 阅读 · 1 评论 -
【限流算法】java实现固定时间窗口算法
本文实现了一种基于java的固定时间窗口计数器算法固定时间窗口计数器算法思想:在固定的时间窗口内,可以允许固定数量的请求进入。超过数量就拒绝或者排队,等下一个时间段进入。优点:和令牌桶相比,这种算法不需要去等待令牌生成的时间,在新的时间窗口,可以立即处理大量的请求。缺点:在一个窗口临界点的前后时间,比如时间窗口是1分钟,在59秒和1分01秒同时突发大量请求,极端情况下可能会带来 2 倍的...原创 2019-11-18 20:11:22 · 2813 阅读 · 0 评论 -
【限流算法】java实现令牌桶算法
本文实现了一种基本的令牌桶算法令牌桶算法思想:以固定速率产生令牌,放入令牌桶,每次用户请求都得申请令牌,令牌不足则拒绝请求或等待。代码逻辑:线程池每0.5s发送随机数量的请求,每次请求计算当前的令牌数量,请求令牌数量超出当前令牌数量,则产生限流。@Slf4jpublic class TokensLimiter { private ScheduledExecutorServ...原创 2019-11-18 19:58:35 · 7074 阅读 · 7 评论