最新 最热

干货 | 携程百亿级缓存系统探索之路——本地缓存结构选型与内存压缩

作者简介一十,携程资深后端开发工程师;振青,携程高级后端开发专家。一、前言携程酒店查询服务是酒店BU后端的核心服务,主要负责提供所有酒店动态数据计算的统一接口。在处理请求的过程中,需要使用到酒店基础属性信息、价格...

2022-05-27
1

Redis 为何使用近似 LRU 算法淘汰数据,而不是真实 LRU?

在《Redis 数据缓存满了怎么办?》我们知道 Redis 缓存满了之后能通过淘汰策略删除数据腾出空间给新数据。

2022-05-26
1

从源码里的一个注释,我追溯到了12年前,有点意思。

table 大家都知道,是 HashMap 的一个成员变量,往 map 里面放的数据就存储在这个 table 里面的:

2022-05-25
1

多线程笔记(十)集合 的线程安全

他是线程不安全的,我们创建这个对象,调用他的add方法往里面加东西,我们看源码,可以看到这个add方法是没有加锁的,所以在多线程往这个集合里面加数据的时候,会出现并发修改异常...

2022-05-25
1

Redis面试,你能说清 Redis的数据类型与内部结构吗?

这其实和我们Java是类似的,Java中的ArrayList类,实际上是用数组结构存储的,HashMap类是利用数组+链表+红黑树存储的

2022-05-25
1

java安全之dnsurl探究

反序列化漏洞在各个语言⾥里本不是一个新鲜的名词,但2015年Gabriel Lawrence (@gebl)和Chris Frohoff (@frohoff)在AppSecCali上提出了利用Apache Commons Collections来构造命令执行的利⽤链,并在年底因为对Weblogic、JBoss、Jenk......

2022-05-17
1

为什么 HashMap 要用 h^(h >>>16) 计算hash值?槽位数必须是 2^n?

昨天中午,一位粉丝朋友在微信私信我,问:为啥HashMap的hash值计算格式是这样:(h = key.hashCode()) ^ (h >>> 16)?h ^ ^ (h >>> 16)是什么意思?

2022-05-17
1

数据结构-散列表(下)

今天,我们就来看看,在这几个问题中,散列表和链表都是如何组合起来使用的,以及为什么散列表和链表会经常放到一块使用。

2022-05-17
1

阿里Java编程规约【六】 集合处理

我的笔记:《Effective Java》告诉我们重写hashcode方法的最佳实践方式。 一个好的 hashcode 方法通常最好是不相等的对象产生不相等的 hash 值,理想情况下,hashcode方法应该把集合中不相等的实例均匀分布到所有可能的 ha...

2022-05-17
1