Scala学习笔记
Scala学习笔记
一角残叶
人生如逆旅,我亦是行人
展开
-
Scala学习笔记(1)—— Scala 介绍和安装
1 Scala 介绍Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。1.1 特点优雅:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验速度快:Scala语言表达能力强,一行代码抵得上Java多行,开发速度快;Scala是静态编译的...原创 2018-10-11 08:55:03 · 185 阅读 · 0 评论 -
Scala学习笔记(13)——隐式转换
1 泛型[T <: UpperBound][T >: LowerBound][T <% ViewBound][T : ContextBound][+T][-T]1.1 案例1package cn.tzb.implictclass Pair[T <: Comparable[T]] { def bigger(first: T, second: T) ...原创 2018-10-16 09:34:16 · 174 阅读 · 0 评论 -
Scala学习笔记(1)—— 基础
1 val VS var原创 2018-12-20 17:07:13 · 192 阅读 · 0 评论 -
Scala学习笔记(2)—— Scala 函数
1 函数的定义def 方法名(参数名:参数类型):返回值类型 = { // 方法体 //方法体内的最后一行是返回值,不需要 return}当函数没有输入的参数,调用的时候可以不写括号package com.scalatest.scala.functionobject FunctionApp { def main(args: Array[String]): ...原创 2018-12-20 20:19:20 · 215 阅读 · 0 评论 -
Scala学习笔记(3)—— Scala面向对象
1 面向对象特点封装:属性、方法封装到类中;继承多态:父类引用指向子类对象,开发框架的基石package com.scalatest.scala.oopobject SimpleObjectApp { def main(args: Array[String]): Unit = { val person = new People() perso...原创 2018-12-20 22:29:50 · 226 阅读 · 0 评论 -
Scala学习笔记(4)—— Scala集合
1 数组1.1 定长数组类名() ==》 调用 Object 的apply方法1.2 可变数组package com.scalatest.scala.array//继承了 App ,不用写main方法了object ArrayApp extends App{ val b = scala.collection.mutable.ArrayBuffer[Int]()...原创 2018-12-21 10:18:31 · 224 阅读 · 0 评论 -
Scala学习笔记(5)—— Scala 模式匹配
1 模式匹配package com.scalatest.scala.patternimport scala.util.Randomobject MatchApp extends App { val names = Array("Mike", "John", "Jenny") val name = names(Random.nextInt(names.length))..原创 2018-12-21 15:52:18 · 199 阅读 · 0 评论 -
Scala学习笔记(6)—— Scala 函数高阶操作
1 Scala 函数高阶操作字符串的高级操作匿名函数curry函数高阶函数偏函数2 字符串高级操作多行Interpolationpackage com.scalatest.scala.advanceobject StringApp extends App { val s = "Hello: " val name = "Mike&原创 2018-12-21 17:12:58 · 221 阅读 · 0 评论 -
Scala学习笔记(7)—— Scala 隐式转换
1 隐式转换概述需求: 为一个已存在的类添加一个新的方法(不知道这个类的源码)java: 动态代理scala : 隐式转换(双刃剑)package com.scalatest.scala.hideobject ImplicitApp extends App { implicit def man2superman(man: Man): SuperMan = new Supe...原创 2018-12-22 14:31:09 · 231 阅读 · 0 评论 -
Scala学习笔记(8)—— Scala操作外部数据
1 Scala 读取文件package com.scalatest.scala.class09import java.net.URLimport scala.io.Sourceobject FileApp { def main(args: Array[String]): Unit = { val file = Source.fromFile("d:/test....原创 2018-12-22 15:37:05 · 273 阅读 · 0 评论 -
Scala学习笔记(12)—— scala 高级特性
1 高阶函数Scala混合了面向对象和函数式的特性,通常将可以做为参数传递到方法中的表达式叫做函数。在函数式编程语言中,函数是“头等公民”,高阶函数包含:作为值的函数、匿名函数、闭包、柯里化等等。1.1 作为值的函数可以像任何其他数据类型一样被传递和操作的函数,每当你想要给算法传入具体动作时这个特性就会变得非常有用。定义函数时格式:val 变量名 = (输入参数类型和个数) => 函...原创 2018-10-15 12:24:58 · 207 阅读 · 0 评论 -
Scala学习笔记(11)—— RPC 通信框架
1 通信业务逻辑定义2个类 Master, Worker。首先启动Master,然后启动WorkerWorker 启动后,在 preStart 方法中与 Master 建立连接,向 Master 发送注册,将 Worker 的信息通过 case class 封装起来发送给 Master.Master 接收 Worker 的注册消息后,将Worker 的信息保存起来。然后向Worker反馈注...原创 2018-10-14 16:05:37 · 328 阅读 · 0 评论 -
Scala学习笔记(2)—— Scala 基础(1)
1 Scala 基础1.1 声明变量object HelloScala { def main(args: Array[String]) { //使用 val 定义的变量值是不可以改变的,相当于 java 里的final val a=1 //使用 var 定义的变量是可变项,在Scala中鼓励使用 var s="mike" // scala 编译...原创 2018-10-11 17:13:21 · 457 阅读 · 0 评论 -
Scala学习笔记(3)—— scala wordcount
1 方法1lines.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1).map(t=>(t._1, t._2.size)).toList.sortBy(_._2).reversescala> val lines = List ("hello tom hello jerry",&qu原创 2018-10-11 19:32:58 · 548 阅读 · 0 评论 -
Scala学习笔记(4)—— scala 练习
1 练习1.1 创建一个Listscala> val lst0 = List(1,7,9,8,0,3,5,4,6,2)lst0: List[Int] = List(1, 7, 9, 8, 0, 3, 5, 4, 6, 2)1.2 将lst0中每个元素乘以10后生成一个新的集合scala> val lst1 = lst0.map(_ * 10)lst1: List[Int]...原创 2018-10-11 21:55:58 · 1622 阅读 · 0 评论 -
Scala学习笔记(5)—— scala 类、对象、继承、特质
1 类1.1 类的定义原创 2018-10-12 12:02:39 · 282 阅读 · 0 评论 -
Scala学习笔记(6)—— 模式匹配和样例类
Scala有一个十分强大的模式匹配机制,可以应用到很多场合:如switch语句、类型检查等。并且Scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配1 匹配字符串import scala.util.Randomobject CaseDemo1 extends App { val arr = Array("M", "J", "G") val name = arr(R..原创 2018-10-12 15:49:57 · 232 阅读 · 0 评论 -
Scala学习笔记(7)—— Actor 类
1 Scala Actor 介绍Scala中的Actor能够实现并行编程的强大功能,它是基于事件模型的并发机制,Scala是运用消息(message)的发送、接收来实现多线程的。使用Scala能够更容易地实现多线程应用的开发。(注:Scala Actor是scala 2.10.x版本及以前版本的Actor。Scala在2.11.x版本中将Akka加入其中,作为其默认的Actor,老版本的Ac...原创 2018-10-12 16:38:14 · 298 阅读 · 0 评论 -
Scala学习笔记(8)—— Actor版 wordcount
1 数据2 源码package wcimport scala.actors.{Actor, Future}import scala.collection.mutableimport scala.collection.mutable.ListBufferimport scala.io.Sourceclass Task extends Actor { override def ...原创 2018-10-12 22:47:57 · 248 阅读 · 0 评论 -
Scala学习笔记(9)——java多线程
1 java 多线程import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class ThreadPool { public static void main(String[] args) throws InterruptedException { ...原创 2018-10-13 10:09:29 · 280 阅读 · 0 评论 -
Scala学习笔记(10)—— Akka 实现简单 RPC 框架
1 Akka 介绍目前大多数的分布式架构底层通信都是通过RPC实现的,RPC框架非常多,比如前我们学过的Hadoop项目的RPC通信框架,但是Hadoop在设计之初就是为了运行长达数小时的批量而设计的,在某些极端的情况下,任务提交的延迟很高,所有Hadoop的RPC显得有些笨重。Spark 的RPC是通过Akka类库实现的,Akka用Scala语言开发,基于Actor并发模型实现,Akka具有高...原创 2018-10-14 10:58:48 · 310 阅读 · 0 评论 -
Scala学习笔记(9)—— Scala实战项目(1)- 环境搭建
1 项目需求1.1 数据库管理(java实现)default my-db1 my-db2id:数据库编号name : 数据库名称location : 数据库存放在 HDFS/S3/OSS 等文件系统上的目录 /user/hive/warehouse /user/hive/warehouse/my-db1.db1.2 表管理(scala语言实现)my-table1 my-ta...原创 2018-12-22 17:43:25 · 545 阅读 · 0 评论