大数据时代怎样深入浅出的掌握Scala实战技能?

Scala是一门以JVM为目标运行环境并将面向对象和函数式编程语言的最佳特性结合在一起的编程语言。从Scala的开发环境的搭建起步,基于纯粹动手实战的原则,循序渐进的覆盖Scala基础、Scala面向对象编程、Scala函数式编程、集合的操作深度实战、Scala测试等实用实战内容,是《Scala深入浅出实战中级---进阶经典》和《Scala深入浅出实战高级---高手之巅》的前置课程。
第1讲:Scala开发环境搭建和HelloWorld解析
本视频介绍了Scala语言的特性,Java的安装,详细介绍了Scala的下载、 Scala的环境变量配置,ScalaIDE工具的安装。在Scala的环境安装完成后 又动手演示了一个在ScalaIDE中建立Scala工程的例子,并演示运行结果。
第2讲:Scala函数定义、流程控制、异常处理入门实战
本视频以具体的例子代码详细介绍了 1)Scala中函数的定义格式,以main函数为例介绍了main函数中的参数意 义和返回值,同时还介绍了无参数函数的调用方式和有参数函数的调用方 式。
2)介绍了Scala中流程控制do-while循环、for循环的使用方式。
3)Scala中的异常处理try-catch-finally的使用流程。
第3讲:Tuple、Array、Map与文件操作入门实战
本视频以具体的例子代码详细介绍了
1)Scala中的元组的定义、元组的元素访问方式。
2)Scala中数组的定义、数组的遍历方式。
3)Scala中Map集合的定义和访问方式。
4)Scala中网络文件和本地文件的访问方式。
第4讲:For与Function进阶实战、Lazy的使用
本视频以具体的例子代码详细介绍
1)双重for循环的使用方式。
2)for循环中的守卫的使用方式。
3)函数作为参数传递给另外一个函数。
4)匿名函数的定义、匿名函数作为。
5)函数的返回值。
6)递归调用中函数的使用方式。
7)函数中的默认参数。
8)可变参数的函数的定义和使用方式。
第5讲:Scala数组操作实战详解
本视频以具体的例子代码详细介绍了
1)固定长度数组的声明与元素操作。
2)变长数组的声明与元素操作。
3)数组的的各种操作方法:数组的增删改查操作、数组的+=与++=操作、 数组的yield操作、数组的过滤filter操作、数组的求和操作、数组的求最 大值操作、 数组的升序sorted排序、数组的快速quickSort排序、数组的 mkString操作、数组的矩阵ofDim操作。
第6讲:Map、Tuple、Zip实战解析
本视频以具体的例子代码详细介绍了
1)可变Map集合的操作。
2)不可变Map集合的操作。
3)使用模式匹配获取Map集合的元素。
4)使用getOrElse方法获取 Map集合的元素。
5)使用+=为Map集合添加元素。
6)使用-=删除Map集合的元素。
7)使用SortedMap给Map集合的元素排序。
8)使用模式匹配访问元组中的值。
9)使用partition方法将一个字符串拆分成一个元组。
10)使用数组的zip方法将两个数组中的元素进行压缩组装成新的数组。
第7讲:Scala类的属性和对象私有字段实战详解
本视频以具体的例子代码详细介绍了:
1)Scala类的实现和使用。
2)Scala类中用var关键字修饰的属性(或者称字段)自动带有getter方法 和setter方法。
3)Scala类中用val关键字修饰的属性只带getter方法。4)最后着重介绍 了Scala类的对象私有字段,该特性在用Scala语言编写的大数据计算框架 Spark源代码中经常用到。
第8讲:Scala主构造器、私有构造器、构造器重载实战详解
本视频以具体的例子代码详细介绍了:
1)Scala类的主构造器的定义以及如何让主构造器变成私有的。
2)除了主构造器,Scala类还有任意多的辅助构造器,辅助构造器是如何 定义和使用的。
3)和Java语言有多个构造方法一样,Scala类的构造器是可以通过重载实 现多个构造器,当然其中只有一个是主构造器。对于辅助构造器的使用而 言,都是在对其他先前定义的辅助构造器和主构造器进行调用开始的。
第9讲:Scala的内部类实战详解
本视频以具体的例子代码详细介绍了Scala的内部类,Java语言的内部类和 Scala语言的内部类有本质的区别,Java语言的内部类是从属于外部类的, 而Scala语言的内部类是从属于外部类的每个具体实例对象的。
第10讲:Scala单例对象、伴生对象实战详解
本视频以具体的例子代码详细介绍了Scala语言的单例对象和伴生对象:  (1)与Java语言中有静态方法和静态属性(字段)不同,Scala语言是通 过提供object关键字修饰的单例对象达到此目的,也就是说在Scala语言的 单例对象.
第11讲:Scala中的apply实战详解
本视频以具体的例子代码详细介绍了Scala语言的非常重要的apply方法的 定义和使用: 
(1)对于apply方法而言,它可以是伴生类中的apply方法,也可以是伴生 对象中的apply方法,我们通常使用的就通过伴生对象中的apply方法来实 例化它的伴生类。 
(2)针对apply方法在伴生对象和伴生类中如何使用,我们通过代码进行 了演示,并查看了Scala源码中的伴生对象Array是如何通过apply方法来实 例化它的伴生对象的。 
(3)最后特别列举了大数据计算框架Spark中的图计算部分(Spark  GraphX),在构造一个图的时候(图是用Graph这个抽象类表示的),一种 方法是通过使用Graph类的伴生对象的apply方法来实现的,而在这个apply 方法中,实际上是new了一个Graph抽象类的子类 GraphImpl的实例。
第12讲:Scala中的继承:超类的构造、重写字段、重写方法实战
本视频以具体的例子代码详细介绍了Scala语言的非常重要的继承特性:  (1)与Java语言一样,Scala语言也是使用extends关键字实现子类对父类 的继承。 
(2)子类中的方法和字段可以使用 override 关键字实现对它的超类(父 类)中同名的方法或字段进行覆写(重写)。 
(3)当子类使用主构造器进行实例化时,与父类的主构造器中同名的参数 也会直接传递具体的参数值给父类使用。
第13讲:抽象类、抽象字段、抽象方法
本视频以具体的例子代码详细介绍了Scala语言中抽象类、抽象字段和抽象 方法的定义和使用: 
(1)与Java语言一样,Scala中的抽象类也是使用 abstract 关键字修饰 的。 
(2)抽象字段和抽象方法都是只有字段或者方法的定义,而没有字段或者 方法的具体实现。
第14讲:Scala中作为接口的trait、在对象中混入trait代码
本视频以具体的例子代码详细介绍了Scala语言中trait的定义和使用: ( 1)与Java语言中的接口(interface)中只含有抽象方法不同,Scala语言 中的特质(trait)可以包含抽象字段、抽象方法或者实现了方法体的方法 。 
(2)在使用Scala语言构建对象时,可以为该对象添加特质。
第15讲:Scala多重继承、多重继承构造器执行顺序及AOP实现
本视频以具体的例子代码详细介绍了Scala语言的多重继承、多重继承构造 器执行顺序及AOP实现: 
(1)多重继承的trait代码实战;
(2)多重继承构造器执行顺序;
(3)基于trait的AOP代码实战。
第16讲:Scala中包的定义、包对象、包的引用、包的隐式引用实战
本视频以具体的例子代码详细介绍了Scala语言中包的定义、包对象、包的 引用、包的隐式引用:    (1)与在Java中一样,在Scala语言中,也可以通过包来组织大型工程( 项目)。在Scala中,可以通过链式和嵌套来实现包的定义。    (2)借助包对象可以把工具函数或者常量添加到包而不是某个工具对象中 。    (3)Scala语言中可以在任何地方声明引用,并可以对引用进行重命名。 同时在Scala程序中都隐式引用了三个包:import java.lang._ 、import  scala._ 、import Predef._
第17讲:Scala中包、类、对象、成员、伴生类、伴生对象访问权限
本视频以具体的例子代码详细介绍了Scala语言中包、类、对象、成员、伴 生类、伴生对象访问权限:   
(1)在Scala语言中,可以通过 private[包名] 这个修饰符来扩展包、类 等的访问权限。   
(2)在Scala中,private[this] 这个修饰符修饰的成员是对象私有的, 这样即使是同一个类的不同对象也不可以访问对方的成员。   
(3)在伴生对象和伴生类中,可以访问彼此的私有成员。
第18讲:Scala中文件的读取、写入、控制台输入操作代码实战
本视频以具体的例子代码详细介绍了Scala语言中文件的读取、写入、控制 台输入操作代码实战: 
(1)通过Source.fromFile( )方法读取本地文件;
(2)通过Source.fromURL( )方法读取网络文件;
(3)通过使用Java语言的PrintWriter类写入内容到本地文件;
(4)通过Console.readLine方法从控制台输入内容。
第19讲:Scala中的正则表达式、与模式匹配结合的的Reg代码实战
本视频以具体的例子代码详细介绍了Scala语言的正则表达式、与模式匹配 结合的的正则表达式: 
(1)在Scala中,与正则表达式相关的类是scala.util.matching.Regex类 。要构造一个Regex对象,使用String类的r方法即可。如果正则表达式中 包含反斜杠或引号之类的需要转义的字符,那么最好是使用原始(raw)字 符串,以三个 ” 号包围。 
(2)使用Regex对象的findAllIn( )方法可以返回所有匹配项的迭代器; 使用Regex对象的findFirstIn( )方法可以找到Regex的首个匹配项。 
(3)正则表达式和模式匹配的结合形成正则表达式组。分组可以使得获取 正则表达式的子表达式更加方便。在想要提取的子表达式两侧加上圆括号 ,匹配组将正则表达式(Regex)对象当做“提取器”来使用。
第20讲:Scala中的本地函数与作为语言一等公民的函数详解
本视频以具体的例子代码详细介绍了Scala语言的本地函数与作为语言一等 公民的函数: 
(1)在Scala中,函数是一等公民,可以在变量中存放函数,作为值的函 数。 
(2)在Scala中,不需要给每一个函数命名,这种不需要命名的函数,称 为匿名函数。 
(3)在Scala 中,可以在函数内部定义函数,这种定义在函数内部的函数 可以成为本地函。
第21讲:Scala中的偏函数实战详解
本视频以具体的例子代码详细介绍了Scala语言的偏函数: (1)在Scala中,偏函数是具有类型PartialFunction[-A,+B]的一种函数 。A是其接受的函数类型,B是其返回的结果类型。偏函数最大的特点就是 它只接受和处理其参数定义域的一个子集,而对于这个子集之外的参数则 抛出运行时异常。   
(2)偏函数是一种表达式,你不需要提供函数需要的所有参数。代之以仅 提供部分,或不提供所需参数。比如,要创建不提供任何三个所需参数的 调用sum方法(“def sum(a: Int, b: Int, c: Int) = a + b + c”)的 偏应用表达式,只要在“sum”之后放一个下划线即可。然后可以把得到的 函数存入变量。
第22讲:Scala中的闭包实战详解
本视频以具体的例子代码详细介绍了Scala语言的闭包:在Scala中,你可 以在任何作用域内定义函数:包、类甚至是另一个函数或方法。在函数体 内,你可以访问到相应作用域内的任何变量。同时你的函数可以在变量不 再处于作用域内时被调用,这样的一个函数被称为闭包(closure)。
第23讲:Scala高阶函数实战详解
本视频以具体的例子代码详细介绍了Scala语言的高阶函数: 
(1)由于Scala语言中混合了面向对象和函数式编程的特性,所以在Scala 语言中,函数可以像任何其他数据类型一样被传递和操作。 
(2)要熟悉高阶函数,本视频通过练习使用Scala集合库的一些常用的接 受函数参数的方法(map方法、filter方法、reduceLeft方法、split方法 和sortWith方法等)来具体演示。 
(3)把函数(包括匿名函数)作为值(或者称为值函数)传递给Scala集 合的常用方法的参数来对集合中的每一个元素进行计算是Scala语言中常见 的操作方式。
第24讲:Scala中SAM转换实战详解
在Scala中,当需要告诉另一个函数做某件事的时候,会传一个函数参数给它 ,并且这个函数参数通过Scala语言的隐式转换把这个函数参数转换为一 个包含了具体的动作方法的对象实例来实现。
第25讲:Scala中Curring实战详解_controller
柯里化(Curring)指的是将原来接受两个参数的函数变成新的接受一个参 数的函数的过程,新的函数返回一个以原有第二个参数作为参数的函数。
第26讲:Scala中模式匹配入门实战详解
本视频以具体的例子代码详细介绍了Scala语言模式匹配的入门: 
(1)match/case模式匹配。 
(2)带条件表达式的模式匹配。 
(3)Foreach迭代器中模式匹配的使用方式。
第27讲:Type、Array、List、Tuple模式匹配实战解析
本视频以具体的例子代码详细介绍了Scala语言的Type、Array、List、 Tuple模式匹配实战: 
(1)type模式匹配,以对函数的参数类型的判断为例。 
(2)Array模式匹配,以对数组中的元素的个数的判断为例。 
(3)List模式匹配,以右结合操作符为例。 
(4)Tuple模式匹配,以元组中对特定位置的元素的判断为例。
第28讲:Scala提取器Extractor实战详解
本视频以具体的例子代码详细介绍了Scala语言的提取器Extractor: 
(1)数组中对元素的提取。 
(2)正则表达式中的提取器。 
(3)提取器的背后原理。 
(4)提取器的unapplySeq源码解析。
第29讲:Case class和Case object代码实战解析
本视频以具体的例子代码详细介绍了Scala语言的Case class和Case  object代码实战: 
(1)Case class 和 Case object的常见用途:这是Scala为我们优化的语言 特性,常用于传递消息和模式匹配。 
(2)Scala 为 Case class 所做的优化:1)添加与类名一致的工厂方法 (对应伴生对象的apply方法)、模式匹配中常用的抽取器(对应伴生对象 的unapply方法);2)参数列表中的所有参数隐式获得了val 前缀,被当 做字段保护,并且是不可变的(由于变量的不可变特性,在分布式消息通 信中的使用更广泛);3)为类添加了诸如toString,hashCode,equals和 copy等方法。 
(3)介绍了Case class 和 Case object在模式匹配中使用的几种模式, 包括:1)常量模式(Case Object 单例对象可以视作常量);2)构造器 模式;3)通配模式等
第30讲:模式匹配高级实战:嵌套的Case class
本视频以具体的例子代码详细介绍了Scala语言嵌套的Case class: 
(1)介绍嵌套的Case class在模式匹配中非常重要的一个应用场景:以 Case class作为元素的集合的模式匹配。 
(2)利用模式匹配中常用的匹配模式,序列模式讲解嵌套Case Class的应 用实战。 
(3)通过模式匹配中的变量绑定,讲解嵌套Case Class的应用实战。
第31讲:Option使用和实现内幕源码揭秘
本视频以具体的例子代码详细介绍了Scala语言Option使用和实现内幕: 
(1)从Option的实战入手解析其内部实现。 
(2)Option的源码解析 : 着重解析 sealed关键字的含义及其作用, sealed关键字的作用主要有:1)sealed关键字可以限制继承子类必须在同 一个文件中;2)用于模式匹配时,编译器会帮我们检查是否所有的匹配子 项都已经列在case中,避免出现 MatchError的异常。 
(3)给出Option在实际应用中的一个常见案例 。
第32讲:List的基本操作实战与基于模式匹配的List排序算法实现
本视频以具体的例子代码详细介绍了Scala语言中List的基本操作实战与基 于模式匹配的List排序算法实现: 
(1)List的定义有两种方式:一种通过apply()方法的方式定义,一种是 通过" :: "(两个冒号的方式)来生成List集合; 
(2)接下来讲解了List的一些常见的操作方法,像isEmpty方法、head方 法、tail方法等; 
(3)最后用一个sortList()方法的代码实例来讲解基于模式匹配的List排
序算法实现。
第33讲:List的一阶函数操作代码实战详解
本视频以具体的例子代码详细介绍了Scala语言中List的一阶函数操作: 
(1)List的drop、take、splitAt、apply、indices、toString、
mkString等方法的实战操作; 
(2)List的toIterator,toArray,copyToArray等方法的实战操作。
第34讲:对List进行高效的排序和倒排序代码实战
本视频以具体的例子代码详细介绍了Scala语言风格的归并排序,所谓 Scala的风格,在本例中用到了Scala语言的模式匹配、柯里化以及作为函 数参数的值函数等知识点。归并排序是建立在归并操作上的一种有效的排 序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的 应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列 有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2- 路归并。
第35讲:List的map、flatMap、foreach等操作
本视频以具体的例子代码详细介绍了Scala语言中List常见的一些方法(函 数)操作:map、flatMap、foreach、filter操作。
第36讲:List的partition、takeWhile等操作
本视频同样以具体的例子代码详细介绍了Scala语言中List常见的一些方法 操作:partition、find、takeWhile、dropWhile、span、forall、 exsists等方法操作
第37讲:List的foldLeft、foldRight、sort操作代码实战
本视频以具体的例子代码详细介绍了Scala语言中List常见的一些方法(函 数)操作:foldLeft、foldRight、sort等方法操作代码实战。
第38讲:List伴生对象操作方法代码实战
本视频以具体的例子代码详细介绍了Scala语言中List伴生对象的常见操作 方法,具体的方法有:apply、make、range、unzip、flatten、contact、 map2等操作方法。
第39讲:ListBuffer、ArrayBuffer、Queue、Stack操作代码实战
ListBuffer和ArrayBuffer分别是List、Array的新的版本,Queue和Stack 是两种经典的数据结构。本视频以具体的例子代码详细介绍了Scala语言中 ListBuffer、ArrayBuffer、Queue、Stack的操作实现。
第40讲:Set、Map、TreeSet、TreeMap操作代码实战
Set、Map、TreeSet、TreeMap操作代码实战。
第41讲:List继承体系实现内幕和方法操作源码揭秘
本视频以具体的例子代码详细介绍了Scala语言中:
(1)List的继承体系分析和源码解读;
(2)List方法操作源码解读实战。
课程地址:http://edu.51cto.com/course/course_id-3945.html

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30605389/viewspace-2065319/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30605389/viewspace-2065319/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值