《Scala语言基础与开发实战》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:王家林,管祥青等编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2016
  • ISBN:9787111541691
  • 页数:407 页
图书介绍:本书详细讲解了Scala这种函数式面向对象语言的基本概念,特性,编程开发方法,从大数据的角度介绍了对Scala语言的经典框架Akka和Kafka的使用,并深度结合大数据开发框架Spark源码来说明Scala语言的使用。 本书内容由浅入深,适合各类大数据从业者、Scala语言开发者、Spark技术爱好者阅读,相信通过学习本书,读者能够熟悉和掌握Scala这一当前日益受重视的编程语言,并将其投入到生产实践中去。

基础篇 3

第1章 Scala零基础入门 3

1.1 Scala概述 3

1.2 Windows及Linux下Scale运行环境安装配置 4

1.2.1 软件工具准备 4

1.2.2 Windows环境下的Scala安装 6

1.2.3 Linux环境下的Scala安装 10

1.2.4 Linux环境下的Hadoop安装与配置 13

1.2.5 Linux环境下的Spark安装与配置 23

1.3 Scala开发环境搭建和HelloWorld实例 28

1.3.1 Scala集成开发工具的安装 28

1.3.2 HelloWorld编程实例 30

1.3.3 WorkSheet的使用 36

1.4 变量的使用 37

1.4.1 Scala解释器中的变量示例 37

1.4.2 val变量的定义 38

1.4.3 var变量的定义 39

1.4.4 var变量与val变量的使用比较 39

1.5 函数的定义、流程控制、异常处理 41

1.5.1 函数的定义 41

1.5.2 流程控制(if、while、for) 43

1.5.3 异常处理 52

1.6 Tuple、Array、Map与文件操作 54

1.6.1 Tuple元组 54

1.6.2 Array数组 56

1.6.3 文件操作 59

1.6.4 Map映射 62

1.7 Scala中的apply方法 63

1.7.1 Object中的apply 63

1.7.2 Class中的apply 64

1.7.3 Array数组的apply实现 65

1.8 小结 66

第2章 Scala面向对象编程开发 67

2.1 类的定义及属性 67

2.1.1 类定义 67

2.1.2 带有getter和setter的属性 68

2.2 主构造器、私有构造器、构造器重载 70

2.2.1 构造器重载之辅助构造器 70

2.2.2 主构造器 71

2.2.3 不同访问权限的构造器 72

2.3 内部类和外部类 73

2.4 单例对象、伴生对象 77

2.5 继承:超类的构造、重写字段、重写方法 78

2.5.1 超类的构造 79

2.5.2 重写字段 80

2.5.3 重写方法 80

2.6 抽象类、抽象字段、抽象方法 82

2.6.1 抽象类 82

2.6.2 抽象字段 82

2.6.3 抽象方法 82

2.7 trait特质 83

2.7.1 作为接口使用的trait 84

2.7.2 在对象中混入trait 85

2.7.3 trait深入解析 86

2.8 多重继承、多重继承构造器执行顺序及AOP实现 88

2.8.1 多重继承 88

2.8.2 多重继承构造器执行顺序 89

2.8.3 AOP实现 89

2.9 包的定义、包对象、包的引用、包的隐式引用 91

2.9.1 包的定义 91

2.9.2 包对象 91

2.9.3 包的引用 92

2.9.4 包的隐式引用 92

2.10 包、类、对象、成员、伴生类、伴生对象访问权限 92

2.10.1 包、类、对象、成员访问权限 92

2.10.2 伴生类、伴生对象访问权限 93

2.11 小结 94

第3章 Scala高阶函数 95

3.1 匿名函数 95

3.2 偏应用函数 96

3.3 闭包 98

3.4 SAM转换 100

3.5 Curring函数 102

3.6 高阶函数 103

3.7 高阶函数在Spark中的应用 107

3.8 小结 109

中级篇 113

第4章 Scala模式匹配 113

4.1 模式匹配简介 113

4.2 模式匹配类型 115

4.2.1 常量模式 116

4.2.2 变量模式 116

4.2.3 构造器模式 117

4.2.4 序列(Sequence)模式 118

4.2.5 元组(Tuple)模式 119

4.2.6 类型模式 120

4.2.7 变量绑定模式 121

4.3 模式匹配与Case Class 122

4.3.1 构造器模式匹配原理 122

4.3.2 序列模式匹配原理 125

4.3.3 Sealed Class在模式匹配中的应用 126

4.4 模式匹配应用实例 127

4.4.1 for循环控制结构中的模式匹配 127

4.4.2 正则表达式中的模式匹配 128

4.4.3 异常处理中的模式匹配 132

