自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 图解JVM:浅显易懂的深浅拷贝与Java引用类型解析

这是最常见的引用类型。如果一个对象具有强引用,那么它永远不会被垃圾回收器回收,只要这个强引用还存在。软引用是一种比强引用更弱的引用类型。它允许对象在内存足够的情况下保留,但在JVM内存不足时,这些对象可能被垃圾回收器回收。软引用通常用于实现内存敏感的缓存。弱引用是一种引用类型,它不阻止其所指向的对象被垃圾回收器回收。一个对象只要被弱引用指向,并且没有其他强引用指向它,那么这个对象就可能在下一次垃圾回收时被销毁。虚引用是一种完全不影响其所引用对象生命周期的引用类型。即使持有虚引用,垃圾回收器仍然会回收该对象。

2024-01-14 20:28:18 832

原创 Java对象生命周期全解析:JVM内存的奥秘

比如先刚创建出来的对象最开始大多数在在年轻代的 Eden 区,然后随着 Eden 区内存快满了,这个时候会触发Minor GC,然后 Eden 区会有一部分的对象会被回收掉,没有回收掉的对象就会移动到 Survivor 区域的 S0 区。然后随着Survivor 区域的 S0 区的内存也快满的时候,这个时候S0 区也会进行内存回收,这个时候没有被回收的 Java 对象就会被移动的Survivor 区域的 S1 区,这样一直进行来回移动。最终,那些老旧的公交车被彻底报废,它们的部件可能被回收再利用。

2024-01-13 21:18:43 410

原创 深入探索JVM:理解Java程序在虚拟机中的存储和管理

在方法区中,JVMExample 类的信息被存储,这包括了类的名称 JVMExample、它的父类(在 Java 中默认为 Object 类,除非另有指定)、类中定义的方法(如 main、instanceMethod、staticMethod)、以及类的变量(如实例变量 instanceVariable 和静态变量 staticVariable)。在堆内存中,对象和数组不仅仅是存储它们自身的数据(例如字段值),还包括一些额外的信息,如对象的类信息、对象的监视器(用于同步)等。

2024-01-13 21:09:31 819

原创 图解JVM系列:揭秘运行时数据区的设计与实现

这篇文章主要就讲了运行时数据区的设计理念,就是这个东西它到底是怎么出现的,它是参考我们的物理计算机来设计的。提起物理计算机设计我们都知道冯·诺依曼结构,然后我根据冯·诺依曼结构推出了我们JVM 运行时数据区的各个部分。这样以后再说JVM 运行时数据区的时候,大家就不用死记硬背了,可以按照这种设计理念去理解记忆,一直都不会忘记的。

2023-12-03 21:26:39 58

原创 Java虚拟机深入探索:类加载器与双亲委派模型解析

JVM在类加载的时候,会通过类加载器(Class Loaders)加载你的Java类。这包括应用程序的类和Java API的类。类加载器首先读取.class文件。这是由Java开发者根据自己的特定需求创建的类加载器。它通常继承自ClassLoader类。用户自定义类加载器可以用于加载特定来源(如网络、文件系统中不常规位置等)的类,或者实现特殊的类加载策略(如热部署、加密解密类加载等)。

2023-12-03 21:23:08 38

原创 图解JVM系列-JVM入门指南:基础、转换流程

JVM 可以说是 Java 工程师和大数据工程师必须掌握的一个技能。因为 Java 代码是跑在 JVM 平台上面的,如果你写的代码在 JVM 运行的时候出现内存溢出或者GC 严重的时候,这个时候就需要你对 JVM 有一定的了解了。大数据方向的话,Spark、Flink 的内存模型都是在 JVM 模型上进行了二次改造,而且基本上现在大数据主流的框架底层都是 Java 编写的,也是跑在 JVM 上面的,在对这些框架调优的时候 JVM 也是避不开的一个知识。

2023-12-03 21:11:28 43

原创 深入Flink : 源码解读数据倾斜代码落地

这段代码的设计理念是确保每个并行度上面都分配一个唯一的key,确保均衡的key分配,从而实现均衡的数据分布。这篇文章把我们的优化方案给落地了,也让大家看到了优化的效果。但是其中有一些点我还是没有讲清楚,我后面时间彻底把这个知识点给理解透彻,然后单独给大家写一篇文章来说,希望大家见谅。大家想要上面代码,在本地测试的。还有就是上面我肯定有讲的不清晰的地方,欢迎大家一起来讨论,可以关注微信公众号:大圣数据星球 进群讨论。本文由博客一文多发平台。

2023-11-07 22:51:40 55

原创 深入Flink:源码解读数据倾斜最佳实践

当我们使用 keyBy 算子指定 key 的时候,底层是用你指定的 key ,然后去计算这个key 所对应的 keyGroupId,然后再利用 keyGroupId 来计算这个 key 被分配到哪个并行子任务上面。关键的就是下面这两行代码。在这种分配机制的情况下,如果某个 key 的数据量特别大的话,可能就会出现数据倾斜。maxParallel: 计算可能的最大并行性。这是所有subtask的最大数量。maxKey: 定义了key的最大范围,它是默认并行性与12的乘积。

