自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SparkStreaming整合Kafka

一、Spark Streaming消费Kafka的两种方式比较 ...

2023-05-16 17:13:00 139

原创 SparkStreaming里的数据怎么处理的?

SparkStreaming用于流式数据的处理,是一个准实时(延迟:秒,...

2023-05-15 18:07:00 115

原创 spark数据倾斜遇到过吗,如何解决数据倾斜?【重要】

1.数据倾斜的产生: 在Spark中,首先要明确产生数据倾斜的原因, 数据倾斜产生...

2023-05-14 16:01:00 108

原创 Spark的持久化&Checkpoint

一、RDD的持久化原理(cache&persist): 首先明确一点,RDD中是不存储数据的,如果一个RDD需要重复使用,那么需要从头执行来获取数...

2023-05-05 16:18:00 197

原创 98. 验证二叉搜索树【68】

给你一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。有效二叉搜索树定义如下:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。

2023-05-05 10:44:49 284

原创 Spark算子及其分类总结

transform:窄依赖:mapmap_1mapPartitionsmapPartitions_TestmapPartitionsWithIndexmapPartitionsWithIndex_1flatMapflatMap_1flatMap_2glomglom_TestgroupBygroupBy_1filtersample宽依赖:distinctcoalescerepartitionsortBysortBy_1

2023-05-04 22:26:03 776

原创 Spark shuffle、RDD算子【重要】

一、介绍一下Spark shuffle: Spark shuffle就是将分布在不同结点的数据按照一定的规则进行打乱重组。那么,说起shuffle就想到M...

2023-05-04 21:44:00 425

原创 剑指 Offer 54. 二叉搜索树的第k大节点【37】

给定一棵二叉搜索树,请找出其中第k大的节点的值。

2023-05-03 11:56:26 719

原创 226. 翻转二叉树【58】

给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。

2023-05-03 11:21:14 552

原创 543. 二叉树的直径【71】

给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。

2023-05-03 10:38:55 756

原创 199. 二叉树的右视图【111】

既然是站在右边看树,那么我们看到的结点都是每一层的最右边的结点,这个节点可能在根的右子树上,也可能在根的左子树上。所以,我们可以递归遍历树,使用深度优先算法,按照【根节点 ->右子树 -> 左子树】的顺序访问。同时设置一个depth变量,如果depth的值与res集合中的元素数量相等的话,就说明当前被遍历到的这个节点没有放在res中,所以将这个节点的值放到res中,同时每遍历一层就加一,这样就能知道树的深度,也可以保证每一层只有一个节点可以放入res中,这样就可以保证每层都是最先访问最右边的结点

2023-05-02 14:45:19 753

原创 递归思路讲解

最近刷到了树这一模块的算法题,树相关的算法题几乎都是用递归来实现的,但递归的思路却有点抽象,每次遇到递归,都是通过递归来深度或广度地遍历树,但对于递归遍历树的遍历路线,却有点抽象难懂,不知道遍历的路线是怎么样的,也对于返回的路线有点懵懂。虽然知道是用递归,也知道递归可以一层一层从上到下地遍历,大体上的一个遍历路线是明白的,但是真要将递归一层层拆解分析的话,我还是有点不知所措的,所以今天研究了一小时,彻底将递归的一层层遍历拆解分析透彻了。记录一下拆解分析的过程,以防之后又忘了,方便回顾。

2023-05-02 14:26:27 931

原创 RDD中 groupByKey 和 reduceByKey 哪个性能好,为什么?

在讲他们的性能之前,先分析一下groupByKey和reduceByKey的操作流程: groupByKey: ...

2023-04-26 15:45:00 275

原创 236. 二叉树的最近公共祖先【190】

自顶向下遍历,用递归的方法,这里找到公共祖先分为两种情况:1.p 和 q 在公共结点的两侧,则当前结点就是公共结点2.公共结点为p 或 q 中的任何一个,另一个则为公共结点的子节点,那么p 或 q 则是公共结点。代码思路:(1)先判断root是否为null,或者root 为p 或 q中的任意一个,那么直接返回root,这里的root放在递归的时候就是当前结点。(root为null有两种情况,一种是树为null,第二种是叶子结点为null,也就是遍历完了,也没找到目标值)(2)既然p

2023-04-26 13:28:35 466

原创 Spark RDD 机制理解吗?RDD的五大属性,RDD、DataFrame、DataSet三者的关系,RDD和DataFrame的区别,Spark有哪些分区器【重要】...

一、Spark RDD机制:【重要】 RDD(Resilient Distributed DataSet)叫做弹性分布式数据集,是Spark中最基本的数据...

2023-04-26 10:17:00 266

原创 什么是Spark?Spark的核心模块、Spark的核心组件

一、什么是Spark? Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 ...

2023-04-25 21:43:00 684

原创 hive小文件问题及解决方法【重要】

一、小文件形成的原因: (1)动态分区插入数据,产生大量的小文件,从而导致 map 数量剧增; ...

2023-04-24 12:18:00 1159

原创 103. 二叉树的锯齿形层序遍历【191】

​本题的解决思路和102. 二叉树的层序遍历【206】类似,可以说思路基本一样,只是在一个细节的地方不一样。遍历完一层后,添加元素到链表中,可以选择添加到链表尾部还是头部,偶数层的话(即0、2、4)就添加到尾部,这样就是从左到右遍历;奇数层的话(即1、3、5)就添加到头部,这样就相当于从右往左遍历。实现锯齿形层序遍历的方法,本质上其实就是在添加元素的时候选择插入到链表尾部还是头部。具体思路:1.按层数的奇偶来决定每一层的输出顺序。规定二叉树的根节点为第0层,如果当前层数是偶数,从左至右输出

2023-04-23 14:42:36 671

原创 104. 二叉树的最大深度【75】

深度优先:一棵树的深度 = max(左子树的深度,右子树的深度)+1也就是左子树和右子树的深度取最大的,再加1,就等于当前结点的深度。那么,根据这个思想,我们可以用递归的方式,分别递归左子树和右子树,依次递归下去,就得到了树的深度。代码思路:(1)先判断树是否为null,为null返回0(2)树不为null的话,分别递归左子树、右子树,最终return max(左子树的深度,右子树的深度)+1

2023-04-23 13:24:23 484

原创 101. 对称二叉树【74】

递归解法:思路:如果一个树的左子树和右子树都是对称的,那么这个树就是对称的。所以用递归的方式,深度进行层层遍历比较,一棵子树一棵子树的遍历;两个数对称需要满足以下两种情况:(1)它们的两个根节点具有相同的值(2)每个树的右子树都与另一个树的左子树对称代码思路:实现一个递归函数,通过传入两个指针的方法来遍历这棵树,p指针和q指针一开始都指向这棵树的根,随后p右移时,q左移,p左移时,q右移。每次检查当前p和q结点的值是否相等,如果相等在判断左右子树是否对称。

2023-04-22 11:23:41 166

原创 110. 平衡二叉树【75】

自底至顶:思路是对二叉树做先序遍历,从底至顶返回子树的最大高度,若判定某子树不是平衡树则“剪枝”,直接向上返回。(判断子树是否满足平衡,子树不满足则直接返回,若子树满足,则继续向上比较,用递归的方式依次类推,直到判断根节点的左右子树是否满足平衡。)算法流程:递归返回值:(1)当结点 root 的左/右子树的高度差

2023-04-22 10:08:11 331

原创 145. 二叉树的后序遍历【34】

后序遍历:左节点-->右节点-->根节点后序遍历方法的代码实现:1.先判断树是否为null2.后序遍历就先对左子树、右子树依次分别递归调用,再将根节点添加到list中

2023-04-21 11:08:47 564

原创 94. 二叉树的中序遍历【119】

中序遍历:左节点-->根节点-->右节点中序遍历方法的代码实现:1.先判断树是否为null2.中序遍历就是先递归左子树,再将根节点添加到list中,最后再递归右子树

2023-04-21 11:05:31 191

原创 144. 二叉树的前序遍历【78】

前序遍历:根节点-->左节点-->右节点前序遍历方法的代码实现:1.先判断树是否为null2.前序遍历就先将根节点添加到list中,再对左子树、右子树依次分别递归调用

2023-04-21 11:05:28 193

原创 102. 二叉树的层序遍历【206】

1.先判断这个树是否为空,为空则直接返回。2.树不为空,我们将根节点放入一个队列中,然后每次取出这个节点后,相应的将他的左右子节点依次放入队列中,按照队列的先进先出的特性,依次将元素出队列。(难理解可以画图感受一下)

2023-04-21 09:56:48 594

原创 Scala的隐式转换详解

​隐式转换是在Scala编译器进行类型匹配时,如果找不到合适的类型,那么隐式转换会让编译器在作用范围内自动推导出来合适的类型。一、隐式值与隐式参数隐式值是指在定义参数时前面加上implicit。隐式参数是指在定义方法时,方法中的部分参数是由implicit修饰【必须使用柯里化的方式,将隐式参数写在后面的括号中】。隐式转换作用就是:当调用方法时,不必手动传入方法中的隐式参数,Scala会自动在作用域范围内寻找隐式值自动传入。​

2023-04-20 20:43:43 770

原创 Scala 中的 Match Case 模式匹配、偏函数与样式类

偏函数定义时,不能使用括号传参,默认定义 PartialFunction 中传入一个值,匹配上了对应的case,返回一个值。使用了case关键字的类定义就是样例类(case classes),样例类是种特殊的类。实现了类构造参数的getter方法(构造参数默认被声明为val),当构造参数是声明为var类型的,它将帮你实现setter和getter方法。(1)样例类默认帮你实现了toString,equals,copy和hashCode等方法。一个模式匹配包含了一系列备选项,每个都开始于关键字 case。

2023-04-20 16:25:37 700

原创 Scala中Trait 接口的用法

1.trait特性(1)Scala Trait(特征)相当于Java的接口,实际上它比接口功能还强大(2)与接口不同的是,它可以定义属性和方法的实现(3)一般情况下,Scala的类可以继承多个Trait,从结果来看就是实现了多重继承。Trait(特征)定义的方式与类类似,但它使用的关键字时trait。2.举例:trait中带属性带方法实现注意:(1)继承的多个trait中如果有同名的方法和属性,必须在类中使用“override”重新定义(2)trait中不可以传参(3)一个类继承

2023-04-20 14:54:03 283

原创 Scala 中的 Tuple 元组详解

元组的定义:与列表一样,与列表不同的是元组可以包含不同类型的元素。元组的值是通过将单个的值包含在圆括号中构成的。当定义的元组当中包含不同的数据类型,可看到返回值开始会包含其所对应的数据类型。

2023-04-20 12:40:46 474

原创 Scala中的Map 集合详解

一、不可变长Map集合1.map的声明与遍历2.map的常用方法:get、getOrElse、keys、values、++、++:二、可变长Map集合三、Map的其他方法

2023-04-20 12:06:42 3301

原创 Scala 的 Set集合详解

【代码】Scala 的 Set集合详解。

2023-04-20 10:50:52 556

原创 Scala 中的 List 列表详解

一、不可变长的List列表1.List列表的声明与遍历2.List列表的map、flatMap函数3.List列表的filter过滤函数4.List列表的count计数函数二、可变长的List列表1.可变长List声明2.可变长List的添加方法三、List列表其余的方法与函数

2023-04-20 09:53:24 2239

原创 Scala 中的 Array 数组 详解

一、不可变长数组1.一维数组的创建与遍历2.二维数组的创建与遍历3.数组的一些方法二、可变长数组ArrayBuffer三、数组其余的一些方法

2023-04-18 23:58:08 610

原创 Scala字符串String详解

​Scala中的String和Java中的String用法一样,它们的方法和用法都是一样的。➢ 比较:equals➢ 比较忽略大小写:equalsIgnoreCase➢indexOf:如果字符串中有传入的assci码对应的值,返回下标​

2023-04-18 22:44:01 462

原创 Scala的方法定义与函数详解

*** 1.方法定义* 1)方法体中最后返回值可以使用return,如果使用了return,那么方法体重的返回值类型一定要指定* 2)如果方法体中没有return,默认将方法体中最后一行计算结果当做返回值返回,方法体的返回值类型可以省略,scala会自动推断返回类型* 3)定义方法传入的参数一定要指定类型* 4)方法的方法体如果可以一行搞定,那么方法体的"{......}"可以省略。

