内容简介
基础篇
第1章 Scala零基础入门
1.1 Scala概述
1.2 Windows及Linux下Scale运行环境安装配置
1.2.1 软件工具准备
1.2.2 Windows环境下的Scala安装
1.2.3 Linux环境下的Scala安装
1.2.4 Linux环境下的Hadoop安装与配置
1.2.5 Linux环境下的Spark安装与配置
1.3 Scala开发环境搭建和HelloWorld实例
1.3.1 Scala集成开发工具的安装
1.3.2 HelloWorld编程实例
1.3.3 WorkSheet的使用
1.4 变量的使用
1.4.1 Scala解释器中的变量示例
1.4.2 val变量的定义
1.4.3 var变量的定义
1.4.4 var变量与val变量的使用比较
1.5 函数的定义、流程控制、异常处理
1.5.1 函数的定义
1.5.2 流程控制(if、while、for)
1.5.3 异常处理
1.6 Tuple、Array、Map与文件操作
1.6.1 Tuple元组
1.6.2 Array数组
1.6.3 文件操作
1.6.4 Map映射
1.7 Scala中的apply方法
1.7.1 Object中的apply
1.7.2 Class中的apply
1.7.3 Array数组的apply实现
1.8 小结
第2章 Scala面向对象编程开发
2.1 类的定义及属性
2.1.1 类定义
2.1.2 带有getter和setter的属性
2.2 主构造器、私有构造器、构造器重载
2.2.1 构造器重载之辅助构造器
2.2.2 主构造器
2.2.3 不同访问权限的构造器
2.3 内部类和外部类
2.4 单例对象、伴生对象
2.5 继承:超类的构造、重写字段、重写方法
2.5.1 超类的构造
2.5.2 重写字段
2.5.3 重写方法
2.6 抽象类、抽象字段、抽象方法
2.6.1 抽象类
2.6.2 抽象字段
2.6.3 抽象方法
2.7 trait特质
2.7.1 作为接口使用的trait
2.7.2 在对象中混入trait
2.7.3 trait深入解析
2.8 多重继承、多重继承构造器执行顺序及AOP实现
2.8.1 多重继承
2.8.2 多重继承构造器执行顺序
2.8.3 AOP实现
2.9 包的定义、包对象、包的引用、包的隐式引用
2.9.1 包的定义
2.9.2 包对象
2.9.3 包的引用
2.9.4 包的隐式引用
2.10 包、类、对象、成员、伴生类、伴生对象访问权限
2.10.1 包、类、对象、成员访问权限
2.10.2 伴生类、伴生对象访问权限
2.11 小结
第3章 Scala高阶函数
3.1 匿名函数
3.2 偏应用函数
3.3 闭包
3.4 SAM转换
3.5 Curring函数
3.6 高阶函数
3.7 高阶函数在Spark中的应用
3.8 小结
中级篇
第4章 Scala模式匹配
4.1 模式匹配简介
4.2 模式匹配类型
4.2.1 常量模式
4.2.2 变量模式
4.2.3 构造器模式
4.2.4 序列(Sequence)模式
4.2.5 元组(Tuple)模式
4.2.6 类型模式
4.2.7 变量绑定模式
4.3 模式匹配与Case Class
4.3.1 构造器模式匹配原理
4.3.2 序列模式匹配原理
4.3.3 Sealed Class在模式匹配中的应用
4.4 模式匹配应用实例
4.4.1 for循环控制结构中的模式匹配
4.4.2 正则表达式中的模式匹配
4.4.3 异常处理中的模式匹配
4.4.4 Spark源码中的模式匹配使用
4.5 小结
第5章 Scala集合
5.1 可变集合与不可变集合(Collection)
5.1.1 集合的概述
5.1.2 集合的相关操作
5.1.3 集合的操作示例
5.2 序列(Seq)
5.2.1 序列的概述
5.2.2 序列的相关操作
5.2.3 序列的操作示例
5.3 列表(List)
5.3.1 列表的概述
5.3.2 列表的相关操作
5.3.3 列表的操作示例
5.4 集(Set)
5.4.1 集的概述
5.4.2 集的相关操作
5.4.3 集的操作示例
5.5 映射(Map)
5.5.1 映射的概述
5.5.2 映射的相关操作
5.5.3 映射的操作示例
5.6 迭代器(Iterator)
5.6.1 迭代器的概述
5.6.2 迭代器的相关操作
5.6.3 迭代器的操作示例
5.7 集合的架构
5.8 小结
高级篇
第6章 Scala类型参数
6.1 泛型
6.1.1 泛型的概述
6.1.2 泛型的操作示例
6.2 界定
6.2.1 上下界界定
6.2.2 视图界定
6.2.3 上下文界定
6.2.4 多重界定
6.2.5 界定的操作示例
6.3 类型约束
6.3.1 类型约束的概述
6.3.2 类型约束的操作示例
6.4 类型系统
6.4.1 类型系统的概述
6.4.2 类型系统的操作示例
6.5 型变Variance
6.5.1 协变
6.5.2 逆变
6.5.3 协变与逆变的操作示例
6.6 结合Spark源码说明Scala类型参数的使用
6.7 小结
第7章 Scala高级类型
7.1 单例类型
7.1.1 单例类型概述
7.1.2 单例类型示例
7.2 类型别名
7.2.1 类型别名概述
7.2.2 类型别名示例
7.3 自身类型
7.3.1 自身类型概述
7.3.2 自身类型示例
7.4 中置类型
7.4.1 中置类型概述
7.4.2 中置类型示例
7.5 类型投影
7.5.1 类型投影概述
7.5.2 类型投影实例
7.6 结构类型
7.6.1 结构类型概述
7.6.2 结构类型示例
7.7 复合类型
7.7.1 复合类型概述
7.7.2 复合类型示例
7.8 存在类型
7.8.1 存在类型概述
7.8.2 存在类型示例
7.9 函数类型
7.9.1 函数类型概述
7.9.2 函数类型示例
7.10 抽象类型
7.10.1 抽象类型概述
7.10.2 抽象类型实例
7.11 Spark源码中的高级类型使用
7.12 小结
第8章 Scala隐式转换
8.1 隐式转换函数
8.1.1 隐式转换函数的定义
8.1.2 隐式转换函数的功能
8.2 隐式类与隐式对象
8.2.1 隐式类
8.2.2 隐式参数与隐式值
8.3 类型证明中的隐式转换
8.3.1 类型证明的定义
8.3.2 类型证明使用实例
8.4 上下文界定、视图界定中的隐式转换
8.4.1 Ordering与Ordered特质
8.4.2 视图界定中的隐式转换
8.4.3 上下文界定中的隐式转换
8.5 隐式转换规则
8.5.1 发生隐式转换的条件
8.5.2 不会发生隐式转换的条件
8.6 Spark源码中的隐式转换使用
8.6.1 隐式转换函数
8.6.2 隐式类
8.6.3 隐式参数
8.7 小结
第9章 Scala并发编程
9.1 Scala的Actor模型简介
9.2 Scala Actor的构建方式
9.2.1 继承Actor类
9.2.2 Actor工具方法
9.3 Actor的生命周期
9.3.1 start方法的等幂性
9.3.2 Actor的不同状态
9.4 Actor之间的通信
9.4.1 Actor之间发送消息
9.4.2 Actor接收消息
9.5 使用react重用线程提升性能
9.6 Channel通道
9.6.1 OutputChannel
9.6.2 InputChannel
9.6.3 创建和共享channel
9.7 同步和Future
9.8 Scala并发编程实例
9.8.1 Scala Actor并发编程
9.8.2 ExecutorService并发编程
9.9 小结
分布式框架篇
第10章 Akka的设计理念
10.1 Akka框架模型
10.2 创建Actor
10.2.1 通过实现akka.actor.Actor来创建Actor类
10.2.2 使用非缺省构造方法创建Actor
10.2.3 创建匿名Actor
10.3 Actor API
10.3.1 Actor trait基本接口
10.3.2 使用Death Watch进行生命周期监控
10.3.3 Hook函数的调用
10.3.4 查找Actor
10.3.5 消息的不可变性
10.3.6 发送消息
10.3.7 转发消息
10.3.8 接收消息
10.3.9 回应消息
10.3.10 终止Actor
10.3.11 Become/Unbecome
10.3.12 杀死Actor
10.4 不同类型的Actor
10.4.1 方法派发语义
10.4.2 终止有类型Actor
10.5 小结
第11章 Akka核心组件及核心特性剖析
11.1 Dispatchers和Routers
11.1.1 为Actor指定派发器
11.1.2 派发器的类型
11.1.3 邮箱
11.1.4 Routers
11.1.5 路由的使用
11.1.6 远程部署router
11.2 Supervision和Monitoring
11.2.1 Supervision
11.2.2 Monitoring
11.3 Akka中的事务
11.3.1 STM
11.3.2 使用STM事务
11.3.3 读取Agent事务中的数据
11.3.4 更新Agent事务中的数据
11.3.5 Actor中的事务
11.3.6 创建Transactor
11.4 小结
第12章 Akka程序设计实践
12.1 Akka的配置、日志及部署
12.1.1 Akka中配置文件的读写
12.1.2 Akka中日志配置
12.1.3 Akka部署及应用场景
12.2 使用Akka框架实现单词统计
12.3 分布式Akka环境搭建
12.4 使用Akka微内核部署应用
12.5 Akka框架在Spark中的运用
12.6 小结
第13章 Kafka设计理念与基本架构
13.1 Kafka产生的背景
13.2 消息队列系统
13.2.1 概述
13.2.2 常用的消息队列系统对比
13.2.3 Kafka特点及特性
13.2.4 Kafka系统应用场景
13.3 Kafka设计理念
13.3.1 专业术语解析
13.3.2 消息存储与缓存设计
13.3.3 消费者与生产者模型
13.3.4 Push与Pull机制
13.3.5 镜像机制
13.4 Kafka整体架构
13.4.1 Kafka基本组成结构
13.4.2 Kafka工作流程
13.5 Kafka性能分析及优化
13.6 Kafka未来研究方向
13.7 小结
第14章 Kafka核心组件及核心特性剖析
14.1 Kafka核心组件剖析
14.1.1 Producers
14.1.2 Consumers
14.1.3 Low Level Consumer
14.1.4 High Level Consumer
14.2 Kafka核心特性剖析
14.2.1 Topic、Partitions
14.2.2 Replication和Leader Election
14.2.3 Consumer Rebalance
14.2.4 消息传送机制
14.2.5 Kafka的可靠性
14.2.6 Kafka的高效性
14.3 Kafka即将发布版本核心组件及特性剖析
14.3.1 重新设计的Consumer
14.3.2 Coordinator Rebalance
14.4 小结
第15章 Kafka应用实践
15.1 Kafka开发环境搭建及运行环境部署
15.1.1 Kafka开发环境配置
15.1.2 Kafka运行环境安装与部署
15.2 基于Kafka客户端开发
15.2.1 消息生产者(Producer)设计
15.2.2 消息消费者(Consumer)设计
15.2.3 Kafka消费者与生产者配置
15.3 Spark Streaming整合Kafka
15.3.1 基本架构设计流程
15.3.2 消息消费者(Consumer)设计——基于Receiver方法
15.3.3 消息消费者(Consumer)设计——基于No Receiver方法
15.3.4 消息生产者(Producer)设计
15.4 小结
附录 Kafka集群server. properties配置文档
参考文献