多语言展示
当前在线:1169今日阅读:39今日分享:10

Scala深入浅出实战初级入门经典视频课程

从Scala的开发环境的搭建起步,基于纯粹动手实战的原则,循序渐进的覆盖Scala基础、Scala面向对象编程、Scala函数式编程、集合的操作深度实战、Scala测试等实用实战内容,是《Scala深入浅出实战中级---进阶经典》和《Scala深入浅出实战高级---高手之巅》的前置课程。纯粹的实战精华课程打造能够进行Scala编程实战的您!
工具/原料

大数据,Spark,Scala

方法/步骤
1

第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中网络文件和本地文件的访问方式。

2

第4讲:For与Function进阶实战、Lazy的使用本视频以具体的例子代码详细介绍了1)双重for循环的使用方式。2)for循环中的守卫的使用方式。3)函数作为参数传递给另外一个函数。4)匿名函数的定义、匿名函数作为。5)函数的返回值。6)递归调用中函数的使用方式。7)函数中的默认参数。8)可变参数的函数的定义和使用方式。7)延迟执行中的lazy值的定义和使用方式。第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方法将两个数组中的元素进行压缩组装成新的数组。

3

第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源码解析。

4

第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伴生对象操作方法代码实战10分钟本视频以具体的例子代码详细介绍了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方法操作源码解读实战。

推荐信息