Dolphin

数据调度系统中有向无环图的无环检测

筅森魡賤 提交于 2020-10-21 05:23:11
点 击 上 方 蓝 字 关 注DolphinScheduler(海豚调度) |作者:鲍亮 |编辑:卢凯瑞 1 名词解释 DAG,全称:Directed Acyclic Graph,中文:有向无环图 入度:有向图中某点作为图中边的终点的次数之和 出度:对于有向图来说,顶点的出边条数即为该顶点的出度 2 调度系统中的有向无环图 数据调度系统中,多个任务之间的依赖关系,用图可以表示,如下图所示,每个顶点表示一个任务,箭头方向表示任务的执行顺序。任何顶点都无法经过边回到该顶点,则该图就是无环图,即为有向无环图(DAG图)。 图一 那么在有向图中,如果有环的存在,如图示: 图二 在有环的情况下,任务3的执行需要任务5完成,而5的执行又需要3,4依次执行完成,这样就会造成死循环,此调度任务永远无法成功执行。所以在调度系统中,对于无环的检测就非常重要。 3 无环检测 在调度系统中,检查图是否有环,分两种场景:1. 编辑图的过程中每一步操作都需要对其做无环检测;2. 对已经存在的图进行拓扑排序,检测是否有环。 3.1 编辑时检测 对于新创建的图来说,每增加一条边,都需要检测,这条边是否导致环的存在 思路:如图1到图2, 如果要加一条5到3的边,就从3开始遍历后续顶点,如果能回到顶点5的话就证明新加的边导致环的产生;如果不能回到5,证明新添加的边不会导致有环。检测代码如下: /** * 判断增加边

Java中的强引用、软引用、弱引用、虚引用

ⅰ亾dé卋堺 提交于 2020-10-05 13:50:45
1.强引用 直接用new构建的对象的引用,jvm就是抛出OOM也不会回收;当不需要该对象时,可以通过弱化该引用去让 GC回收。 如: String str=new String("abc") //强引用; str = null //当不需要时显示地赋值null,这样GC就会认为不存在引用,可以回收这个对象 或者在方法中新建一个强引用,引用保存在栈中,对象则在堆中,当方法调用完毕后,栈空间自动释放,这个对象的引用数为0,那么就可以回收了。 2.软引用 当一个对象仅具有软引用时,如果内存充足,那么就不会回收这个对象;而如果内存不足,就会将它回收。 软引用可以和 引用队列 联合使用,当对象被回收前,会将这个对象的软引用加到关联的引用队列中, 程序可以通过判断引用队列中是否加入了该引用来了解其对象是否已经被垃圾回收了。 常用于网页缓存、图片缓存。 3.弱引用 和软引用有点相似,但弱引用是不管内存是否充足,只有发现了弱引用就会回收该对象。 同样可以和引用队列联合使用。 4.虚引用 它不会对对象的生命周期有任何影响。虚引用主要用来跟踪对象被垃圾回收的活动。 它 必须和引用队列一起使用 。当对象被回收之前,GC会先将虚引用放入引用队列中。 如果虚引用被放入队列中了,表示该对象要被回收了,可以在被回收之前做些操作。 理解Java的强引用、软引用、弱引用和虚引用 Java 如何有效地避免OOM

Java并发编程:Lock

馋奶兔 提交于 2020-10-03 12:31:54
Java并发编程:Lock   在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。   也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock?这个问题将在下面进行阐述。本文先从synchronized的缺陷讲起,然后再讲述java.util.concurrent.locks包下常用的有哪些类和接口,最后讨论以下一些关于锁的概念方面的东西   以下是本文目录大纲:   一.synchronized的缺陷   二.java.util.concurrent.locks包下常用的类   三.锁的相关概念介绍   若有不正之处请多多谅解,并欢迎批评指正。   请尊重作者劳动成果,转载请标明原文链接:   http://www.cnblogs.com/dolphin0520/p/3923167.html 一.synchronized的缺陷   synchronized是java中的一个关键字,也就是说是Java语言内置的特性。那么为什么会出现Lock呢?   在上面一篇文章中,我们了解到如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁

智能+,见未来:「易观方舟智能用户运营产品套件」全新升级

蹲街弑〆低调 提交于 2020-08-20 06:57:03
2020年5月18日,数据智能产品、平台和解决方案提供商易观,在线上举办“「易观方舟智能用户运营产品套件」全新升级发布会” 。全新升级后的易观方舟包含 智能分析、智能运营、智能画像 三大核心组件, 拥有 “ 更灵活、更高效、更开放、更安全 ”的特性,帮助企业决胜“ 数据智能+用户运营”,留住下一个用户战场。发布会 同时推出了 “零成本”获得易观方舟智能用户运营解决方案,包含了 智能分析、智能运营两大组件免费版本 及技术服务 。 本次“「易观方舟智能用户运营产品套件」全新升级发布会” 易观邀请了生态合作伙伴腾讯云,客户最佳实践代表欧姆龙、用友、CSDN的数字化业务专家等,分享了与易观在「产业智能+」趋势下的「智能用户运营」方向的合作与应用实践。 易观副总裁、数据产品及服务群组总经理董旭,在题为《 中国「产业智能+」升级观察 》分享中提到,“身处成熟产业的企业,当今面临需求侧和供给侧的匹配鸿沟。流量红利不断消弭,移动互联网用户增速缓慢,代际更替出现新的细分需求和新兴市场机会,下沉市场不断产生的新的个性化需求。‘产业智能+’升级以用户为中心,实践‘产业智能+’将改变现有的商业竞争状态。基于用户数据,形成自动、实时,且具备互动体验的智能用户运营,是数字社会下以客户为中心的企业的必然选择。” 易观分享中国产业智能化阶段探索图 产品迭代,功能、性能全面提升,高效智能运营用户 在发布会上

当我们谈中台,到底在谈什么?

前提是你 提交于 2020-08-20 04:52:10
  最近两年,中台概念大火。阿里巴巴、腾讯、百度、京东、美团、滴滴等大厂,都在建设中台。很多人说,大公司才需要中台,小公司根本用不上。但中台的概念,恰恰来自一家小公司。   2015 年,阿里巴巴提出大中台,小前台”的战略,该战略灵感来自一家当时仅有 300 名员工的芬兰小公司——Supercell。这家公司人不多,但却连续推出《部落冲突》《卡通农场》《海岛奇兵》等爆款游戏,并借此成为全球最会赚钱的明星游戏公司。   知乎用户宋海根说,“所谓‘中台’,其实是为前台而生的平台,它存在的唯一目的就是更好地服务前台规模化创新,进而更好地服务用户,使企业真正做到自身能力与用户需求的持续对接。”   用大白话说,就是中台可以让企业,对用户有更好的触达。触达的方法和方式,不能靠老板拍脑门决定,尤其是企业做决策,格外需要有数据支撑。那么,此时的触达,就需要一个掌握真实且准确的数据信息中间人、或曰中间商来提供支持。当下,总部位于北京的数据智能产品、平台和解决方案提供商易观,正在承担这一角色。   2020 年 5 月 18 日,数据智能产品、平台和解决方案提供商易观,在线上举办 “「易观方舟智能用户运营产品套件」全新升级发布会”。全新升级后的易观方舟包含智能分析、智能运营、智能画像三大核心组件,拥有“更灵活、更高效、更开放、更安全” 的特性,帮助企业决胜 “数据智能 + 用户运营”

Java ConcurrentModificationException异常原因和解决方法

爷,独闯天下 提交于 2020-08-19 16:30:17
Java ConcurrentModificationException异常原因和解决方法 参考文章: (1)Java ConcurrentModificationException异常原因和解决方法 (2)https://www.cnblogs.com/dolphin0520/p/3933551.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/u/4374048/blog/4512933

Java并发编程:volatile关键字解析

送分小仙女□ 提交于 2020-08-15 04:50:33
Java并发编程:volatile关键字解析    volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。   volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volatile关键字的实现原理,最后给出了几个使用volatile关键字的场景。   以下是本文的目录大纲:   一.内存模型的相关概念   二.并发编程中的三个概念   三.Java内存模型   四..深入剖析volatile关键字   五.使用volatile关键字的场景   若有不正之处请多多谅解,并欢迎批评指正。   请尊重作者劳动成果,转载请标明原文链接:   http://www.cnblogs.com/dolphin0520/p/3920373.html 一.内存模型的相关概念   大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题

Java并发编程:volatile关键字解析

纵然是瞬间 提交于 2020-08-14 13:00:28
Java并发编程:volatile关键字解析    volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。   volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volatile关键字的实现原理,最后给出了几个使用volatile关键字的场景。   以下是本文的目录大纲:   一.内存模型的相关概念   二.并发编程中的三个概念   三.Java内存模型   四..深入剖析volatile关键字   五.使用volatile关键字的场景   若有不正之处请多多谅解,并欢迎批评指正。   请尊重作者劳动成果,转载请标明原文链接:   http://www.cnblogs.com/dolphin0520/p/3920373.html 一.内存模型的相关概念   大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题

再议Java中的static关键字

a 夏天 提交于 2020-08-13 20:38:37
再议Java中的static关键字   java中的static关键字在很久之前的一篇博文中已经讲到过了,感兴趣的朋友可以参考:《 Java中的static关键字解析 》。   今天我们再来谈一谈static关键字,这次我们侧重讲述static关键字的一些使用场景和方式,以下是本文目录大纲:   一.static关键字使用场景   二.static变量和普通成员变量区别   三.类的构造器到底是不是static方法?   若有不正之处,希望谅解并欢迎批评指正。   请尊重作者劳动成果,转载请标明原文链接:   https://www.cnblogs.com/dolphin0520/p/10651845.html 一.static关键字使用场景   static关键字主要有以下5个使用场景: 1)静态变量   把一个变量声明为静态变量通常基于以下三个目的: 作为共享变量使用 减少对象的创建 保留唯一副本   第一种比较容易理解,由于static变量在内存中只会存在一个副本,所以其可以作为共享变量使用,比如要定义一个全局配置、进行全局计数。如: public class CarConstants {   // 全局配置,一般全局配置会和final一起配合使用, 作为共享变量   public static final int MAX_CAR_NUM = 10000; } public