自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spark指南——第一章:Spark简介

Spark简介一、What is Spark二、Why Spark1.运行速度快2.易用性好3.通用性强4.随处运行三、Spark与MR比较注:Spark系列文章参考《Spark权威指南》、《图解Spark核心技术与案例实战》、《Spark大数据商业实战三部曲》,仅用于记录个人学习,侵权删。一、What is SparkSpark是加州大学伯克利分校AMP实验室(Algorithms、 Machines and People Lab)开发的 通用大数据处理框架。Spark生态系统也称为BDAS,是伯

2020-08-31 16:19:27 469

原创 Scala编程——第12章:隐式转换和隐式参数

隐式转换和隐式参数一、隐式转换1.基本概念①应用案例②源码分析③细节问题2.隐式转换丰富类库功能3.引入隐式转换4.隐式转换规则二、隐式参数三、隐式类四、总结本章学习隐式转换和隐式参数,隐式转换和隐式参数是Scala两个功能强大的工具,在幕后处理那些很好有价值的工作。属于Scala高级阶段知识,初学者只需了解其用法即可,不用太过深入。一、隐式转换1.基本概念隐式转换指的是那种以implicit关键字声明的带有单个参数的函数。这样的函数将被自动应用,将一种类型转为另一种类型。①应用案例首先看一个简

2020-08-28 17:34:31 157

原创 Scala编程——第11章:模式匹配和样例类(下)

样例类一、样例类1.基本介绍本节学习样例类的相关知识。有关模式匹配的知识点击链接:一、样例类1.基本介绍样例类是一种特殊的类,主要用于优化模式匹配。样例类仍然是类样例类用case关键字进行声明。样例类是为模式匹配而优化的类。构造器中的每一个参数都成为val——除非它被显式地声明为var(不建议这样做)。在样例类对应的伴生对象中提供apply方法,让你不用new关键字就能构造出相应的对象。提供unapply方法让模式匹配可以工作。将自动生成toString、equals、hashCod

2020-08-26 17:48:38 217

原创 Scala编程——第11章:模式匹配和样例类(上)

模式匹配和样例类一、模式匹配1.基础案例2.模式守卫二、模式种类1.通配模式2.常量模式3.变量模式4.构造方法模式5.序列模式6.元组模式7.带类型的模式8.变量绑定本节学习Scala中十分强大的模式匹配机制,同时Scala提供了样例类,对模式匹配进行了优化。一、模式匹配Scala中的模式匹配类似于Java中的switch语法,但是更加强大。模式匹配语法中,采用match关键字声明,每个分支采用case关键字进行声明。当需要匹配时,按照从上到下顺序匹配。会从第一个case分支开始,如果匹配成功,

2020-08-25 17:45:30 283

原创 Scala编程——第10章:Scala集合——映射Map(6)

第10章:Scala集合——映射(6)一、映射Map简介二、不可变映射1.创建不可变映射Map2.获取映射中值3.更新映射值4.迭代映射三、可变映射Map1.创建可变映射Map2.更新映射中的值四、排序的映射五、操作汇总1.常用可变/不可变映射操作2.不可变Map包含的操作一、映射Map简介映射Map是键/值对偶集合。映射分为不可变映射Map和可变映射Map。继关系如下图所示:不可变映射Map可变映射Map二、不可变映射1.创建不可变映射MapScala默认使用不可变M

2020-08-24 17:14:18 234

原创 Scala编程——第10章:Scala集合——集Set(5)

Scala集合——集Set(5)一、集Set的简介二、不可变集Set1.基本操作三、可变集Set1.基本操作2.排序的集SortedSet四、操作汇总1.可变集和不可变集常用操作2.不可变集操作3.可变集操作一、集Set的简介集Set是不重复元素的集合,和元组Tuple一样,集Set的元素可以是不同类型的(Set[Any])。集Set分成可变Set和不可变Set。Scala的API包含了基础的特质(trait),在此基础上,又提供了两个子特质,一个用于表示可变集,另一个表示不可变集。不可变

2020-08-21 16:14:24 251

原创 Scala编程——第10章:Scala集合——元组(4)

Scala集合——元组(4)一、元组简介二、使用元组本节主要学习元组Tuple集合的概念和相关操作。一、元组简介元组是不同类型的元素的集合,元组可以容纳不同类型的元素。元组是不可变的。元组中最多只能有22个元素。从Tuple1 到 Tuple22。二、使用元组①创建元组: 实例化新的元组,只需要将对象放在圆括号当中,用逗号隔开即可。②访问元组: 使用用英文句点、下画线和 从1开始的序号来访问每一个元素。 你也许正好奇为什么不能像访问列表元素,即"tuple(0)"那样访问元组

