Apache Flink

Java字节码角度分析a++ ——提升硬实力2

左心房为你撑大大i 提交于 2020-08-14 15:34:20
首先建议先看一下基于前面的字节码知识: Java字节码的一段旅行经历——提升硬实力1 在日常的项目开发中,经常遇到a++、++a、a--之类,下面我们开始从字节码的视角来分析a++。 java代码如下: /* 从字节码角度分析 a++ 相关题目 */ public class T03_ByteAnalyseAPlusPlus { public static void main(String[] args) { int a = 10; int b = a++ + ++a + a--; System.out.println(a); System.out.println(b); } } 使用javap -v xxx.class 来查看类文件全部指令信息:javap -v T03_ByteAnalyseAPlusPlus,如下: public static void main(java.lang.String[]); descriptor: ([Ljava/lang/String;)V flags: ACC_PUBLIC, ACC_STATIC Code: stack=2, locals=3, args_size=1 0: bipush 10 2: istore_1 3: iload_1 4: iinc 1, 1 7: iinc 1, 1 10: iload_1 11: iadd 12:

Java字节码角度分析条件判断指令 ——提升硬实力3

[亡魂溺海] 提交于 2020-08-14 08:14:31
在前面的文章中,有详细地介绍java字节码相关的知识,有兴趣的可以提前了解一下。 1. Java字节码的一段旅行经历——提升硬实力1 2. Java字节码角度分析a++ ——提升硬实力2 下面将详细介绍一下java是if 条件判断是如何通过字节码来实现判读的。以下是java条件判断对应的字节码: 指令 助记符 含义 0x99 ifeq 判断是否 == 0 0x9a ifne 判断是否 != 0 0x9b iflt 判断是否 < 0 0x9c ifge 判断是否 >= 0 0x9d ifgt 判断是否 > 0 0x9e ifle 判断是否 <= 0 0x9f if_icmpeq 两个int 是否 == 0xa0 if_icmpne 两个int 是否 != 0xa1 if_icmplt 两个int 是否 < 0xa2 if_icmpge 两个int 是否 >= 0xa3 if_icmpgt 两个int 是否 > 0xa4 if_icmple 两个int 是否 <= 0xa5 if_acmpeq 两个引用是否 == 0xa6 if_acmpne 两个引用是否 != 0xc6 ifnull 判断是否 == null 0xc7 ifnonnull 判断是否 != null 几点说明: byte,short,char 都会按int比较,因为操作数栈都是4字节 goto

Apache Flink 误用之痛

元气小坏坏 提交于 2020-08-14 06:26:52
摘要:本文根据 Flink Forward 全球在线会议 · 中文精华版整理而成,围绕着项目的开始、需求分析、开发,以及测试、上线、运维整个生命周期展开,介绍了 Apache Flink 实践中的一些典型误用情况,并给出了相应的更优实践方案。 Flink 实践中最首当其冲的误用就是不按迭代开发的过程操作。最佳实践应该遵循迭代开发的步骤进行,包含以下几个阶段: 项目开始 涉及分析 开发 测试 上线 维护 1. 项目开始 在开始开发前,我们需要选择正确的切入方式,以下几种往往是最糟糕的开始: a) 从一个具有挑战性的用例开始(端对端的 Exactly-once、大状态、复杂的业务逻辑、强实时SLA的组合) b) 之前没有流处理经验 c) 不对团队做相关的培训 d) 不利用社区 在开发的过程中,其实要认认 来源: oschina 链接: https://my.oschina.net/u/4278787/blog/4315305

Pulsar 与 Kafka 全方位对比(上篇):功能、性能、用例

