首页

来自智得网
跳转至: 导航、​ 搜索

精选文章

索引查看全文
新华字典拼音检索法的索引.png
索引是一个计算机术语,少量数据的检索可以通过轮询进行,但是大量数据的检索需要借助索引进行,索引就是通过提前建好的有序数据指向真正数据的辅助结构。比如我们在一本厚重的字典中如何找到某个汉字,因为字典本身会按照拼音顺序排序,所以你可以直接通过二分的方式查询,但是如果提供一定的索引能力,比如在侧页上印刷上拼音的首字母,仍然会加快我们的索引速度,这就是有序数据的索引方式,引入二级的辅助结构。类似于跳表或者数的中间节点。还有,拼音,部首检字法都是直接定位到汉字的位置,类似于Hash索引。

有序索引 如果数据本身已经是有序的,那么通过二分查找可以快速查询到数据,二分查找的时间复杂度是log(n)。如果n较大的情况下依然会比较慢,使用二分速度仍然可能出现比较次数较多的情况,此时可以借助一个辅助的结构,一般是把数据分段,每段记录起始数据和结束数据,在检索的过程中可以先通过段的索引,然后在段内部进行二分即可。尺寸较厚的词典经常在侧面对不同字母开头的词汇使用一个色块标识,就是减少二分的次数,可以快速定位某个字母开头的词汇。这种方式在消息队列等,LSM树都有应用场景。 有序数据查找的时间复杂度是 。 Hash索引 对于无序数据的检索,Hash索引是比较常用的方式,比如常见的缓存,大多采用Hash的方式进行数据检索。Hash是将数据通过一定方式映射为定长的key,然后通过key直接和数据进行关联。 目前流行的 Hash 算法包括 MD5、SHA-1 和 SHA-2等。 无论何种Hash算法都会产生Hash冲突的问题,通常使用拉链法解决冲突。 B树索引

B-树索引是基于二叉树结构的。B-树索引结构有3个基本组成部分…
Graphviz查看全文
Graphviz编写的Hash结构.svg
Graphviz 是一个开源的图形编辑语言,可以进行图形的可视化编辑,绘制结构化的图标和图形非常方便。

Graphviz 使用 DOT 语言来表示图形。 DOT语言可以用简单的文本来表示结点,连线,布局等。 DOT语言描述结点,连线,布局的文本都非常简单,而且从文本本身可以推测中起含义。 结点 DOT语言描述结点的方式是`NodeName`[label=`LabelName`]。 结点可以分为普通的节点和列表节点,列表节点可以使用竖线分隔多个Label来表示,`NodeName`[label=`LabelName1|LabelName2|LabelName3|...|LabelNameN`]。 列表节点的展示可以横排或者竖排,横排使用中括号[]还包裹列表元素,竖排使用{}包裹列表元素。 连线 使用`NodeName1`->`NodeName2`的方式可以绘制一条从节点1到结点2的直线。 `NodeName1`->{`NodeName2` `NodeName3`},可以使NodeName1的结点指向用{}包裹,空格分隔的多个结点。 splines=false;可以强制连线都是直线。 布局 布局可以分为水平布局(左右布局)和垂直布局,rankdir=LR;指定水平布局,在全局范围内生效。 水平布局的时候,可能有一些record需要垂直摆放,label="{}",如果和randdir一致,则不需要{}。 技巧 绘图过程中可以创建一些隐藏结点使得图形对齐。 Hash表 B+树

叶子节点对齐的时候注意,如果是普通的record节点,rank=same,不同的weight权重…
UDP查看全文
UDP传输示意图.png
UDP是数据报文协议,是以数据包方式发送和接收报文。

和面向连接的TCP协议不同,UDP不需要保证传输的可靠性,所以UDP可以以更加恒定的速度发送数据,所以对很多需要时效的场景更加适用。 UDP提供尽最大努力的交付,不保证可靠交付。所有维护传输可靠性的工作需要用户在应用层来完成。没有TCP的确认机制、重传机制。如果因为网络原因没有传送到对端,UDP也不会给应用层返回错误信息。 UDP是面向报文的,对应用层交下来的报文,添加首部后直接乡下交付为IP层,既不合并,也不拆分,保留这些报文的边界。对IP层交上来UDP用户数据报,在去除首部后就原封不动地交付给上层应用进程,报文不可分割,是UDP数据报处理的最小单位。 和TCP相比,在传输协议方面,UDP可以设置的属性较少,不能控制读写数据的次数和数量。数据包的发送和接收都必须是一个整体。 因为UDP不需要保证可靠的传输,所以UDP在传输的生命周期中不需要处理建立连接,断开连接,重传等,不需要维护连接状态,也不需处理流量控制和拥塞控制,所以性能开销较少,传输效率较TCP较高。其实现非常简单,UDP的报文结构也非常简单。 UDP的报文结构简单,只包括传输端以及对端的地址/端口信息,以及报文,报文长度,报文的校验和。

和IP的检验和只校验数据包头部不同,UDP的校验和包括头部和数据部分。

热门分类

算法题库

精选内容