2023-11-07 22:38:10 124

原创 Flink keyBy 算子源码与设计理念分析

这篇文章我们对 keyBy 源码进行了分析,也教了大家怎么去调试 keyBy 算子的源码,大家可以去尝试一下。另外也对 keyBy 算子的源码设计理念进行了分析,我敢说这是全网第一家可以把 keyBy 算子说的这么透彻的。其实 keyBy 算子还有很多东西,比如如何避免数据倾斜等,后面也会说的,还有模板代码提供给大家避免数据倾斜。最后欢迎大家一起来讨论,可以关注微信公众号:大圣数据星球 进群讨论。本文由博客一文多发平台OpenWrite发布!

2023-11-07 22:27:53 128

原创 探究 Flink 框架底层(一)

有人又提出疑问说,当 Flink 通过 keyBy 算子,进行 Shuffle 的时候,这种情况也不会出现数据竞争吗?答案是不会的。下篇文章咱们继续说为什么不会,也会对 keyBy 源码以及设计理念进行深层次分析,全是干货。另外之前的文章说会更新 Flink Sink HDFS 源码分析的,但是这一篇没有说,这是因为说 Flink Sink HDFS 的时候会用到今天说的内容,所以我就想提前写这一篇做个铺垫。最后欢迎大家一起来讨论,可以关注微信公众号:大圣数据星球 进群讨论。

2023-10-19 23:12:32 28

原创 并发编程之MVCC:守护数据的魔法

MVCC (Multi-Version Concurrency Control) 是一种用于控制多个并发事务访问数据库中同一条记录时的并发控制方法。它通过为每个事务提供该记录的一个“快照”来避免其他事务所作的修改,从而使每个事务都在它的私有快照上工作。这样,多个事务可以同时读取相同的记录,而无需等待其它事务完成。MVCC 的目标是提高并发性能,特别是在只读事务中,而不是通过使用锁和阻塞来解决并发冲突。

2023-10-14 12:21:52 40

原创 多线程、异步编程、并发读写 新认识

多线程是一种允许单个程序创建多个并行执行流(线程)的技术。这些线程可以并发执行,每个线程都有自己的一套寄存器、程序计数器和栈,但它们会共享同一进程中的其他资源,如代码、数据和文件。现代操作系统和多核 CPU 使得真正的线程并行执行成为可能,这意味着多个线程可以在不同的 CPU 核上同时执行。对于单核 CPU,操作系统通过时间片切换技术使得各个线程轮流执行,给人一种“并行”的错觉。异步编程是一种程序设计方法,它允许任务能够独立于主程序运行,这意味着您可以继续执行其他任务,而不必等待该任务完成。

2023-10-06 21:38:04 80

原创 并发、并行、高并发 新认识

"高并发"是一个计算机科学和网络技术领域的术语,指的是在一个时间段内,系统能够处理的并发任务的数量很大。在许多情况下,这是指系统能够同时服务于多个用户或连接。它是一个重要的指标,因为它可以衡量系统的负载能力和稳定性。看到上面这样的专业解释,我想大家可能觉得这说的什么阿,大家别着急,我用下面一个例子给大家解释一下上面这段话是什么意思。想象一下一个非常受欢迎的快餐店。在普通的中午时段,这个快餐店可能有10个点餐窗口,并且每个窗口都有顾客在点餐。

2023-10-02 11:05:07 74

原创 Flink Sink Kafka 和 Flink 端到端一致性建议

通俗的理解是指在一个分布式流处理系统中,从数据源(source)到数据结果(sink),整个处理过程能够保证数据的完整性和准确性,即使在面对各种故障(如节点宕机等)的情况下也是如此。以上就是今天说的 Flink Sink Kafka 和 Flink 端到端一致性的一些平时容易被忽略的点,希望对大家可以有帮助,有不同意见的,欢迎大家加我微信,大家一起讨论。当我们使用 Flink Sink Kafka 的时候,如果没有指定进入 Kafka 的 key 的话,你觉得数据会根据什么样的策略选择分区呢?

2023-09-17 22:13:59 81

原创 HDFS图解系列

图解 HDFS 源码系列 第一篇。有需要的可以关注一下我的微信公众号

2023-04-17 19:13:16 141

原创 浅谈我对 ChatGPT & AI 的一些使用,理解

下面来说说我对 ChatGPT & AI 的看法,我个人觉得后面 AI + 传统行业是未来几年的一个大的趋势,虽然我国现在在封 ChatGPT 的使用,但是封不了的,等待时间成熟,还是会开放的。因为好的东西你是封不住的。因为我在互联网这个行业,之前也是在北京,接触的信息都比较新,现在在国外接触到的也是,就是这一次的 AI 变革是不可避免的,只是时间问题。现在国内几个大厂也在开发和 ChatGPT 类似的产品,像百度的 文心一言,阿里的通义千问,华为的盘古,京东的 ChatDJ,商汤科技的名曰商量。

