Scala入门到精通
文章平均质量分 86
大数据处理语言Scala入门到精通实战,本课程可作为学习Spark内存计算框架的先导课程
zhouzhihubeyond
大数据技术爱好者,主要关注Spark、Hadoop、Storm、Hive、HBase等开源大数据技术,专注于大数据机器学习算法研究
展开
-
Intellij IDEA 14.1.4 Scala开发环境搭建
主要内容Intellij IDEA开发环境简介Intellij IDEA Scala开发环境搭建Intellij IDEA Spark开发环境搭建Intellij IDEA常见问题及解决方案Intellij IDEA常用快捷键1. Intellij IDEA开发环境简介具体介绍请参见:http://baike.baidu.com/link?url=SBY93H3SPkmcmIOmZ8H6原创 2015-10-29 23:10:25 · 72275 阅读 · 7 评论 -
Scala入门到精通——第一节 Scala语言初步
本节主要内容Scala简介为什么要学习ScalaScala语言初步1. Scala简介Scala(Scala Language的简称)语言是一种能够运行于JVM和.Net平台之上的通用编程语言,既可用于大规模应用程序开发,也可用于脚本编程,它由由Martin Odersk于2001开发,2004年开始程序运行在JVM与.Net平台之上,由于其简洁、优雅、类型安全的编程模式而受到原创 2015-08-18 09:35:19 · 53519 阅读 · 2 评论 -
Scala入门到精通——第三十节 Scala脚本编程与结束语
本节主要内容REPL命令行高级使用使用Scala进行Linux脚本编程结束语1. REPL命令行高级使用在使用REPL命令行时,有时候我们需要粘贴的代码比较大,而普通的粘贴可能会些一些问题,比如中文粘贴会出现乱码、多行代码粘贴时会出错,此时需要用到REPL的高级功能。在日常开发过程中,我们粘贴多行代码的时候会遇到下列问题://本意是要粘贴下面两行代码class Person(val nam原创 2015-08-17 16:40:43 · 16018 阅读 · 3 评论 -
Scala入门到精通——第二十九节 Scala数据库编程
本节主要内容Scala Maven工程的创建Scala JDBC方式访问MySQLSlick简介Slick数据库编程实战SQL与Slick相互转换本课程在多数内容是在官方教程上修改而来的,官方给的例子是H2数据库上的,经过本人改造,用在MySQL数据库上,官方教程地址:http://slick.typesafe.com/doc/2.1.0/sql-to-slick.html1. Scal原创 2015-08-17 14:36:06 · 16737 阅读 · 4 评论 -
Scala入门到精通——第二十八节 Scala与JAVA互操作
本节主要内容 1. JAVA中调用Scala类 2. Scala中调用JAVA类 3. Scala类型参数与JAVA泛型操作 4. Scala与Java间的异常处理原创 2015-08-16 19:54:24 · 28266 阅读 · 0 评论 -
Scala入门到精通——第二十七节 Scala操纵XML
本节主要内容XML 字面量XML内容提取XML对象序列化及反序列化XML文件读取与保存XML模式匹配1. XML 字面量XML是一种非常重要的半结构化数据表示方式,目前大量的应用依赖于XML,这些应用或利用XML作为数据交换格式,或利用XML进行文件配置等。像JAVA、C++及其它流行的程序开发语言都是依赖于第三方库来实现XML的操作,例如JAVA经常通过JDOM,DOM4J等XML处理原创 2015-08-15 21:10:10 · 14164 阅读 · 0 评论 -
Scala入门到精通——第二十六节 Scala并发编程基础
本节主要内容Scala并发编程简介Scala Actor并发编程模型react模型Actor的几种状态Actor深入使用解析1. Scala并发编程简介2003 年,Herb Sutter 在他的文章 “The Free Lunch Is Over” 中揭露了行业中最不可告人的一个小秘密,他明确论证了处理器在速度上的发展已经走到了尽头,并且将由全新的单芯片上的并行 “内核”(虚拟 CPU原创 2015-08-15 14:12:15 · 18112 阅读 · 3 评论 -
Scala入门到精通——第二十五节 提取器(Extractor)
作者:摇摆少年梦 视频地址:http://www.xuetuwuyou.com/course/12本节主要内容apply与unapply方法零变量或变量的模式匹配提取器与序列模式scala中的占位符使用总结1. apply与unapply方法apply方法我们已经非常熟悉了,它帮助我们无需new操作就可以创建对象,而unapply方法则用于析构出对象,在模式匹配中特别提到,如果一个类要能原创 2015-08-15 06:38:33 · 14199 阅读 · 2 评论 -
Scala入门到精通——第二十四节 高级类型 (三)
作者:摆摆少年梦 视频地址:http://blog.csdn.net/wsscy2004/article/details/38440247本节主要内容Type SpecializationManifest、TypeTag、ClassTagScala类型系统总结在scala中,类(class)与类型(type)是两个不一样的概念。我们知道类是对同一类型数据的抽象,而类型则更具体。比如定义cl原创 2015-08-13 12:19:23 · 14846 阅读 · 1 评论 -
Scala入门到精通——第二十三节 高级类型 (二)
本节主要内容中置类型(Infix Type)存在类型函数类型抽象类型关于语法糖的问题,在讲解程序语言时,我们常常听到“语法糖”这个术语,在百度百科中,它具有如下定义:语法糖(Syntactic Sugar),也叫糖衣语法,是英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语。指的是,在计算机语言中添加某种语法,这种语法能使程序员更方便的使用语原创 2015-08-11 19:50:13 · 12387 阅读 · 4 评论 -
Scala入门到精通——第二十二节 高级类型 (一)
本节主要内容this.type使用类型投影结构类型复合类型1. this.type使用class Person{ private var name:String=null private var age:Int=0 def setName(name:String)={ this.name=name //返回对象本身 this } def setAg原创 2015-08-10 20:16:07 · 14391 阅读 · 1 评论 -
Scala入门到精通——第二十一节 类型参数(三)-协变与逆变
本节主要内容协变逆变类型通匹符1. 协变协变定义形式如:trait List[+T] {} 。当类型S是类型A的子类型时,则List[S]也可以认为是List[A}的子类型,即List[S]可以泛化为List[A]。也就是被参数化类型的泛化方向与参数类型的方向是一致的,所以称为协变(covariance)。 为方便大家理解,我们先分析java语言中为什么不存在协变及下一原创 2015-08-09 16:14:55 · 15755 阅读 · 8 评论 -
Scala入门到精通——第二十节 类型参数(二)
本节主要内容上下文界定(Context Bound)多重界定类型约束型变1. 上下文界定在第十七节中的类型参数(一)中,我们提到视图界定可以跨越类继承层次结构,其后面的原理是隐式转换。本节要介绍的上下文界定采用隐式值来实现,上下文界定的类型参数形式为T:M的形式,其中M是一个泛型,这种形式要求存在一个M[T]类型的隐式值:case class Person(val name:String)原创 2015-08-08 17:02:01 · 18255 阅读 · 6 评论 -
Scala入门到精通——第十九节 隐式转换与隐式参数(二)
作者:摇摆少年梦 配套视频地址:http://www.xuetuwuyou.com/course/12本节主要内容隐式参数中的隐式转换函数中隐式参数使用概要隐式转换问题梳理1. 隐式参数中的隐式转换前一讲中,我们提到函数中如果存在隐式参数,在使用该函数的时候如果不给定对应的参数,则编译器会自动帮我们搜索相应的隐式值,并将该隐式值作为函数的参数,这里面其实没有涉及到隐式转换,本节将演示如何利原创 2015-08-07 11:04:47 · 14405 阅读 · 5 评论 -
Scala入门到精通——第十八节 隐式转换与隐式参数(一)
本节主要内容隐式转换简介隐式转换函数隐式转换规则隐式参数1. 隐式转换简介在scala语言当中,隐式转换是一项强大的程序语言功能,它不仅能够简化程序设计,也能够使程序具有很强的灵活性。要想更进一步地掌握scala语言,了解其隐式转换的作用与原理是很有必要的,否则很难得以应手地处理日常开发中的问题。在scala语言中,隐式转换是无处不在的,只不过scala语言为我们隐藏了相应的细节,例如sc原创 2015-08-05 21:09:03 · 15730 阅读 · 5 评论 -
Scala入门到精通——第十七节 类型参数(一)
本节主要内容类型变量界定(Type Variable Bound)视图界定(View Bound)上界(Upper Bound)与下界(Lower Bound)1. 类型变量界定(Type Variable Bound)类型变量界定是指在泛型的基础上,对泛型的范围进行进一步的界定,从而缩下泛型的具体范围,例如://下面的类编译通不过//因为泛型T在编译的时候不能确定其具体类型//即并不原创 2015-08-03 22:27:08 · 15163 阅读 · 7 评论 -
Scala入门到精通——第十六节 泛型与注解
本节主要内容泛型(Generic Type)简介注解(Annotation)简介注解常用场景1. 泛型(Generic Type)简介泛型用于指定方法或类可以接受任意类型参数,参数在实际使用时才被确定,泛型可以有效地增强程序的适用性,使用泛型可以使得类或方法具有更强的通用性。泛型的典型应用场景是集合及集中中的方法参数,可以说同java一样,scala中泛型无处不在,具体可以查看scala的a原创 2015-08-04 20:23:21 · 16562 阅读 · 3 评论 -
Scala入门到精通——第十五节 Case Class与模式匹配(二)
本节主要内容模式匹配的类型for控制结构中的模式匹配option类型模式匹配1. 模式的类型1 常量模式object ConstantPattern{ def main(args: Array[String]): Unit = { //注意,下面定义的是一个函数 //函数的返回值利用的是模式匹配后的结果作为其返回值 //还需要注意的是函数定义在main方法中原创 2015-08-01 21:43:30 · 14907 阅读 · 4 评论 -
Scala入门到精通——第十四节 Case Class与模式匹配(一)
本节主要内容模式匹配入门Case Class简介Case Class应用实战1. 模式匹配入门在java语言中存在着switch语句,例如://下面的代码演示了java中switch语句的使用public class SwitchDemo { public static void main(String[] args) { for(int原创 2015-08-01 16:11:47 · 36138 阅读 · 4 评论 -
Scala入门到精通——第十三节 高阶函数
本节主要内容高阶函数简介Scala中的常用高阶函数SAM转换函数柯里化偏函数1. 高阶函数简介高阶函数主要有两种:一种是将一个函数当做另外一个函数的参数(即函数参数);另外一种是返回值是函数的函数。这两种在本教程的第五节 函数与闭包中已经有所涉及,这里简单地回顾一下: (1)函数参数//函数参数,即传入另一个函数的参数是函数//((Int)=>String)=>原创 2015-07-28 09:25:48 · 21526 阅读 · 6 评论 -
Scala入门到精通——第十二节 I/O与正则表达式
本节主要内容Scala I/O操作简介Scala 写文件Scala 读文件Scala 网络I/O正则表达式简介Scala正则表达式实战1. Scala I/O操作简介I/O操作是一门编程语言中的重要内容,在Scala中,它更多的是调用java中的I/O类或者通过对java中的I/O类进行相应的封装来实现I/O操作。在上一节内容中我们已经用到了I/O操作:trait FileLogger原创 2015-07-26 16:28:52 · 18173 阅读 · 5 评论 -
Scala入门到精通——第十一节 Trait进阶
本节主要内容trait构造顺序trait与类的比较提前定义与懒加载trait扩展类self type1 trait构造顺序在前一讲当中我们提到,对于不存在具体实现及字段的trait,它最终生成的字节码文件反编译后是等同于java中的接口,而对于存在具体实现及字段的trait,其字节码文件反编译后得到的java中的抽象类,它有着scala语言自己的实现方式。因此,对于trait它也有自己的原创 2015-07-26 11:04:10 · 16095 阅读 · 3 评论 -
Scala入门到精通——第十节 Scala类层次结构、Traits初步
本节主要内容Scala类层次结构总览Scala中原生类型的实现方式解析Nothing、Null类型解析Traits简介Traits几种不同使用方式1 Scala类层次结构Scala中的类层次结构图如下: 来源:Programming in Scala从上面的类层次结构图中可以看到,处于继承层次最顶层的是Any类,它是scala继承的根类,scala中所有的类都是它的子类 Any类中定原创 2015-07-25 22:39:22 · 16532 阅读 · 3 评论 -
Scala入门到精通——第九节 继承与组合
主要内容类的继承构造函数执行顺序方法重写匿名类多态与动态绑定组合与继承的使用1 类的继承下类的代码演示了scala类的继承//Person类class Person(name:String,age:Int){ println("Constructing Person")}//Student继承Person类class Student(name:S原创 2015-07-25 19:55:48 · 14828 阅读 · 3 评论 -
Scala入门到精通——第八节 包和引入
本节主要内容包的作用与定义包的作用域与引入(import)的使用方法 包的访问控制包对象隐式引入包的作用与定义同java中的包、C++中的命名空间一样,Scala中的包主要用于大型工程代码的组织同时也解决命名冲突的问题。Scala中的包与java有着诸多的相似之处,但Scala语言中的包更加灵活。//将代码组织到cn.scala.xtwy包中package cn.sc原创 2015-07-23 20:47:59 · 14377 阅读 · 1 评论 -
Scala入门到精通——第七节:类和对象(二)
本节主要内容单例对象伴生对象与伴生类apply方法应用程序对象抽象类单例对象在某些应用场景下,我们可能不需要创建对象,而是想直接调用方法,但是Scala语言并不技术静态成员,Scala通过单例对象来解决该问题。单例对象的创建方式如下:object Student { private var studentNo:Int=0; def uniqueStudentNo()={原创 2015-07-22 23:38:33 · 14371 阅读 · 1 评论 -
Scala入门到精通——第六节:类和对象(一)
本节主要内容1 类定义、创建对象 2 主构造器 3 辅助构造器类定义、创建对象1 类的定义//采用关键字class定义class Person { //类成员必须初始化,否则会报错 //这里定义的是一个公有成员 var name:String=null}Person类在编译后会生成Person.class文件 利用javap -prviate Person命令查看字节码文件原创 2015-07-22 21:39:09 · 17310 阅读 · 8 评论 -
Scala入门到精通——第五节 函数与闭包
本节主要内容(一)函数字面量(值函数)(二)匿名函数(三)函数的简化(四)函数参数(四)闭包函数字面量(值函数)函数字面量(function literal),也称值函数(function values),指的是函数可以赋值给变量。一般函数具有如下形式: 而函数字面量具有如下形式:/* 函数字面量 function literal =>左侧的表示输入,右侧表示转换操作*/scala转载 2015-07-21 21:19:52 · 19028 阅读 · 5 评论 -
Scala入门到精通——第四节 Set、Map、Tuple、队列操作实战
本节主要内容mutable、immutable集合Set操作实战Map操作实战Tuple操作实战mutable、immutable集合以下内容来源于scala官方文档: http://www.scala-lang.org/docu/files/collections-api/collections.htmlScala collections systematically distingu原创 2015-07-21 13:08:27 · 43191 阅读 · 12 评论 -
Scala入门到精通——第三节 Array、List
本节主要内容数组操作实战列表List操作实战数组操作实战1 定长数组//定义一个长度为10的数值数组scala> val numberArray=new Array[Int](10)numberArray: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)//定义一个长度为10的String类型数组scala> val strArray=原创 2015-07-20 09:05:14 · 48602 阅读 · 5 评论 -
Scala入门到精通—— 第二节Scala基本类型及操作、程序控制结构
本节主要内容Scala基本类型基本类型操作Scala程序控制结构Scala基本类型Scala中的基本数据类型如下图: (来源:Programming in Scala)从上表中可以看出,Scala的基本数据类型与Java中的基本数据类型是一一对应的,不同的是Scala的基本数据类型头字母必须大写,本节以Int、Long、String、Char、Double及Float类型为例介绍Sca原创 2015-07-19 11:18:26 · 30406 阅读 · 6 评论