朋友圈技术范儿装X指南-有向无环图

简介: 朋友圈技术范儿装X指南-有向无环图

这是我的第70篇原创

拼奢侈品装名媛,实在是太LOW了。真正的奢侈品不是外物,而是知识!是科学!你看我,从来没告诉过任何人,我开过私人飞机。

所以,今天要给大家分享一个可以在朋友圈装X的词:有向无环图,英文简称DAG。这个词太高端了,高端到你的朋友圈里90%以上的人不认识,但是又基本和你的工作、生活扯上关系。一股高处不胜寒的技术直男高级感油然而生!


啥是有向无环图?

有向无环图(DAG)与烂大街的二叉树一样,都是一种拓扑结构。同属于图论的领域。你看,这逼格是不是顿时就起来了?

搞信息技术的大佬们,很会取名字,目的就是为了减少信息传输时的损耗。你看二叉树就很形象,就是分两个叉叉的树状结构。

有向无环图好像很高大上,其实拆开也很容易理解,就是整个图的形状是有方向的,但是有没有形成环。所以,二叉树其实也是一种有向无环图(DAG)。

这个玩意,可以用来做很多事情,咱一个一个来说。


ETL任务调度

玩过ETL的同学都知道,所有的ETL任务都是一个有向无环图(DAG)。

我会教所有玩ETL的同学这个概念。因为有些人真的会天马行空的设计出一个环状任务流。这个就是有环图了。有换图会直接报错,执行不了,因为A任务的启动,前置条件是后续的任务的结果。

有些同学逻辑思维能力强,虽然不知道有向无环图(DAG),但是天然就明白不能这么设计,这种人就是老天爷赏饭吃,天赋使然,令人艳羡。

但是如果情况特殊,真的有前置条件是后置任务的结果该咋办?有这种情况,但是肯定不是当前任务,而是相同任务的下一次执行。所以把结果存储下来,下次执行的时候读取一下就行了。

有经验的同学,会对任务进行合理的安排,既不冲突,又能高效。之前在数据倾斜的文章《点击查阅:12种方法,彻底搞定数据倾斜!》里,有一个方案是ETL预处理,其本质就是在数据输入之前,用ETL把数据整理的比较均匀,然后再传给Spark进行计算。这种方法实际上并没有减轻整个任务链的工作时间,但是能保证Spark的只占用较少的计算时间。我们可以在资源利用低谷,用ETL处理好数据,然后在凌晨资源利用高峰期进行计算,这样能削峰填谷,资源整体利用率高。


项目管理

好,现在开始考试,请听题:

这是信息系统项目管理师(高级职称)的一道考题,PMP里也会有。这个是不是很熟悉?这也是有向无环图(DAG)。这是计算关键路径,关键路径决定着整个项目的最长用时。如果我们需要压缩整个工期,应该从关键路径上下功夫。

上面那道题应该还比较简单,我们整点有难度的:

你可能会觉得奇怪,项目管理要学这个干啥?这些其实就是任务安排啊。任务前后有顺序,有依赖。在不改变关系的前提下,我们还要压缩工期,咋整?就得用上面的工具了。咱不能所有工作都是流水线,该并行就得并行,该资源调拨,就得调拨。我们得知道兵力往哪里部署是最能节省时间和成本的。这就得用到拓扑学中的有向无环图(DAG)了。一招一式,都是学问。


区块链

区块链的数据存储方式本质上是一个链表。就是一个严格按照顺序进行存储的表。

而且区块链的去中心化的设计思想,是集群中50%以上的节点都下载并认可这条数据,这个数据才被宣告有效,也就是得超过50%的节点下载并写入成功才可以。可想而知,这得多慢啊!所以区块链最大的弊端就是并发量不够。

目前区块链最热门的技术就是有向无环图(DAG)。这直接解决了区块链的链表线性存储效率低下的弊端。

区块链通过DAG进行交易认证,这比50%认可的链表可快多了!

相关文章
|
8月前
|
存储 人工智能 JavaScript
编织魔法与修电脑:码农征途的奇妙起点
编织魔法与修电脑:码农征途的奇妙起点
89 0
|
2月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构与算法系列学习之串的定义和基本操作、串的储存结构、基本操作的实现、朴素模式匹配算法、KMP算法等代码举例及图解说明;【含常见的报错问题及其对应的解决方法】你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
|
2月前
|
存储 Web App开发 算法
2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构之单双链表按位、值查找;[前后]插入;删除指定节点;求表长、静态链表等代码及具体思路详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
2月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
2月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之顺序表【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找等具体详解步骤以及举例说明
|
2月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习(8)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
2月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构的基本概念;算法的基本概念、特性以及时间复杂度、空间复杂度等举例说明;【含常见的报错问题及其对应的解决方法】
|
2月前
|
存储 人工智能 算法
2024重生之回溯数据结构与算法系列学习(7)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
IKU达人数据结构与算法系列学习之队列的基本概念、如何判断队列已满/已空、队列的链式存储结构[头的出入队]、双端队列、中缀、后缀、前缀表达式、特殊矩阵和一二维数组的压缩储存等具体操作详解步骤;举例说明、注意点及常见报错问题所对应的解决方法 你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
2月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习(11)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊-除了会黑我家鸽鸽还会干嘛?!!!