4.4.4 Spark源码中的模式匹配使用 133

4.5 小结 136

第5章 Scala集合 137

5.1 可变集合与不可变集合(Collection) 137

5.1.1 集合的概述 137

5.1.2 集合的相关操作 141

5.1.3 集合的操作示例 145

5.2 序列(Seq) 151

5.2.1 序列的概述 151

5.2.2 序列的相关操作 152

5.2.3 序列的操作示例 154

5.3 列表(List) 158

5.3.1 列表的概述 158

5.3.2 列表的相关操作 158

5.3.3 列表的操作示例 159

5.4 集(Set) 161

5.4.1 集的概述 161

5.4.2 集的相关操作 162

5.4.3 集的操作示例 164

5.5 映射(Map) 165

5.5.1 映射的概述 165

5.5.2 映射的相关操作 166

5.5.3 映射的操作示例 168

5.6 迭代器(Iterator) 172

5.6.1 迭代器的概述 172

5.6.2 迭代器的相关操作 173

5.6.3 迭代器的操作示例 176

5.7 集合的架构 185

5.8 小结 189

高级篇 193

第6章 Scala类型参数 193

6.1 泛型 193

6.1.1 泛型的概述 193

6.1.2 泛型的操作示例 194

6.2 界定 195

6.2.1 上下界界定 196

6.2.2 视图界定 196

6.2.3 上下文界定 196

6.2.4 多重界定 196

6.2.5 界定的操作示例 197

6.3 类型约束 204

6.3.1 类型约束的概述 204

6.3.2 类型约束的操作示例 205

6.4 类型系统 205

6.4.1 类型系统的概述 205

6.4.2 类型系统的操作示例 206

6.5 型变Variance 207

6.5.1 协变 208

6.5.2 逆变 208

6.5.3 协变与逆变的操作示例 208

6.6 结合Spark源码说明Scala类型参数的使用 210

6.7 小结 212

第7章 Scala高级类型 213

7.1 单例类型 213

7.1.1 单例类型概述 213

7.1.2 单例类型示例 214

7.2 类型别名 217

7.2.1 类型别名概述 217

7.2.2 类型别名示例 217

7.3 自身类型 218

7.3.1 自身类型概述 218

7.3.2 自身类型示例 219

7.4 中置类型 219

7.4.1 中置类型概述 219

7.4.2 中置类型示例 219

7.5 类型投影 221

7.5.1 类型投影概述 221

7.5.2 类型投影实例 221

7.6 结构类型 223

7.6.1 结构类型概述 223

7.6.2 结构类型示例 224

7.7 复合类型 226

7.7.1 复合类型概述 226

7.7.2 复合类型示例 226

7.8 存在类型 227

7.8.1 存在类型概述 227

7.8.2 存在类型示例 227

7.9 函数类型 229

7.9.1 函数类型概述 229

7.9.2 函数类型示例 229

7.10 抽象类型 230

7.10.1 抽象类型概述 230

7.10.2 抽象类型实例 230

7.11 Spark源码中的高级类型使用 231

7.12 小结 233

第8章 Scala隐式转换 234

8.1 隐式转换函数 234

8.1.1 隐式转换函数的定义 234

8.1.2 隐式转换函数的功能 235

8.2 隐式类与隐式对象 236

8.2.1 隐式类 236

8.2.2 隐式参数与隐式值 237

8.3 类型证明中的隐式转换 239

8.3.1 类型证明的定义 239

8.3.2 类型证明使用实例 239

8.4 上下文界定、视图界定中的隐式转换 241

8.4.1 Ordering与Ordered特质 241

8.4.2 视图界定中的隐式转换 245

8.4.3 上下文界定中的隐式转换 246

8.5 隐式转换规则 248

8.5.1 发生隐式转换的条件 248

8.5.2 不会发生隐式转换的条件 249

8.6 Spark源码中的隐式转换使用 252

8.6.1 隐式转换函数 252

8.6.2 隐式类 253

8.6.3 隐式参数 253

8.7 小结 253

第9章 Scala并发编程 255

9.1 Scala的Actor模型简介 256

9.2 Scala Actor的构建方式 256

9.2.1 继承Actor类 256

9.2.2 Actor工具方法 257

9.3 Actor的生命周期 258

9.3.1 start方法的等幂性 258

9.3.2 Actor的不同状态 259

9.4 Actor之间的通信 260

9.4.1 Actor之间发送消息 260

9.4.2 Actor接收消息 260

9.5 使用react重用线程提升性能 262

9.6 Channel通道 263

9.6.1 OutputChannel 264

9.6.2 InputChannel 264

9.6.3 创建和共享channel 264

