
Scala
文章平均质量分 84
匿名啊啊啊
这个作者很懒,什么都没留下…
展开
-
Scala使用(冒泡排序、单词计数、随机数)
冒泡排序:用Scala编写package Demoobject BubbleSort { def main(args: Array[String]): Unit = { val arr = Array(2,3,44,1,3,4) for (i <- 0 until(arr.length)){ for (j <- 0 until(arr.lengt...原创 2018-04-17 20:24:11 · 498 阅读 · 0 评论 -
Scala学习(九)Scala的泛型、上界、下届
一、泛型(1)泛型的介绍泛型用于指定方法或类可以接受任意类型参数,参数在实际使用时才被确定,泛型可以有效地增强程序的适用性,使用泛型可以使得类或方法具有更强的通用性。泛型的典型应用场景是集合及集合中的方法参数,可以说同java一样,scala中泛型无处不在,具体可以查看scala的api。 (2)泛型类、泛型方法泛型类:指定类可以接受任意类型参数。 泛型方法:指定方法可以接受任意类型参数。(3)示...原创 2018-04-21 22:01:07 · 7743 阅读 · 1 评论 -
Scala学习(八)Scala的隐式转换和隐式参数
一、概念Scala 2.10引入了一种叫做隐式类的新特性。隐式类指的是用implicit关键字修饰的类。在对应的作用域内,带有这个关键字的类的主构造函数可用于隐式转换。隐式转换和隐式参数是Scala中两个非常强大的功能,利用隐式转换和隐式参数,你可以提供优雅的类库,对类库的使用者隐匿掉那些枯燥乏味的细节。二、作用隐式的对类的方法进行增强,丰富现有类库的功能三、隐式参数1)关键字:implicat2...原创 2018-04-21 21:05:34 · 406 阅读 · 1 评论 -
Scala学习(七)Scala的柯里化及其应用
一、概念柯里化(currying, 以逻辑学家Haskell Brooks Curry的名字命名)指的是将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数作为参数的函数。 在Scala中方法和函数有细微的差别,通常编译器会自动完成方法到函数的转换。二、Scala中柯里化的形式Scala中柯里化方法的定义形式和普通方法类似,区别在于柯里化方法拥有多组参数列表,...原创 2018-04-21 19:01:51 · 1773 阅读 · 0 评论 -
Scala学习(六)Scala的类、对象、继承、特质
一、类(1)类的定义scala语言中没有static成员存在,但是scala允许以某种方式去使用static成员。这个就是伴生机制,所谓伴生,就是在语言层面上,把static成员和非static成员用不同的表达方式,class和object,但双方具有相同的package和name,但是最终编译器会把他们编译到一起,这是纯粹从语法层面上的约定。通过javap可以反编译看到。另外一个小魔法就是单例,...原创 2018-04-21 18:45:11 · 1162 阅读 · 1 评论 -
Scala学习(五)Scala的关键字Lazy
Scala中使用关键字lazy来定义惰性变量,实现延迟加载(懒加载)。 惰性变量只能是不可变变量,并且只有在调用惰性变量时,才会去实例化这个变量。在Java中,要实现延迟加载(懒加载),需要自己手动实现。一般的做法是这样的:public class JavaLazyDemo { private String name; //初始化姓名为huangbo private St...原创 2018-04-21 17:23:55 · 201 阅读 · 0 评论 -
Scala学习(四)Scala的数组、映射、元组、集合
一、数组(1)定长数组和变长数组import scala.collection.mutable.ArrayBufferobject TestScala { def main(args: Array[String]) { //初始化一个长度为8的定长数组,其所有元素均为0 val arr1 = new Array[Int](8) //直接打印定长数组,内容为数组的ha...原创 2018-04-21 17:19:18 · 385 阅读 · 0 评论 -
Scala学习(三)Scala的基本使用
一、Scala概述scala是一门多范式编程语言,集成了面向对象编程和函数式编程等多种特性。scala运行在虚拟机上,并兼容现有的Java程序。Scala源代码被编译成java字节码,所以运行在JVM上,并可以调用现有的Java类库二、第一个Scala程序Scala语句末尾的分号可写可不写HelloSpark.scalaobject HelloSpark{ def main(args:Ar...原创 2018-04-21 15:07:16 · 390 阅读 · 0 评论 -
Scala学习(二)使用IDEA开发Scala
目前Scala的开发工具主要有两种:Eclipse和IDEA,这两个开发工具都有相应的Scala插件,如果使用Eclipse,直接到Scala官网下载即可http://scala-ide.org/download/sdk.html。由于IDEA的Scala插件更优秀,大多数Scala程序员都选择IDEA,可以到http://www.jetbrains.com/idea/download/下载,点击...原创 2018-04-21 13:21:08 · 606 阅读 · 0 评论 -
Scala学习(一)Scala的安装
1、Scala下载版本选择,看Spark官网http://spark.apache.org/docs/latest/spark2.3.0版本是用2.11版本的Scala进行开发的,所以此处下载Scala2.11的版本Scala下载地址:http://www.scala-lang.org/download/all.html2、双击安装即可默认安装即可:3、检查Scala版本...原创 2018-04-21 13:17:16 · 262 阅读 · 0 评论 -
Scala:Akka实现简单RPC通信
目标:简单模拟Spark的通信机制,多个worker向Master注册并发送心跳,Master定时清理超时的worker。具体流程如下:1、启动Master并开启清空超时Worker的定时任务2、Worker启动的时候,在preStart方法中连接Master,并向Master注册自己的相关信息3、Master收到worker的注册并返回自己的url给Worker,表示该Worker注册成功4、W...原创 2018-04-19 21:21:23 · 1304 阅读 · 0 评论 -
Scala笔记
1、柯里化柯里化(Currying)指的是将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数为参数的函数。实例:首先我们定义一个函数:def add(x:Int,y:Int)=x+y那么我们应用的时候,应该是这样用:add(1,2)现在我们把这个函数变一下形:def add(x:Int)(y:Int) = x + y那么我们应用的时候,应该是这样用:add(...原创 2018-04-18 21:56:41 · 209 阅读 · 0 评论 -
Scala学习(十)Scala的Actor
一、Scala中的并发编程(1)Java中的并发编程①Java中的并发编程基本上满足了事件之间相互独立,但是事件能够同时发生的场景的需要。 ②Java中的并发编程是基于共享数据和加锁的一种机制,即会有一个共享的数据,然后有若干个线程去访问这个共享的数据(主要是对这个共享的数据进行修改),同时Java利用加锁的机制(即synchronized)来确保同一时间只有一个线程对我们的共享数据进行访问,进而...原创 2018-04-21 22:13:52 · 225 阅读 · 0 评论