2020-08-20 16:57:38 227

原创 剑指 Offer 42. 连续子数组的最大和——从这题开始学习动态规划

剑指 Offer 42. 连续子数组的最大和——从这题开始学习动态规划一、题目二、分析三、题解四、复杂度这题是典型的动态规划题目,新手可以从这题开始入手动态规划,从动态规划的概念 到 解题思路 到最后的优化方式。一、题目剑指 Offer 42. 连续子数组的最大和二、分析动态规划入门文章参考:什么是动态规划(Dynamic Programming)?动态规划的意义是什么?1.能不能使用动态规划一个问题能不能动态规划 有以下三点:1.重叠子结构:一个大的问题能否拆成若干小问题2.满足

2020-08-20 13:04:34 122

原创 Scala编程——第10章:Scala集合——列表(3)

Scala集合——列表(3)一、列表简介二、不可变列表List1.构建列表2.基本操作3.初阶方法4.高阶方法本节主要学习列表集合的概念和相关操作。一、列表简介列表是Seq的子类。Seq是一个有先次序的值的序列,具有一定长度的可迭代访问的对象。列表分成 不可变列表List 和 可变列表ListBufferList中可以存放任何数据类型, 但是和数组一样,同一个列表的元素必须是相同类型的。继承关系不可变列表ListList -> LinearSeq -> Seq -> I

2020-08-19 19:40:45 749

原创 141.环形链表——HashMap+快慢指针详解

环形链表一、题目二、分析141.环形链表分析方法一:哈希表方法二:双指针142.环形链表II分析方法一:哈希表方法二:双指针三、题解四、复杂度本文主要讲解leetcode中141.环形链表和142.环形链表II 基于 HashMap 和 快慢指针两种解法。一、题目141.环形链表142.环形链表II二、分析141.环形链表分析方法一:哈希表思路我们可以通过检查结点此前是否被访问过来判断链表是否为环形链表。常用的方法是使用哈希表算法我们遍历所有结点并在哈希表中存储每个结点的引

2020-08-19 12:45:27 292

原创 Scala编程——第10章:Scala集合——数组(2)

Scala集合——数组(1)一 、数组简介二、定长数组三、变长数组四、数组转换五、常用方法六、多维数组本节主要学习数组Array集合的概念和相关操作。一 、数组简介数组是Seq的子类。Seq是一个有先次序的值的序列,具有一定长度的可迭代访问的对象。数组分成不可变数组(定长数组)和可变数组(不定长数组)继承关系不可变数组:Array -> FallbackArrayBuilding -> ArraySeq -> IndexedSeq -> Seq -> Iter

2020-08-17 18:31:35 289

原创 Scala编程——第10章:Scala集合——集合简介(1)

Scala集合———集合简介(1)一、主要的集合特质二、 不可变集合三、可变集合四、构建集合实例五、参考资料本章将学习Scala的集合,共6小节。主要包含以下内容:1.集合简介2.数组Array3.列表List4.元组Tuple5.集Set6.映射Map本节主要学习集合的概念、集合继承关系等等。一、主要的集合特质Scala 所有集合类都可以在 scala.collection 包中找到:包中的集合分为两大类:可变集合 和 不可变的集合,下图展示了这个包中所有的集合类,这些都是高级

2020-08-17 11:53:24 272

原创 Scala编程——第九章:面向对象编程(高级部分)——特质

面向对象编程(高级部分)—— 特质(3)todo

2020-08-17 09:53:38 131

原创 Scala编程——第九章:面向对象编程(高级部分)——包

面向对象编程中级——包(3)todo

2020-08-17 09:46:57 142

原创 Scala编程——第九章:面向对象编程(高级部分)——类的继承

面向对象编程(高级部分)——类的继承(2)todo

2020-08-17 09:43:46 117

原创 Scala编程——第九章:面向对象编程(高级部分)—— Scala静态概念

面向对象编程中级——Scala静态概念一、静态概念1.单例对象2.伴生对象3.apply方法4.应用程序的对象面向对象编程中级部分,主要学习Scala中的静态概念、类的继承等相关知识。一、静态概念1.单例对象Scala比Java 更具有面向对象的特点,Scala的类不允许有静态( static )成员。Scala虽然没有静态方法或者静态字段。对此类使用场景, Scala提供Object语法(单例对象)来达到相同的目的。单例对象(singleton object) de 定义看上去和类相似,使用

