上一页 1 ··· 9 10 11 12 13 14 15 下一页
摘要: 前言 上一节我们讲了哈希算法的四个应用,分别是安全加密、数据校验、唯一标识、散列函数。今天再来看看剩下的三个应用:负载均衡、数据分片、分布式存储。 可能大家已经发现了,这三个应用都是与分布式相关的。没错,今天我们来学习一下,哈希算法是如何解决这些分布式问题的。 应用五:负载均衡 负载均衡算法有很多, 阅读全文
posted @ 2020-07-06 18:36 大杂草 阅读(177) 评论(0) 推荐(1) 编辑
摘要: 什么是哈希算法 将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法。而通过原始数据映射之后得到的二进制值串就是哈希值。 一个优秀的哈希算法要满足几点要求: 从哈希值不能反向推导出原始数据(所以哈希算法也叫意向哈希算法); 对输入数据非常敏感,哪怕原始数据只修改了一个Bit, 阅读全文
posted @ 2020-07-06 15:44 大杂草 阅读(475) 评论(0) 推荐(1) 编辑
摘要: 有两种数据结构(散列表和链表)经常会被放在一起使用。前面的章节中有两个地方讲到散列表和链表的组合使用,分别是: 《数据结构与算法之美》04——链表 《数据结构与算法之美》13——跳表 另外,Java中有一个容器LinkedHashMap也使用到散列表和链表。 下面我们来看看这几个问题,散列表和链表是 阅读全文
posted @ 2020-07-05 21:20 大杂草 阅读(197) 评论(0) 推荐(1) 编辑
摘要: 通过上一节的学习,我们知道,散列表的查询效率并不能简单说成是O(1)。它跟散列函数、装载因子、散列冲突等地都有关系。 今天我们来学一下,如何设计一个可以应对各种异常情况的工业级散列表,来避免在散列冲突的情况下,散列表性能的急剧下降,并且能抵抗散列碰撞攻击? 下面我们从散列函数、装载因子、散列冲突等方 阅读全文
posted @ 2020-07-04 12:53 大杂草 阅读(179) 评论(0) 推荐(1) 编辑
摘要: 今天我们来介绍一个新的数据结构:散列表(Hash Table),平时也叫“哈希表”或“Hash表”。 散列表用的是数组支持按照下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。 下面用个例子来介绍一下。 假如我们有89名选手参加学校运动会。为了方便记录成绩,每个选手都有一个参 阅读全文
posted @ 2020-07-03 17:07 大杂草 阅读(290) 评论(0) 推荐(1) 编辑
摘要: 上篇文章介绍了二分查找算法。因为二分查找底层依赖的是数组随机访问的特性,所以只能用数组来实现。那么数据存储在链表中,就不能用二分查找算法吗? 对于一个单链表,即便链表中存储的数据是有序的,如果要查找某个数据,也只能从头到尾遍历链表。这样查找效率很低,时间复杂度是O(n)。 如果像图中那样,对链表建立 阅读全文
posted @ 2020-06-24 09:37 大杂草 阅读(220) 评论(0) 推荐(1) 编辑
摘要: 二分查找是一种非常简单易懂的快速查找算法,生活中随处可见,比如数字炸弹游戏。 二分查找针对的是一个有序的数据集合,查找思想有点类似分治思想。每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为0。 惊人的查找速度 二分查找是一种非常高效的查找算法,时 阅读全文
posted @ 2020-06-24 09:32 大杂草 阅读(264) 评论(0) 推荐(1) 编辑
摘要: 一、问题描述 如何实现一个通用的、高性能的排序函数? 二、如何选择合适的排序算法 线性排序的时间复杂度比较低,适用场景特殊,不适合。 小规模数据排序,可以选择时间复杂度O(n2)的算法; 大规模数据排序,选择时间复杂度O(nlogn)的算法;比如Java采用堆排序,C语言使用快速排序。 三、如何优化 阅读全文
posted @ 2020-06-22 19:25 大杂草 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 一、桶排序 概念 桶排序,核心思想是将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。桶内排序之后,再把每个桶里的数据按照顺序依次取出,组成的序列就是有序的。 应用场景 桶排序比较适合用在外部排序中。所谓的外部排序就是数据存储在外部磁盘中,数据量比较大,内存有限,无法将数据全部加载到内 阅读全文
posted @ 2020-06-21 22:48 大杂草 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 一、归并排序 要排序一个数组,先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起。如下图: 重点: 归并排序使用的是分治思想。分治,就是分而治之,将一个大问题分解成小的子问题来解决。 分治思想跟递归思想很像,分治算法一般是用递归实现。 分治是一种解决问题的处理思想, 阅读全文
posted @ 2020-06-21 21:58 大杂草 阅读(408) 评论(0) 推荐(1) 编辑
上一页 1 ··· 9 10 11 12 13 14 15 下一页