9.7 同步和Future 266

9.8 Scala并发编程实例 266

9.8.1 Scala Actor并发编程 267

9.8.2 ExecutorService并发编程 268

9.9 小结 269

分布式框架篇 273

第10章 Akka的设计理念 273

10.1 Akka框架模型 274

10.2 创建Actor 275

10.2.1 通过实现akka.actor.Actor来创建Actor类 275

10.2.2 使用非缺省构造方法创建Actor 277

10.2.3 创建匿名Actor 278

10.3 Actor API 280

10.3.1 Actor trait基本接口 280

10.3.2 使用Death Watch进行生命周期监控 281

10.3.3 Hook函数的调用 282

10.3.4 查找Actor 283

10.3.5 消息的不可变性 283

10.3.6 发送消息 283

10.3.7 转发消息 287

10.3.8 接收消息 287

10.3.9 回应消息 287

10.3.10 终止Actor 288

10.3.11 Become/Unbecome 289

10.3.12 杀死Actor 290

10.4 不同类型的Actor 290

10.4.1 方法派发语义 294

10.4.2 终止有类型Actor 295

10.5 小结 295

第11章 Akka核心组件及核心特性剖析 296

11.1 Dispatchers和Routers 296

11.1.1 为Actor指定派发器 297

11.1.2 派发器的类型 298

11.1.3 邮箱 300

11.1.4 Routers 300

11.1.5 路由的使用 301

11.1.6 远程部署router 302

11.2 Supervision和Monitoring 302

11.2.1 Supervision 302

11.2.2 Monitoring 305

11.3 Akka中的事务 306

11.3.1 STM 306

11.3.2 使用STM事务 308

11.3.3 读取Agent事务中的数据 309

11.3.4 更新Agent事务中的数据 311

11.3.5 Actor中的事务 313

11.3.6 创建Transactor 316

11.4 小结 318

第12章 Akka程序设计实践 319

12.1 Akka的配置、日志及部署 319

12.1.1 Akka中配置文件的读写 319

12.1.2 Akka中日志配置 323

12.1.3 Akka部署及应用场景 324

12.2 使用Akka框架实现单词统计 324

12.3 分布式Akka环境搭建 329

12.4 使用Akka微内核部署应用 333

12.5 Akka框架在Spark中的运用 334

12.6 小结 338

第13章 Kafka设计理念与基本架构 339

13.1 Kafka产生的背景 339

13.2 消息队列系统 340

13.2.1 概述 340

13.2.2 常用的消息队列系统对比 341

13.2.3 Kafka特点及特性 342

13.2.4 Kafka系统应用场景 342

13.3 Kafka设计理念 343

13.3.1 专业术语解析 343

13.3.2 消息存储与缓存设计 344

13.3.3 消费者与生产者模型 344

13.3.4 Push与Pull机制 345

13.3.5 镜像机制 346

13.4 Kafka整体架构 346

13.4.1 Kafka基本组成结构 346

13.4.2 Kafka工作流程 347

13.5 Kafka性能分析及优化 348

13.6 Kafka未来研究方向 350

13.7 小结 352

第14章 Kafka核心组件及核心特性剖析 353

14.1 Kafka核心组件剖析 353

14.1.1 Producers 353

14.1.2 Consumers 354

14.1.3 Low Level Consumer 355

14.1.4 High Level Consumer 356

14.2 Kafka核心特性剖析 357

14.2.1 Topic、Partitions 357

14.2.2 Replication和Leader Election 359

14.2.3 Consumer Rebalance 361

14.2.4 消息传送机制 363

14.2.5 Kafka的可靠性 364

14.2.6 Kafka的高效性 364

14.3 Kafka即将发布版本核心组件及特性剖析 365

14.3.1 重新设计的Consumer 365

14.3.2 Coordinator Rebalance 366

14.4 小结 370

第15章 Kafka应用实践 371

15.1 Kafka开发环境搭建及运行环境部署 371

15.1.1 Kafka开发环境配置 371

15.1.2 Kafka运行环境安装与部署 374

15.2 基于Kafka客户端开发 381

15.2.1 消息生产者(Producer)设计 382

15.2.2 消息消费者(Consumer)设计 384

15.2.3 Kafka消费者与生产者配置 390

15.3 Spark Streaming整合Kafka 392

15.3.1 基本架构设计流程 392

15.3.2 消息消费者(Consumer)设计——基于Receiver方法 393

15.3.3 消息消费者(Consumer)设计——基于No Receiver方法 398

15.3.4 消息生产者(Producer)设计 401

15.4 小结 403

附录 Kafka集群server. properties配置文档 404

参考文献 407