2020-08-11 15:59:44 175

原创 Scala常见问题

Scala常见问题一、常见问题二、常用工具记录工作中在Scala遇到的常见问题。一、常见问题二、常用工具1. 在线反编译工具:方便快速的将Scala代码反编译成Java代码,方便理解Scala语法http://www.javadecompilers.com/...

2020-08-11 14:23:41 306

原创 Scala编程——第八章:面向对象编程(初级部分)

面向对象编程(初级部分)一、预备知识二、类与对象1.类与对象的关系2.类的定义3.属性(成员变量)4. 对象本章开始学习Scala面向对象编程内容,内容分成初级、中级、高级部分。一、预备知识Java是面向对象的编程语言,由于历史原因,Java中还存在着非面向对象的内容:基本类型 ,null,静态方法等。Scala语言来自于Java,所以天生就是面向对象的语言,而且Scala是纯粹的面向对象的语言,即在Scala中,一切皆为对象。二、类与对象1.类与对象的关系类是抽象的,概念的,代表一类事

2020-08-06 15:18:16 275

原创 695.岛屿的最大面积——DFS详解+网格类题目通用解法

695.岛屿的最大面积一、题目二、分析三、题解四、复杂度一、题目给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0],

2020-08-04 18:48:47 315 2

原创 [Work]—Hive常用命令及问题

记录工作中Hive方面的常用命令和问题一、常用命令一、常用命令1.查看文件路径进入hive客户端:dfs -ls 路径dfs -ls oss://xxx/xxx/xxx/dt=2020-08-04不进入hive客户端: hadoop fs -ls 或者 hdfs dfs -lshadoop fs -ls oss://xxx/xxx/xxx/dt=2020-08-042.查看文件大小进入hive客户端:dfs -du -h 路径dfs -du -h oss://x

2020-08-04 17:29:41 308

原创 Kafka常用命令及问题

记录工作中Kafka方面的常用命令和问题一、常用命令二、常见问题一、常用命令二、常见问题如何查看Kafka的安装路径。jps -> ps -ef | grep kafka的进程号

2020-08-03 11:09:41 486

原创 [Work]—Linux常用命令及问题

记录工作中Linux方面的常用命令和问题一、常用命令一、常用命令1.查看进程号。jpsjps -mlvV1.查看进程详情。比如查看kafka的安装路径等等ps -ef | grep 进程号

2020-08-03 11:02:45 133

原创 Scala编程——第六章:Scala函数式编程高级(下)

Scala函数式编程高级(下)一、闭包二、柯里化三、尾递归四、偏函数(Partial Functions)五 、控制抽象一、闭包在Scala中,你可以在任何作用域内定义函数。如在包中、类中、甚至是另一个函数或方法中。在函数体内,你可以访问到相应作用域内的任何变量(这很正常),但是当变量不在作用的时候,函数仍然可以访问到这个变量。这样一个函数称作"闭包"。闭包由代码和代码用到的非局部变量定义构成。 闭包可以让你的函数访问非局部变量。定义一个函数字面量:val addMore = (x: Int) =

2020-07-31 12:25:26 199

原创 Scala编程——第六章:Scala函数式编程高级(上)

Scala函数式编程高级(上)一、作为值的函数二、函数字面量1.字面量2.函数字面量(匿名函数)3.函数字面量的简写(1)简写规则:(2)正确使用占位符三、带参数的函数四、高阶函数五、部分应用函数(Partially Applied Functions)一、作为值的函数在Scala中,函数是"头等公民",就和数字一样,你可以在变量中存放函数。import scala.math._val num = 3.14val fun = ceil _ //注意有个下划线_这段代码将num设为3.14

2020-07-31 10:54:02 312

原创 Scala编程——第五章:Scala函数式编程(基础)

Scala函数式编程基础(上)一、概念说明1.方法与函数2.函数式编程与面向对象编程二、函数的定义1.基本语法2.函数的调用三、过程(procedure)1.基本概念四、惰性函数五、异常六、函数字面量Scala函数式编程分成基础部分和高级部分。高级部分参考:一、概念说明1.方法与函数方法: 定义函数最常用的方式是作为某个对象的成员。这样的函数被称为方法。函数:在Scala中函数和方法几乎可以等同(定义、使用、运行机制都是一样的),只是函数的使用方式更加灵活。区别:Scala中函数是一等公民,像

