
java
java
深夜的猫头鹰
微信lx13146592025 欢迎共同沟通
展开
-
漏桶算法详解
限流主要有以下几种算法:固定窗口计数法滑动窗口算法漏洞算法令牌桶算法本篇介绍漏桶算法,具体的漏桶算法概念如下:漏桶算法跟令牌桶比较类似,但实际上是两种策略。想了解令牌桶算法的可以看之前的文章。下面我们看一下维基百科的图片:如图所示,我们可以看到,整个算法其实十分简单。首先,我们有一个固定容量的桶,有水流进来,也有水流出去。对于流进来的水来说,我们无法预计一共有多少水会流进来,也无法预计水流的速度。但是对于流出去的水来说,这个桶可以固定水流出的速率。而且,当桶满了之后,多余的水将会溢出。当使用了原创 2020-07-21 17:18:26 · 5854 阅读 · 2 评论 -
令牌桶算法详解
RateLimiter 有两个实现类:SmoothBursty 和 SmoothWarmingUp,其都是令牌桶算法的变种实现,区别在于 SmoothBursty 加令牌的速度是恒定的,而 SmoothWarmingUp 会有个预热期,在预热期内加令牌的速度是慢慢增加的,直到达到固定速度为止RateLimiter 是用来控制访问资源的速率(rate)的,它强调的是控制速率。比如控制每秒只能有 100 个请求通过,比如允许每秒发送 1MB 的数据。它的构造方法指定一个 permitsPerSecond .原创 2020-07-17 15:20:15 · 2605 阅读 · 0 评论 -
设计模式-单例模式详谈
前言:为什么会有设计模式?个人觉得就是为了代码看起来更加清晰,让人舒服,最好的描述就是代码简洁、生动、易懂。单例模式是最常见的一种设计模式,雪花算法、spring源码中都有用到,下面我会详细解释单例模式的几种情况,以及涉及到的提问点。下面我将从两方面讲解:(前提需要了解jvm相关知识点,指令重排、可见性等)1.单例模式定义及作用2.单例模式几种基本实现方式1 单例模式定义及作用单例模式主要是为了确保实例只有一个,尤其是在多线程环境下。排除反射的条件下,正常的调用静态方法,每次的返回的数据是唯一的.原创 2020-05-28 18:08:49 · 231 阅读 · 0 评论 -
事务回滚@ Transactional 详谈
前言:事务回滚我们总是在用到,但是有可能不太了解具体的细节,接下来我会通过源码解读以及真实的案例测试,来说明。接下来我会从三方面来讲述事务的运用:源码解读事务使用事务的失效场景1.源码解读/** 描述事务的属性在一个方法或者类上(个人觉得应该是使用事务的属性在方法或者类上) *<p> 这种注释类型通常可以直接与Spring的注释类型进行比较, 实际上将直接将数据转换为后者,因此Spring的事务支持代码不必知道注释。 如果没有规则与异常相关,则将其视为回滚运行时异.原创 2020-05-26 17:10:43 · 1328 阅读 · 1 评论 -
HashMap总结(下)
HashMap的总结总算到了最后一期,目前就自己了解到的来说关于hashmap的最后三点。其实还是会说很多废话,因为所有的答案在源码中都已经有了解读,在这里我只能说做一些自我的理解,方便大家理解hashMap。废话不多说,进入到我们今天的总结: hashMap为什么会死循环? 头插入和尾插入区别 1.hashMap为什么会死循环?很多人都说hashMap会死循环,死循环主要...原创 2020-04-28 15:56:03 · 221 阅读 · 0 评论 -
HashMap总结(中)
上文提到了hashMap的原理,这章我们决定好好系统研究一下他的默认值以及hashcode的比较。(理解一个东西最好的办法就是阅读源码以及源码注释)全文会主要讲解以下几个问题?1.为什么默认值是16?2.什么时候扩容?3.为什么加载因子是0.75?##### 为什么默认值是16?什么时候扩容?首先需要知道hashmap的底层数据结构,是数组加链表。既然这...原创 2020-04-18 14:25:15 · 166 阅读 · 0 评论 -
HashMap总结(上)
了解hash碰撞需要先知道,HashMap 的存储方式,hash是由链表和数组为结构的底层实现,HashMap中主要是通过key的hashCode来计算hash值的,只要hashCode相同,计算出来的hash值就一样。如果存储的对象对多了,就有可能不同的对象所算出来的hash值是相同的,这就出现了所谓的hash冲突.java1.7时存储如上图所示,但是在1.8时候就变成了红黑树存储。...原创 2020-04-10 23:32:28 · 210 阅读 · 0 评论