摘要:
一、散列思想 散列表的英文叫“Hash Table”,也叫它“哈希表”或者“Hash表”。 散列表用的是数组支持按照下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。可以说,如果没有数组,就没有散列表。 举个例子: 假如有89名选手参加学校运动会。为了方便记录成绩,每个选手胸 阅读全文
摘要:
生产者消费者模式 生产者消费者模式是程序设计中非常常见的一种设计模式,被广泛运用在解耦、消息队列等场景。 使用生产者消费者模式通常需要在两者之间增加一个阻塞队列作为媒介,有了媒介之后就相当于有了一个缓冲,平衡了两者的能力。 整体如上图所示,最上面是阻塞队列,右侧的 1 是生产者线程,生产者在生产数据 阅读全文
摘要:
原文地址 一、什么是“搜索”算法? 算法是作用于具体数据结构之上的,深度优先搜索算法和广度优先搜索算法都是基于“图”这种数据结构的。 因为图这种数据结构的表达能力很强,大部分涉及搜索的场景都可以抽象成“图”。 图上的搜索算法,最直接的理解就是,在图中找出从一个顶点出发,到另一个顶点的路径。 具体方法 阅读全文
摘要:
线程池 通过建立池可以有效的利用系统资源,节约系统性能。Java 中的线程池就是一种非常好的实现,从 JDK1.5 开始 Java 提供了一个线程工厂 Executors 用来生成线程池,通过 Executors 可以方便的生成不同类型的线程池。 线程池的优点 降低资源消耗。线程的开启和销毁会消耗资 阅读全文
摘要:
一、理解 “图” 图(Graph)。和树比起来,这是一种更加复杂的非线性表结构。 树中的元素称为节点,图中的元素叫作顶点(vertex)。 如下图所示,图中的一个顶点可以与任意其他顶点建立连接关系。这种建立的关系叫作边(edge)。 举个例子 微信: 比如在微信中可以把每个用户看作一个顶点。 如果两 阅读全文
摘要:
一、数的概念 Tree 如上图所示,是一个树形机构,这里面每个元素叫作“节点”,用来连线相邻节点之间的关系,叫作“父子关系”。 A 节点是 B 节点的父节点, B 节点是 A 节点的子节点。 B、 C、 D 这三个节点的父节点是同一个节点,所以它们之间互称为兄弟节点。 没有父节点的节点叫作根节点,也 阅读全文
摘要:
官网介绍 Hive 中的数据需要导入到 Hbase 表中,这里采用 Hbase 自带的 ImportTsv。 ImportTsv 导入数据时执行的是 MapReduce 任务,适合大数据导入。 流程如下: 一、将要导入 Hbase 的 Hive 表加载到临时表中,存储文件格式为 TXT,并以 \t 阅读全文
摘要:
一、跳表介绍 二分查找底层依赖的是数组随机访问的特性,所以只能用数组来实现。如果数据存储在链表中,能否用二分查找算法? 实际上,只需要对链表稍加改造,就可以支持类似“二分”的查找算法。 改造之后的数据结构叫作跳表(Skip list)。 跳表是一种各方面性能都比较优秀的动态数据结构,可以支持快速的插 阅读全文
摘要:
一、二分法查找介绍 二分查找针对的是一个有序的数据集合,查找思想有点类似分治思想。 每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为0。 1.1、二分法查找的时间复杂度 我们假设数据大小是 n,每次查找后数据都会缩小为原来的一半,也就是会除以2。 阅读全文
摘要:
一、归并排序 Merge Sort 1.1、实现原理 如果要排序一个数组,我们先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起,这样整个数组就都有序了。 归并排序使用的就是分治思想。分治,顾名思义,就是分而治之,将一个大问题分解成小的子问题来解决。小的子问题解决了 阅读全文
摘要:
一、kafka 介绍 1.1、kafka 介绍 Kafka 是一个分布式消息引擎与流处理平台,经常用做企业的消息总线、实时数据管道,有的还把它当做存储系统来使用。 早期 Kafka 的定位是一个高吞吐的分布式消息系统,目前则演变成了一个成熟的分布式消息引擎,以及流处理平台。 Kafka 主要起到削峰 阅读全文
摘要:
一、衡量一个排序算法 1.1、排序算法的执行效率 最好情况、最坏情况、平均情况时间复杂度 时间复杂度的系数、常数 、低阶 时间复杂度反应的是数据规模 n 很大的时候的一个增长趋势,所以它表示的时候会忽略系数、常数、低阶。 但是实际的软件开发中,我们排序的可能是10个、 100个、 1000个这样规模 阅读全文
摘要:
一、YARN 介绍 yarn 是下一代 MapReduce,即 MRv2,是在第一代 MapReduce 基础上演变而来的,主要是为了解决原始 Hadoop 扩展性较差,不支持多计算框架而提出的,通俗讲是跑任。 其 核心思想 :将 MR1 中 JobTracker 资源管理和作业调用两个功能分开,分 阅读全文
摘要:
一、锁的类型 1.1 可重入锁 在执行对象中所有同步方法不用再次获得锁。 如果锁具备可重入性,则称作为可重入锁。synchronized 和 ReentrantLock 都是可重入锁。 可重入性表明了锁的分配机制:基于线程的分配,而不是基于方法调用的分配。 比如说,当一个线程执行到 method1 阅读全文
摘要:
"视频地址" PyFlink 核心功能介绍 文章概述:PyFlink 的核心功能原理介绍及相关 demo 演示。 作者:程鹤群(军长)(Apache Flink Committer,阿里巴巴技术专家),是 Flink 社区的一名 PMC ,现在在阿里巴巴的实时计算团队。2015年加入阿里巴巴搜索事业 阅读全文