Scala(多范式的编程语言)
Scala(多范式的编程语言)
涂作权的博客
To do what I want to do!
展开
-
Scala消息通信之akka,akka案例
Scala编程实战一、 课程目标1. 目标:熟练使用Scala编写程序二、 项目概述1. 需求目前大多数的分布式架构底层通信都是通过RPC实现的,RPC框架非常多,比如前我们学过的Hadoop项目的RPC通信框架,但是Hadoop在设计之初就是为了运行长达数小时的批量而设计的,在某些极端的情况下,任务提交的延迟很高,所有Hadoop的RPC显得有些笨重。Spark 的RPC是通过Akka类库实现的,原创 2017-07-02 19:12:21 · 3017 阅读 · 2 评论 -
Scala数组,定长数组和变长数组,增强for循环,until用法,数组转换,数组常用算法,数组其它操作
1. 数组1.1. 定长数组和变长数组package cn.toto.scala//可变数组的长度时需要引入这个包import scala.collection.mutable.ArrayBuffer/** * Created by toto on 2017/6/27. */object ArrayDemo { def main(args: Array[String]): Unit =原创 2017-06-28 01:52:01 · 10858 阅读 · 1 评论 -
Scala元组
1. 元组 映射是K/V对偶的集合,对偶是元组的最简单形式,元组可以装着多个不同类型的值。 1.1. 创建元组 1.2. 获取元组中的值 1.3. 将对偶的集合转换成映射 1.4. 拉链操作 zip命令可以将多个值绑定在一起 注意:如果两个数组的元素个数不一致,拉链操作后生成的数组的长度为较小的那个数组的元素个数原创 2017-06-28 02:15:37 · 960 阅读 · 1 评论 -
Scala中映射的语法(对应Java中的Map集合的定义)
1. 映射 在Scala中,把哈希表这种数据结构叫做映射 1.1. 构建映射1.2. 获取和修改映射中的值 好用的getOrElse 注意:在Scala中,有两种Map,一个是immutable包下的Map,该Map中的内容不可变;另一个是mutable包下的Map,该Map中的内容可变 例子: 注意:通常我们在创建一个集合是会用val这个关键字修饰一个变量(相当于ja原创 2017-06-28 02:04:26 · 1774 阅读 · 1 评论 -
Scala中使用两种方式对单词进行次数统计(wordCount)
使用Scala对单词数量进行统计: 假设有单词数组: val arr = Array(“hello tom”,”hello jerry”,”hello hello”) 需要对Array中的每个单词进行统计计数。 可以使用如下方式: 方式一:scala> arr.flatMap(_.split(" ")).map((_,1)).groupBy(_._1).map(t=>(t._1,t._2.原创 2017-06-28 12:26:58 · 12060 阅读 · 1 评论 -
Scala集合,序列(可变和不可变List),List各种函数的使用,不可变Set和可变Set,Map
1. 集合Scala的集合有三大类:序列Seq、集Set、映射Map,所有的集合都扩展自Iterable特质 在Scala中集合有可变(mutable)和不可变(immutable)两种类型,immutable类型的集合初始化后就不能改变了(注意与val修饰的变量进行区别)1.1. 序列不可变的序列 import scala.collection.immutable._ 在Scala中列表要么为原创 2017-06-28 02:56:57 · 34238 阅读 · 4 评论 -
获取系统URL访问的前三名(通过Scala方式实现/通过Spark方式实现),Spark将URL访问日志进行分类并通过自定义Partitioner的方式将文件写入到不同分区上
1、创建Maven项目创建的过程参考:http://blog.csdn.net/tototuzuoquan/article/details/745713742、准备日志文件url.log的内容类似: 20160321101954 http://java.toto.cn/java/course/javaeeadvanced.shtml20160321101954 http://java.tot原创 2017-07-08 17:42:15 · 2160 阅读 · 7 评论 -
java编写WordCound的Spark程序,Scala编写wordCound程序
1、创建一个maven项目,项目的相关信息如下:<groupId>cn.toto.spark</groupId><artifactId>bigdata</artifactId><version>1.0-SNAPSHOT</version>2、修改Maven仓库的位置配置:3、首先要编写Maven的Pom文件<?xml version="1.0" encoding="UTF-8"?><proje原创 2017-07-06 17:05:09 · 1743 阅读 · 1 评论 -
Scala相关文档
语法介绍的文档 https://docs.scala-lang.org/tour/generic-classes.html#原创 2018-07-24 14:25:21 · 392 阅读 · 0 评论 -
hive表,hive视图,spark处理数据入mysql,shell获取url数据下载json,Spark sql处理json,shell脚本执行kylin,azkaban任务调度
1 Spark获取json数据,并将json数据存hive库hive表建立Demo--如果存在hive表,直接删除这个hive表。drop table if EXISTS tb_trade_info;--创建hive表(第一次全量,后续增量)CREATE TABLE IF NOT EXISTS tb_trade_info (salesmanId VARCHAR(40) comment ...原创 2019-03-19 09:32:29 · 4114 阅读 · 6 评论 -
Scala方法定义,方法和函数的区别,将方法转换成函数
1. 定义方法和函数1.1. 定义方法 方法的返回值类型可以不写,编译器可以自动推断出来,但是对于递归函数,必须指定返回类型1.2. 定义函数 1.3.方法和函数的区别在函数式编程语言中,函数是“头等公民”,它可以像任何其他数据类型一样被传递和操作 案例:首先定义一个方法,再定义一个函数,然后将函数传递到方法里面 package cn.toto.scala/** * Created b原创 2017-06-27 21:39:36 · 11256 阅读 · 5 评论 -
Scala声明变量、常用类型、条件表达式、块表达式、循环
一、 Scala基础1. 声明变量package cn.toto.scala/** * Created by toto on 2017/6/27. */object VariableDemo { def main(args: Array[String]): Unit = { //使用val定义的变量值是不可变的,相当于java里用final修饰的变量,不可以再改变参数的值原创 2017-06-27 21:23:52 · 977 阅读 · 1 评论 -
Scala编译器安装,开发工具安装,通过IDEA创建scala的工程代码,Scala SDK的设置
一、 Scala编译器安装1. 安装JDK因为Scala是运行在JVM平台上的,所以安装Scala之前要安装JDK2. 安装Scala2.1. Windows安装Scala编译器访问Scala官网http://www.scala-lang.org/下载Scala编译器安装包,目前最新版本是2.12.x,但是目前大多数的框架都是用2.10.x编写开发的,所以这里推荐2.10.x版本,下载scala-2原创 2017-06-27 14:25:46 · 7484 阅读 · 0 评论 -
Scala类的继承,抽象类定义,接口定义
1. 继承1.1. 扩展类在Scala中扩展类的方式和Java一样都是使用extends关键字1.2. 重写方法在Scala中重写一个非抽象的方法必须使用override修饰符1.3. 类型检查和转换 Scala Java obj.isInstanceOf[C] obj instanceof C obj.asInstanceOf[C] (C)obj classOf[C]原创 2017-06-30 09:46:03 · 2017 阅读 · 1 评论 -
Scala模式匹配,case 字符串,case 匹配类型,case 匹配数组,case 匹配List,case 匹配元组,case匹配case class和case object
一、 模式匹配和样例类Scala有一个十分强大的模式匹配机制,可以应用到很多场合:如switch语句、类型检查等。 并且Scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配 1. 匹配字符串package cn.toto.scala.day2import scala.util.Random/** * Created by toto on 2017/6/30. */objec原创 2017-07-01 09:12:17 · 2502 阅读 · 1 评论 -
Scala option类型和偏函数
1. Option类型在Scala中Option类型样例类用来表示可能存在或也可能不存在的值(Option的子类有Some和None)。Some包装了某个值,None表示没有值package cn.toto.scala.day2/** * Created by toto on 2017/7/1. */object OptionDemo { //运行结果是: // 2 // 0原创 2017-07-01 09:36:52 · 925 阅读 · 1 评论 -
Scala Actor,receive不断接收消息,react复用线程,结合case class的actor,Future使用,使用Actor进行wordCount
Scala Actor二、 什么是Scala Actor1. 概念 Scala中的Actor能够实现并行编程的强大功能,它是基于事件模型的并发机制,Scala是运用消息(message)的发送、接收来实现多线程的。使用Scala能够更容易地实现多线程应用的开发。 2. 传统java并发编程与Scala Actor编程的区别 对于Java,我们都知道它的多线程实现需要对共享资源(变量、对象等)原创 2017-07-01 13:10:39 · 3440 阅读 · 1 评论 -
Scala泛型、隐式转换和隐式参数、视图介绍、Scala中的上界、下界、结合柯里化进行隐式转换
二、泛型一、Scala泛型 1. 泛型介绍 泛型用于指定方法或类可以接受任意类型参数,参数在实际使用时才被确定,泛型可以有效地增强程序的适用性,使用泛型可以使得类或方法具有更强的通用性。泛型的典型应用场景是集合及集合中的方法参数,可以说同java一样,scala中泛型无处不在,具体可以查看scala的api。 2. 泛型类、泛型方法 泛型类:指定类可以接受任意类型参数。 泛型方法:指定方法原创 2017-07-01 23:25:27 · 1984 阅读 · 6 评论 -
Scala柯里化
1. 柯里化 柯里化指的是将原来接受两个参数的方法变成新的接受一个参数的方法的过程 2. 例子package cn.com.toto.gen/** * Created by toto on 2017/7/2. */object FunDemo { def main(args: Array[String]): Unit = { def f2(x:Int) = x * 2原创 2017-07-02 16:33:28 · 796 阅读 · 1 评论 -
Akka编写一个RPC框架,模拟多个Worker连接Master的情况的案例
使用Akka编写一个RPC框架,实现Master与多个Worker之间的通信。流程图如下: 编写Pom文件,Pom文件的代码如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XM原创 2017-07-03 23:26:58 · 1504 阅读 · 1 评论 -
Scala概述
Scala概述1. 什么是Scala Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。 2. 为什么要学Scala 1.优雅:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验。 2.速度快:Scala语言表达能力强,一行代码抵得原创 2017-06-27 14:01:55 · 615 阅读 · 1 评论 -
Scala类的定义,主/辅构造器,以及方法中的变量定义,单例对象,伴生对象,Apply方法调用,应用程序对象
1. 类1.1. 类的定义package cn.toto.scala.day2/** * 在Scala中,类并不用声明为public类型的。 * Scala源文件中可以包含多个类,所有这些类都具有共有可见性。 * Created by toto on 2017/6/29. */class Person { //用val修饰的变量是可读属性,有getter但没有setter(相当原创 2017-06-29 13:58:43 · 1665 阅读 · 0 评论