Java支持基本类型+static关键字,使得Java是个不纯粹的OOP语言
Java已经存在很多年,编程思想根深蒂固,不能轻易大方面更新,
这时候
基于ava1.8版本派生出了Scala,基于1.8的新特性——函数式接口和lambada表达式
Scala衍生出一种编程理念:函数式编程
在Scala的方法里会对类进行分类,一般分为
//入口方法:引入数据 返回值:return this(当前对象);
//过程处理:处理业务 返回值:return this(当前对象);
//出口方法:展示结果 返回值:return this(当前对象);
Scala特点:
Scala一切皆对象,纯粹的面对对象语言
Scala支持面向函数编程
Java工程化构建,Scala面向差异化小任务(类似SQL)
Scala中不支持接口
优雅:一行抵多行 scala 基于 java 简化了逻辑编码 (基于函数式接口+lambada表达式)
速度快:静态编译
方便融合hadoop生态圈:spark依赖scala
JAVA | SCALA | |
字符串 | ""+"" | """...\n...""" |
返回值 | return | 最后一行表达式 |
访问符 | default friendly | default public |
默认导入 | java.lang.* | java.lang.*;scala;scala.Predef; |
数据类型 | 基本类型+引用类型 | 全部引用类型 |
static | 支持 | 不支持 |
范式 | OOP | OOP+函数式编程 |
接口 | interface | trait |
OOP | 类和对象 | 单列对象|同一个文件中同名 伴生类class+伴生对象object(隐式创建) |
方法 | ()表示调用 | 无参()可以缺省 |
Java1.8新特性:
函数式接口:前提是个接口,通常是指只有一个抽象方法的接口
Java内置4个标准函数式接口:
Supplier<T> => T get(); 提供者
Consumer<T> => void accept(T t); 消费者
Function<T,R> => R apply(T t); 函数定义进出类型
Predicate<T> => boolean test(T t); 预测
lambada表达式: 简化代码,不用new对象,()- >
lamba表达式的符号表示为 ->,其基本结构形式为:(param1,param2,param3…)-> { }
如果只有一个参数,可以不加小括号,只有一行执行代码,也可以没有箭头后面的大括号,比如 i ->System.Out.Println(i);
如果没有参数 ,只需要一个小括号即可,比如:()-> System.Out.Println(“hello”);
微服务可以理解为分布式,但计算的时候是把数据传输到一台机器上计算的,
哪怕这些数据是分散在不同库内,依旧是在一台机器上集中计算。对单机要求很高
把大量数据迁移到服务器上进行统一计算
从Hadoop开始,不仅仅是分布式存储,还是分布式计算(计算是一段逻辑性代码)
传统开发当中逻辑性代码是放在方法里的,如果把方法变成可序列化可网络传输的,
那么就可把方法传入每一台机器上,在数据所在的节点上,针对这台节点上的数据计算