
《 C++ 修炼全景指南:二十 》为什么你的代码不够快?全面掌控 unordered_set 和 unordered_map 的哈希性能飙升魔法
本文深入探讨了 C++ 标准库中的两大无序容器——unordered_set 和 unordered_map,从底层实现、核心操作、性能优化、实际应用等多个方面进行了全面分析。首先,文章介绍了这两种容器的基本概念,说明了它们基于哈希表实现的特点,尤其是在查找、插入和删除操作上具备常数时间复杂度的优势。接着,文章对比了有序容器和无序容器,指出了在不同应用场景下的适用性。通过对哈希表封装的分析,文章详细讲解了插入、查找和删除操作的底层实现,并阐述了如何通过优化哈希函数、负载因子和重哈希机制来提升


【存储中间件】Redis核心技术与实战(一):Redis入门与应用(常用数据结构:字符串String、哈希Hash、列表List)
Redis可以支撑每秒数万的读写操作,但是这指的是Redis服务端的处理能力,对于客户端来说,一次命令除了命令时间还是有网络时间,假设网络时间为1毫秒,命令时间为0.1毫秒(按照每秒处理1万条命令算),那么执行1000次 get命令需要1.1秒(1000。字符串这些命令中,除了del 、mset、 mget支持多个键的批量操作,时间复杂度和键的个数相关,为O(n),getrange和字符串长度相关,也是O(n),其余的命令基本上都是O(1)的时间复杂度,在速度上还是非常快的。我们以brpop为例说明。


哈希表(Hash Table)是一种通过哈希函数进行快速查找的数据结构,常用实现有HashMap和HashSet
HashMap的底层实现是数组和链表,数组里面存放的是链表的头节点,每个节点存储的是一个键值对,通过计算键的哈希值来确定这个键值对在数组中的位置,然后再通过链表来解决哈希冲突的问题。hashmap的扩容机制是指当hashmap中的元素个数超过数组长度乘以负载因子时,就会重新分配一个更大的数组,并将原来的元素重新计算哈希值并插入到新的数组中。HashMap 的扩容机制是指当 HashMap 中的元素个数超过数组长度乘以负载因子时,就会重新分配一个更大的数组,并将原来的元素重新计算哈希值并插入到新的数组中。

