产品特色
编辑推荐
阐述scala核心语法、编程方法与深层原理,内容实用,通俗易学
涵盖Scala实际开发中的重要知识点,实例丰富,代码注解详尽
突出可操作性,力图使读者通过实际操作掌握用Scala进行应用开发
内容简介
本书以Scala语言的核心语法为主线,通过大量实例代码循序渐进地介绍了Scala语言的语法特性。第1章介绍Scala语言及开发环境的安装、IntellijIDEA的使用、Scala语言的交互式命令行。第2~3章重点介绍Scala语言的基础语法结构。第4章,重点介绍Scala语言重要的数据结构collection(集合)。第5章,重点介绍Scala语言中面向函数编程的语法特性。第6~8章,重点介绍Scala语言面向对象编程的语法特性。第9章,介绍Scala语言中的模式匹配及原理。第10章,详细介绍Scala语言的类型系统。第11章,对Scala语言中的隐式转换及原理进行详细介绍。第12章,重点介绍Scala中的并发编程。第13章,介绍Java语言与Scala语言间的互操作。
本书还提供了所有实例的源代码与素材文件,供读者上机练习使用,读者可从网上下载本书资源文件。
本书适用于Scala语言初学者、爱好者,大数据开发人员,软件培训机构以及计算机专业的学生使用。
作者简介
周志湖,电子科技大学计算机软件与理论专业硕士,研究方向为机器学习与模式识别,目前供职于绿城房地产集团信息管理部,担任平台架构师、数据开发主管。对传统数据仓库、基于Hadoop和Spark的大数据仓库架构有深入的研究。
牛亚真,中国科学院大学计算机信息处理与检索方向硕士,Hadoop大数据工程师,目前主要从事分布式环境下的数据分析、数据挖掘相关工作。
内页插图
目录
第1章 Scala入门 1
1.1 Scala简介 2
1.2 Scala开发环境搭建 2
1.2.1 软件准备 2
1.2.2 JDK的安装与配置 3
1.2.3 Scala SDK的安装与配置 5
1.2.4 Intellij IDEA的安装与配置 6
1.3 Scala Hello World 8
1.3.1 创建Scala Project 8
1.3.2 配置项目代码目录结构 9
1.3.3 创建应用程序对象 11
1.3.4 运行代码 12
1.4 Intellij IDEA常用快捷键 13
1.4.1 代码编辑类常用快捷键 13
1.4.2 导航快捷键 14
1.4.3 编译、运行及调试 15
1.4.4 代码格式化 15
1.5 交互式命令行使用 15
1.5.1 Scala内置交互式命令行 15
1.5.2 Scala Console交互式命令行 17
1.5.3 Scala Worksheet的使用 19
小 结 20
第2章 变量及基本数据类型 21
2.1 变 量 22
2.1.1 变量定义 22
2.1.2 lazy变量 23
2.2 基本数据类型 24
2.2.1 Int类型 24
2.2.2 Float类型 25
2.2.3 Double类型 25
2.2.4 Char类型 25
2.2.5 String类型 26
2.2.6 Boolean类型 27
2.3 基本类型操作 27
2.3.1 算术运算操作 27
2.3.2 关系运算操作 28
2.3.3 逻辑运算操作 28
2.3.4 位运算操作 29
2.3.5 对象比较运算操作 30
2.3.6 字符串运算操作 31
2.4 运算符的优先级 32
2.5 元组类型 33
2.6 符号类型 34
小 结 35
第3章 程序控制结构 36
3.1 if语句 37
3.1.1 if语句 37
3.1.2 if… else…语句 37
3.1.3 if...else if...else…语句 37
3.1.4 if的嵌套使用 38
3.1.5 if表达式 39
3.2 while 循环语句 39
3.2.1 while语句的使用 39
3.2.2 do while语句的使用 40
3.3 for循环语句 41
3.3.1 基础for循环 41
3.3.2 有过滤条件的for循环 44
3.3.3 多重for循环 44
3.3.4 作为表达式的for循环 45
小 结 45
第4章 集 合 46
4.1 集合简介 47
4.2 数 组 49
4.2.1 定长数组 49
4.2.2 变长数组 ArrayBuffer 50
4.2.3 数组的遍历 52
4.2.4 遍历生成数组 53
4.2.5 常用函数 53
4.3.6 多维数组 54
4.3 列 表(List) 55
4.3.1 列表的创建 55
4.3.2 List常用函数 56
4.3.3 List伴生对象方法 58
4.4 集(Set) 59
4.5 映 射(Map) 61
4.6 队 列(Queue) 63
4.7 栈(Stack) 64
小 结 66
第5章 函 数 67
5.1 函 数 68
5.2 值 函 数 69
5.2.1 值函数的定义 69
5.2.2 值函数的简化 71
5.3 高阶函数 73
5.3.1 高阶函数的定义 73
5.3.2 高阶函数的使用 74
5.4 闭 包 78
5.5 函数柯里化 80
5.6 部分应用函数 81
5.7 偏 函 数 83
小 结 85
第6章 Scala面向对象编程(上) 86
6.1 类与对象 87
6.1.1 类的定义 87
6.1.2 创建对象 88
6.1.3 类成员的访问 88
6.1.4 单例对象 90
6.1.5 应用程序对象 91
6.1.6 伴生对象与伴生类 93
6.2 主构造函数 96
6.2.1 主构造函数的定义 96
6.2.2 默认参数的主构造函数 98
6.2.3 私有主构造函数 99
6.3 辅助构造函数 100
6.3.1 辅助构造函数的定义 100
6.3.2 辅助构造函数中的默认参数 102
6.4 继承与多态 104
6.4.1 类的继承 104
6.4.2 构造函数执行顺序 107
6.4.3 方法重写 108
6.4.4 多态 109
6.5 成员访问控制 111
6.5.1 默认访问控制 112
6.5.2 protected访问控制 113
6.5.3 private访问控制 114
6.5.4 private[this]访问控制 116
6.5.5 主构造函数中的成员访问控制 121
6.6 抽象类 125
6.6.1 抽象类的定义 125
6.6.2 抽象类的使用 126
6.7 内部类与内部对象 128
6.8 匿名类 130
小 结 131
第7章 Scala面向对象编程(下) 132
7.1 trait简介 133
7.2 trait 的使用 135
7.2.1 trait的几种不同用法 135
7.2.2 混入trait的类对象构造 138
7.2.3 提前定义与懒加载 140
7.3 trait与类 144
7.3.1 trait与类的相似点 144
7.3.1 trait与类的不同点 146
7.4 多重继承问题 147
7.5 自身类型 148
小 结 151
第8章 包(package) 152
8.1 包的定义 153
8.2 包的使用和作用域 155
8.2.1 包的使用 155
8.2.2 包作用域 156
8.3 包 对 象 159
8.4 import高级特性 160
8.4.1 隐式引入 160
8.4.2 引入重命名 160
8.4.3 类隐藏 161
小 结 162
第9章 模式匹配 163
9.1 模式匹配简介 164
9.2 模式匹配的7大类型 167
9.2.1 常量模式 167
9.2.2 变量模式 167
9.2.3 构造函数模式 169
9.2.4 序列模式 170
9.2.5 元组模式 171
9.2.6 类型模式 172
9.2.7 变量绑定模式 173
9.3 模式匹配原理 174
9.3.1 构造函数模式匹配原理 174
9.3.2 序列模式匹配原理 176
9.4 正则表达式与模式匹配 177
9.4.1 Scala正则表达式 177
9.4.2 正则表达式在模式匹配中的应用 180
9.5 for循环中的模式匹配 183
9.6 模式匹配与样例类、样例对象 185
9.6.1 模式匹配与样例类 185
9.6.2 模式匹配与样例对象 187
小 结 190
第10章 隐式转换 191
10.1 隐式转换简介 192
10.2 隐式转换函数 193
10.2.1 隐式转换函数的定义 193
10.2.2 隐式转换函数名称 194
10.3 隐式类与隐式对象 195
10.3.1 隐式类 195
10.3.2 隐式对象 196
10.4 隐式参数与隐式值 197
10.4.1 隐式参数 197
10.4.2 隐式值 199
10.4.3 隐式参数使用常见问题 201
10.5 隐式转换规则与问题 204
10.5.1 隐式转换的若干规则 204
10.5.2 隐式转换需注意的问题 208
小 结 210
第11章 类型参数 211
11.1 类与类型 212
11.2 泛 型 214
11.2.1 泛型类 215
11.2.2 泛型接口与泛型方法 216
11.2.3 类型通配符 217
11.3 类型变量界定 220
11.4 视图界定 222
11.5 上下文界定 223
11.6 多重界定 226
11.7 协变与逆变 227
11.8 高级类型 230
11.8.1 单例类型 231
11.8.2 类型投影 235
11.8.3 类型别名 237
11.8.4 抽象类型 238
11.8.5 复合类型 240
11.8.6 函数类型 241
小 结 243
第12章 Scala并发编程基础 244
12.1 Scala并发编程简介 245
12.1.1 重要概念 245
12.1.2 Actor模型 247
12.1.3 Akka并发编程框架 247
12.2 Actor 249
12.2.1 定义Actor 249
12.2.2 创建Actor 250
12.2.3 消息处理 255
12.2.4 Actor的其他常用方法 260
12.2.5 停止Actor 261
12.3 Typed Actor 265
12.3.1 Typed Actor定义 265
12.3.2 创建Typed Actor 266
12.3.3 消息发送 267
12.3.4 停止运行Typed Actor 269
12.4 Dispatcher 271
12.4.1 常用Dispatcher 271
12.4.2 ExecutionService 274
12.5 Router 277
12.6 容 错 279
12.6.1 Actor的4种容错机制 279
12.6.2 Supervison 279
小 结 285
第13章 Scala与Java的互操作 286
13.1 Java与Scala集合互操作 287
13.1.1 Java调用Scala集合 287
13.1.2 Scala调用Java集合 288
13.1.3 Scala与Java集合间相互转换分析 289
13.2 Scala与Java泛型互操作 290
13.2.1 Scala中使用Java泛型 291
13.2.2 Java中使用Scala泛型 291
13.3 Scala trait在Java中的使用 293
13.4 Scala与Java异常处理互操作 298
小 结 299
参考文献 300
前言/序言
为什么要写这本书
Apache Spark、Apache Kafka等基于Scala语言实现的框架在大数据生态圈内占有举足轻重的地位,它们一定程度上引领着大数据最前沿的技术方向,另外Akka、Apache Gearpump等基于Scala语言实现的框架在大数据生态圈内也备受关注,工业实践已经证明了Scala语言的强大,这使Scala语言近一两年名声大噪,进而引起众多编程语言爱好者及各大公司的亲睐,国内外也因此掀起了一场学习Scala语言的热潮。
Scala语言基于JVM平台,能够与Java语言进行良好地互操作,它最大的特点是可以将面向对象编程语言与函数式编程语言的特点结合起来。Scala语言的简洁性和表达能力,使得Scala语言与Java语言相比,同样的功能用Scala实现代码量要少很多。Scala语言的众多优点,让许多业内名家对其推崇备至,这其中便有Java之父James Gosling和Groovy语言创始人James Strachan。
“If I were to pick a language to use today other than Java, it would be Scala.”[ ](如果现在让我选择使用除Java之外的一门语言的话,那一定是Scala)——Java之父James Gosling
“Though my tip though for the long term replacement of javac is Scala. I'm very impressed with it! I can honestly say if someone had shown me the Programming in Scala book by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I'd probably have never created Groovy.”(我认为将来可能替代javac的就是Scala ,它极大地震撼了我,老实说如果有人在2003年把Martin Odersky、Lex Spoon和Bill Venners写的那本《Programming in Scala》书拿给我看了的话,那我可能就不会再去发明Groovy语言了)[ ]——Groovy(另一种基于JVM平台的语言)创始人James Strachan。
目前国内Scala方面教材的短缺一定程度上限制了Scala语言在国内的普及,本书试图弥补这一空白。
本书内容
本书是笔者在Scala学习、工作实践及培训过程中的心得体会和系统总结。内容涵盖Scala语言基础知识,包括变量的定义、程序控制结构、Scala集合操作;Scala语言中级知识,包括Scala函数式编程、Scala面向对象编程、Scala模式匹配;Scala语言高级编程知识,包括Scala类型参数、隐式转换、Scala并发编程、Scala与Java互操作。书中利用大量的具体示例和实际案例来说明Scala语言的应用,既能够掌握核心语法,又能够理解其背后的深层次原理。
读者对象
(1)Spark、Kafka等框架二次开发人员
Spark、Kafka等大数据处理框架目前在稳定性、扩展性方面虽然已经取得了长足的进步,但在实际使用时难免遇到问题,此时需要深入到内核源代码中分析问题,在理解其架构原理与实现细节的基础上通过修改内核源代码来解决问题,这需要开发人员有很强的Scala语言功底。
(2)Spark、Kafka等框架应用开发人员
在学习Spark、Kafka等Scala语言实现的大数据技术框架时,这些框架大多都提供了Java、Scala、Python等上层应用API编程接口,但仅仅学会使用其上层API是不够的,因为上层API抽象程度较高,各框架的底层实现细节、设计原理等对开发人员来说是一个黑匣子,在遇到性能等问题时,开发人员如果对底层实现细节不熟悉的话可能很难进行程序的性能优化。
(3)Spark、Kafka等框架运维工程师
目前Spark、Kafka等大数据处理框架基本上已经成为各大公司大数据解决方案的标配,但基于开源解决方案常常会面临一些技术风险,框架本身的问题及实际应用场景的不同可能会遇到很多故障,因此对于这些使用Scala语言实现的框架而言,运维工程师也需要知晓各框架的底层细节,这样才能够迅速定位问题并找到合适的解决办法。
(4)从事大数据技术的Java开发人员
Scala语言完全兼容Java语言,Scala语言中大量使用了Java语言现有的库,因此如果你是一个Java大数据开发人员,在此建议学习Scala语言,相信它会给你带来全新的感受,甚至有抛弃Java的念头。
(5)大数据技术开源爱好者
Spark、Kafka等是大数据技术框架中的明星,Scala语言已经通过了工业界的检验,学习Scala语言为学习这些框架的设计原理打下坚实的基础,为以后参与开源、学习工业界最先进的大数据技术架构的优秀思想打下了坚实的基础。
如何阅读本书
本书涵盖三大主要部分:
(1)Scala语言基础篇,主要介绍Scala语言入门基础知识、变量的定义、程序控制结构、Scala集合。
(2)Scala语言中级篇,主要介绍Scala函数式编程、 Scala面向对象编程、Scala模式匹配。
(3)Scala语言高级篇,主要介绍Scala类型参数、隐式转换、Scala并发编程、Scala与Java互操作。
如果你是一名初学者,请按照书的顺序从第一章基础理论部分开始学习,学习时先认真看书中的代码示例和说明,然后照着代码亲自动手实践,这样可以达到事半功倍的学习效果;如果你是一名Scala资深用户,你可以自由阅读各章内容,相信书中部分内容肯定能够给你带来一些新的启发。
资源下载
本书代码可以从pan.baidu.com/s/1nvyDC1r(注意数字和字母大小写)下载。如果下载有问题,请电子邮件联系booksaga@163.com,邮件标题为“Scala开发快速入门-代码
Scala开发快速入门 epub pdf mobi txt 电子书 下载 2024
Scala开发快速入门 下载 epub mobi pdf txt 电子书 2024