常见解决哈希冲突的方法
1.线性探查法
当我们往哈希表中插入数据时,如果某个数据经过哈希函数哈希之后,存储位置已经被占用了,我们就从当前位置开始,依次往后查找,看是否有空闲位置,直到找到为止。
2.双重散列方法
所谓双重散列,意思就是不仅要使用一个散列函数,而是使用一组散列函数hash1(key),hash2(key),hash3(key)…先用第一个散列函数,如果计算得到的存储位置已经被占用,再用第二个散列函数,依次类推,直到找到空闲的存储位置。
3.链表法
链表法是一种更加常用的散列冲突解决办法,相比开放寻址法,它要简单很多。在散列表中,每个位置对应一条链表,所有散列值相同的元素都放到相同位置对应的链表中。
什么是区块链?
区块链是一个记录列表,通常称为记账本,它利用密码学元素以开放、防篡改的方式存储交易。每个“块”代表代表一个新的交易分组,并包含三个关键组件:
数据:每个区块中存储的信息取决于区块链的类型。例如,许多加密货币(如比特币)存储交易详细信息,如发送方、接收方和金额。
哈希:一个块的哈希是一个唯一的字符串,用于识别和区分它与其他块。
前一个块的哈希:后续块也存储前一个块的哈希,创建所谓的“区块链”。
区块链在防止篡改和提供对添加到链中的块的公开验证方面是独一无二的。如果一个块被修改,它的哈希值会发生变化,并且所有后续块不再指向正确的哈希值,从而使它们失效。不法分子需要遍历所有以下区块并重新计算其哈希值以修改区块链。
但是,区块链使用称为工作量证明的东西来防止这种情况发生。工作量证明使用一种分布式共识形式在将区块添加到链上之前对其进行验证。这减慢了块验证过程(通常每个添加到链中的块需要几秒钟到几分钟的时间),使恶意行为者无法更改块并重新验证链中的后续块。
区块链网络有哪四种类型?
1.公共区块链
比特币和以太坊(Ethereum)是最早和最典型的区块链网络,也是公共网络。所有人都能读取公共区块链,向公共区块链发送交易,或者参与公共区块链的共识流程。公共区块链无需许可,每笔交易都是公开的,而且用户可以保持匿名状态。
2、半私有区块链
半私有区块链
半私有区块链由单一企业运行,该企业为所有满足预设标准的用户提供访问权限。尽管并未真正去中心化,但在B2B用例和政府应用领域,这类许可区块链仍然极具吸引力。
3、私有区块链
私有区块链也是由单一企业控制,该企业决定谁可以读取区块链、向区块链发送交易和参与共识流程。但是,这种区块链完全中心化,因此只适合用作沙箱环境,无法用于实际生产。
4、共同体区块链
目前,在建立区块链网络的四种方法中,共同体区块链最受欢迎。在共同体区块链中,共识流程由预先选定的团体(如企业团体)控制。可能每个人都可以读取区块链和向区块链提交交易,也可能仅限于参与者。共同体区块链被认为是“许可区块链”,最适合用于商业领域。
区块链技术的三块基石
区块链本质是“分布式数据库”技术,最常听到的比喻是分散式账本,其核心特色是去中心、去中介、公开可靠与永久留存。
在原始技术中,它包含了三个基础。
1,交易(Transaction):形容数据库网络中发生的每一次改变,可以是一笔转账、一个事件通知、或一段信息。
2,区块(Block):累积了一定数量的交易后,会产生一次结算,把刚刚累积的交易信息用高级密码学打包成交易区块。
3,链(Chain):链会依照区块结算的时间先后,把区块一个个依序串联,形成锁链一样不断延伸的资料链。