SCALA - 技术教程文章

Scala下Play框架学习笔记(Actions,Controllers and Results)

Scala下Play框架的学习是一件辛苦的事情,因为该框架比较新,scala语言也较新,所以中文资料很少,经过同事推荐,去了如下英文网站看资料:https://www.playframework.com/documentation/2.5.x/ScalaHome虽然我的同事以在云中飞的速度学完了,但对我来说还是任重而道远。Action是什么?由于Scala和Play有关的API都在play.api下面,所以其实Action的过程是这样的:play.api.mvc.Action(play.api.mvc.Request=> play.api.mvc.Result)...

Linux系统下C语言如何调用scalapack中的函数【代码】

在并行计算中经常需要调用scalapck(并行化的lapack)函数库里面的函数进行编程,这里简单介绍在C语言如何调用scalapck中的矩阵向量乘的函数。注意:scalapack中的函数是用fortran写的,矩阵是按列进行存储的。scalapack的链接需要用到blas,因此确保本机上安装好了blas、gfortran下面是一个矩阵向量乘法的例子(为了简单计算,该程序中设定进程数为4):#include <stdio.h> #include <string.h> #include <stdlib.h> #include "mpi.h"#...

scala的应用--UDF:用户自定义函数【代码】

在window10下安装了hadoop,用ida创建maven项目。 <properties><spark.version>2.2.0</spark.version><scala.version>2.11</scala.version><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_${scala.version}</artifactId><version>${spark.version}</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>sp...

scala多重界定

Scala 多重界定分为以下几种:1. T <: A with B T是A或B的子类 2. T >: A with B A或B是T的子类 一般不用3. T >: A <: B 同时有上界和下界 A下是界,B是上界 ,A是B的子类4. T:A : B 上下文界定 T必须同时满足存在AT和BT的隐试转换值5. T <% A <% B 视图界定 T既可以转换成B也可以转换成A 类型不可以有多个上界或下界,如果想有多个上界或下界,这样语...

6、scala面向对象-对象【代码】

一、对象1、objectobject,相当于class的单个实例,通常在里面放一些静态的field或者method,第一次调用object的方法时,就会执行object的constructor, 也就是object内部不在method中的代码,但是object不能定义接受参数的constructor。 object的constructor只会在其第一次被调用时执行一次, 以后再次调用就不会再次执行constructor了。object通常用于作为单例模式的实现,或者放class的静态成员,比如工具方法。### scala> :pas...

scala刷LeetCode--26 删除排序数组中的重复项【代码】

一、题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。二、示例示例 1给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 ...

Spark 入门(Python、Scala 版)【代码】【图】

本文中,我们将首先讨论如何在本地机器上利用Spark进行简单分析。然后,将在入门级水平探索Spark,了解Spark是什么以及它如何工作(希望可以激发更多探索)。最后两节将开始通过命令行与Spark进行交互,然后演示如何用Python写Spark应用,并作为Spark作业提交到集群上。同时也会提供相应的 Scala 版本。1、设置Spark环境在本机设置和运行Spark非常简单。你只需要下载一个预构建的包,只要你安装了Java 6+和Python 2.6+,就可以在Wi...

4-双向链表-Scala实现【代码】

