![](https://img-blog.csdnimg.cn/20210428132025981.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
程序设计
文章平均质量分 84
程序设计思路
dongcheng_2015
这个作者很懒,什么都没留下…
展开
-
常用4种限流算法介绍及比较
本文源自转载:常用4种限流算法介绍及比较目录1、计数器(固定窗口)算法2、滑动窗口算法3、漏桶算法4、令牌桶算法1、计数器(固定窗口)算法计数器算法是使用计数器在周期内累加访问次数,当达到设定的限流值时,触发限流策略。下一个周期开始时,进行清零,重新计数。此算法在单机还是分布式环境下实现都非常简单,使用redis的incr原子自增性和线程安全即可轻松实现。这个算法通常用于QPS限流和统计总访问量,对于秒级以上的时间周期来说,会存在一个非常严重的问题,那就是临界问题.转载 2021-05-24 11:38:05 · 234 阅读 · 0 评论 -
ConcurrentHashMap的size方法是线程安全的吗?
本文源自转载:ConcurrentHashMap的size方法是线程安全的吗?目录一、HashMap存在的问题二、HashMap三、ConcurrentHashMap3.1 JDK1.7中的ConcurrentHashMap3.2 JDK1.8后的ConcurrentHashMap3.2.1 put方法3.2.2get()方法3.2.3 size()方法四、总结一、HashMap存在的问题我们都知道Hash表的结构是数组加链表,就是一个数组中,每一个元素都是.转载 2021-05-23 17:17:30 · 260 阅读 · 0 评论 -
Java8的@sun.misc.Contended注解解决伪共享问题
本文源自转载:Java8的@sun.misc.Contended注解目录一、@sun.misc.Contended 介绍二、单独使用一个缓存行有什么作用——避免伪共享三、@sun.misc.Contented的使用实例一、@sun.misc.Contended 介绍@sun.misc.Contended 是 Java 8 新增的一个注解,对某字段加上该注解则表示该字段会单独占用一个缓存行(Cache Line)。这里的缓存行是指 CPU 缓存(L1、L2、L3)的存储单元,常见的转载 2021-05-23 17:15:20 · 524 阅读 · 0 评论 -
ThreadLocal的内存泄露?什么原因?如何避免?
本文源于转载:ThreadLocal的内存泄露?什么原因?如何避免?另一篇讲的挺好的文章:ThreadLocal原理及内存泄露预防前言在分析ThreadLocal导致的内存泄露前,需要普及了解一下内存泄露、强引用与弱引用以及GC回收机制,这样才能更好的分析为什么ThreadLocal会导致内存泄露呢?更重要的是知道该如何避免这样情况发生,增强系统的健壮性。内存泄露内存泄露为程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多转载 2021-05-20 11:22:40 · 180 阅读 · 0 评论 -
常见的Hash算法?解决hash冲突的算法?如何自己手写一个hash算法?
目录一、Hash函数介绍二、基本概念三、hash函数的应用四、加密hash算法五、查找hash算法六、hash函数的分类七、哈希函数的选择八、hash冲突的解决办法8.1开放定址法8.2 再哈希法8.3链地址法8.4建立公共溢出区九、如何自己手写一个hash算法9.1加法hash9.2 位运算hash参考博文一、Hash函数介绍在记录的关键字与记录的存储地址之间建立的一种对应关系叫哈希函数。 哈希函数就是一种映射,是从关键字到存储...原创 2021-05-18 13:08:41 · 1128 阅读 · 1 评论 -
如何保证缓存(redis)与数据库(MySQL)的一致性
本文源自转载:原文链接。简介:对于热点数据(经常被查询,但不经常被修改的数据),我们可以将其放入redis缓存中,以增加查询效率,但需要保证从redis中读取的数据与数据库中存储的数据最终是一致的。本文基于“孤独烟”与“58沈剑”两位的文章,针对一致性的问题进行了汇总总结。一、前言客户端对数据库中的数据主要有两类操作,读(select)与写(DML)。针对放入redis中缓存的热点数据,当客户端想读取的数据在缓存中就直接返回数据,即命中缓存(cache hit),当读取的数据不在缓存内,就需要.转载 2021-05-15 16:25:30 · 1425 阅读 · 0 评论 -
在HashMap中将可变对象用作Key,需要注意什么?
本文属于转载:原文链接。目录1、什么是可变对象2、HashMap如何存储键值对3、在HashMap中使用可变对象作为Key带来的问题4、如何解决1、什么是可变对象可变对象是指创建后自身状态能改变的对象。换句话说,可变对象是该对象在创建后它的哈希值可能被改变。在下面的代码中,对象MutableKey的键在创建时变量 i=10 j=20,哈希值是1291。然后我们改变实例的变量值,该对象的键 i 和 j 从10和20分别改变成30和40。现在Key的哈希值已经变成1931。转载 2021-05-15 14:54:58 · 629 阅读 · 0 评论