2020-07-29 18:45:58 1450

原创 Scala编程——第四章:Scala高级for循环

Scala高级for循环一、基础用法二、高级用法一、基础用法1.基础语法语法:for ( i <- 表达式)scala 不支持java的for(初始变量;条件;更新变量)的写法。i:循环变量,<- :循环符, 表达式: 循环的区间。通过 " i<- 表达式 " 这样的生成器语法,可以遍历表达式区间的元素。for(i <- 1 to 3) println(i) // 1 to 3 左闭右闭 包含1和3for(i <- 1 until 3) println(

2020-07-28 11:55:11 438

原创 Scala编程——第三章:Scala流程控制

Scala流程控制一、流程控制说明二、分支控制1.if-else2. switch(模式匹配)三、循环控制1.while1.1while循环中的中断2.for3.while与for一、流程控制说明Scala流程控制结构和java语言基本相同。主要有以下三种结构:顺序控制:程序从上到下顺序执行,中间没有任何的判断和跳转分支控制:if-else分支; switch分支(scala中没有switch,而是使用模式匹配,后面单独讲解)循环控制:while循环、for循环(for功能很强大,后面单独讲。

2020-07-28 10:48:45 204

原创 5. 最长回文子串——暴力解法+动态规划+中心扩散

5. 最长回文子串一、题目二、分析三、题解一、题目给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”链接: 5.最长回文串二、分析暴力匹配最简单也是最直接的方法。直接暴力遍历字符串,枚举所有长度>= 2的子串,依次判是否是回文。具体实现时,记录当前回文串的长度,可以根据当前的最大长

2020-07-27 17:17:11 313 1

原创 Scala编程——第二章:Scala基础入门(变量、数据类型、运算符)

Scala基础入门一、变量1.定义变量2.深入理解var 和 val二、数据类型1.AnyVal和AnyRef2.Scala类的继承关系3.Scala隐式转化三、运算符一、变量1.定义变量基本语法val | var 变量名 [:变量类型] = 变量值 //例子 val age: Int = 12 var sal: Double = 10000.5 var sal = 12000.5注意事项1.变量类型可以省略。Scala可以通过类型推断,推断出那些不显示指定的类型。2. 类型确定

2020-07-27 14:48:22 299 2

原创 Scala编程——第一章:Scala简介

Scala基础入门1.Scala简介1.1.Scala是什么?1.2 why Scala?注:文章参考《Scala编程》和《快学Scala》。仅用于个人学习记录,侵权删。1.Scala简介1.1.Scala是什么?Scala 是一门综合了面向对象和函数式编程概念的静态类型的编程语言。运行在标准的 Java 平台上,可以与所有 Java 类库无缝协作。Scala是面向对象的。它对面向对象的实现是纯的:每个值都是对象,每个操作都是方法调用。比如 1+2 ,实际上是在调用 Int 类里定义的名+

2020-07-27 10:45:04 155

原创 Java——String类的用法详解

Java String类的用法详解一、String二、StringBuilder三、StringBuffer一、StringString:适用于少量的字符串操作。二、StringBuilder线程不安全 StringBuilder的方法没有synchronized键字修饰,所以不能保证线程安全性。适用于单线程下在字符串缓冲区进行大量操作。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)运算速度比较(通常情况下):StringB

2020-07-24 10:31:28 175

原创 剑指 Offer 07. 重建二叉树——【前中序】和【中后序】重建二叉树的递归思路详解

剑指 Offer 07. 重建二叉树一、题目二、分析三、题解四、复杂度分析五、扩展:从中序与后序遍历序列构造二叉树一、题目剑指 Offer 07. 重建二叉树105. 从前序与中序遍历序列构造二叉树 二、分析[首先不考虑代码,如何根据前序中序将二叉树还原]前序遍历的特点: 节点按照 [根 | 左 | 右] ; 后序 :[根 | 左 | 右] 排序根据以上特点,按照以下顺序 可以 还原出二叉树1. 前序数组的首个元素即为根节点root的值2. 在中序数组中找到根节点root

2020-07-22 14:51:04 196

原创 剑指 Offer 55 - I. 二叉树的深度——DFS+BFS解题

