- 博客(4)
- 收藏
- 关注
原创 反射为什么会影响性能?
反射(Reflection)之所以会影响性能,主要是因为它将很多在编译期(Compile-time)就能完成的工作,转移到了运行时(Run-time)才动态地去做。:你清楚地知道目的地“人民公园”的地址是“人民路123号”,并且已经记住了地图。你可以直接、毫不犹豫地走过去。:你只知道有个叫“人民公园”的地方,但你不知道它在哪。你需要在路上打开手机地图,输入名字进行搜索,查看路线,然后才能跟着导航走。显然,第二种方式(反射)花费的时间要长得多。
2025-09-03 14:40:27
734
原创 为什么hashmap底层数据结构在jdk1.8是数组+链表+红黑树,为什么当链表长度超过8并且数组长度超过64会转换为红黑树.为什么链表长度为6时会退化为链表,为什么不是长度为8.
设计选择目的背后的哲学数组+链表+红黑树应对不同级别的哈希冲突,在绝大多数场景保持高效,在极端场景防止灾难。分层处理,权衡时间和空间。树化阈值=8基于泊松分布,这个阈值在正常使用时几乎不会被触发,只在极端情况下启用“保险”。空间换时间,但只在万不得已时。数组长度>64才树化确保扩容优先于树化,先尝试最根本的解决方案。治本优于治标。退化阈值=6(与8相差2)提供缓冲区间,防止在临界值附近频繁增删导致结构摇摆,提升稳定性。保持稳定,避免不必要的性能开销。
2025-09-01 10:53:44
760
原创 数组为什么可以知道长度而链表要遍历才知道
特性数组 (Array)链表 (Linked List) (本质)内存布局连续内存块非连续,节点分散长度确定创建时即固定,作为元数据存储动态变化,无统一存储获取长度O(1),直接读取元数据O(n),必须从头遍历计数设计目的快速随机访问,固定大小集合高效插入/删除,动态大小集合核心答案在于两者根本的内存组织方式不同,这导致了它们记录和获取长度信息的方式产生了本质差异。
2025-09-01 10:09:37
774
原创 hashcode跟hash值的区别
Hash值是一个广泛的计算机科学概念,指数据通过哈希函数生成的固定长度的指纹。HashCode通常特指在像Java这样的编程语言中,对象为了配合哈希表使用而生成的一个int类型的哈希值。它是Hash值的一种具体应用形式。所以,所有的HashCode都是Hash值,但并非所有的Hash值都叫HashCode。HashCode是Hash值大家族中一个为特定目的(哈希表效率)而生的成员。
2025-08-27 15:39:46
673
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