哈希表哪家强,几大编程语言吵起来了!
合集 · 动画图解技术 (15)
-
Redis缓存管理机制
5:50
-
Redis持久化存储机制
6:14
-
Redis哨兵与高可用原理
6:46
-
Redis集群是如何工作的?
4:41
-
一个动画搞懂MySQL索引原理!
6:53
-
可怕!CPU竟成为黑客帮凶!
6:20
-
完了!CPU一味求快出事儿了!
6:39
-
Linux如何调度进程?大学老师不讲的,看完动画秒懂!
10:40
-
HTTPS真的安全吗,一个动画秒懂!
6:47
-
劫持TCP连接,这操作太骚了!
6:28
-
CPU被挖矿,Redis竟是内鬼!
5:59
-
CPU深夜狂飙,真相让人傻眼了!
5:10
-
一个整数+1,攻破Linux系统内核!
6:31
-
天天写程序,连调试器工作原理都不懂?一个动画帮你搞懂!
6:24
-
哈希表哪家强,几大编程语言吵起来了!
5:05
Description
各大编程语言的哈希表,有什么区别,哪家更强呢?
Comments
go 竟然一言不发
♥ 171 ↩ 7
既然是做视频 就不要打哑谜卖关子了,因为观众没有地方去和你交互。
♥ 61 ↩ 3
看成了哈基表[笑哭]
♥ 49 ↩ 10
Java里面的很多小巧思都是来自《高效程序的奥秘》这本书。另外我觉得最牛逼的实现还是ConcurrentHashMap了,HashMap源码一共才2000多行,但ConcurrentHashMap直接飙到了6000多行代码~~~~
♥ 46 ↩ 7
没有rust zig我不看[doge]
♥ 42
你们别逃了,书我都借到
♥ 37 ↩ 7
为什么没有Lua,我觉得Lua万物都是表,用到极致。
♥ 32 ↩ 8
这有啥好吵的,现在cpp,rust,go都是基于swisstable搞得了
♥ 28
那必须是PHP的数组。 不夸张地说,PHPer只需要学会数组操作,基本就能解决80%以上的业务问题。 这就是为什么有人会说PHP是面向数组编程 [嗑瓜子]
♥ 25 ↩ 2
Golang为何一言不发
♥ 21 ↩ 2
cpp出现得早,所以历史包袱最多,什么map、vector<bool>、bitset等都被极其糟糕的实现占用了,为了兼容性还没法改 写模板的时候甚至得对这几个坑的偏特化做专门处理,不然哪天就会boom[doge]
♥ 19
线性探测法,链地址法,都是学说讨论出来的。 都有各自的优缺点,链地址法实际上有缓存不容易命中的开销,在少数数据的情况下性能还不如线性探测法。 Java里的取&基本都是这样来的,&mask。因为这样还有个好处,在rehash的时候,只需要把扩容后的长度的最高位,判断一下原来的hash值是不是1,是的话直接移到后面的数组里去,而不需要重新计算hash值和取模。
♥ 18
C#是Dictionary。。
♥ 17 ↩ 2
我去这下真的下午刚问过gpt的问题就出视频了[哦呼]
♥ 14 ↩ 2
java老哥内存占的多话也是最多的
♥ 14 ↩ 3
JavaScript是最好的语言(雾)
♥ 12 ↩ 1
cpp的哈希表为什么要叫unordered map呢,总的来说是历史发展的问题 因为之前发展出了map,而这个map是基于红黑树的,它在逻辑上是按照键key的顺序存储的,意味着你可以按顺序遍历map容器,也可进行范围查询等,所以说它虽然没标注为ordered map,但底层确实是“有序”的 后来c++11才有了基于哈希表实现的unordered map,底层数据的存储是和键key的顺序无关的(而是和key的哈希值相关),所以取名叫unordered “无序”。同时这也说明你无法做到像map那样按key递增或递减等的顺序遍历容器(可以实现但是开销很大),也无法按key的范围查找结果(但是由于使用了哈希表,单次查找的效率是很高的)
♥ 10 ↩ 2
这么来看C++标准库的性能好像也不怎么样啊[吃瓜]
♥ 9 ↩ 12
宣传一下我自己用C++写的swisstable,接口和stl一样[给心心][给心心],性能有2~1000倍的提高[给心心][给心心] https://github.com/CedarSnowy/swisstable
♥ 7 ↩ 1