剑指 Offer 55 - I. 二叉树的深度一、题目二、分析三、题解一、题目二、分析二叉数遍历问题一般就两种解题方法:DFS + DFS可参考文章:二叉树遍历系列总结+递归/迭代的统一写法三、题解DFSclass Solution { public int maxDepth(TreeNode root) { //【递归 实质上就是 DFS】 //递归终止条件 if(root == null) return 0

2020-07-21 15:32:30 149

原创 二叉树遍历系列总结+递归/迭代的统一写法

二叉树遍历系列总结+递归/迭代的统一写法一、题目二、分析:DFS/BFS 与树的遍历三、递归的写法四、迭代写法1. 不统一版本的迭代写法2. 统一版本写法本文提供LeetCode 二叉树 前中序层 四种遍历方式的 递归 和 迭代 统一写法递归写法很简单,在面试中不足以获得面试官的青睐,应该重点掌握迭代写法一、题目144. 二叉树的前序遍历94 . 二叉树的中序遍历145. 二叉树的后序遍历二、分析:DFS/BFS 与树的遍历有两种通用的遍历树的策略:深度优先搜索(DFS)在

2020-07-20 16:53:13 1009

原创 剑指 Offer 40. 最小的k个数——TopN问题

剑指 Offer 40. 最小的k个数_TopN问题一、题目二、题解分析三、题解四、复杂度分析一、题目输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0]限制:0 <= k <= arr.length <= 10

2020-07-17 18:03:38 172

原创 剑指 Offer 42. 连续子数组的最大和——动态规划详细解题思路

剑指 Offer 42. 连续子数组的最大和一、题目输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。提示:1 <= arr.length <= 10^5-100 <= arr[i] <= 100注意:本题与主站 53

2020-07-15 14:56:38 212

转载 什么是动态规划(Dynamic Programming)?动态规划的意义是什么?(2)

什么是动态规划(Dynamic Programming)?动态规划的意义是什么? 第二篇注:本文源自知乎两篇文章,第一篇注重基础原理讲解 第二篇注重解题思路分析。仅用于个人学习,侵权删。第二篇作者:苗华东连接:阅读原文来源:知乎本文清楚的讲解了什么是动态规划,同时也能给一种如何分析、求解动态规划的思考方式。...

2020-07-15 10:26:13 259

转载 什么是动态规划(Dynamic Programming)?动态规划的意义是什么?(1)

什么是动态规划(Dynamic Programming)?动态规划的意义是什么? 第一篇0. intro1. 从一个生活问题谈起2. 几个简单的概念3. 对DP原理的一点讨论5 例题最长上升子序列注:本文源自知乎两篇文章,第一篇注重基础原理讲解 第二篇注重解题思路分析。仅用于个人学习,侵权删。第一篇作者:阮行止链接:点击阅读原文来源:知乎0. intro很有意思的问题。以往见过许多教材,对动态规划(DP)的引入属于“奉天承运,皇帝诏曰”式:不给出一点引入,见面即拿出一大堆公式吓人;学生则死啃

2020-07-15 10:16:12 611 1

原创 动态规划_图文详解_Java代码_leetcode刷题模板

动态规划_图文详解_Java代码_leetcode刷题模板一、参考连接二、动态规划解题套路框架(一)、斐波那契数列1、暴力递归2、带备忘录的递归解法3、dp 数组的迭代解法(二)、凑零钱问题1、暴力递归2、带备忘录的递归3、dp 数组的迭代解法(三)、最后总结四、动态规划答疑篇(一)、最优子结构详解(二)、dp 数组的遍历方向一、参考连接知乎:什么是动态规划(Dynamic Programming)?动态规划的意义是什么?知乎:如何理解动态规划labuladong的算法小抄:动态规划解题套路框架

2020-07-10 16:08:40 787

原创 深度优先搜索DFS_图文详解_Java代码_leetcode刷题模板

一、参考链接-注 本文仅用于个人学习,侵权删。1、基础讲解搜索思想——DFS & BFS(基础基础篇)数据结构:图的遍历–深度优先、广度优先2、套路模板深度优先搜索模板回溯算法解题套路框架二、图文讲解回溯算法解题套路框架DFS 算法就是回溯算法 ,废话不多说,直接上回溯算法框架。解决一个回溯问题,实际上就是一个决策树的遍历过程。你只需要思考 3 个问题:1、路径:也就是已经做出的选择。2、选择列表:也就是你当前可以做的选择。3、结束条件:也就是到达决策树

2020-07-07 18:28:01 875

空空如也

空空如也

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

TA关注的人

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