缓存经常被用来减少数据库访问量,以此来提高系统性能,承受更多的并发请求,就像“防弹衣”一样保护着数据库,防止被一颗颗“请求子弹”击中。 但引入缓存,也带来了一些新的问题,比如缓存击穿、缓存穿透、缓存雪崩、缓存数据...
This article will show why and when use ArrayMap and SparseArray to optimize your Android Applications.
这次我们要进入 Nacos 的一致性底层原理了,还是先来一张架构图,让大家对 Nacos 的架构有个整体的印象,本篇会主要讲解一致性模块中的 Distro 协议。
上一讲我们讲到了 Eureka 注册中心的 Server 端有三级缓存来保存注册信息,可以利用缓存的快速读取来提高系统性能。我们再来细看下:
本篇从源码角度带你学习 Eureka 服务端接收注册的流程。另外我从源码中也发现了一些值得我们学习的地方,如 Eureka 存储注册表的数据结构、利用读写锁来控制更细粒度的并发性,提高程序的运行效率。...
集合框架有Map和Collection两大类,Collection下面有List、Set、Queue。List下面有ArrayList、Vector、LinkedList。如下图所示:
通过查看Java JDK1.8putVal()源码可看到,有两种情况可能会触发扩容。
JDK1.8之前HashMap由数组+链表组成。数组是HashMap的主体,链表主要是为了解决哈希冲突而存在。哈希冲突是两个对象调用hashCode方法计算的哈希值相同导致计算的数组索引值相同。...
乐观锁是一种乐观思想,假定当前环境是读多写少,遇到并发写的概率比较低,读数据时认为别的线程不会正在进行修改(所以没有上锁)。写数据时,判断当前 与期望值是否相同,如果相同则进行更新(更新期间加锁,保证是原子性的)。...