Scala
Scala语言相关博文
@阿证1024
这个世界上最好的语言就是你的实力。
展开
-
God of spark is Scala---面向对象编程(基础篇)
一. 类和对象的区别和联系类是抽象的,概念的,代表一类事物,比如人类,猫类…对象是具体的,实际的,代表一个具体事物类是对象的模板,对象是类的一个个体,对应一个实例Scala中类和对象的区别和联系 和 Java是一样的。二. 类1. 如何定义类基本语法[修饰符] class 类名 { 类体} 定义类的注意事项scala语法中,类并不声明为public,所有这些类都具有公有可见性(即默认就是public)一个Scala源文件可以包含多个类.2. 类的声明原创 2020-07-20 19:55:56 · 198 阅读 · 0 评论 -
God of spark is Scala---面向对象编程(中级篇)
一. 包1. Scala包的基本介绍和Java一样,Scala中管理项目可以使用包,但Scala中的包的功能更加强大,使用也相对复杂些,下面我们学习Scala包的使用和注意事项。2. Scala包的特点概述基本语法package 包名Scala包的三大作用(和Java一样)区分相同名字的类当类很多时,可以很好的管理类控制访问范围Scala中包名和源码所在的系统文件目录结构要可以不一致,但是编译后的字节码文件路径和包名会保持一致3. Scala包注意事项和使用细节1)原创 2020-07-25 09:10:57 · 217 阅读 · 0 评论 -
God of spark is Scala---函数式编程基础
一. 函数的定义基本语法def 函数名 ([参数名: 参数类型], ...)[[: 返回值类型] =] { 语句... return 返回值}函数声明关键字为def (definition)[参数名: 参数类型], …:表示函数的输入(就是参数列表), 可以没有。 如果有,多个参数使用逗号间隔函数中的语句:表示为了实现某一功能代码块函数可以有返回值,也可以没有返回值形式1: : 返回值类型 =返回值形式2: = 表示返回值类型不确定,使用类型推导完成返回值原创 2020-07-20 10:15:02 · 167 阅读 · 0 评论 -
如何快速提高你的Scala编程水平(从入门到精通--详细讲解)
一点感悟:由于Spark计算框架是由Scala语言编写的,所以Scala这门语言就成了我们学习Spark的必修功课。可是很多人声称在两天或者几个小时中就学会了Scala了,在我看来其实不然,理由:1. Scala是融合Java的内容又在此基础上又新增属于自己的内容,所以这门语言它的学习应该是和Java类似:入门难,而不是类似Python:入门容易精通难2. 学习Scala核心内容是为我们看Spark源码的基础,例如Scala模式匹配无论是在Spark源码中还是我们日常处理数据中都会经常用到,而这些核心知原创 2020-07-20 20:15:48 · 432 阅读 · 0 评论 -
God of spark is Scala---运算符知识总结
一. 运算符介绍运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。1.算术运算符细节说明:1)对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。 例如:var x : Int = 10/3 ,结果是 32)当对一个数取模时,可以等价 a%b=a-a/b*b , 这样我们可以看到取模的一个本质运算(和java 的取模规则一样)。3)注意:Scala中没有++、–操作符,需要通过+=、-=来实现同样的效果2.赋值运算符3.比较运算符(关原创 2020-07-12 19:23:30 · 438 阅读 · 0 评论 -
详细讲解Scala的“for循环”
Scala很多流程控制语句和Java类似参考:https://blog.csdn.net/qq_43437122/article/details/107455659可是for循环却截然不同,下面详细介绍for循环控制语句的语法:1. to关键字基本案例for(i <- 1 to 3){ print(i + " ")}说明i 表示循环的变量, <- 规定好 to 规定i 将会从 1-3 循环, 前后闭合运行结果2. until关键字基本案例fo原创 2020-07-20 09:19:37 · 808 阅读 · 0 评论 -
God of spark is Scala---面向对象编程(高级篇)
一. 静态属性和静态方法1. Scala中静态的概念-伴生对象基本介绍Scala语言是完全面向对象(万物皆对象)的语言,所以并没有静态的操作(即在Scala中没有静态的概念)。但是为了能够和Java语言交互(因为Java中有静态概念),就产生了一种特殊的对象来模拟类对象,我们称之为类的伴生对象。这个类的所有静态内容都可以放置在它的伴生对象中声明和调用。伴生对象快速入门// class ScalaPerson是伴生类class ScalaPerson { var name : String原创 2020-07-25 13:53:33 · 253 阅读 · 0 评论 -
God of spark is Scala---程序流程控制
一、顺序控制1. 顺序控制介绍程序从上到下逐行地执行,中间没有任何判断和跳转。2. 顺序控制举例和注意事项Scala中定义变量时采用合法的前向引用。如:def main(args : Array[String]) : Unit = { var num1 = 12 var num2 = num1 + 2}错误形式:def main(args : Array[String]) : Unit = { var num2 = num1 + 2原创 2020-07-20 08:45:47 · 189 阅读 · 0 评论 -
God of spark is Scala---变量知识总结
一. 变量使用说明1.变量声明基本语法var | val 变量名 [: 变量类型] = 变量值2. 注意事项1)声明变量时,类型可以省略(编译器自动推导,即类型推导)2)类型确定后,就不能修改,说明Scala 是强数据类型语言.3)在声明/定义一个变量时,可以使用var 或者 val 来修饰, var 修饰的变量可改变,val 4)修饰的变量不可改 [案例].val修饰的变量在编译后,等同于加上final, 通过反编译看下底层代码。5)var 修饰的对象引用可以改变,val 修饰的则不可改变原创 2020-07-12 19:10:49 · 211 阅读 · 0 评论 -
God of spark is Scala---异常
Scala异常1. 介绍Scala提供try和catch块来处理异常。try块用于包含可能出错的代码。catch块用于处理try块中发生的异常。可以根据需要在程序中有任意数量的try…catch块。语法处理上和Java类似,但是又不尽相同2. Scala异常处理举例try { val r = 10 / 0 } catch { case ex: ArithmeticException=> println("捕获了除数为零的算数异常") case原创 2020-07-20 10:30:49 · 128 阅读 · 0 评论 -
面试官问:为什么说使用继承代码的扩展性和维护性提高了?
应答技巧如下图:B类继承了A类,C类继承了B类答:加入说我们现在想让B和C同时拥有某个方法或者属性,我们就可以在A类中直接添加,让B和C同时具有这个方法和属性,这就同时体现了代码的扩展性和维护性。...原创 2020-07-03 13:30:33 · 409 阅读 · 0 评论 -
Scala之递归的两个小练习
1. 求斐波那契数package com.atguigu.chapter05.funimport scala.io.StdInobject Exercise01 { def main(args: Array[String]): Unit = { // 斐波那契 println("请输入n的值:") val n: Int = StdIn.readInt() var res: Int = fabonaqi(n) println("res=" + res)原创 2020-06-29 10:24:37 · 207 阅读 · 0 评论 -
Spark----SparkCore 如何序列化自定义RDD操作
在实际开发中我们往往需要自己定义一些对于RDD的操作,那么此时需要主要的是,初始化工作是在Driver端进行的,而实际运行程序是在Executor端进行的,这就涉及到了跨进程通信,是需要序列化的。当我们自定义一个RDD操作类的时候,通常需要在两个地方考虑序列化,分别是:传递一个方法、传递一个属性。如何传递一个方法?1、我们定义一个RDD工具类:class Search() { val query: String = "h" // 过滤出包含字符串的数据 def原创 2020-08-26 15:38:54 · 328 阅读 · 0 评论 -
God of spark is Scala---隐式转换和隐式函数
隐式转换1. 隐式函数基本介绍隐式转换函数是以implicit关键字声明的带有单个参数的函数。这种函数将会自动应用,将值从一种类型转换为另一种类型2. 入门案例implicit def f1(d: Double): Int = { d.toInt}//Double 是输入类型, Int 是转换后的类型val a: Int = 3.5 // 不用调用toInt方法,就可自动转换3. 隐式转换的注意事项和细节隐式转换函数的函数名可以是任意的,隐式转换与函数名称无关,只与函数签名(函原创 2020-07-20 11:31:35 · 277 阅读 · 0 评论 -
Scala实现MapReduce经典案例WordCount
话不多说,直接上代码(包含详细步骤版和简化版):object WordCount { def main(args: Array[String]): Unit = { val lines = List("qiusuo zhao hello spark", "zhao spark scala qiusuo zhao hello") // 1. 分割字符串,获取单词 val res1: List[String] = lines.flatMap((x: St原创 2020-07-24 09:14:02 · 683 阅读 · 0 评论