2023-04-15 22:53:52 70

原创 Flink 基础知识 - 时间、窗口、水位线

大家好,我是大圣。最近在整理 Flink 方面的知识点,今天更新一遍 Flink 的基础的知识点,让大家对 Flink 的 时间、窗口、水位线 有一个基本的认识,然后下一篇文章会从源码的角度来解析 Flink 在 时间、窗口、水位线 底层是怎么实现的。话不多说,直接上今天的大纲主题:图片时间Flink 中 定义了 3 种 时间类型:事件时间(Event Time)、处理时间(Processing Time)和摄取时间(Ingestion Time)。下面画张图来解释一下 3 种 时间类型.

2022-05-27 23:10:16 576

原创 体验了一把当架构师的感觉

大家好,我是大圣。最近公司数据方面的需求变得更多元化了,导致原有的大数据架构满足不了公司现有的需求。领导准备升级公司的大数据平台架构,然后他把这个任务交给了我,接到这个这个任务之后,我和领导简单对接过后,也开始调研了起来。经过十多天的努力,终于把公司的大数据平台架构给确定了下来,完成了服务器资源的评估,同时这也是自己第一次以架构师的身份去建设大数据平台,所以在这里就想给总结一下,分享给身边的小伙伴,希望对你们有帮助。话不多说,下面是这篇文章的大纲梳理现有的数据现在有的数据主要包括以下几个部分:

2022-02-27 21:45:21 132

原创 体验了一把当架构师的感觉

大家好,我是大圣。最近公司数据方面的需求变得更多元化了,导致原有的大数据架构满足不了公司现有的需求。领导准备升级公司的大数据平台架构,然后他把这个任务交给了我,接到这个这个任务之后,我和领导简单对接过后,也开始调研了起来。经过十多天的努力,终于把公司的大数据平台架构给确定了下来,完成了服务器资源的评估,同时这也是自己第一次以架构师的身份去建设大数据平台,所以在这里就想给总结一下,分享给身边的小伙伴,希望对你们有帮助。话不多说,下面是这篇文章的大纲梳理现有的数据现在有的数据主要包括以下几个部分:

2022-02-27 21:41:24 1823

原创 让你也体验一把当黑客的感觉:复现了log4j2的漏洞

大家好,我叫大圣。这几天Apache Log4j2 远程代码执行漏洞一出,让广大的程序员和运维人员夜不能寐,由于我们公司的Flink业务代码也用到了Log4j2日志,我也抓紧去了解了一下,然后采取了相应的补救措施。但是一直想对这个Log4j2 远程执行漏洞进行复现一下,是不是真的像网上说的那样严重,然后经过学习复现了这个log4j的bug。本篇文章主要讲怎么复现这个log4j的远程执行bug,关于怎么基于这个log4j的漏洞去采取补救措施,网上说了很多了,这里就不再说了,下面我们直接步入正题。首先咱们

2021-12-11 20:09:02 1664

原创 Flink State 又认识

大家好,我叫大圣。上周没有及时更新 Flink 状态的文章,原因是我有点懒了,上周末放了一天假就想躺平,然后我就和我的手机过了一天。以后请小伙伴们监督,一定按时更新文章。话不多说,咱们进入今天的主题内容。先来简单回顾一下,上一次的文章我们说了Flink 状态的基本概念,分类,以及KeyState的使用等。也就是上图Flink State 提纲中的 Flink State 初探、Flink State 的类别、Flink KeyState、Operator State这四个方面的知识,如果有小伙伴对上面

2021-12-05 21:49:00 333

原创 Flink State 初认识

大家好,我是大圣。最近工作中使用Flink 状态比较多,但是遇到了各种各样的问题,比如应该什么时候使用KeyedState,什么时候应该使用Operator State,还有StateTTL过期的问题。趁着周末有时间,就把Flink 状态给总结一下。Flink 状态初探熟悉Flink框架的小伙伴都知道Flink是一个实时流处理计算引擎,什么是流处理呢?我们来举个生活中的案例,大圣小时候在河边长大,坐船上学的时候经常看到水流从上流不停的往下流,而且是不会停止流动的。对比到Flink是一个实时流处理来说

2021-12-05 21:41:56 2980

原创 利用工厂设计模式合并多个Flink Job

大家好,我是大圣最近大圣在工作中遇到这样一个数据开发的需求,就是监控用户在某个产品的哪几个界面发生的用户行为,其实简单来说就是计算用户在我们这个产品的某些界面的PV/UV,以及用户前一个操作界面和后面一个操作界面之间的行为数据。我的思路是和前端埋点人员约定好这几个界面的事件点击类型,然后利用Flink框架从Kafka里面实时消费数据,针对每一个事件点击类型去编写一个Flink Job,接着在具体的Flink Job里面去实现要监控用户的行为指标。思路如下图:这个方案是确实可以的,我就是这样实现的,最

2021-12-05 20:55:24 962

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除