牧云@^-^@ 提交于 2020-08-13 17:48:25
越来越多的消息平台开始采用实时流技术,这促进了 Pulsar 的使用与发展。在 2020 年,Pulsar 的受关注度与使用量都有了显著增加。从《财富》百强企业到有前瞻性的初创团队,凡是开发消息平台和事件流应用程序的公司都对 Pulsar 保持关注,一直在激励着 Pulsar 的发展,并且,围绕 Pulsar 项目的生态也有了迅猛发展,近期多家媒体也在对此争相报道。 最近的新闻和博客文章都在客观地介绍 Pulsar,读者可以清晰地了解 Pulsar 的性能及用例。 Verizon Media 、 Iterable 、 Nutanix 、 Overstock.com 等公司最近也发布了 Pulsar 的用例,并分享了关于如何通过 Pulsar 实现商业目标的一系列想法。 但是,媒体的信息并非完全真实准确。此外,Pulsar 社区的小伙伴也向我们发出请求,希望我们针对近期 Confluent 博客发表的《 Kafka、Pulsar 和 RabbitMQ对比》技术文章做出回应。很庆幸,Pulsar 能够发展如此迅速,并成为一项革新性的技术,我们也很想借此机会深入探究 Pulsar 的性能。 本文将深入介绍 Pulsar 技术、社区及生态的相关信息,客观、全面地展示事件流的整体情况。本系列文章共有两篇,本文为上篇,主要对比 Pulsar 和 Kafka 在性能、架构和特性方面的区别

程序员的崩溃,是从“你收入比我高”开始的!

折月煮酒 提交于 2020-08-13 16:31:57
今年的 6·18,你买买买了吗 ?疫情之后,多少年轻人在反思自己的消费方式,从前想怎么花就怎么花,疫情后开始考虑量入为出和理财。 比起 (不可能做到的) 在购物节时忍住剁手冲动,面对未知的变化和已知的通货膨胀, 唯有让自己变得更“贵”,才是保持财务安全感的唯一方式 。 要说互联网行业中,什么人群平均薪资最高,无疑是大数据开发。 在拉勾网上,同一公司提供的岗位里,同等资历的开发工程师和大数据工程师,月薪可能相差20k。 随着物联网、5G的普及,大数据人才会越来越贵,别的不说,至少涨薪幅度能跑得赢通货膨胀。不过正因为薪资高, 从事数据开发的任职要求也高 ,除了基础知识扎实,各种层出不穷的新技术也都要求精通。 其实只要是做开发,就无法停止学习,业务需求的变化永远快于你的进步。 何况今天你比同行多学一个技术,明天就多一点跳槽、升职的优势。 正好今天是 拉勾教育 6·18 年中知识特惠的最后一天 ,原价98元的重磅好课1元秒杀可得,学习成本超低,今天是大数据专场,像 Spark 和 Flink 这样的数据处理技术,不管你是从未使用过,还是略有涉猎,要想在大数据开发领域有所发展,都是必不可少的,可以趁机囤课慢慢学。 (而且我还为你争取到了买一赠一的福利,通过我这里秒杀专栏,还能免费获得任一原价专栏。) 1元秒杀,时机最佳 1元秒杀|原价¥98的 「即学即用的Spark实战44讲」

数据流交换策略

a 夏天 提交于 2020-08-13 13:25:07
1. Dataflow Programming 在讨论流处理的基本概念之前,我们首先介绍一下数据流编程(dataflow programming)的基本概念与术语。 数据流图 数据流程序一般在由数据流图表示,数据流图描述了数据如何在操作之间流动。在数据流图中,节点被称为operator,代表计算;边代表数据依赖。 Operator是dataflow 应用中的基本单元,它们从输入消费数据,在之上执行计算,并生产数据提供给下一步处理。 没有输入的operators 称为数据源(data sources),没有输出的operator称为数据接收器(data sink)。一个dataflow graph 必须有至少一个data source以及一个data sink。例如: 类似上图的dataflow graph 称为逻辑的(logical)数据流图,因为它们从高层的视角展示了计算逻辑。在执行时,逻辑图会被转换为物理图(physical dataflow graph),具体的执行逻辑会在物理数据流图中给出,如下图: 例如,如果我们使用分布式处理引擎,每个operator可能有多个并行的任务跑在不同的物理机器上。逻辑图表示了执行的逻辑,而物理图表示了具体的任务。 数据并行与任务并行 数据并行是指:将输入数据做partition,然后使用多个同样的task并行处理数据的子集

Alink漫谈(八) : 二分类评估 AUC、K-S、PRC、Precision、Recall、LiftChart 如何实现

