Scala
卡其色的夏日
大数据爱好者
展开
-
11.大数据技术之Scala_十八章:并发编程Akka(终)
十八 并发编程Akka18.1 Akka 介绍1) Akka 是 JAVA 虚拟机 JVM 平台上构建高并发、分布式和容错应用的工具包和运行时,你可以 理解成 Akka 是编写并发程序的框架。2) Akka 用 Scala 语言写成,同时提供了 Scala 和 JAVA 的开发接口。3) Akka 主要解决的问题是:可以轻松的写出高效稳定的并发程序,程序员不再过多的考虑线程、锁和资源竞争等细节。18.2 Actor 模型用于解决什么问题1) 处理并发问题关键是要保证共享数据的一致性和原创 2020-08-19 11:35:00 · 160 阅读 · 0 评论 -
10.大数据技术之Scala_十七章:高级类型
十七 高级类型17.1 类型与类的区别在Java里,一直到jdk1.5之前,我们说一个对象的类型(type),都与它的class是一一映射的,通过获取它们的class对象,比如 String.class, int.class, obj.getClass() 等,就可以判断它们的类型(type)是不是一致的。而到了jdk1.5之后,因为引入了泛型的概念,类型系统变得复杂了,并且因为jvm选择了在运行时采用类型擦拭的做法(兼容性考虑),类型已经不能单纯的用class来区分了,比如 List<..原创 2020-08-18 16:04:58 · 144 阅读 · 0 评论 -
9.大数据技术之Scala_十五章到十六章:隐式转换/文件和正则表达式
十五 隐式转换15.1 隐式转换隐式转换函数是以implicit关键字声明的带有单个参数的函数。这种函数将会自动应用,将值从一种类型转换为另一种类型。 implicit def a(d: Double) = d.toInt //不加上边这句你试试 val i1: Int = 3.5 println(i1) 15.2 利用隐式转换丰富类库功能如果需要为一个类增加一个方法,可以通过隐式转换来实现。比如想为File增加一个read方法,可以如下定义:..原创 2020-08-18 16:03:38 · 119 阅读 · 0 评论 -
8.大数据技术之Scala_十三到十四章:注释及类型参数
十三 注解注解就是标签。标签是用来标记某些代码需要特殊处理的。处理的手段可以在代码运行时操作,也可以在编译期操作。13.1 什么可以被注解1)可以为类,方法,字段局部变量,参数,表达式,类型参数以及各种类型定义添加注解 @Entity class Student @Test def play() {} @BeanProperty var username = _ def doSomething(@NotNull message: String) ...原创 2020-08-18 16:01:55 · 217 阅读 · 0 评论 -
7.大数据技术之Scala_十二章:特质
十二 特质12.1 不允许多重集成所有的面向对象的语言都不允许直接的多重继承,因为会出现“deadly diamond of death”问题。Scala提供了特质(trait),特质可以同时拥有抽象方法和具体方法,一个类可以实现多个特质。12.2 当做接口使用的特质特质中没有实现的方法就是抽象方法。类通过extends继承特质,通过with可以继承多个特质。 trait Logger { def log(msg: String) } ...原创 2020-08-18 16:00:37 · 111 阅读 · 0 评论 -
6.大数据技术之Scala_十章到十一章:包和引用/继承
十 包和引用10.1 包/作用域在Java和Scala中管理项目可以使用包结构,C和C#使用命名空间。对于package,有如下几种形式:1) 形式体现: package com.nick.impatient.people class Person{ val name = "Nick" def play(message: String): Unit ={ } } 等同于: package com.nic...原创 2020-08-18 15:59:13 · 134 阅读 · 0 评论 -
5.大数据技术之Scala_七章到九章:高阶函数/类/对象
七 高阶函数7.1 作为参数的函数函数作为一个变量传入到了另一个函数中,那么该作为参数的函数的类型是:function1,即:(参数类型) => 返回类型 def plus(x: Int) = 3 +x val result1 = Array(1, 2, 3, 4).map(plus(_)) println(result1.mkString(",")) 尖叫提示:带有一个参数的函数的类型是function1,带有两个是function2,以此类推...原创 2020-08-18 15:56:50 · 147 阅读 · 0 评论 -
4.大数据之Scala_六章:模式匹配
六 模式匹配6.1 switch与default等效的是捕获所有的case_ 模式。如果没有模式匹配,抛出MatchError,每个case中,不用break语句。可以在match中使用任何类型,而不仅仅是数字。 var result = 0; val op : Char = '-' op match { case '+' => result = 1 case '-' => result = -1 case _...原创 2020-08-18 15:53:39 · 133 阅读 · 0 评论 -
3.大数据技术之Scala_五章:数据结构
五 数据结构5.1 数据结构特点Scala同时支持可变集合和不可变集合,不可变集合从不可变,可以安全的并发访问。两个主要的包:不可变集合:scala.collection.immutable可变集合: scala.collection.mutableScala优先采用不可变集合,对于几乎所有的集合类,Scala都同时提供了可变和不可变的版本。不可变集合继承层次:可变集合继承层次:5.2 数组 Array1) 定长数组 //定义...原创 2020-08-18 15:52:03 · 143 阅读 · 0 评论 -
1.大数据技术之Scala_一章到三章
一 Scala简述统计世界top100大学计算机系年级前三名,从初中开始编程,学过20多种语言,最后认为Scala最难。好了,我们开始享受这个过程把:)。二 Scala安装与配置2.1 安装Scala需要Java运行时库,安装Scala需要首先安装JVM虚拟机,推荐安装JDK1.8。在http://www.scala-lang.org/下载Scala2.11.8程序安装包根据不同的操作系统选择不同的安装包,下载完成后,将安装包解压到安装目录。将scala安装目录下的bin...原创 2020-08-18 15:45:08 · 149 阅读 · 0 评论 -
2.大数据技术之Scala_四章:控制结构和函数
四 控制结构和函数4.1 ifelse表达式scala中没有三目运算符,因为根本不需要。scala中ifelse表达式是有返回值的,如果if或者else返回的类型不一样,就返回Any类型(所有类型的公共超类型)。例如:ifelse返回类型一样 val a3 = 10 val a4 = if(a3 > 20){ "a3大于20" }else{ "a3小于20" } println(a4)...原创 2020-08-18 15:47:38 · 105 阅读 · 0 评论