首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏斑斓

    对Flink流处理模型抽象

    抽象的流处理模型 由于我们的产品对数据的处理主要包括三个方面:采集、治理与共享,这之间流转的皆为采集器从上游系统采集获得的数据。 我们结合Flink的架构,并参考了Apex、Storm、Flume等其他流处理框架,抽象出自己的流处理模型。这个模型中各个概念之间的关系与层次如下图所示: ? 每个Processor的上游与下游,即MapFunction或其他接口对应的类型参数T与O,应尽量采用平台定义的模型对象,而非如String之类的基础类型。 AcdmToKafkaFlow" flowClassName="haina.airprobe.flow.AcdmToKafkaFlow"/> </job> 内核与外部应用 haina在针对flink的流处理模型进行了抽象和扩展开发后 flink是haina的核心,提供了基本的运算、运行和部署的能力,而haina则根据我们产品的需求对flink进行扩展,并遵循前面提及的抽象流处理模型提供各个可以被重用的细粒度组成单元,并实现了通用的组成逻辑

    1.1K30发布于 2019-03-07
  • 来自专栏Android群英传

    Android事件分发机制抽象--钓钩模型

    事件流火车模型如下图所示:▼ ? 如果控件及其子孙控件都没有消费 DOWN 事件,则该控件不会收到接下来的事件流。 有没有简单又好记的一个模型或者一幅图,方便让我们想起生活更美好的那种。 我也思索过这个问题,但没有找到答案,所以,我尝试挑战一下。 通过观察事件分发流程,发现有点像钓鱼: 第一步先放下鱼饵等鱼上钩(DOWN 事件分发),找到最终的一个 U 型路径,有点像钓鱼钩,这也是模型名称的由来。

    86620发布于 2020-12-15
  • 来自专栏斑斓

    对Flink流处理模型抽象

    抽象的流处理模型 由于我们的产品对数据的处理主要包括三个方面:采集、治理与共享,这之间流转的皆为采集器从上游系统采集获得的数据。 我们结合Flink的架构,并参考了Apex、Storm、Flume等其他流处理框架,抽象出自己的流处理模型。这个模型中各个概念之间的关系与层次如下图所示: ? 每个Processor的上游与下游,即MapFunction或其他接口对应的类型参数T与O,应尽量采用平台定义的模型对象,而非如String之类的基础类型。 AcdmToKafkaFlow" flowClassName="haina.airprobe.flow.AcdmToKafkaFlow"/> </job> 内核与外部应用 haina在针对flink的流处理模型进行了抽象和扩展开发后 flink是haina的核心,提供了基本的运算、运行和部署的能力,而haina则根据我们产品的需求对flink进行扩展,并遵循前面提及的抽象流处理模型提供各个可以被重用的细粒度组成单元,并实现了通用的组成逻辑

    75820发布于 2019-05-08
  • 来自专栏站长的编程笔记

    如何在 Django 中创建抽象模型类?

    我们将学习如何在 Django 中创建抽象模型类。 Django 中的抽象模型类是一个模型,它用作其他模型继承的模板,而不是一个旨在创建或保存到数据库的模型。 在应用程序中,可以使用抽象模型定义多个模型共享的相似字段和行为。使用 Django,您可以定义一个派生自 Django.db.models 的模型类,以建立一个抽象模型类。 为抽象属性建模并设置 True。此抽象类的属性和方法将由派生自它的任何模型继承,但不会创建新的数据库表。 抽象模型可以像标准模型一样定义字段、方法和元数据。 在 Django 中,从抽象模型继承遵循与传统模型相同的准则。超类中声明的所有字段和方法都由子类继承,子类可以根据需要替换或添加它们。开发从抽象模型派生的新模型时,不应将抽象属性设置为 True。 步骤 3 - 您的抽象模型类应该添加一个 Meta 内部类,抽象属性设置为 True。Django 被告知,由于这是一个抽象模型类,因此不应为其构建单独的数据库表。

    6.3K30编辑于 2023-08-11
  • 来自专栏令仔很忙

    【JVM调优(一)】----JAVA内存模型抽象结构

    Java线程之间的通信由Java内存模型(JMM)控制,JMM控制一个线程对共享变量的写入什么时候对另一个线程可见。下图是JMM的抽象结构: ?

    58610发布于 2018-09-14
  • 来自专栏DeepHub IMBA

    BRIO:抽象文本摘要任务新的SOTA模型

    在 SimCLS [2]论文发布后不久,作者又发布了抽象文本摘要任务的SOTA结果 [1]。BRIO在上述论文的基础上结合了对比学习范式。 BRIO解决什么问题? 训练和推理过程之间也存在差异,在生成过程中模型是基于自己之前的预测步骤,而不是目标总结。在推理过程中,当模型开始偏离目标(并变得更加混乱)时,就会造成更严重的偏差。 BRIO-Loop微调方案 论文的研究使用 BART 预训练模型进行生成阶段。但是使用 BRIO-Mul 模型是更好的,因为它已经超越了 BART 的性能。 结果 BRIO方法刷新了三个抽象摘要数据集:CNN/DailyMail、XSum和NYT的的SOTA结果。从下图4可以看出,该方法对于长摘要和短摘要的数据集都有较好的性能。 \1) BRIO [1] 和 SimCLR [2](之前的 SOTA)模型之间的主要区别在于使用单一模型进行生成和评分,以最大限度地提高 BRIO 中的参数共享,SimCLR 使用 RoBERTa 作为评估模型

    97020编辑于 2022-06-04
  • 来自专栏DolphinScheduler

    第 2 篇|Apache DolphinScheduler 的核心抽象模型

    本文为《深入理解ApacheDolphinScheduler:从调度原理到DataOps实战》系列专栏第2篇,从源码与调度模型视角,解析DolphinScheduler的核心抽象设计,重点说明Workflow 如果从源码和调度系统的运行方式来看,答案恰恰相反——这些抽象是为了压住复杂性而被刻意拆开的。 这些抽象如何支撑“复杂编排”当任务数量上升、流程开始嵌套、失败变得常态化时,如果没有这些抽象拆分,系统很快就会失控。 小结如果你把DolphinScheduler当成一个“高级Cron”,这些模型看起来确实复杂;但一旦站在系统和源码的视角看,它反而是一套非常克制、非常工程化的设计。 下一篇,我们可以继续顺着这套模型往下拆,聊聊:调度器是如何围绕状态流转运转起来的,以及失败是如何被“消化”的。

    11110编辑于 2026-02-04
  • 来自专栏撸码那些事

    抽象那些事】不完整的抽象&多方面抽象&未用的抽象&重复的抽象

    不完整的抽象 抽象未支持所有互补或相关的方法时,将导致这种坏味。 为什么要有完整的抽象? 一种重要的抽象实现手法是创建内聚而完整的抽象抽象未支持相关的方法时,可能会影响抽象的内聚性和完整性。 多方面抽象 抽象被赋予不止一项职责时,将导致这种坏味。 为什么不可以有多方面抽象? 单一职责原则指出,抽象必须承担单一而明确的职责,且必须完全封装该职责。 未用的抽象 创建的抽象未用(未被直接使用或继承)时,将导致这种坏味。有以下两种表现形式: 未引用的抽象:未用的具体类 鳏寡抽象:没有任何派生抽象的接口/抽象类 为什么不可以有未用的抽象? 在不同的上下文中使用相同的类型名 对于大型系统,建立完全统一的领域模型要么不可行要么不划算。领域驱动设计提供的一种解决方案是,将大型系统分成多个"界限上下文"。 采用这种方式,不同上下文中的模型可能包含同名的类型,但是这是可以接受的。 语言未提供重复避免支持 在JDK中,有很多的重复的方法和类,这是因为没有对基本类型提供泛型支持。

    87120发布于 2018-06-21
  • 来自专栏日积月累1024

    go抽象的生产者消费者模型

    这是一个单一生产者,多个消费者的模型。对之前的代码做了改进。 目标: 包装成包的形式。包的名子叫pc, producer/consumer的简写。 使用者只需要写自己实际的生产逻辑和消费逻辑即可。 a.wg.Wait() } func (a *AbstructPC) Run() { go a.producerDispatch() a.consumerDispatch() } 思路: 想实现类似抽象类的功能

    66720发布于 2020-12-07
  • 来自专栏韩曙亮的移动开发专栏

    【Kotlin】抽象类 ( 声明 | 抽象类成员 | 抽象类继承 | 抽象方法覆盖 | 抽象方法实现 )

    抽象类总结 II . 抽象类声明 III . 抽象类中的 ( 正常 / 抽象 ) 的 ( 成员 / 方法 ) IV . 抽象类继承 V . 抽象方法的覆盖 VI . 抽象方法的实现 I . 抽象类总结 ---- 抽象类总结 : ① 声明 : 抽象类中使用 abstract 声明 ; ② 成员 : 抽象类中既可以定义正常属性和方法 , 又可以定义抽象的属性和方法 ; ③ 继承 : 抽象类可以继承抽象类 , 抽象类也可以继承正常类 , 正常类可以继承抽象类 ; ④ 重写 : 抽象类中可以使用抽象方法重写正常方法 , 也可以进行正常的方法重写 ; ⑤ 特征 : 抽象方法只能定义在抽象类中 , 正常类中不能有抽象方法 抽象类中的 ( 正常 / 抽象 ) 的 ( 成员 / 方法 ) ---- 0 . 抽象类内成员总结 : 抽象类中可以定义正常的成员和方法 , 也可以定义抽象的成员和方法 ; 1 . ("正常类继承抽象类 , 必须实现抽象类中的抽象方法") } } ② 抽象类子类 : 如果抽象类继承抽象类 , 可以不实现父累抽象方法 ; abstract class Father{

    1.9K40编辑于 2023-03-27
  • 来自专栏撸码那些事

    抽象那些事】缺失抽象

    这就是抽象。对于软件工程师来说,抽象能力是最重要的能力之一,也恰恰是最难得的能力之一。 应用抽象原则的实现手法 提供清晰的概念边界和唯一身份 每个抽象都必须有清晰而明确的概念边界,还必须有身份。 如果只提供方法的一部分,抽象既不内聚也不完整。 赋予单一而重要的职责 确保每个抽象都分配单一而重要的职责。 单一:每个抽象都应该只负责一件或一类事情。 重要:抽象不能太鸡肋。 违反抽象原则导致的坏味 我们这篇博客主要讲解分析缺失抽象坏味,对于其它抽象坏味将在后面的博客讲解分析。 缺失抽象 使用一系列数据或编码字符串,而不创建类或接口时,将引发这种坏味。 通常,由于缺失抽象,相关的数据和行为将会分散在其它抽象中,这将会导致两个问题l: 可能会向其它抽象暴露实现细节,违反封装原则 数据和相关的行为分散在不同的抽象中,可能导致实体之间高度耦合,结果是代码脆弱且难以重用 因为在创建抽象前,一定要根据应用抽象具体情况分析,再决定是否要创建抽象

    1.2K150发布于 2018-05-19
  • 来自专栏撸码那些事

    抽象那些事】不完整的抽象&多方面抽象&未用的抽象&重复的抽象

    不完整的抽象 抽象未支持所有互补或相关的方法时,将导致这种坏味。 为什么要有完整的抽象? 一种重要的抽象实现手法是创建内聚而完整的抽象抽象未支持相关的方法时,可能会影响抽象的内聚性和完整性。 使用提取类重构多方面抽象 未用的抽象 创建的抽象未用(未被直接使用或继承)时,将导致这种坏味。 有以下两种表现形式: 未引用的抽象:未用的具体类 鳏寡抽象:没有任何派生抽象的接口/抽象类 为什么不可以有未用的抽象? 设计中的抽象未被使用,就没有发挥任何作用,因此违反了抽象原则。 在不同的上下文中使用相同的类型名 对于大型系统,建立完全统一的领域模型要么不可行要么不划算。领域驱动设计提供的一种解决方案是,将大型系统分成多个"界限上下文"。 采用这种方式,不同上下文中的模型可能包含同名的类型,但是这是可以接受的。 语言未提供重复避免支持 在JDK中,有很多的重复的方法和类,这是因为没有对基本类型提供泛型支持。

    61890发布于 2018-05-23
  • 来自专栏dylanliu

    抽象

    这是抽象抽象,即如何界定本质?这个方法需要我们在实践中抽象出自己的方法论,才能不被纷繁事物晃花了眼。 抽象层次 抽象层次包含两个概念:1)复杂系统需要分层,每层关注不同的粒度,合而为整体。 2)在某一抽象层次上,抽象出的功能、概念应处于同一抽象层次,而不应混合不同抽象层次的功能、概念。 1) 分层 分层有几个目的:1⃣ 易于复用。 2⃣减少信息量。 2) 同一抽象层次 同一抽象层次在实践中是很重要的。编码时经常看到不同的人将不同抽象层次的代码放到一个接口中,这就将抽象的威力大大降低了。 抽象也是如此,本质上抽象是在经过大量实践之后归纳出来的,可是不同的人有不同的经历,每个人对人生、世界的抽象也是不一样的,因此形成了不同的人生观、世界观。系统也如是,不同人从各自角度出发去认识。 总结 抽象是一个很主观的概念,可以说我们一直以来接触到的世界就是一个抽象过了的世界,从这点来说,抽象有助于提高我们的逻辑能力,因为我们已经知道了我们意识中的世界并不是我们看到的,而是前人从他们的角度抽象出来的

    1.1K50发布于 2019-07-01
  • 来自专栏撸码那些事

    抽象那些事】缺失抽象

    这就是抽象。对于软件工程师来说,抽象能力是最重要的能力之一,也恰恰是最难得的能力之一。 应用抽象原则的实现手法 提供清晰的概念边界和唯一身份 每个抽象都必须有清晰而明确的概念边界,还必须有身份。 如果只提供方法的一部分,抽象既不内聚也不完整。 赋予单一而重要的职责 确保每个抽象都分配单一而重要的职责。 单一:每个抽象都应该只负责一件或一类事情。 重要:抽象不能太鸡肋。 违反抽象原则导致的坏味 我们这篇博客主要讲解分析缺失抽象坏味,对于其它抽象坏味将在后面的博客讲解分析。 缺失抽象 使用一系列数据或编码字符串,而不创建类或接口时,将引发这种坏味。 通常,由于缺失抽象,相关的数据和行为将会分散在其它抽象中,这将会导致两个问题l: 可能会向其它抽象暴露实现细节,违反封装原则 数据和相关的行为分散在不同的抽象中,可能导致实体之间高度耦合,结果是代码脆弱且难以重用 因为在创建抽象前,一定要根据应用抽象具体情况分析,再决定是否要创建抽象。 参考:《软件设计重构》

    74130发布于 2018-06-21
  • 来自专栏swag code

    抽象类与抽象方法

    在我们抽象实例对象的时候,有这样一种情况,往上层抽象时就会发现很难描述对象的属性和行为,比如“形状” ,其方法计算面积怎么计算? 好吧,形状确实是有面积的,但是又无法描述其实现方式,这种包含类我们可以抽象出一个抽象类。 抽象类由于其有可能有无法实现的方法(抽象方法),所以不能被实例化。 抽象类的特征: 1)使用abstract关键字修饰的类称为抽象类 2)抽象类不能实例化对象,原因是抽象方法无法被调用 3)有抽象方法的类肯定是抽象类,但是抽象类中不是必须有抽象方法 如果许多类都有相同的方法 不是具体的动物相信你肯定无法回答,这样我们就需要创建抽象的动物类 public abstract class Animal { }  抽象动物类 1.抽象类不能直接实例化,必须通过子类 abstract void eat();  抽象吃的方法(行为) 2.抽象方法只需声明,不需要实现 ?

    68630发布于 2018-08-20
  • 来自专栏麒思妙想

    抽象语法树为什么抽象

    从具体到抽象 Abstract Syntax Tree抽象语法树(通常被简写成AST)实际上只是一个解析树(parse tree)的一个精简版本。 AST名字中抽象一词的由来。 精简一棵解析树 我们现在知道具象语法树和抽象语法树的概念,而且知道AST是CST的精简版本,那么AST它是如何生成的呢? 我们现在知道,根据文法规则生成的解析树会非常冗余。 将操作符压进内部节点 继续把冗余的层修剪掉,我们可以得到一颗AST树 一颗抽象语法树 我们已经自己压缩了一棵解析树,通过上面几个步骤的精简,可以总结一些解析树和抽象语法树的不同之处: AST不含有语法细节 有了抽象语法树,我们基于它可以建立清晰的代码描述,非常有利于后续阶段的修改、变换。

    2.1K30发布于 2020-08-17
  • 来自专栏撸码那些事

    抽象那些事】 命令式抽象

    命令式抽象 这种坏味是由操作转换为类引起的,表现为类中只定义了一个方法,有时候类名和方法名相同。这种坏味还常常表现为方法操作的数据位于另一个类中。 为什么不能命令式抽象? 面向对象的基本原则是,识别真实世界中的事物,并使用抽象来表示它们。在解决方案域中,必须将问题域的对象表示出来,为此可采用映射域实体这一实现手法,抽象的每个类都必须封装数据和相关的方法。 只包含一个操作的类根本不是抽象,其操作的数据位于其它地方时尤其如此。这样很多操作相同数据的方法位于不同的类中,减低了类的内聚性,违反了封装和模块化原则。 命令式抽象潜在的原因 过程式思维 数据和操作这些数据的方法被封装在不同类中,典型的过程式思维。 ”坏味的类中的方法都移到Report类中,那么Report类就变成了一个恰当的抽象,同时消除了“命令式抽象”坏味。

    94280发布于 2018-05-20
  • 来自专栏撸码那些事

    抽象那些事】命令式抽象

    命令式抽象 这种坏味是由操作转换为类引起的,表现为类中只定义了一个方法,有时候类名和方法名相同。这种坏味还常常表现为方法操作的数据位于另一个类中。 为什么不能命令式抽象? 面向对象的基本原则是,识别真实世界中的事物,并使用抽象来表示它们。在解决方案域中,必须将问题域的对象表示出来,为此可采用映射域实体这一实现手法,抽象的每个类都必须封装数据和相关的方法。 只包含一个操作的类根本不是抽象,其操作的数据位于其它地方时尤其如此。这样很多操作相同数据的方法位于不同的类中,减低了类的内聚性,违反了封装和模块化原则。 命令式抽象潜在的原因 过程式思维 数据和操作这些数据的方法被封装在不同类中,典型的过程式思维。 ”坏味的类中的方法都移到Report类中,那么Report类就变成了一个恰当的抽象,同时消除了“命令式抽象”坏味。

    48230发布于 2018-06-21
  • 来自专栏全栈开发那些事

    抽象类和抽象方法

    java中的抽象类与抽象方法 1、设计理念 2、抽象方法 3、抽象类 3.1 抽象类与普通类的区别 3.2 抽象类案例 1、设计理念   父类要体现所有子类的共同特征,在设计某些方法(行为特征或功能) 另外,只允许在抽象类和接口中声明抽象方法,否则将发生编译错误。 3、抽象类   Java规定如果一个类中包含抽象方法,则该类必须设计为抽象类。 抽象类语法格式如下: [权限修饰符] abstract class 类名{ }   抽象类也是类,所有类的成员在抽象类中都可以声明。   为什么抽象方法所在的类必须声明为抽象类呢?    如果不声明为抽象类,则此类就可以实例化,但是得到的对象对抽象方法的调用是无意义的,因为没有任何方法体。 3.1 抽象类与普通类的区别 抽象类不能直接实例化,即不能直接创建抽象类的对象。 子类继承抽象类后,如果子类不再是抽象类,那么子类必须重写抽象类的所有抽象方法,否则编译报错。

    93820编辑于 2023-02-25
  • 来自专栏一个会写诗的程序员的博客

    软件架构设计的核心:抽象模型、“战略编程”

    使用这个抽象,机器代码程序表现得就好像它是运行在一个一次只执行一条指令的处理器上。底层的硬件比抽象描述的要复杂精细得多,它并行地执行多条指令,但又总是与那个简单有序的模型保持一致。 只要执行模型一样,不同的处理器实现也能执行同样的机器代码,而又提供不同的开销和性能。 文件是对 IO 的抽象,虚拟存储器是对程序存储器的抽象,而进程是对一个正在运行的程序的抽象。 分层存储模型 另外一个典型的抽象模型,就是计算机的存储管理模型。 我们知道,在由半导体器件、电路板组成的计算硬件体系中,根本没有操作系统、TCP/IP、内存分配、垃圾回收等等概念模型。 聪明的人类(这些人通常就是计算机科学家了),就是靠着杰出的想象力与抽象能力,设计出了计算机存储分层抽象模型: 一个32位操作系统的例子。 架构师的职责是: 1、努力训练自己的思维,用它去理解复杂的系统, 2、通过合理的分解和抽象,理解并解析需求, 3、创建有用的模型, 4、确认、细化并扩展模型,管理架构; 5、进行系统分解形成整体架构

    1K21编辑于 2022-09-07
领券