![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
scala
文章平均质量分 58
Running_Tiger
这个作者很懒,什么都没留下…
展开
-
Scala 面向对象编程之对象
Scala 面向对象编程之对象1.Scala 中的 objectobject 相当于 class 的单个实例,通常在里面放一些静态的 field 或者 method; 在 Scala 中没有静态方法和静态字段,但是可以使用 object 这个语法结构来达到同样的目的。object 作用:存放工具方法和常量高效共享单个不可变的实例单例模式2.Scala中的伴生对象如果有一个 class 文原创 2018-03-03 19:35:59 · 278 阅读 · 0 评论 -
Scala中的下划线使用总结
Scala中的下划线使用总结1. 方法转化为函数例如:def m1(x:Int,y:Int)=x*y val f1=m1 _2. 集合中的每一个元素例如:val list=List(1,2,3,4)val list1=list.map(_ * 10)3. 获取元组Tuple中的元素例如: val t=("hadoop",3.14,100) t._1 t._2原创 2018-03-04 21:58:15 · 7396 阅读 · 6 评论 -
Scala 深入理解高阶函数
Scala 深入理解高阶函数1. 概念Scala 混合了面向对象和函数式的特性,我们通常将可以作为参数传递到方法中的表达式叫做函数。在函数式编程语言中,函数是“头等公民”,高阶函数包含:作为值的函数、匿名函数、闭包、柯里化等等。2. 作为值的函数可以像任何其他数据类型一样被传递和操作的函数,每当你想要给算法传入具体动作时这个特性就会变得非常有用。 定义函数时格式:val 变量名 = (输入参数原创 2018-03-04 22:18:01 · 7817 阅读 · 0 评论 -
Scala 深入理解隐式转换
Scala 深入理解隐式转换1. 隐式转换Scala 提供的隐式转换和隐式参数功能,是非常有特色的功能。是 Java 等编程语言所没有的功能。它可以允许你手动指定,将某种类型的对象转换成其他类型的对象或者是给一个类增加方法。通过这些功能,可以实现非常强大、特殊的功能。 Scala 的隐式转换,其实最核心的就是定义隐式转换方法,即 implicit conversion function。定义的隐原创 2018-03-04 23:08:41 · 331 阅读 · 0 评论 -
Scala 隐式转换案例(一)
Scala 隐式转换案例(一)让 File 类具备 RichFile 类中的 read 方法package cn.cheng.implic_demoimport java.io.Fileimport scala.io.Sourceobject MyPredef{ //定义隐式转换方法 implicit def file2RichFile(file: File)=new RichFile(f原创 2018-03-04 23:13:24 · 285 阅读 · 0 评论 -
Scala 隐式转换案例(二)
Scala 隐式转换案例(二)超人变身package cn.cheng.implic_democlass Man(val name:String)class SuperMan(val name: String) { def heat=print("超人打怪兽")}object SuperMan{ //隐式转换方法 implicit def man2SuperMan(man:Man)原创 2018-03-04 23:15:01 · 199 阅读 · 0 评论 -
Scala 隐式转换案例(三)
Scala 隐式转换案例(三)一个类隐式转换成具有相同方法的多个类package cn.cheng.implic_democlass A(c:C) { def readBook(): Unit ={ println("A说:好书好书...") }}class B(c:C){ def readBook(): Unit ={ println("B说:看不懂.原创 2018-03-04 23:16:21 · 201 阅读 · 0 评论 -
Scala 隐式转换案例(四)
Scala 隐式转换案例(四)员工领取薪水package cn.cheng.implic_demoobject Company{ //在object中定义隐式值 注意:同一类型的隐式值只允许出现一次,否则会报错 implicit val aaa="zhangsan" implicit val bbb=10000.00}class Boss { //注意参数匹配的类型原创 2018-03-04 23:17:44 · 186 阅读 · 0 评论 -
Scala Akka简介
Scala Akka简介Akka基于Actor模型,提供了一个用于构建可扩展的(Scalable)、弹性的(Resilient)、快速响应的(Responsive)应用程序的平台。 Actor模型:在计算机科学领域,Actor模型是一个并行计算(Concurrent Computation)模型,它把actor作为并行计算的基本元素来对待:为响应一个接收到的消息,一个actor能够自己做出一些决策原创 2018-03-05 08:36:02 · 678 阅读 · 0 评论 -
使用Akka实现简易的spark通信框架 实战(一)
使用Akka实现简易的spark通信框架 实战(一)1. 架构图2. 重要类介绍ActorSystem:在Akka中,ActorSystem是一个重量级的结构,他需要分配多个线程,所以在实际应用中,ActorSystem通常是一个单例对象,我们可以使用这个ActorSystem创建很多Actor。 注意:ActorSystem是一个进程中的老大,它负责创建和监督actorActorSystem原创 2018-03-05 08:43:46 · 1243 阅读 · 0 评论 -
Scala Actor并发编程WordCount
Scala Actor并发编程WordCount需求: 用 actor 并发编程写一个单机版的 WordCount,将多个文件作为输入,计算完成后将多个任务汇总,得到最终的结果。 大致步骤: 1、通过 loop +react 方式去不断的接受消息 2、利用 case class 样例类去匹配对应的操作 3、其中 scala 中提供了文件读取的接口 Source,通过调用其 fromFile原创 2018-03-04 21:33:18 · 390 阅读 · 0 评论 -
Scala Actor并发编程 实战(五)
Scala Actor并发编程 实战(五)结合 case class 样例类发送消息和接受消息 1、将消息封装在一个样例类中 2、通过匹配不同的样例类去执行不同的操作 3、Actor 可以返回消息给发送方。通过 sender 方法向当前消息发送方返回消息package cn.cheng.actorimport scala.actors.Actorcase class SyncMessage(原创 2018-03-04 00:32:45 · 272 阅读 · 0 评论 -
Scala Actor并发编程 实战(四)
Scala Actor并发编程 实战(四)使用 react 方法代替 receive 方法去接受消息 好处:react 方式会复用线程,避免频繁的线程创建、销毁和切换。比 receive 更高效 注意: react 如果要反复执行消息处理,react 外层要用 loop,不能用 whilepackage cn.cheng.actorimport scala.actors.Actorclass原创 2018-03-04 00:28:21 · 364 阅读 · 0 评论 -
Scala 面向对象编程之继承
Scala 面向对象编程之继承1. Scala 中继承(extends) 的概念Scala 中,让子类继承父类,与 Java 一样,也是使用 extends 关键字;继承就代表子类可继承父类的 field 和 method ,然后子类还可以在自己的内部实现父类没有的,子类特有的 field 和 method,使用继承可以有效复用代码;子类可以覆盖父类的 field 和 method,但是如果父原创 2018-03-03 20:31:09 · 265 阅读 · 0 评论 -
Scala 中面向对象编程之 trait
Scala 中面向对象编程之 trait1. 将trait 作为接口使用Scala 中的 trait 是一种特殊的概念;首先先将 trait 作为接口使用,此时的 trait 就与 Java 中的接口 (interface)非常类似;在 trait 中可以定义抽象方法,就像抽象类中的抽象方法一样,只要不给出方法的方法体即可;类可以使用 extends 关键字继承 trait,注意,这里不是原创 2018-03-03 21:40:29 · 242 阅读 · 0 评论 -
Scala模式匹配和样例类
Scala模式匹配和样例类Scala 有一个十分强大的模式匹配机制,可以应用到很多场合:如 switch 语句、类型检查等。并且 Scala 还提供了样例类,对模式匹配进行了优化,可以快速进行匹配。1. 匹配字符串package cn.cheng.casesimport scala.util.Randomobject CaseDemo01 extends App{ val arr =原创 2018-03-03 22:05:57 · 486 阅读 · 0 评论 -
Scala 中的协变、逆变、非变
Scala 中的协变、逆变、非变1. 协变、逆变、非变介绍协变和逆变主要是用来解决参数化类型的泛化问题。Scala 的协变与逆变是非常有特色的,完全解决了Java中泛型的一大缺憾;举例来说,Java中,如果有 A 是 B 的子类,但 Card[A]却不是 Card[B] 的子类;而 Scala 中,只要灵活使用协变与逆变,就可以解决此类 Java 泛型问题;由于参数化类型的参数(参数类型)是可变的,原创 2018-03-03 22:11:18 · 296 阅读 · 0 评论 -
Scala 中的上下界
Scala 中的上下界在指定泛型类型时,有时需要界定泛型类型的范围,而不是接收任意类型。比如,要求某个泛型类型,必须是某个类的子类,这样在程序中就可以放心的调用父类的方法,程序才能正常的使用与运行。此时,就可以使用上下边界 Bounds 的特性; Scala 的上下边界特性允许泛型类型是某个类的子类,或者是某个类的父类;(1) U >: T 这是类型下界的定义,也就是 U 必须是类型 T 的父类原创 2018-03-03 23:21:51 · 826 阅读 · 0 评论 -
Scala Actor 并发编程
Scala Actor 并发编程注:Scala Actor 是 scala 2.10.x 版本及以前版本的 Actor。 Scala 在 2.11.x 版本中将 Akka 加入其中,作为其默认的 Actor,老版本的 Actor 已经废弃。1. Scala Actor概念Scala 中的 Actor 能够实现并行编程的强大功能,它是基于事件模型的并发机制,Scala是运用消息的发送、接收来实现高原创 2018-03-03 23:28:04 · 440 阅读 · 0 评论 -
Scala Actor并发编程 实战(一)
Scala Actor并发编程 实战(一)定义一个 class 或者是 object 继承 Actor 特质,注意导包 import scala.actors.Actor重写对应的 act 方法调用 Actor 的 start 方法执行 Actor当 act 方法执行完成,整个程序运行结束package cn.cheng.actorimport scala.actors.Actorobj原创 2018-03-03 23:34:14 · 711 阅读 · 0 评论 -
Scala Actor并发编程 实战(二)
Scala Actor并发编程 实战(二)定义一个 class 或者是 object 继承 Actor 特质,注意导包 import scala.actors.Actor重写对应的 act 方法调用 Actor 的 start 方法执行 Actor通过不同发送消息的方式对 actor 发送消息act 方法中通过 receive 方法接受消息并进行相应的处理act 方法执行完成之后,程序退原创 2018-03-03 23:38:13 · 332 阅读 · 0 评论 -
Scala Actor并发编程 实战(三)
Scala Actor并发编程 实战(三)在 act 方法中可以使用 while(true)的方式,不断的接受消息。package cn.cheng.actorimport scala.actors.Actorclass MyActor1 extends Actor { override def act(): Unit = { while ( true) {原创 2018-03-03 23:42:28 · 350 阅读 · 0 评论 -
使用Akka实现简易的spark通信框架 实战(二)
使用Akka实现简易的spark通信框架 实战(二)1. 架构图2. 代码实现2.1 Master类package cn.cheng.sparkimport akka.actor.{Actor, ActorRef, ActorSystem, Props}import com.typesafe.config.ConfigFactoryimport scala.collection.mutablei原创 2018-03-05 08:51:50 · 695 阅读 · 0 评论