CN-Language中文编程语言:第128篇-哈希化
2011 年 12 月,德国混沌计算机大会(28C3)上,两位研究员公开了一类让全行业连夜打补丁的攻击:几乎所有主流语言(Java、PHP、Python、ASP.
String 为什么设计成不可变,追问到字符串常量池我才算讲透
上个月陪一个准备跳槽的兄弟做模拟面试,我扮演面试官,第一个问题就是 String 为什么不可变。他脱口而出:「因为类是 final 的,里面的数组也是 final 的。」我追了一句:「final 修饰数组,锁住的是引用还是内容?」他愣了三秒。这一愣基本就暴露了,答案是背的。
只重写 equals,你的 HashMap 就废了
有一个 bug 特别典型:代码里往 Map 里放了一个对象,然后拿一个"看起来一样"的对象去取,取出来是 null。你打开调试,看到两个对象的字段完全一致,equals 也返回 true,但 get 就是拿不到。这个现象的原因几乎总是同一个:重写了相等判断,但没重写哈希计算。
java 集合大全
基于 JDK 8 ~ JDK 21,按使用频率排序。每个集合包含:是什么、干什么用、使用场景、异常与并发注意事项(是否线程安全、是否阻塞)、经典 Demo、遍历方式。一、集合框架总览与选型决策1.
C#重写 Equals 和 GetHashCode:一个必须成对出现的组合
你有没有遇到过这种情况:明明往 Dictionary 里放了数据,ContainsKey 却返回 false;或者 HashSet 里出现了两个"看起来一样"的元素。八成是因为你只重写了 Equals,忘了 GetHashCode。这两兄弟必须成对出现,这篇就把它讲透。
深入理解领域驱动设计(DDD):Java 实现与代码示例
引言在构建复杂业务系统时,我们常常面临代码结构混乱、业务逻辑分散、维护成本高昂等问题。领域驱动设计(Domain-Driven Design, DDD)作为一种软件开发方法论,通过将业务领域的核心概念映射到软件模型中,帮助我们构建出更清晰、更可维护的系统。
彻底搞懂equals和hashCode!底层原理+重写规范
只要你写Java代码,equals() 和 hashCode() 是永远绕不开的两个方法。无论是日常开发去重、对象比对、集合存储,还是面试高频八股提问,这一对方法都是重中之重。