为什么Java String类的哈希乘数选择31?
前面简单介绍了[ 经典的Times 33 哈希算法 ],这篇我们通过分析Java 1.8 String类的哈希算法,继续聊聊对乘数的选择。
String类的hashCode()源码 /** Cache the hash code for the string */ private … [阅读文章]聊技术聊人生
前面简单介绍了[ 经典的Times 33 哈希算法 ],这篇我们通过分析Java 1.8 String类的哈希算法,继续聊聊对乘数的选择。
String类的hashCode()源码 /** Cache the hash code for the string */ private … [阅读文章]在《什么是布隆过滤器(Bloom Filter)?》一文中,多次提到了误识别率(FPP,false positive probabilistic)。
那么误识别率到底是多大,应该如何计算呢?
假设布隆过滤器大小为m比特,存储了n个元素,使用k次散列函数来计算元素的存储位置。 … [阅读文章]
在从事电子商务行业,或者开发电子商务系统时,通常绕不开两个概念,即SPU和SKU。
对这两个概念的理解和应用,能够在很大程度上简化对商品的管理,提供更好的扩展性。
SPUSPU指标准化产品单元(Standard Product Unit),是商品信息聚合的最小单位。是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。 … [阅读文章]
在日常工作中,有一个比较常见的需求,就是需要判断一个元素是否在集合中。
例如以下场景:
给定一个IP黑名单库,检查指定IP是否在黑名单中? 在接收邮件的时候,判断一个邮箱地址是否为垃圾邮件? 在文字处理软件中,检查一个英文单词是否拼写正确?遇到这种问题,通常直觉会告诉我们,应该使用集合这种数据结构来实现。例如,先将IP黑名单库的所有IP全部存储到一个集合中,然后再拿指定的IP到该集合中检查是否存在,如果存在则说明该IP命中黑名单。 … [阅读文章]
清末政府腐败无能。
熙和园,光绪结婚耗光了钱。
军费欠缺,预算买军舰弹药的钱基本没指望。
日本扩军十年,60%的财政建军。
1890年后海军逐渐超过清军,军舰排量更大,速炮舰更灵活。
最后北洋水师全军覆灭,大清从此急转而下,日本从被压迫国转为压迫国。 … [阅读文章]
人工智能所能解决的问题只是世界上问题的很小一部分。
世界上有很多问题,其中只有一小部分是数学问题; 在数学问题中,只有一小部分是有解的; 在有解的问题中,只有一部分是理想状态的图灵机可以解决的; 在后一类的问题中,又只有一部分是今天实际的计算机可以解决的; … [阅读文章]国际标准书号(International Standard Book Number),简称ISBN,是专门为识别图书等文献而设计的国际编号。
ISO于1972年颁布了ISBN国际标准,并在西柏林普鲁士图书馆设立了实施该标准的管理机构——国际ISBN中心。 … [阅读文章]
JVM在类被加载后,并且被线程使用之前,会进行类的初始化。在初始化期间,JVM将会获取一个锁,以同步多个线程对类的初始化。
根据Java语言规范,在首次发生下列任意一种情况时,一个类或接口类型T将被立即初始化:
T是一个类,而且一个T类型的实例被创建。 … [阅读文章]编码,是用于表示和传递信息的方式。例如,摩尔斯电码,用点和划来表示信息,用于电报机通信。布莱叶盲文,使用凸出和不凸出来表示信息,阅读者通过触摸来理解信息。
对于计算机,底层是使用0和1来表示信息,通过多个0和1的组合,可以表示几乎无穷无尽的信息。 … [阅读文章]
JMH的全称是Java Microbenchmark Harness,即Java微基准测试工具。
JMH是一个用于构建,运行和分析基于Java及其他JVM语言的基准测试工具。它也是OpenJDK项目的一部分。
要运行JMH基准测试,推荐的方法是使用Maven来构建一个测试项目。生成相关的依赖信息,以及简单的测试骨架代码。由于这种方式比较纯粹,项目是全新的、自动生成的,不受其他环境的影响,因此比较可靠。 … [阅读文章]
在默认情况下,Fastjson实现了JavaBean和JSON对象之间的映射。
此外,Fastjson还支持一种更精简的映射,可以实现JavaBean与JSON数组之间的映射。优点是序列化之后的JSON字符串更小,缺点是降低了可读性。 … [阅读文章]