import scala.util.control.Breaks.{break, breakable}object DoubleLinkedListDemo {def main(args: Array[String]): Unit = {val doubleLinkedList = new DoubleLinkedList()val node1 = new HeroNode2(1,"宋江","及时雨")val node2 = new HeroNode2(2,"卢俊义","玉麒麟")val node3 = new HeroNode2(3,"吴用","智多星")val node4 = new HeroNode2(4,"林冲","豹子头")val node5 = new HeroNode2(4,"林小冲","豹子头")doubleLinked...

快学Scala习题解答—第四章 映射和元组【图】

4 映射和元组 4.1 设置一个映射,其中包含你想要的一些装备,以及它们的价格。然后构建另一个映射,采用同一组键,但是价格上打9折 映射的简单操作 Shell代码 scala> val map = Map("book"->10,"gun"->18,"ipad"->1000) map: scala.collection.immutable.Map[java.lang.String,Int] = Map(book -> 10, gun -> 18, ipad -> 1000) scala> for((k,v) <- map) yield (k,v * 0.9) res3: scala.collection.immutable.Map[java.lang....

【Scala】Scala之Numbers【代码】【图】

一、前言  前面已经学习了Scala中的String,接着学习Scala的Numbers。二、Numbers  在Scala中,所有的数字类型,如Byte,Char,Double,Float,Int,Long,Short都是对象,这七种数字类型继承AnyVal特质,这七种数字类型与其在Java中有相同的范围,而Unit和Boolean则被认为是非数字值类型,Boolean有false和true两个值,你可以获取到各个数字类型的最值。  复杂的数字和日期  如果需要更强大的数类,可以使用spire,scalal...

快学Scala 1

1.  Scala解释器读到一个表达式,对它进行求值,将它打印出来,接着再继续读下一个表达式。这个过程被称作“读取-求值-打印-循环”,即REPL。 2.  从技术上来讲,scala程序并不是一个解释器,实际发生的是:你输入的内容被快速地编译成字节码,然后这段字节码交由Java虚拟机执行。 3.  声明值和变量  val answer = 8 * 5 + 2 //val定义常量  answer:Int = 42  var counter = 0 //var声明变量  counter = 1 //ok,...

第5课:彻底精通Scala隐式转换和并发编程及Spark源码阅读【图】

隐式转换函数implicit def function例如implicit def rddToPairRDDFunctions[K, V](rdd: RDD[(K, V)])scala> class Person(val name: String)defined class Personscala> class Enginner(val name: String, val salary: Double) { | def code = println(name + " Coding ...") | }defined class Enginnerscala> implicit def person2Engineer(p: Person):Enginner = { | println("person2Enginner " + p.name) | n...

Chisel3 - Scala语言专家【图】

https://mp.weixin.qq.com/s/j8mt_qvwliKIKtlN6JcyqQ 介绍Intellij IDEA安装Scala插件后,如何在阅读和编码两方面助益开发者。 1. 语言专家 Scala是一门多范式编程语言,在支持面向对象编程的同时,也支持函数式语法。再加上隐式规则和宏等特性,以及众多的语法糖。使得Scala的学习曲线异常陡峭。 除了语言规范、教程图书、网络资料之外,一个强大的能够智能提示补全、时时检查提醒的编辑器或者IDE,可以极大的提高学习速度和编码...

Scala:Functions and Closures【代码】

1object Functions {2 def main(args: Array[String]) {3// 本地函数 4 def localFun(msg: String) = println(msg)5 localFun("Hi")6 7// 函数对象 8 var list = List(1, 2, 3)9 list.foreach((x: Int) => println(x)) 10 list.foreach(x => println(x)) 11 list.foreach(println(_)) 12 list.foreach(println _) 13 list.foreach(println) 14 list.foreach(localFun) 1516// 部分应用函数,将函...

scala 命名规范【代码】

包名规范一般是小写字母、数字、点组成不能以数字开头不能使用关键字示例com.公司名.项目名.模块名 com.guigu.oa.model com.sina.user 类名规范数字、字母、下划线、美元符号组成一般以大写字母开头一般使用驼峰命名法不能使用关键字示例Person EduAnalysisobject规范数字、字母、下划线组成一般以小写字母开头一般使用驼峰命名法不能使用关键字示例packageImport BeanPropertyDemo 变量规范数字、字母、下划线组成一般由小写字母开...

Scala类型参数中协变(+)、逆变(-)、类型上界(<:)和类型下界(>:)的使用【图】

转自:http://fineqtbull.iteye.com/blog/477994#bc2364938有位je上的同学来短信向我问起了Scala类型参数中协变、逆变、类型上界和类型下界的使用方法和原理,自己虽然也刚学不久,在主要调查了《Programing in Scala》的19章后,试着在下面做一个总结。如有错误之处还请各位指正。 先说说协变和逆变(实际上还有非变)。协变和逆变主要是用来解决参数化类型的泛化问题。由于参数化类型的参数(参数类型)是可变的,当两个参数化类...

Scala实践3【代码】

一、函数式对象1.1 rational类的规格和创建Rational类来源于有理数(rational number),来表示n(分子)/d(分母)的数字,同时对有理数的运算(加减乘除)建模,还具备归元化的特点。下例子没有建模的:scala> val oneHalf=new Rational(1,2) oneHalf: Rational = 1/2 scala> val twoThirds=new Rational(2,3) twoThirds: Rational = 2/3 scala> (oneHalf /7)+(1 twoThirds) <console>:13: error: value / is not a member of ...

Scala 学习笔记之隐式参数和隐式转换并用【代码】

隐式转换条件:1. 当表达式类型与预期的类型不同时2.当对象访问一个不存在的成员时3.当对象调用某个方法,而该方法的参数声明与传入参数不相匹时。隐式转换搜索范围:1. 位于源火目标类型伴生对象中的隐式函数。2. 位于当前作用域可以以单个标识符指代的隐式函数。隐式参数条件:函数中参数带有implicit隐式参数搜索范围:在当前作用域所有可以用单个标识符指代的满足类型要求的val和def。与所要求类型相关联的类型的伴生对象。隐式...

Scala 基础(一):各平台安装【图】

一、win7环境安装1.安装jdk直接双击,安装到想要的环境目录2.修改环境变量2.1新建系统变量 JAVA_HOME 输入jdk安装目录 2.2 修改PATH修改PATH:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;2.3 新建classpath将变量值修改为:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar3.安装ScalaWindows scala一键安装包:链接:https://pan.baidu.com/s/1KKoDw1uotDe1tXwADo2fYg提取码:zv9e双击后会自动配置环境变量安装window环境完成,注销或者重...

Scala 环境搭建【代码】【图】

下载安装包1,)下载java jdk,推荐jdk1.8;2,)下载scala安装包:http://www.scala-lang.org/;3,)下载IDE:ide可以选择两种:3.1,)Scala IDE for eclipse:http://scala-ide.org/3.2,)idea:https://www.jetbrains.com/idea/我们这里选择idea安装后,环境变量配置:JAVA_HOME C:\Program Files\Java\jdk1.8.0_60CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jarSCALA_HOME C:\Program Files (x8...

Scala学习笔记(三)【图】

无参方法功能:将方法的定义转换为属性字段的定义;作用范围:方法中没有参数,并且方法仅能通过读取所包含的对象属性去访问可变状态,而不改变可变状态,就可使用无参方法;例子:abstract class Element{ def texts:String } class Sub1Element(text:String) extends Element{ val texts:String = text } object RunApplication{ def main(args:Array[String]){ var node:...

Spark程序进行单元测试-使用scala【代码】【图】

Spark 中进行一些单元测试技巧:最近刚写了一点Spark上的单元测试,大概整理了一些rdd测试spark程序一般从集群中读取数据然后通过rdd进行转换,这其中涉及到集群,每次修改bug,上传到集群再运行测试,代价还是挺大;所以尽可能先本地进行单元测试,以减少在集群上运行时错误,特别是map等各种tranforms动作的逻辑错误;以下示例用于测试本地返回rdd相关的方法(利用spark本地模式进行单元测试) Tips: //定义一个简单的wordcountobje...

使用maven编译scala项目时栈溢出【代码】

使用maven对scala项目进行编译时,有时会出现StackOverflowError的错误,无法进行打包。而信息通常会有如下信息: [INFO] Compiling {个数} source files to {编译路径} at {时间戳} [ERROR] error: java.lang.StackOverflowError {XXX}{个数}:编译的文件个数{编译路径}:编译的目标路径地址{时间戳}:编译的时间戳{XXX}:重复的方法调用。原因有很多,需要具体分析XXX的内容。在代码是合理的情况下,最简单的办法是修改编译插件的...

scala容器使用【代码】

花了两个小时左右,学习了一下scala语言, 由于scala运行在jvm之上, 可以使用java容器也可以使用scala自带的容器.import java.util import java.util.{HashMap => JavaHashMap} import scala.collection.mutable.HashMap import java.util.{ArrayList => JavaList} // renameobject tewst {def testarry(): Unit = {print("scala array")val buf = new scala.collection.mutable.ArrayBuffer[Int]for (i <- 0 to 10) {buf += i}bu...

Scala集合常用方法解析【代码】

// Java 集合 : 数据的容器,可以在内部容纳数据 // List : 有序,可重复的 // Set : 无序,不可重复 // Map : 无序,存储K-V键值对,key不可重复 // scala 集合 : 可变集合(ArrayList) & 不可变集合(数组) // String(不可变字符串), (StringBuilder, StringBuffer)(可变字符串) val list: List[Int] = List(1,2,3,4)// 反转集合//println(list.reverse) //List(6, 5, 4, 3, 2, 1) //...

scala下使用akka计算pi【图】

Akka 是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Java 和 Scala 的 Actor 模型应用。它已经成功运用在电信行业。系统几乎不会宕机(高可用性 99.9999999 % 一年只有 31 ms 宕机。用akka计算pi,计算公式:这样,我们把这个公式每连续的elements个分成一段,一共分成message段。然后开worker个actor同时计算,把结果合并。算出最终结果和耗时。一:计算某一段的actor我们需要一个工作actor,用来计算某一段的和,并...

scala4-数组【图】

1、数组1)var val 关心变量的地址是否改变(val 内存地址空间不变,值可以改变;var 可以变)2)用val修饰Array,数组里面的值是可以改变的3)定长数组(不能添加数据,但是可以改变里面的值)和变长数组(里面可以添加数据) 变长数组 数组的insert和remove 2、数组遍历 yield将原始的数据进行转换会产生一个新的数组,原始的数组不变 数组倒着遍历,每个数值在乘以10 变成一个变长数组(toBuffer),并且加一个数值 -----...

每天学习一点Scala05_函数

Scala将函数当作一等公民;一个函数可以像一个变量一个被使用;函数可以作为输入参数传给另一个函数;函数可以定义为一个匿名函数字面量,就像字符串字面量;函数可以被赋给一个变量;可以在一个函数内定义函数;函数可以作为另外一个函数的返回值;在Scala中,使用关键字def定义函数;格式如下:def 函数名(参数1:数据类型,参数2:数据类型):输出类型 = { 函数体 }例:def add(firstInput:Int,secondInput:Int):Int = { val sum = firstInput ...

Scala笔记整理(九):Actor和AKKA【代码】

[TOC] 概述? Scala的Actor有点类似于Java中的多线程编程。但是不同的是,Scala的Actor提供的模型与多线程有所不同。Scala的Actor尽可能地避免锁和共享状态,从而避免多线程并发时出现资源争用的情况,进而提升多线程编程的性能。Spark中使用的分布式多线程框架,是Akka,是Scala的一种多线程的类库。Akka也实现了类似Scala Actor的模型,其核心概念同样也是Actor。Scala Actor模型已经在2.1.0的时候还在用,但是在2.1.1的时候已...

8. Scala面向对象编程(高级部分)【代码】

8.1 静态属性和静态方法  8.1.1 静态属性-提出问题       有一群小孩在玩堆雪人,不时有新的小孩加入,请问如何知道现在共有多少人在玩?请使用面向对象的思想,编写程序解决  8.1.2 基本介绍      -Scala中静态的概念-伴生对象        Scala语言是完全面向对象(万物皆对象)的语言,所以并没有静态的操作(即在Scala中没有静态的概念)。但是为了能够和Java语言交互(因为Java中有静态概念),就产生了一种特...