第 1 章 scala的概述
1.1学习sdala的原因
1.2Scala语言诞生小故事
1.3Scala 和 Java 以及 jvm 的关系分析图
1.4Scala语言的特点
1.5Windows下搭建Scala开发环境
1.6Linux下搭建Scala开发环境
1.7Scala开发工具的介绍
1.7.1idea工具的介绍
1.7.2Scala插件安装
1.8scala的开发的快速入门
1.8.1IDE工具Idea 来开发 “hello,world”
1.8.2Scala程序反编译-说明scala程序的执行流程
1.8.3使用java写了一段模拟的代码
1.8.4课堂小练习
1.8.5Scala执行流程分析
1.8.6Scala程序开发注意事项(重点)
1.9Scala语言转义字符
1.10Scala语言输出的三种方式
1.10.1基本介绍
1.10.2应用案例
1.11Scala源码的查看的关联
1.12注释(comment)
1.12.1介绍:
1.12.2Scala中的注释类型
1.12.3文档注释的案例
1.12.4scala的代码规范说明
1.12.5正确的注释和注释风格:
1.12.6正确的缩进和空白
1.12.7Scala官方编程指南
1.13本章知识回顾
第 2 章变量
2.1变量是程序的基本组成单位
2.2变量的介绍
2.2.1概念
2.2.2变量使用的基本步骤
2.3scala变量的基本使用
2.3.1快速入门
2.4Scala变量使用说明
2.4.1变量声明基本语法
2.4.2注意事项
2.5程序中 +号的使用
2.6数据类型
2.6.1scala数据类型体系一览图(记住)
2.6.2scala数据类型列表
2.7整数类型
2.7.1基本介绍
2.7.2整型的类型
2.7.3整型的使用细节
2.8浮点类型
2.8.1基本介绍
2.8.2浮点型的分类
2.8.3浮点数的使用细节
2.9字符类型(Char)
2.9.1基本介绍
2.9.2案例演示:
2.9.3字符类型使用细节
2.10布尔类型:Boolean
2.10.1基本介绍
2.11Unit类型、Null类型和Nothing类型
2.11.1基本说明
2.11.2使用细节的案例
2.12值类型转换
2.12.1值类型隐式转换
2.12.2值类型隐式转换
2.12.3高级隐式转换和隐式函数
2.12.4强制类型转换
2.13数据类型转换的作业题
2.14值类型和String类型的转换
2.14.1介绍
2.14.2基本类型转String类型
2.14.3String类型转基本数据类型
2.14.4注意事项和细节
2.15标识符的命名规范
2.15.1标识符概念
2.15.2标识符的命名规则(记住)
2.15.3标识符举例说明
2.15.4标识符命名注意事项
2.15.5scala的关键字39
第 3 章运算符
3.1运算符介绍
3.2算术运算符
3.2.1介绍
3.2.2算术运算符的一览图
3.2.3案例演示
3.2.4细节说明
3.2.5课堂练习
3.3关系运算符(比较运算符)
3.3.1基本介绍
3.3.2关系运算符的一览图
3.3.3案例演示
3.3.4细节说明
3.4逻辑运算符
3.4.1介绍
3.4.2逻辑运算符的一览图和案例
3.5赋值运算符
3.5.1介绍
3.5.2赋值运算符的分类
3.5.3案例演示
3.5.4赋值运算符特点
3.5.5位运算符
3.5.6运算符的特别说明
3.5.7Scala不支持三目运算符 , 在Scala 中使用 if – else 的方式实现。
3.5.8课堂练习
3.6运算符优先级
3.6.1运算符优先级的一览图
3.7键盘输入语句
3.7.1介绍
3.7.2案例演示
第 4 章程序流程控制
4.1程序的流程控制说明
4.2顺序控制的说明
4.3分支控制if-else
4.3.1分支控制if-else介绍
4.3.2单分支的使用
4.3.3双分支
4.3.4单分支和双分支练习题
4.3.5单分支和双分支课后题
4.3.6多分支
4.3.7分支控制if-else 注意事项
4.4嵌套分支
4.4.1基本介绍
4.4.2基本语法
4.4.3应用案例1
4.4.4应用案例2
4.5switch分支结构
4.6for循环控制
4.6.1基本介绍
4.6.2范围数据循环方式1
4.6.3范围数据循环方式2
4.6.4循环守卫
4.6.5引入变量
4.6.6嵌套循环
4.6.7循环返回值
4.6.8使用花括号{}代替小括号()
4.6.9注意事项和细节说明
4.6.10for循环练习题(学员先做)
4.7while循环控制
4.7.1基本语法
4.7.2while循环应用实例
4.7.3注意事项和细节说明
4.8do..while循环控制
4.8.1基本语法
4.8.2do...while循环应用实例
4.8.3注意事项和细节说明
4.8.4课堂练习题【学员先做】
4.9多重循环控制
4.9.1介绍:
4.9.2应用实例:
4.10while循环的中断
4.10.1基本说明
4.10.2break的应用实例
4.10.3如何实现continue的效果
4.10.4案例的代码
4.11课后练习题
第 5 章函数式编程的基础
5.1函数式编程内容及授课顺序说明
5.1.1函数式编程内容
5.1.2函数式编程授课顺序说明
5.2函数式编程介绍
5.2.1几个概念的说明
5.2.2在学习Scala中将方法、函数、函数式编程和面向对象编程关系分析图:
5.2.3函数式编程的小结
5.3为什么需要函数
5.4函数的定义
5.4.1基本语法
5.4.2快速入门案例
5.5函数-调用机制
5.5.1函数-调用过程
5.5.2函数递归调用的重要的规则和小结
5.5.3使用scala递归的应用案例
5.6函数注意事项和细节讨论
5.7函数练习题
5.8过程
5.8.1基本概念
5.8.2注意事项
5.9惰性函数
5.9.1看一个应用场景
5.9.2画图说明[大数据推荐系统]
5.9.3Java实现懒加载的代码
5.9.4惰性函数介绍
5.9.5案例演示
5.9.6注意事项和细节
5.10异常
5.10.1介绍
5.10.2Java异常处理回顾
5.10.3Java异常处理的注意点.
5.10.4Scala异常处理举例
5.10.5Scala异常处理小结
5.11函数的课堂练习题
第 6 章面向对象编程(基础部分)
6.1类与对象
6.1.1Scala语言是面向对象的
6.1.2快速入门-面向对象的方式解决养猫问题
6.1.3类和对象的区别和联系
6.1.4如何定义类
6.1.5属性
6.1.6属性/成员变量
6.1.7属性的高级部分
6.1.8如何创建对象
6.1.9类和对象的内存分配机制
6.2方法
6.2.1基本说明
6.2.2基本语法
6.2.3方法案例演示
6.3类与对象应用实例
6.4构造器
6.4.1看一个需求
6.4.2回顾-Java构造器基本语法
6.4.3回顾-Java构造器的特点
6.4.4Java构造器的案例
6.4.5Scala构造器的介绍
6.4.6Scala构造器的基本语法
6.4.7Scala构造器的快速入门
6.4.8Scala构造器注意事项和细节
6.5属性高级
6.5.1构造器参数
6.5.2Bean属性
6.6scala对象创建的流程分析
6.6.1看一个案例
6.6.2流程分析(面试题-写出)
第 7 章面向对象编程(中级部分)
7.1包
7.1.1看一个应用场景
7.1.2回顾-Java包的三大作用
7.1.3回顾-Java打包命令
7.1.4快速入门
7.1.5Scala包的基本介绍
7.1.6Scala包快速入门
7.1.7Scala包的特点概述
7.1.8Scala包的命名
7.1.9Scala会自动引入的常用包
7.1.10Scala包注意事项和使用细节
7.1.11包对象
7.1.12包对象的应用案例
7.1.13分析了包对象的底层的实现机制
7.1.14包对象的注意事项
7.2包的可见性问题
7.2.1回顾-Java访问修饰符基本介绍
7.2.2回顾-Java中4种访问修饰符的访问范围
7.2.3回顾-Java访问修饰符使用注意事项
7.2.4Scala中包的可见性介绍:
7.2.5Scala中包的可见性和访问修饰符的使用
7.3包的引入
7.3.1Scala引入包基本介绍
7.3.2Scala引入包的细节和注意事项
7.4面向对象编程方法-抽象
7.5面向对象编程三大特征
7.5.1基本介绍
7.5.2封装介绍
7.5.3封装的理解和好处
7.5.4如何体现封装
7.5.5封装的实现步骤
7.5.6快速入门案例
7.5.7scala封装的注意事项的小结
7.6面向对象编程-继承
7.6.1Java继承的简单回顾
7.6.2继承基本介绍和示意图
7.6.3Scala继承的基本语法
7.6.4Scala继承快速入门
7.6.5Scala继承给编程带来的便利
7.6.6scala子类继承了什么,怎么继承了?
7.6.7重写方法
7.6.8Scala中类型检查和转换
7.6.9Scala中超类的构造
7.6.10Scala中超类的构造
7.6.11覆写字段
7.6.12抽象类
7.6.13Scala抽象类使用的注意事项和细节讨论
7.6.14匿名子类
7.6.15继承层级
7.7面向对象编程作业
第 8 章面向对象编程(高级特性)
8.1静态属性和静态方法
8.1.1静态属性-提出问题
8.1.2基本介绍
8.1.3伴生对象的快速入门
8.1.4伴生对象的小结
8.1.5最佳实践-使用伴生对象完成小孩玩游戏
8.1.6伴生对象-apply方法
8.1.7课后练习题
8.2单例对象
8.3接口
8.3.1回顾Java接口
8.3.2Scala接口的介绍
8.3.3trait 的声明
8.3.4Scala中trait 的使用
8.4特质(trait)
8.4.1特质的快速入门案例
8.4.2代码完成
8.4.3特质trait 的再说明
8.4.4带有特质的对象,动态混入
8.4.5叠加特质
8.4.6当作富接口使用的特质
8.4.7特质中的具体字段
8.4.8特质中的抽象字段
8.4.9特质构造顺序
8.4.10扩展类的特质
8.4.11自身类型
8.5嵌套类 //看源码,面试
8.5.1Scala嵌套类的使用1
8.5.2Scala嵌套类的使用2
8.5.3类型投影
第 9 章隐式转换和隐式值
9.1隐式转换
9.1.1提出问题
9.1.2隐式函数基本介绍
9.1.3隐式函数快速入门
9.1.4隐式转换的注意事项和细节
9.2隐式转换丰富类库功能
9.2.1快速入门案例
9.2.2案例代码
9.3隐式值
9.3.1基本介绍
9.3.2快速入门
9.3.3一个案例说明 隐式值 ,默认值,传值的优先级
9.4隐式类
9.4.1基本介绍
9.4.2隐式类使用有如下几个特点:
9.4.3应用案例
9.5隐式的转换时机
9.6隐式解析机制
9.7在进行隐式转换时,需要遵守两个基本的前提:
第 10 章数据结构(上)-集合
10.1数据结构特点
10.1.1scala集合基本介绍
10.1.2可变集合和不可变集合举例
10.2不可变集合继承层次一览图
10.2.1图
10.2.2老师小结:
10.3可变集合继承层次一览图
10.3.1图
10.3.2对上图的说明
10.4数组-定长数组(声明泛型)
10.4.1第一种方式定义数组
10.4.2第二种方式定义数组
10.5数组-变长数组(声明泛型)
10.5.1变长数组分析小结
10.5.2定长数组与变长数组的转换
10.5.3多维数组的定义和使用
10.6数组-Scala数组与Java的List的互转
10.6.1Scala数组转Java的List
10.6.2演示的代码
10.6.3补充了一个多态(使用trait来实现的参数多态)的知识点
10.6.4Java的List转Scala数组(mutable.Buffer)
10.7元组Tuple-元组的基本使用
10.7.1基本介绍
10.7.2元组的创建
10.8元组Tuple-元组数据的访问
10.8.1基本介绍
10.8.2应用案例
10.9元组Tuple-元组数据的遍历
10.10列表 List-创建List
10.10.1基本介绍
10.10.2创建List的应用案例
10.10.3创建List的应用案例小结
10.11列表 List-访问List元素
10.12列表 List-元素的追加
10.12.1基本介绍
10.12.2方式1-在列表的最后增加数据
10.12.3方式2-在列表的最前面增加数据
10.12.4方式3-在列表的最后增加数据
10.12.5课堂练习题
10.13ListBuffer
10.13.1基本介绍
10.13.2应用实例代码
10.14队列 Queue-基本介绍
10.14.1队列的应用场景
10.14.2队列的说明
10.15队列 Queue-队列的创建
10.16队列 Queue-队列元素的追加数据
10.17队列 Queue-删除和加入队列元素
10.18队列 Queue-返回队列的元素
10.19映射 Map-基本介绍
10.19.1Java中的Map回顾
10.19.2应用案例
10.19.3Scala中的Map介绍
10.20映射 Map-构建Map
10.20.1方式1-构造不可变映射
10.21映射 Map-构建Map
10.21.1方式1-构造不可变映射
10.21.2方式2-构造可变映射
10.21.3方式3-创建空的映射
10.21.4方式4-对偶元组
10.22映射 Map-取值
10.22.1方式1-使用map(key)
10.22.2方式2-使用contains方法检查是否存在key
10.22.3方式3-使用map.get(key).get取值
10.22.4方式4-使用map4.getOrElse()取值
10.22.5如何选择取值的方式
10.23映射 Map-对map修改、添加和删除
10.23.1更新map的元素
10.23.2添加map元素
10.23.3删除map元素
10.24映射 Map-对map遍历
10.25集 Set-基本介绍
10.25.1Java中Set的回顾
10.25.2案例演示:
10.26集 Set-创建
10.27集 Set-可变集合的元素添加和删除
10.27.1可变集合的元素添加
10.27.2可变集合的元素删除
10.27.3set集合的遍历操作
10.28集 Set-更多操作
第 11 章数据结构(下)-集合操作
11.1集合元素的映射-map映射操作
11.1.1看一个实际需求
11.1.2map映射操作
11.1.3使用传统方法
11.1.4高阶函数基本使用案例1
11.1.5高阶函数应用案例2
11.1.6使用map映射函数来解决
11.1.7深刻理解map映射函数的机制-模拟实现
11.1.8课堂练习
11.1.9flatmap映射:flat即压扁,压平,扁平化映射
11.2集合元素的过滤-filter
11.3化简
11.3.1看一个需求:
11.3.2化简的介绍:
11.3.3代码演示
11.3.4对reduceLeft的运行机制的说明
11.3.5化简的课堂练习
11.4折叠
11.4.1基本介绍
11.4.2应用案例
11.4.3foldLeft和foldRight 缩写方法分别是:/:和:\
11.5扫描
11.5.1基本介绍
11.5.2应用实例
11.5.3课堂练习
11.6集合综合应用案例
11.6.1课堂练习1
11.6.2课堂练习2
11.6.3课后练习3-大数据中经典的wordcount案例
11.7扩展-拉链(合并)
11.7.1基本介绍
11.7.2应用实例
11.7.3拉链的使用注意事项
11.8扩展-迭代器
11.8.1基本说明
11.8.2应用案例
11.8.3对代码小结
11.9扩展-流 Stream
11.9.1基本说明
11.9.2创建Stream对象
11.9.3流的应用案例
11.10扩展-视图 View
11.10.1基本介绍
11.10.2应用案例
11.11扩展-并行集合
11.11.1基本介绍
11.11.2应用案例
11.12扩展-操作符
11.12.1基本介绍
11.12.2操作符扩展
第 12 章模式匹配
12.1match
12.1.1基本介绍
12.1.2scala的match的快速入门案例
12.1.3match的细节和注意事项
12.2守卫
12.2.1基本介绍
12.2.2应用案例
12.2.3课堂练习题
12.3模式中的变量
12.3.1基本介绍
12.3.2应用案例
12.4类型匹配
12.4.1基本介绍
12.4.2应用案例
12.4.3类型匹配注意事项
12.5匹配数组
12.5.1基本介绍
12.5.2应用案例
12.6匹配列表
12.7匹配元组
12.8对象匹配
12.8.1基本介绍
12.8.2快速入门案例
12.8.3应用案例2
12.9变量声明中的模式
12.9.1基本介绍
12.9.2应用案例
12.10for表达式中的模式
12.10.1基本介绍
12.10.2应用案例
12.11样例(模板)类
12.11.1样例类快速入门
12.11.2基本介绍
12.11.3样例类最佳实践1:
12.11.4样例类最佳实践2:
12.12case语句的中置(缀)表达式
12.12.1基本介绍
12.12.2应用实例
12.13匹配嵌套结构
12.13.1基本介绍
12.13.2最佳实践案例-商品捆绑打折出售
12.13.3最佳实践案例-商品捆绑打折出售
12.14密封类
第 13 章函数式编程高级
13.1偏函数(partial function)
13.1.1提出一个需求,引起思考
13.1.2解决方式-filter + map返回新的集合, 引出偏函数
13.1.3解决方式-模式匹配
13.1.4偏函数快速入门
13.1.5偏函数的小结
13.1.6偏函数的简写形式
13.2作为参数的函数
13.2.1基本介绍
13.2.2应用实例
13.2.3对代码的小结
13.3匿名函数
13.3.1基本介绍
13.3.2应用案例
13.3.3课堂案例
13.4高阶函数
13.4.1基本介绍
13.4.2高阶函数基本使用
13.4.3高阶函数可以返回函数类型
13.5参数(类型)推断
13.5.1基本介绍
13.5.2参数类型推断写法说明
13.5.3应用案例
13.6闭包(closure)
13.6.1基本介绍
13.6.2案例演示
13.6.3闭包的最佳实践
13.7函数柯里化(curry)
13.7.1基本介绍
13.7.2函数柯里化快速入门
13.7.3函数柯里化最佳实践
13.8控制抽象
13.8.1看一个需求
13.8.2控制抽象基本介绍
13.8.3进阶用法:实现类似while的until函数
第 14 章使用递归的方式去思考,去编程
14.1基本介绍
14.2Scala提倡函数式编程(递归思想)
14.3应用实例
14.3.1应用实例要求:
14.3.2常规的解决方式
14.3.3使用函数式编程方式-递归
14.4应用案例2
14.5使用函数式编程方式-字符串翻转
14.6使用递归-求阶乘
第 15 章 项目-scala客户信息管理系统
15.1项目开发流程
15.2项目需求分析
15.3项目界面
15.4项目设计-程序框架图
15.5项目功能实现
15.5.1项目功能实现-完成Customer类
15.5.2项目功能实现-显示主菜单和完成退出软件功能
15.5.3项目功能实现-完成显示客户列表的功能
15.5.4项目功能实现-添加客户的功能
15.5.5项目功能实现-完成删除客户的功能
15.5.6项目功能实现-完善退出确认功能(课堂作业带)
15.5.7项目功能实现-完成修改客户的功能(课堂作业)
15.5.8项目功能实现-查询客户的功能(课堂作业)
第 16 章并发编程模型 Akka
16.1Akka 介绍
16.2Actor 模型用于解决什么问题
16.3Akka 中 Actor 模型
16.3.1Actor模型及其说明
16.4Actor模型工作机制说明
16.5Actor模型快速入门
16.5.1应用实例需求
16.5.2代码如下
16.5.3代码的小结和示意图
16.6Actor模型应用实例-Actor间通讯
16.6.1应用实例需求
16.6.2两个Actor的通讯机制原理图
16.6.3代码如下
16.7Akka网络编程
16.7.1看两个实际应用(socket/tcp/ip)
16.8Akka网络编程基本介绍
16.8.1OSI与Tcp/ip参考模型 (推荐tcp/ip协议3卷)
16.8.2端口(port)-介绍
16.9Akka网络编程-小黄鸡客服
16.9.1需求分析
16.9.2程序网络拓扑图
16.9.3程序框架图
16.9.4功能实现(走代码)
16.10Spark Master Worker 进程通讯项目
16.10.1项目的意义
16.10.2项目需求分析
16.10.3实现功能1-Worker完成注册
16.10.4实现功能2-Worker定时发送心跳
16.10.5实现功能3-Master启动定时任务,定时检测注册的worker
16.10.6实现功能4-Master,Worker的启动参数运行时指定
16.10.7master worker 进行分布式部署(Linux系统)-》如何给maven项目打包->上传li
第 17 章设计模式
17.1学习设计模式的必要性
17.2设计模式的介绍
17.3设计模式类型
17.4简单工厂
17.4.1基本介绍
17.4.2看一个具体的需求
17.4.3使用传统的方式来完成
17.4.4传统的方式的优缺点
17.4.5使用简单工厂模式-进行改进
17.5工厂方法模式
17.5.1看一个新的需求
17.5.2思路1
17.5.3思路2
17.5.4工厂方法模式介绍
17.5.5工厂方法模式应用案例
17.6抽象工厂模式
17.6.1基本介绍
17.6.2抽象工厂模式应用实例
17.7工厂模式的小结
17.8单例模式
17.8.1什么是单例模式
17.8.2单例模式的应用场景
17.8.3单例模式-懒汉式
17.8.4单例模式-饿汉式
17.9装饰者模式(Decorator)
17.9.1看一个项目需求
17.9.2方案1-较差的方案
17.9.3方案1-小结和分析
17.9.4方案2-好点的方案
17.9.5装饰者模式原理
17.9.6装饰者模式定义
17.9.7用装饰者模式设计重新设计的方案
17.9.8装饰者模式下的订单:2份巧克力+一份牛奶的LongBlack
17.9.9装饰者模式咖啡订单项目应用实例
17.10观察者模式(Observer)
17.10.1看一个项目需求
17.10.2WeatherData类
17.10.3气象站设计方案1-普通方案
17.10.4观察者模式原理
17.10.5气象站设计方案2-观察者模式
17.10.6Java内置观察者模式
17.11代理模式(Proxy)
17.11.1代码模式的基本介绍
17.11.2看一个项目需求
17.11.3完成监控本地糖果机
17.11.4完成监控远程糖果机
17.11.5远程代理模式监控方案
17.11.6Java RMI实现远程代理
17.11.7Java RMI的介绍
17.11.8Java RMI的开发应用案例-说明
17.11.9Java RMI的开发应用案例-开发步骤
17.11.10Java RMI的开发应用案例-程序框架
17.11.11Java RMI的开发应用案例-代码实现
17.11.12使用远程代理模式完成远程糖果机监控
17.11.13动态代理
17.11.14动态代理的应用案例
17.11.15几种常见的代理模式介绍— 几种变体
第 18 章泛型、上下界、视图界定 、上下文界定
18.1泛型的基本介绍
18.1.1基本介绍
18.1.2Scala泛型应用案例1
18.1.3Scala泛型应用案例2
18.1.4Scala泛型应用案例3
18.2类型约束-上界(Upper Bounds)/下界(lower bounds)
18.2.1上界(Upper Bounds)介绍和使用
18.2.2上界(Upper Bounds)介绍和使用
18.2.3上界(Upper Bounds)介绍和使用
18.2.4下界(Lower Bounds)介绍和使用
18.2.5视图界定应用案例3
18.3类型约束-上下文界定(Context bounds)
18.3.1基本介绍
18.3.2上下文界定应用实例
18.4协变、逆变和不变
18.4.1基本介绍
18.4.2应用实例