![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Scala进阶
无所谓
斗罗昊天锤
无所谓
展开
-
第 17 章 设计模式(5 >>> 代理模式(Proxy))
一、简介1、基本介绍1. 代理模式:为一个对象提供一个替身,以控制对这个对象的访问;2. 被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象;3. 代理模式有不同的形式(比如 远程代理,静态代理,动态代理),都是为了控制与管理对象访问。2、提出需求糖果机项目,具体要求如下:1. 某公司需要将销售糖果的糖果机放置到本地(本地监控)和外地(远程监控),进行糖果销售;2....原创 2020-03-31 18:47:21 · 307 阅读 · 0 评论 -
第 17 章 设计模式(4 >>> 观察者模式(Observer))
一、提出需求1、气象站项目,具体要求如下:1. 气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站);2. 需要设计开放型API,便于其他第三方公司也能接入气象站获取数据;3. 提供温度、气压和湿度的接口;4. 测量数据更新时,要能实时的通知给第三方。2、WeatherData类通过对气象站项目的分析,我们可以初步设计出一个WeatherData...原创 2020-03-28 17:37:11 · 217 阅读 · 0 评论 -
第 17 章 设计模式(3 >>> 装饰者模式)
一、提出需求咖啡馆订单系统项目(咖啡馆):1. 咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡);2. 调料:Milk、Soy(豆浆)、Chocolate;3. 要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便;4. 使用OO的来计算不同种类咖啡的费用: 客户可以点单品咖啡,也可以单品咖啡+调...原创 2020-03-28 13:31:03 · 149 阅读 · 0 评论 -
第 17 章 设计模式(2 >>> 单利模式)
一、基本介绍1、什么是单例模式单例模式是指:保证在整个的软件系统中,某个类只能存在一个对象实例。2、单例模式的应用场景 比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session对象。SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就够,这时就会使用到单例模式。 Akka [Acto...原创 2020-03-27 21:58:50 · 99 阅读 · 0 评论 -
第 17 章 设计模式(1 >>> 工厂模式)
一、简介1、设计模式介绍1. 设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验,模式【设计,思想】不是代码,而是某类问题的通用解决方案,设计模式(Design pattern)代表了最佳的实践。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。2. 设计模式的本质提高 软件的维护性,通用性和扩展性,并降低软件的复杂度【软件巨兽=》软件工程】。3....原创 2020-03-27 20:59:38 · 165 阅读 · 0 评论 -
第 18 章 泛型、上下界、视图界定、上下文界定
一、泛型1、基本介绍1. 如果我们要求函数的参数可以接受任意类型。可以使用泛型,这个类型可以代表任意的数据类型。 2. 例如List,在创建List时,可以传入整型、字符串、浮点数等等任意类型。那是因为List在类定义时引用了泛型。 比如在Java中:public interface List<E> extends Collection<E>2、泛型应用案例1 ...原创 2020-03-27 11:55:55 · 354 阅读 · 0 评论 -
第 16 章 并发编程模型Akka(下)
Spark Master Worker 进程通讯1、项目意义1. 深入理解Spark的Master和Worker的通讯机制;2. 命名的方式和源码保持一致.(如: 通讯消息类命名就是一样的);3. 加深对主从服务心跳检测机制(HeartBeat)的理解,方便以后spark源码二次开发。2、项目需求分析1. worker注册到Master, Master完成注册,并回复worker注册...原创 2020-03-24 22:09:08 · 157 阅读 · 0 评论 -
第 16 章 并发编程模型 Akka(上)
一、基本介绍1. Akka是JAVA虚拟机JVM平台上构建高并发、分布式和容错应用的工具包和运行时,你可以理解成Akka是编写并发程序的框架;2. Akka用Scala语言写成,同时提供了Scala和JAVA的开发接口;3. Akka主要解决的问题是:可以轻松的写出高效稳定的并发程序,程序员不再过多的考虑线程、锁和资源竞争等细节。示意图:二、Actor模型用于解决什么问题1. ...原创 2020-03-24 17:54:16 · 346 阅读 · 0 评论 -
第 14 章 使用递归的方式去思考,去编程
一、基本介绍Scala 是运行在 Java 虚拟机(Java Virtual Machine)之上,因此具有如下特点: 1. 轻松实现和丰富的 Java 类库互联互通; 2. 它既支持面向对象的编程方式,又支持函数式编程; 3. 它写出的程序像动态语言一样简洁,但事实上它确是严格意义上的静态语言; 4. Scala 就像一位武林中的集大成者,将过去几十年计算机语言发展历史中的精萃集于一身...原创 2020-03-19 10:11:09 · 125 阅读 · 0 评论 -
第 13 章 函数式编程高级
一、偏函数(partial function)1、提出需求1. 给你一个集合val list01 = List(1, 2, 3, 4, "abc") ,请完成如下要求: a): 将集合list中的所有数字+1,并返回一个新的集合; b): 要求忽略掉 非数字 的元素,即返回的 新的集合 形式为 (2, 3, 4, 5).模式匹配与filter-map方式解决问题示例代码:packag...原创 2020-03-18 17:44:46 · 218 阅读 · 0 评论 -
第 12 章 模式匹配(match)
一、match基础1、基本介绍1. Scala中的模式匹配类似于Java中的switch语法,但是比Java更加强大;2. 模式匹配语法中,采用match关键字声明,每个分支采用case关键字进行声明,当需要匹配时,会从第一个case分支开始,如果匹配成功,那么执行对应的逻辑代码,如果匹配不成功,继续执行下一个分支进行判断。如果所有case都不匹配,那么会执行case _ 分支,类似于J...原创 2020-03-17 20:03:27 · 1656 阅读 · 1 评论 -
第 11 章 数据结构 之 集合操作
一、集合元素的映射 — Map映射操作1、map映射操作 在Scala中可以通过map映射操作来解决:将集合中的每一个元素通过指定功能(函数)映射(转换)成新的结果集合,这里其实就是所谓的将函数作为参数传递给另外一个函数,这是函数式编程的特点。以HashSet为例说明def map[B](f: (A) ⇒ B): HashSet[B] // map函数的签名这个就是map映射函数...原创 2020-03-16 21:06:45 · 515 阅读 · 0 评论 -
第 10 章 数据结构 之 集合(下)
一、队列(Queue)1、Queue的基本介绍队列的说明1. 队列是一个有序列表,在底层可以用数组或是链表来实现;2. 其输入和输出要遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出;3. 在Scala中,由设计者直接给我们提供队列类型使用;4. 在scala中, 有scala.collection.mutable.Queue和scala.collection.im...原创 2020-03-15 18:12:10 · 182 阅读 · 0 评论 -
第 10 章 数据结构 之 集合(上)
一、数据结构的特点1、Scala集合基本介绍1. Scala同时支持“不可变集合”和“可变集合”,而且“不可变集合”可以安全的并发访问; 两个主要的包: a)不可变集合:scala.collection.immutable b)可变集合: scala.collection.mutable2. Scala默认采用“不可变集合”,对于几乎所有的集合类,Scala都同时提供了可变...原创 2020-03-14 23:27:49 · 205 阅读 · 0 评论 -
第 9 章 隐式转换和隐式值
一、隐式转换1、隐式函数基本介绍 隐式转换函数是以implicit关键字声明的带有单个参数的函数。这种函数将会自动应用,将值从一种类型转换为另一种类型。隐式函数快速入门 使用隐式函数可以优雅的解决数据类型转换。示例代码:package com.lj.scala.implicitly/** * @author Administrator * @create 2020-0...原创 2020-03-12 15:45:07 · 184 阅读 · 0 评论 -
第 8 章 面向对象 (高级部分)
一、静态属性和静态方法1、基本介绍回顾下Java的静态概念 public static 返回值类型 方法名(参数列表) {方法体} 静态属性...说明:Java中静态方法并不是通过对象调用的,而是通过类对象调用的,所以静态操作并不是面向对象的。2、Scala中静态的概念-伴生对象 Scala语言是完全面向对象(万物皆对象)的语言,所以并没有静态的操作(即在Scala中没有静态...原创 2020-03-11 20:54:54 · 224 阅读 · 0 评论 -
第 7 章 面向对象编程 (中级部分)
一、包回顾-Java如何引入包语法: import 包;比如 import java.awt.*;我们引入一个包的主要目的是要使用该包下的类比如 import java.util.Scanner; 就只是引入一个类Scanner。回顾-Java包的特点java中包名和源码所在的系统文件目录结构要一致,并且编译后的字节码文件路径也和包名保持一致。Scala包的基本介绍和Ja...原创 2020-03-10 23:18:07 · 287 阅读 · 0 评论 -
第 6 章 面向对象编程 (基础部分)
一、类与对象1、Scala语言是面向对象的1. Java是面向对象的编程语言,由于历史原因,Java中还存在着非面向对象的内容:基本类型 ,null,静态方法等;2. Scala语言来自于Java,所以天生就是面向对象的语言,而且Scala是纯粹的面向对象的语言,即在Scala中,一切皆为对象。面向对象解决养猫的问题示例代码:package com.lj.scala.obj/*...原创 2020-03-10 14:14:42 · 316 阅读 · 0 评论 -
第 5 章 函数式编程基础
一、函数式编程介绍在Scala中将方法、函数、函数式编程和面向对象编程明确如下1. 在scala中,方法和函数几乎可以等同(比如他们的定义、使用、运行机制都一样的),只是函数的使用方式更加的灵活多样;2. 函数式编程是从编程方式(范式)的角度来谈的,可以这样理解:函数式编程把函数当做一等公民,充分利用函数、 支持的函数的多种使用方式。比如:在Scala当中,函数是一等公民,像变量一样,既...原创 2020-03-09 11:57:16 · 244 阅读 · 0 评论 -
第 4 章 程序流程控制
一、If … else … 语句示例代码:package com.lj.scala.mainimport scala.io.StdIn/** * @author Administrator * @create 2020-03-07 17:21 */object IfTest { def main(args: Array[String]): Unit = { ...原创 2020-03-09 11:58:21 · 152 阅读 · 0 评论 -
第 3 章 运算符
一、运算符介绍运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。 1. 算术运算符; 2. 赋值运算符; 3. 比较运算符(关系运算符); 4. 逻辑运算符; 5. 位运算符。二、算术运算符三、关系运算符(比较运算符)基本介绍1. 关系运算符的结果都是boolean型,也就是要么是true,要么是false;2. 关系表达式 经常用在 if结构的条件中或循环结构的...原创 2020-03-09 11:58:31 · 187 阅读 · 0 评论 -
第 2 章 变量
一、变量的介绍 变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量(值)。二、变量的基本使用语法格式var | val 变量名 [: 变量类型] = 变量值注意事项1. 声明变量时,类型可以省略(编译器自动推导,即类型推导);2. 类型确定后,就不能修改,说明Scala是强数据类型语言;3. 在声...原创 2020-03-09 11:58:41 · 352 阅读 · 0 评论 -
第 1 章 Scala 的概述
简介1、学习Scala的原因1. Spark—新一代内存级大数据计算框架,是大数据的重要内容。2. Spark是使用Scala编写的。因此为了更好的学习Spark, 需要掌握Scala这门语言。3. Scala 是 Scalable Language 的简写,是一门多范式(范式/编程方式[面向对象/函数式编程])的编程语言2、Scala语言的特点Scala是一门以java虚拟机(JV...原创 2020-03-09 11:58:03 · 298 阅读 · 0 评论