2023-04-18 19:40:15 745

原创 数据结构各结构特点(数组、链表、栈、队列、树)

一、数组简介:数组是一种线性表结构,元素序列有序,在内存中开辟一段连续的内存空间。数组具有随机访问的优势,可以通过下标访问元素,时间复杂度为O(1),但插入删除操作比较复杂,需要移动其他元素,所以时间复杂度为O(n)。特点:1.数组在逻辑上、内存中都是连续的,数组需要开辟一段连续的内存空间2.查找元素快:通过索引,可以快速访问指定位置的元素3.增删元素慢:因为数组长度是固定的,如果插入删除元素的话,就要涉及到元素的移动。

2023-04-18 12:56:21 2258

原创 Scala类和对象(Object、class)、循环语句

是一门满足现代软件工程师需求的语言;它是一门静态类型语言,支持混合范式;它也是一门运行在 JVM 之上的语言,语法简洁、优雅、灵活。Scala 拥有一套复杂的类型系统,Scala方言既能用于编写简短的解释脚本,也能用于构建大型复杂系统。

2023-04-16 18:07:11 570

原创 平衡二叉树(AVL树)

1.AVL(二叉平衡树)主要是为了解决二叉查询树不平衡的情况下,导致查询效率低下的解决方案。2.AVL的主要规则:左子树和右子树的高度差不能超过1,如果超过1那么则进行左旋转或者右旋转来达到平衡的状态。3.具体的旋转规则如下:(1)左子树的高度 - 右子树的高度 > 1 如果:左子节点的右子树的高度 > 左子树的高度,那么左子节点先进行左旋转 将当前根节点进行右旋转(2)右子树的高度 - 左子树的高度 > 1 如果:右子节点的左子树的高度

2023-04-16 14:33:38 550

原创 二叉查找树

通过中序遍历,刚好可以把二叉查找树从小到大进行遍历输出。1.通过中序遍历就可以将二叉查找树进行顺序输出。2.中序遍历的特征:左、根、右。

2023-04-14 16:37:03 471

转载 Failed to initialize compiler: object java.lang.Object in compiler mirror not found.

安装scala出现Failed to initialize compiler以及IDEA中编写scala程序出现错误: 找不到或无法加载主类问题的解决

2023-04-13 16:22:24 1739

空空如也

空空如也

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

TA关注的人

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