What is Hash?(什么是哈希)
Hash, 是“散列”的意思,就是把任意长度的输入(预映射, pre-image),通过散列算法,变换成固定长度的输出,那么输出的就是散列值。简单来说,Hash就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
Hash Algorithm(哈希算法)
举个简单的例子,比如家里来了一摞书,没有按照顺序就放在了书架上,看似很整齐,但是当你去查找哪一本书的时候,你可能就会头大了。因为这么多书,没有一定规则存放,要找具体哪一本书非常地费时,有时候还未必能找到。就在你一筹莫展的时候,你母亲进来了,帮你把所有的书,全部拿出来,先按书的类别进行分类,有历史、人文、科普、计算机专业、土木工程专业、摄影等类别,放在不同的分区。虽然分类的过程花费的时间比随意乱放要长很多,但是你按一定规则摆放书籍之后,以后能更快地的找到你想要的具体拿一本书,因而提高了查找效率。
以上的例子是哈希算法应用于生活的一个十分常见的例子。也就是说,通过哈希算法,我们能按一定的规范存储数据,目的就是给数据定位,以便于之后查找。这是哈希算法的核心价值所在。不过,没有一样东西是完美的,算法也不例外。就像摆放书籍这个例子一样,虽然按照了一定规则去摆放书籍,方便查找,但是按某种规则去防止书籍的过程缺花费了不少的时间。那也就是说,哈希算法,
优点:查找数据快;
缺点:插入数据慢。