Scala Actor入门】的更多相关文章

介绍 Scala的Actor类似于Java中的多线程编程.但是不同的是,Scala的Actor提供的模型与多线程有所不同.Scala的Actor尽可能地避免锁和共享状态,从而避免多线程并发时出现资源争用的情况,进而提升多线程编程的性能.此外,Scala Actor的这种模型还可以避免死锁等一系列传统多线程编程的问题. Spark中使用的分布式多线程框架,是Akka.Akka也实现了类似Scala Actor的模型,其核心概念同样也是Actor.因此只要掌握了Scala Actor,那么在Spar…
Scala快速入门到精通  视频教程 百度云网盘下载地址 Scala快速入门到精通 下载地址链接:https://pan.baidu.com/s/1bqGIKyF 密码:ojwd…
1.对于上一篇讲解的scala的一些补充 val files = Array[String]("a.txt","b.txt","c.txt") for(f <- files){xxxx} 目标一:熟悉Scala Actor并发编程 目标二:为学习Akka做准备 注:我们现在学的Scala Actor是scala 2.10.x版本及以前版本的Actor. Scala在2.11.x版本中将Akka加入其中,作为其默认的Actor, 老版本的Ac…
scala快速入门之文档注释 1.在项目栏的目录树中找到该源码,右击点击Show in Explorer, 即可找到该源码的本地路径,在路径中输入cmd 2.执行scaladoc -d  生成文档注释文件保存的本地路径 该源码的文件名 例如:我这里执行scaladoc -d d:\mydoc Comment.scala 3.在mydoc目录中生成如下所示的文件,点击index.html 4.点击index.html即可出现如下图所示页面…
本篇文章首发于头条号Scala快速入门 - 基础语法篇,欢迎关注我的头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech)获取更多干货,也欢迎关注我的CSDN博客. Scala是一门多范式编程语言,集成了面向对象和函数式语言的特性.本篇文章将以代码示例的形式简单介绍一下Scala语言的基础语法. 声明值和变量 // val声明的变量是不可变的 val str1 = "Hello World!" val str2 : String = &…
[学习笔记] Windows Eclipse Scala的入门HelloWorld 有关带scala版本的eclipse4.7的下载, 你可以直接去: http://scala-ide.org/download/sdk.html ​ 下载下来后是:scala-SDK-4.7.0-vfinal-2.12-win32.win32.x86_64.zip,解压,展开.其实就是一个带着scala版本的64位的eclipse47(oxygen).进入目录中, 双击eclipse图标. 文章转载自原文:htt…
Scala快速入门(四)--继承.接口 一.继承 1.继承的概念:省略 2.模板: class Person(n:String,a:Int) { var name:String=n var age:Int=a def showInfo():Unit={ println("学生信息如下") println("名字:"+name) println("年龄:"+age) } } class Student(n:String,a:Int) extends…
没有套路真的是送!! 想要学好大数据,scala语言是必不可少的,spark和kafka等大数据重要组件都是用scala写的,想要彻底搞懂这些组件是如何运作的必须得看源码,而学习scala是看源码的必经之路.学习scala的途径基本都是自学,毕竟据我所知目前大学是没有这一门学科的,为了能更快入门,大叔找了份视频资料给大家.   多啰嗦两句,一个好的程序猿的基本素养是学习能力和自驱力.视频给了你们,能不能坚持下来学习,就只能靠自己了,另外大叔每周会不定期更新<每日五分钟搞定大数据>原创系列,感谢…
原文地址 本文只是带你进入 Scala 的世界,包括安装.不可变量 val.可变量 var.定义类.集合(包括列表(list).集(set).映射(map))以及集合遍历和集合库(能达到并行/并发效果). 题外话,如果 Java 争气的话,还就真不会出现像 Scala 这些语言.对于函数式编程风格的支持,尤其是对于 Lambda 表达式的支持,能减少必须要编写的逻辑无关的样板代码,让程序员集中精力任务本身.而 Java 对 Lamdba 表达式的支持到 JavaSE8 才实现(你可以查一下 Ja…
摘要 当面向对象遇到函数式编程,这就是Scala.简练的语言描述与简单的例子相辅相成,希望能够对大家学习Scala有所帮助. scala 入门 定义 Scala语言是一种面向对象语言,同时又结合了命令式(imperative)和函数式(functional)编程风格.官网描述:Object-Oriented Meets Functional(面向对象遇到函数式编程). 安装 下载地址http://www.scala-lang.org/download/ 当前版本2.11.4 设置环境变量 exp…
scala 最吸引人的一点就是actor并发编程了.但是纵观scala官方文档,baidu文档,IBM文档都写的通过字符串传呀传,如果用作actor编程说明当然没有问题.但是在正式开放中,光传字符串就显的势单力薄了. 所以如何传对象呢? 先看通过字符串传递消息的模型: 消息接收类: import scala.actors.Actor import org.andy.rtbd.actor.ActorDeal class ActorRev1 extends Actor{ def act()={ wh…
Scala学习——类 简单类和无参方法 class Counter { private var value = 0 // 必须初始化字段 def increment() { value += 1 } // 方法默认公有 def current() = value } Scala中的类不声明为public,一个Scala源文件中可以有多个类.   val myCounter = new Counter // 或new Counter() myCounter.increment() 调用无参方法时,…
学习Scala——映射和元组 映射和和元组,也就是Maps和Tuples.Map这东西应该都挺明白的,就是键值对的集合.而元组,tuple,这东西并不是每个语言都有(Python中是有的,不过当时学的时候没有完全分清楚). 在Scala中,元组是n个对象的一个聚集(Map是n=2个对象的聚集),里面的内容不需要都是相同类型的. 构造Map 在Scala中,Map是对偶(算是键值对的另一个说法吧)的集合.->操作符用来创建对偶,"Alice" -> 10产出 ("A…
简单类和无参方法 class Counter { private var value = 0 // 必须初始化字段 def increment() { value += 1 } // 方法默认公有 def current() = value } Scala中的类不声明为public,一个Scala源文件中可以有多个类. val myCounter = new Counter // 或new Counter() myCounter.increment() 调用无参方法时,圆括号是可写可不写的.推荐…
import scala.util.control._ import java.util.Date object Test { def main(args: Array[String]) { // var a = 10; // var b = 20; // var c = 25; // var d = 25; // println("a + b = " + (a + b) ); // println("a - b = " + (a - b) ); // printl…
首先需要Scala开发环境的搭建,网上自己找教程. 声明常量与变量 val foo = 0 // 常量 var bar = 0 // 变量 在Scala中,更加鼓励使用val来进行声明,也就是推荐使用常量.在大部分时候不需要分号,看自己便好…虽然是强静态类型的语言,但是却并没有写出类型——这就是类型推断. 也可以指定类型: val spark: String = "Hello Scala" 多个的同时声明: val xInt, yInt = 100 // xInt, yInt都声明为1…
在Scala中映射之键值对的集合,元组是n个对象的聚集,但是对象的类型不一定相同 本节内容要点 Scala中映射的创建,遍历和查询 如何从可变和不可变映射中做出选择 Scala映射和Java映射见的互操作 Scala中元组的使用 一.构造映射 我们可以这样来构造一个映射: val scores = Map("ysl"->100,"wdd"->90) 上述代码构造一个不可变的Map[String,Int],其值不可以被改变.如果需要创建一个可变的映射,可以…
1. 数组 1.1 定长数组 scala.Array 是定长的可变的索引型集合, JVM 中, Scala 的 Array 是以 Java 数组方式实现. String 对应 java.lang.String, Int, Double或其他与 Java 中基本类型对应数组都有基本类型数组, 比如说 Array(1, 2) 在 JVM 中就是一个 int[]. val arr1 = new Array[Int](10) val arr2 = Array(1, 3) // 调用apply方法 arr…
 Scalable 编程语言 纯正的的面向对象语言 函数式编程语言 无缝的java互操作 scala之父 Martin Odersky 1. 函数式编程 函数式编程(functional programming) 或称函数程序设计,又称泛函编程,是一种编程范型 它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象. 函数编程语言最重要的基础是λ演算(lambda calculus), 而且λ演算的函数可以接受函数当作输入(引数)和输出(传出值). 函数式编程强调程序执行的结果而非…
Actor 为什么需要Actor? Actor的本质即万物皆Actor, Actor之间只有发送消息这一种通信方式.例如,无论是管理员让工作者干活,还是工作者把成果交还给管理员,它们之间也要通过发送消息的方式来传递信息.这么做看似不如直接方法调用来的直接,但是由于大量的消息可以同时执行.同样,消息让Actor之间解耦,消息发出之后执行成功还是失败,需要耗费多少时间,只要没有消息传递回来,这一切都和发送方无关.Actor模型的消息传递形式简化了并行程序的开发,使开发人员无需在共享内存(确切地说,其…
高阶函数 Scala中,由于函数时一等公民,因此可以直接将某个函数传入其他函数,作为参数.这个功能是极其强大的,也是Java这种面向对象的编程语言所不具备的. 接收其他函数作为函数参数的函数,也被称作高阶函数 val sayHelloFunc =(name:String) => println("Hello,"+name) def greeting(func:(String)=>Unit,name:String){func(name)} greeting(sayHelloF…
trait调用链 Scala中支持让类继承多个Trait后,依次调用多个Trait中的同一个方法,只要让多个trait的同一个方法中,在最后都执行super.方法即可 类中调用多个trait中都有这个方法时,首先会从最右边的trait的方法开始执行,然后依次往左执行,形成一个调用链条 这种特性非常强大,其实就相当于设计模式中的责任链模式的一种具体实现依赖 trait Handle{ def handle(data:String){} } trait DataValidHandler extend…
Scala中Trait是一种特殊概念 首先我们可以将Triat做为接口来使用,此时的Triat就与java中的接口非常相似 在Triat中可以定义抽象方法,就与抽象类中的抽象方法一样,只要不给出具体的实现即可 类可以使用extend是关键字来继承Triat,注意这里不是Implement,而是extends,在Scala中没有Implement的概念,无论是继承还是Triat都是extends 类继承Triat后,必须实现其中的抽象方法,实现是不需要override关键字 Scala不支持对类进…
对象 Object,相当于class单个实例,通常在里面放一些静态的filed或method 第一次调用object方法时候,就会执行object的constructor,也就是Object中不在method中的代码,但是Object不能定义接收参数的constructor 注意,Object的constructor只会在第一次被调用的时执行一次,以后再次调用就不会执行construtctor了 object通常作为单例模式来实现,或者存放静态成员,例如: object Person{ priv…
创建Map //创建一个不可变的Map val ages = Map("Leo" -> 30,"Jen" ->25,"Jack" ->23) ages("Leo") =31 //创建一个可变的Map val ages =scala.collection.mutable.Map("Leo" ->30,"Jen" ->25,"Jack" -&…
在Scala中,Array代表的含义与Java类似,也是长度不可改变的数组.此外,由于Scala与java都是运行在JVM中,双方可以互相调用,因此Scala数组底层实际上是java数组.列如字符串数组java的String[],整数的数组int[]. val a = new Array[Int](10) val a = new Array[String](10) 可以直接使用Array()创建数组,元素类型自动推断 val a = Array("Hello","world&…
过程: 在Scala中,定义函数时,如果函数体直接包裹在花括号里面,而没有使用=连接,则函数的返回值类型就是Unit.这样的函数就被称之为过程. 过程通常用于不需要返回值类型的函数. 过程还有一种写法,就是将函数的放回值类型定义为Unit. def sayHello(name:String) = "Hello,"+name #返回类型是String def sayHello(name:String) {print("Hello,"+name);"Hello…
scala的语法写起来是非常的舒服的,相比java来说,简便许多.而Java在scala面前就显的略微有些笨重了. 接下来我们看一下scala版的wordcount import scala.io.Source object testWC { def main(args: Array[String]): Unit = { // 读取D:\Demo\hadoop\input\word.txt val so_1 = Source.fromFile("D:\\Demo\\hadoop\\input\\…
# 写在前面: 准备开始学spark,于是准备在IDE配一个spark的开发环境. 嫌这篇格式不好的看这里链接 用markdown写的,懒得调格式了,么么哒 # 相关配置: ## 关于系统 * mac os10.12 * intellj IDEA ## 关于我 * scala&函数式编程零基础 * 会hadoop, java, maven # 失败的经验1 * 脑子一热,用sbt替换了maven.但事实是 1. 国内的sbt自动下载慢哭(用maven配国内镜像简直快到飞起,感谢阿里爸爸 2. s…
1.hello world程序 object HelloWorld { def main(args: Array[String]) { println("Hello,World!") } } 注意 语句末尾的分号通常是可选的. 语句末尾的分号通常是可选的. 分号是表达式分隔符,它们是推断的. Scala将行的结尾视为表达式的结尾,除非它可以推断表达式继续到下一行. Scala程序处理从主方法开始,这是每个Scala程序的一个强制性部分. 主要方法未标记为静态. 主要方法是对自动实例化的…