不想你离开。 提交于 2020-08-13 11:38:47
Alink漫谈(八) : 二分类评估 AUC、K-S、PRC、Precision、Recall、LiftChart 如何实现 目录 Alink漫谈(八) : 二分类评估 AUC、K-S、PRC、Precision、Recall、LiftChart 如何实现 0x00 摘要 0x01 相关概念 0x02 示例代码 2.1 主要思路 0x03 批处理 3.1 EvalBinaryClassBatchOp 3.2 BaseEvalClassBatchOp 3.2.0 调用关系综述 3.2.1 calLabelPredDetailLocal 3.2.1.1 flatMap 3.2.1.2 reduceGroup 3.2.1.3 mapPartition 3.2.2 ReduceBaseMetrics 3.2.3 SaveDataAsParams 3.2.4 计算混淆矩阵 3.2.4.1 原始矩阵 3.2.4.2 计算标签 3.2.4.3 具体代码 0x04 流处理 4.1 示例 4.1.1 主类 4.1.2 TimeMemSourceStreamOp 4.1.3 Source 4.2 BaseEvalClassStreamOp 4.2.1 PredDetailLabel 4.2.2 AllDataMerge 4.2.3 SaveDataStream 4.2.4 Union 4.2.4.1

Flink 入门

我与影子孤独终老i 提交于 2020-08-13 09:36:41
Apache Flink是一个 框架 和 分布式处理引擎 ,用于在 无界 和 有界 数据流上进行 有状态的计算 。Flink被设计为在所有常见的集群环境中运行,以内存中的速度和任何规模执行计算。 Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Flink has been designed to run in all common cluster environments, perform computations at in-memory speed and at any scale. 1. 什么是Flink 1.1. 处理无界和有界数据 数据可以作为无界流或有界流被处理 Unbounded streams (无界流)有一个起点,但没有定义的终点。它们不会终止,而且会源源不断的提供数据。无边界的流必须被连续地处理,即事件达到后必须被立即处理。等待所有输入数据到达是不可能的,因为输入是无界的,并且在任何时间点都不会完成。处理无边界的数据通常要求以特定顺序(例如,事件发生的顺序)接收事件,以便能够推断出结果的完整性。 Bounded streams (有界流

数仓大法好!跨境电商 Shopee 的实时数仓之路

微笑、不失礼 提交于 2020-08-13 08:37:31
作者:黄良辉 本文讲述 Flink 在 Shopee 新加坡数据组(Shopee Singapore Data Team)的应用实践,主要内容包括: 实时数仓建设背景 Flink 在实时数据数仓建设中结合 Druid、Hive 的应用场景 实时任务监控 Streaming SQL 平台化 Streaming Job 管理 未来规划优化方向 建设背景 Shopee 是东南亚与台湾领航电商平台,覆盖新加坡、马来西亚、菲律宾、台湾、印度尼西亚、泰国及越南七大市场,同时在中国深圳、上海和香港设立跨境业务办公室。 Shopee在2020年第一季的总订单量高达4.298亿,同比增长111.2%。 根据App Annie, Shopee在 2020年第一季强势跻身全球购物类 App下载量前三名。 同时斩获东南亚及台湾市场购物类 App 年度总下载量、平均月活数、安卓使 来源: oschina 链接: https://my.oschina.net/u/4266664/blog/4315005

k8s 部署Flink

自闭症网瘾萝莉.ら 提交于 2020-08-13 08:16:26
https://flink.apache.org/ # Flink官网 此步骤(k8s)部署才需要 配置文件 先把Flink的所有配置文件拷贝到本地, 再把本地的配置文件挂在到POD里面 1.1 jobmanager的配置文件 vim flink-conf.yaml 修改配置文件 jobmanager.rpc.address: flink-jobmanager-svc jobmanager.rpc.port: 6123 jobmanager.heap.size: 1024m taskmanager.heap.size: 1024m taskmanager.numberOfTaskSlots: 1 parallelism.default: 1 high-availability: zookeeper high-availability.zookeeper.path.root: /flink high-availability.cluster-id: 1 high-availability.storageDir: file:///data/ha high-availability.zookeeper.quorum: localhost:2181 zookeeper.sasl.disable: true high-availability.jobmanager.port: 6123