
Spark
文章平均质量分 58
Soyoger
申明:个人微信公众号:AI技术研习社,公众号ID:ai2club。本博客只是用来学习,并不从事任何商业活动,其内容是自己总结或者来自互联网搜索到的,并没有过多关注版权问题,如有侵权内容,请私信我进行删除,谢谢。本博客内容主要围绕计算机领域热点技术和工作内容,不涉及版权问题,任何人可以查看、转载。
展开
-
Scala入门到精通——第二十七节 Scala操纵XML
本节主要内容XML 字面量XML内容提取XML对象序列化及反序列化XML文件读取与保存XML模式匹配1. XML 字面量XML是一种非常重要的半结构化数据表示方式,目前大量的应用依赖于XML,这些应用或利用XML作为数据交换格式,或利用XML进行文件配置等。像Java、C++及其它流行的程序开发语言都是依赖于第三方库来实现XML的操作,例如JAVA经常通过JDOM,DOM4J等XM转载 2017-07-06 10:33:48 · 739 阅读 · 0 评论 -
Akka并发编程——第四节:Actor模型(三)
本章主要内容: 1. Actor引用、Actor路径1. Actor引用、Actor路径下图是Akka官方文档中给出的一张图该图清晰地说明了ActorPath,ActorRef,Actor及ActorSystem之间的关系,并说明了Actor整体的层次结构。前面我们提到,Akka应用程序会持有一个名称为user的Actor,该Actor被称为guardian superviso转载 2017-07-18 23:15:16 · 477 阅读 · 0 评论 -
Scala入门到精通——第十五节 Case Class与模式匹配(二)
本节主要内容模式匹配的类型for控制结构中的模式匹配option类型模式匹配1. 模式的类型1 常量模式object ConstantPattern{ def main(args: Array[String]): Unit = { //注意,下面定义的是一个函数 //函数的返回值利用的是模式匹配后的结果作为其返回值 //还需要注意的是函数定义在mai转载 2017-06-30 10:48:00 · 673 阅读 · 0 评论 -
Scala入门到精通——第二十节 类型参数(二)
本节主要内容Ordering与Ordered特质上下文界定(Context Bound)多重界定类型约束1. Ordering与Ordered特质在介绍上下文界定之前,我们对Scala中的Ordering与Ordered之间的关联与区别进行讲解,先看Ordering、Ordered的类继承层次体系: 通过上面两个图可以看到,Ordering混入了Java中的Comp转载 2017-07-04 18:08:51 · 324 阅读 · 0 评论 -
Akka并发编程——第三节:Actor模型(二)
本节主要内容:Actor API解析1. Actor API解析Actor中的主要成员变量和方法定义如下:package akka.actortrait Actor extends scala.AnyRef { type Receive = akka.actor.Actor.Receive //context变量暴露当前Actor的上下文信息及当前消息 impl转载 2017-07-13 21:11:54 · 344 阅读 · 0 评论 -
scala合并有序集合
Problem 你想要把两个集合合并为一个集合,要么包含两集合所有的元素,要么包含两个集合的相同元素,要么包含两个集合的不同元素。Solution 对于这个问题有很多解决方案,用哪种取决于你的需要:使用++=方法可以合并一个集合到一个mutable集合使用++方法可以合并两个mutable或者immutable集合使用结合的方法union原创 2017-08-01 09:15:28 · 6619 阅读 · 0 评论 -
Scala入门到精通——第二十六节 Scala并发编程基础
本节主要内容Scala并发编程简介Scala Actor并发编程模型react模型Actor的几种状态Actor深入使用解析1. Scala并发编程简介2003 年,Herb Sutter 在他的文章 “The Free Lunch Is Over” 中揭露了行业中最不可告人的一个小秘密,他明确论证了处理器在速度上的发展已经走到了尽头,并且将由全新的单芯片上的并行 “内核”(虚拟转载 2017-07-05 15:57:23 · 721 阅读 · 0 评论 -
Scala入门到精通——第三节 Array、List
本节主要内容数组操作实战列表List操作实战数组操作实战1 定长数组//定义一个长度为10的数值数组scala> val numberArray=new Array[Int](10)numberArray: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)//定义一个长度为10的String类型数组scala> val s原创 2017-06-27 16:58:16 · 553 阅读 · 0 评论 -
Scala入门到精通——第二十九节 Scala数据库编程
本节主要内容Scala Maven工程的创建Scala JDBC方式访问MySQLSlick简介Slick数据库编程实战SQL与Slick相互转换本课程在多数内容是在官方教程上修改而来的,官方给的例子是H2数据库上的,经过本人改造,用在MySQL数据库上,官方教程地址:http://slick.typesafe.com/doc/2.1.0/sql-to-slick.html1. S转载 2017-07-06 18:14:45 · 426 阅读 · 0 评论 -
scala集合排序
Problem 你想要对一个集合元素进行排序。或者你想定义一个自定义类来实现Ordered trait,来让你可以使用sorted方法,或者使用比较操符,>=来对类的实例进行比较。Solution 你可以使用sorted或者sortWith方法来对集合进行排序。 Sorted方法可以对集合元素类型为Double,Float,Int和其他可以隐试转化scala.ma原创 2017-08-01 09:24:32 · 2457 阅读 · 0 评论 -
Scala入门到精通——第二十五节 提取器(Extractor)
本节主要内容apply与unapply方法零变量或变量的模式匹配提取器与序列模式scala中的占位符使用总结1. apply与unapply方法apply方法我们已经非常熟悉了,它帮助我们无需new操作就可以创建对象,而unapply方法则用于析构出对象,在模式匹配中特别提到,如果一个类要能够应用于模式匹配当中,必须将类声明为case class,因为一旦被定义为case clas转载 2017-07-05 11:07:39 · 444 阅读 · 0 评论 -
Scala可变参数列表,命名参数和参数缺省
重复参数 Scala在定义函数时允许指定最后一个参数可以重复(变长参数),从而允许函数调用者使用变长参数列表来调用该函数,Scala中使用“*”来指明该参数为重复参数。例如:123456789101112scala> defecho (args: String *) = | for (转载 2017-07-14 09:13:56 · 1081 阅读 · 0 评论 -
Akka并发编程——第二节:Actor模型(一)
本节主要内容定义Actor创建Actor1. 定义Actor通过扩展akka.actor.Actor 特质并实现receive方法来定义Actor,代码示例如下//通过扩展Actor并实现receive方法来定义Actorclass MyActor extends Actor { //获取LoggingAdapter,用于日志输出 val log = Logg转载 2017-07-13 21:05:03 · 562 阅读 · 0 评论 -
scala通过mkString方法把一个集合转化为一个字符串
Problem 如果你想要把集合元素转化为字符串,可能还会添加分隔符,前缀,后缀。Solution 使用mkString方法来打印一个集合内容,下面给一个简单的例子:scala> val a = Array("apple", "banana", "cherry")a: Array[String] = Array(apple, banana, cherry)scal转载 2017-08-01 09:33:02 · 30617 阅读 · 3 评论 -
Scala入门到精通——第五节 函数、高阶函数与闭包
本节主要内容(一)函数字面量(值函数)(二)匿名函数(三)函数的简化(四)函数参数(四)闭包函数字面量(值函数)函数字面量(function literal),也称值函数(function values),指的是函数可以赋值给变量。一般函数具有如下形式: 而函数字面量具有如下形式:/* 函数字面量 function literal =>左侧的转载 2017-06-28 11:52:06 · 575 阅读 · 0 评论 -
Scala入门到精通—— 第二节Scala基本类型及操作、程序控制结构
本节主要内容Scala基本类型基本类型操作Scala程序控制结构Scala基本类型Scala中的基本数据类型如下图: (来源:Programming in scala)从上表中可以看出,Scala的基本数据类型与Java中的基本数据类型是一一对应的,不同的是Scala的基本数据类型头字母必须大写,本节以Int、Long、String、Char、Double及Fl原创 2017-06-27 13:56:41 · 669 阅读 · 0 评论 -
Scala入门到精通——第二十八节 Scala与JAVA互操作
本节主要内容JAVA中调用Scala类Scala中调用JAVA类Scala类型参数与JAVA泛型互操作Scala与Java间的异常处理互操作1. JAVA中调用Scala类Java可以直接操作纵Scala类,如同scala直接使用Java中的类一样,例如://在Person.scala文件中定义Scala语法的Person类package cn.scala.xtwy.scal转载 2017-07-06 16:57:17 · 541 阅读 · 0 评论 -
Akka并发编程——第八节:Actor模型(七)
本节主要内容停止运行Typed Actor当Typed Actor不再需要时要将其停止,有3种方法停止Typed Actor的运行: (1)通过system.shutdown()停止ActorSystem中所有的Typed Actor; (2)调用TypedActor(system).stop(mySquarer)停止指定的Typed Actor; (3)调用TypedActo转载 2017-07-18 23:56:03 · 473 阅读 · 0 评论 -
Scala中的延迟初始化(Lazy vals)
延迟初始化(Lazy vals)除了前面介绍的预先初始化成员值外,你还是让系统自行决定何时初始化成员的初始值,这是通过在 val 定义前面添加 lazy(懒惰),也是说直到你第一次需要引用该成员是,系统才会去初始化,否则该成员就不初始化(这也是 lazy 的由来:-)).首先我们定义一个正常定义 val 的例子:object Demo { val x = { println("i转载 2017-07-10 16:59:50 · 2026 阅读 · 0 评论 -
scala中的tuple元组
Problem 你想要创建一个集合,集合元素类型是多样的。Solution 元组为你提供了一种方式来存储不同类型的元素在一个容器内,这在许多情况下是非常有用的。 新建一个元祖通过把需要的额元组包在一组小括号内。下面是一个二元祖:scala> val d = ("Debi", 95)d: (String, Int) = (Debi,95) 注原创 2017-08-01 09:22:36 · 5346 阅读 · 0 评论 -
scala中给集合创建懒加载view视图
Problem 你正在使用一个巨大的集合,并且想创建一个懒加载的版本。只有在计算或者返回结果时才真正被调用。Solution 除了Stream类,不论什么时候你创建一个Scala集合类的实例,你都创建了一个strict版本集合(任何操作都会被立即执行)。这意味着如果你新建了一个百万元素的集合,这些元素会立即加载进内存。在Java中这是正常的,但是在Scala中你可以选择在集原创 2017-08-01 09:18:28 · 1102 阅读 · 0 评论 -
Scala入门到精通——第十二节 I/O与正则表达式
本节主要内容Scala I/O操作简介Scala 写文件Scala 读文件Scala 网络I/O正则表达式简介Scala正则表达式实战1. Scala I/O操作简介I/O操作是一门编程语言中的重要内容,在Scala中,它更多的是调用Java中的I/O类或者通过对java中的I/O类进行相应的封装来实现I/O操作。在上一节内容中我们已经用到了I/O操作:trait FileLo转载 2017-06-29 17:39:03 · 622 阅读 · 0 评论 -
Scala中的for/yield详解
For each iteration of your for loop, yield generates a value which will be remembered. It's like the for loop has a buffer you can't see, and for each iteration of your for loop, another item is added原创 2017-07-28 09:21:13 · 11652 阅读 · 0 评论 -
Scala中zip或者zipWithIndex的计数器用法
你要遍历一个有序集合,同时你又想访问一个循环计数器,但最重要的是你真的不需要手动创建这个计数器。解决方案: 使用zipWithIndex或者zip方法来自动地创建一个计数器,假设你有一个有序集合days,那么你可以使用zipWithIndex和counter来打印带有计数器的集合元素:scala> val days = Array("Sunday", "Monday", "Tue原创 2017-07-28 09:12:33 · 1026 阅读 · 0 评论 -
Scala 中的文件目录操作
1. scala中读取csv文件,并且去掉文件中的第一行标题,如下:for(line //2. scala中将字符串伪装为文件由于Scala.fromFile和Scala.fromString继承自scala.io.Source,所以他们相互之间很好转换。只要方法接受一个Source参数,便可以调用Source.fromFile获得BufferedSource,或者用Source.原创 2017-08-09 09:14:29 · 8740 阅读 · 0 评论 -
Scala入门到精通——第二十四节 高级类型 (三)
本节主要内容Type SpecializationManifest、TypeTag、ClassTagScala类型系统总结在Scala中,类(class)与类型(type)是两个不一样的概念。我们知道类是对同一类型数据的抽象,而类型则更具体。比如定义class List[T] {}, 可以有List[Int] 和 List[String]等具体类型,称List为类,而List[Int]转载 2017-07-05 10:22:50 · 380 阅读 · 0 评论 -
Scala 函数传名调用(call-by-name)
Scala的解释器在解析函数参数(function arguments)时有两种方式:传值调用(call-by-value):先计算参数表达式的值,再应用到函数内部;传名调用(call-by-name):将未计算的参数表达式直接应用到函数内部在进入函数内部前,传值调用方式就已经将参数表达式的值计算完毕,而传名调用是在函数内部进行参数表达式的值计算的。这就造成了一种现象,每次使用传名原创 2017-07-23 21:25:05 · 703 阅读 · 0 评论 -
Scala入门到精通——第六节:类和对象(一)
本节主要内容1 类定义、创建对象 2 主构造器 3 辅助构造器类定义、创建对象//采用关键字class定义class Person { //类成员必须初始化,否则会报错 //这里定义的是一个公有成员 var name:String=null}Person类在编译后会生成Person.class文件 利用javap -prviate Person命令转载 2017-06-28 15:04:48 · 466 阅读 · 0 评论 -
Scala的四种Web框架
FinatraFinatra是基于 Twitter-server platform平台, 运行在Finagle之上, 它是一个完整的异步框架。 Play FrameworkPlay框架是一个Java 和 Scala的产品化Web应用框架,集成了各种开发Web应用需要的组件和API,本站Play框架专题 ScalatraScalatra 是特别小巧的Web框架,也原创 2017-08-14 09:09:52 · 5593 阅读 · 0 评论 -
scala使用zip合并两个集合为二元组集合
tuple只能有tuple2到tuple22Problem 你想要合并两个有序集合成为一个键值对集合Solution 使用zip方法合并两个集合:scala> val women = List("Wilma", "Betty")women: List[String] = List(Wilma, Betty)scala> val men = List原创 2017-08-01 09:17:08 · 7651 阅读 · 1 评论 -
scala使用Range来填充一个集合
Problem 你想要使用Range来填充一个List,Array,Vector或者其他的sequence。Solution 对于支持range方法的集合你可以直接调用range方法,或者创建一个Range对象然后把它转化为一个目标集合。 在第一个解决方案中,我们调用了伴生类的range方法,比如Array,List,Vector,ArrayBuffer等等:原创 2017-08-01 09:19:43 · 14224 阅读 · 0 评论 -
Scala入门到精通——第八节 包和引入
本节主要内容包的作用与定义包的作用域与引入(import)的使用方法 访问控制包对象import高级特性内部类包的作用与定义同Java中的包、C++中的命名空间一样,Scala中的包主要用于大型工程代码的组织同时也解决命名冲突的问题。scala中的包与java有着诸多的相似之处,但Scala语言中的包更加灵活。//将代码组织到cn.scala.xtwy包中package cn转载 2017-06-28 16:12:27 · 422 阅读 · 0 评论 -
使用Scalatra创建Scala WEB工程
和Java一样,我们也可以使用Scala来创建Web工程,这里使用的是Scalatra,它是一款轻量级的Scala web框架,和Ruby Sinatra功能类似。比较推荐的创建Scalatra工程是使用Giter8,他是一款很不错的用于创建SBT工程的工具。所以我们需要在电脑上面安装好Giter8。这里以Centos系统为例进行介绍。安装giter8 在安装giter8之前需要安装Co原创 2017-08-14 09:11:36 · 2520 阅读 · 0 评论 -
Scala入门到精通——第十三节 高阶函数
本节主要内容高阶函数简介Scala中的常用高阶函数SAM转换函数柯里化部分应用函数1. 高阶函数简介高阶函数主要有两种:一种是将一个函数当做另外一个函数的参数(即函数参数);另外一种是返回值是函数的函数。这两种在本教程的第五节 函数与闭包中已经有所涉及,这里简单地回顾一下:(1)函数参数//函数参数,即传入另一个函数的参数是函数//((Int)=>String)=>S转载 2017-06-30 09:46:51 · 624 阅读 · 0 评论 -
scala中NULL的option定义的字段初始化用Some
例子:var in = None:Option[FileInputStream]var out = None:Option[FileOutputStream]try{ in = Some(new FileInputStream("/tmp/text.class")) out = Some(new FileOutputStream("/tmp/text1.class"))}ca原创 2017-08-15 15:35:26 · 2557 阅读 · 0 评论 -
Scala入门到精通——第十六节 泛型与注解
本节主要内容泛型(Generic Type)简介注解(Annotation)简介注解常用场景1. 泛型(Generic Type)简介泛型用于指定方法或类可以接受任意类型参数,参数在实际使用时才被确定,泛型可以有效地增强程序的适用性,使用泛型可以使得类或方法具有更强的通用性。泛型的典型应用场景是集合及集合中的方法参数,可以说同Java一样,Scala中泛型无处不在,具体可以查看sc转载 2017-06-30 11:46:46 · 449 阅读 · 0 评论 -
Akka并发编程——第五节:Actor模型(四) 停止Actor
本节主要内容: 1. 停止Actor1. 停止Actor(1)通过ActorSystem.shutdown方法停止所有 Actor的运行/**停止Actor:ActorSystem.shutdown方法*/object Example_10 extends App{ import akka.actor.Actor import akka.actor.ActorSyst转载 2017-07-18 23:40:42 · 2745 阅读 · 0 评论 -
Scala入门到精通——第十节 Scala类层次结构、Traits初步
本节主要内容Scala类层次结构总览Scala中原生类型的实现方式解析Nothing、Null类型解析Traits简介Traits几种不同使用方式1 Scala类层次结构Scala中的类层次结构图如下: 来源:Programming in scala从上面的类层次结构图中可以看到,处于继承层次最顶层的是Any类,它是scala继承的根类,scala中所有的类都是它的转载 2017-06-29 16:04:37 · 506 阅读 · 0 评论 -
scala中使用特质中的抽象字段和实际字段
Scala中,trait相当于Java中的接口,遇到需要使用Java接口的场景时,你就在scala中可以使用trait了。 我们知道Java中你可以实现多个接口,那么Scala中,你也可以继承多个trait Java中接口不能有自己的实现方法,但是Scala中trait可以包含自己的实现方法 一 特质用作接口接口的作用:对行为进行规范,具有解耦的作用,满足业务系统依赖倒转载 2017-07-19 08:08:08 · 900 阅读 · 0 评论 -
Akka框架——第一节:并发编程简介
本节主要内容: 1. 重要概念 2. Actor模型 3. Akka架构简介多核处理器的出现使并发编程(Concurrent Programming)成为开发人员必备的一项技能,许多现代编程语言都致力于解决并发编程问题。并发编程虽然能够提高程序的性能,但传统并发编程的共享内存通信机制对开发人员的编程技能要求很高,需要开发人员通过自身的专业编程技能去避免死锁、互斥等待及竞争条件(Ra转载 2017-07-11 20:21:59 · 465 阅读 · 0 评论