分类 博客文章 下的文章

bjmayor发布于2021-08-29

区块链技术的本质

区块链技术的本质

本文来自《极客时间》,左耳听风 付费专栏。只有部分内容,我个人感觉讲的通俗易懂,摘抄下来慢慢品,更有意思的其实是评论内容,想看完整内容的请自行前往购买。

区块链技术的革命性

你一定看过太多的文章用各式各样的比喻来讲区块链技术是什么,以及为什么它是未来。在这里,我尝试用我的话来说明一下区块链技术的革命性。

说区块链必然要谈比特币,比特币是一种数字货币。但最令人叫绝的是,比特币号称有下面几个特性。

  • 去中心化。这意味着没有中心的服务器,不受某个人的控制,整个系统直接由用户端的电脑构成。这样的技术难度是非常大的,并不像手机 App 或是小网站一样,你想发布就发布,这需要有人来跟你一起玩。

  • 数据防篡改。所有交易记录全量保存,并公开给所有的人,而且还被加密和校验。并不是数据不能被篡改,而是数据被篡改的成本非常大。(有人借此说区块链的不可篡改可以解决人类的信任问题,这个并不一定。)

  • 固定的发行量。不会像国家中央银行那样乱印钞票,造成通货膨胀。

阅读全文»

bjmayor发布于2021-08-29

MySQL为何选择B+树存储索引

MySQL为何选择B+树存储索引

声明
本文所述的各种数据结构(二叉树等),均不考虑重复值的情况,本文简述各种数据结构的区别仅仅只是为了理解MySQL索引的需要而做的铺垫。

什么是索引

提起索引,大家都知道,建立索引可以让数据库查询更快,那么索引究竟是什么?我想这就不是每个人都能说得出来了。
索引,是数据库管理系统中一个排序的数据结构,并用以协助快速查询、 更新数据库表中数据。
是的,索引是一种数据结构,但是那么多的数据结构中为何MySQL要选择B+树呢?接下来就让我们一起来了解下B+树相对于其他数据结构有何独特之处!

二分查找法(Binary Search)

首先让我们自己想一想,如果让我们去设计,我们会怎么去存储?我想大部分人想到就是用链表或者数组去存储数据,然后再按默认的顺序排好,再去查找,而一个排好顺序的链表我们就可以通过二分查找法来高效查询。

二分查找也称折半查找,是一种效率较高的查找方法。比如有1-10十个数,我们要找到8,先从中间开始找5,然后发现8比5大,可以把5左边的数去掉,剩下6-10,再从中间开始找,依次类推,直到找到8为止。但是这种查找法有一个前提是数据必须是有序的,而且这种属于链表式的存储,我们一但要插入或者修改一个数据,可能会伴随着大量的下标移动,比如我们把1-10放在数组里面,下标分别对应0-9,然后现在要插入一个0,为了保证有序,0必须排在第一位,那么1-10所有的数据下标都要往后移动一位,这种就有点大动干戈了,所以为了解决这个问题,我们就有了二叉树。

二叉查找树(BST)

二叉查找树简称二叉树(BST),英文全称:Binary Search Tree,这是一种什么样的数据结构呢?请看下图

img

在上面这棵树中,我们要找到8,先从根节点6开始比较,发现8比6大,就往右边走,就可以找到8

阅读全文»