Scala
pofengliuming
这个作者很懒,什么都没留下…
展开
-
Scala入门之正则表达式
正则表达式Scala支持通过Regex类的scala.util.matching封装正则表达式。创建一个字符串,并调用r()方法如 val pattern = "Scala".r Scala中字符串隐式转换为一个RichString并调用该方法来获得正则表达式的一个实例。代码实战package com.dt.scala.moguyunimport scala.util.matching.Re原创 2016-08-15 19:04:06 · 490 阅读 · 0 评论 -
Scala入门之类型参数
1.泛型泛型用于指定方法或类可以接受任意类型参数,参数在实际使用时才被确定,泛型可以有效地增强程序的适用性,使用泛型可以使得类或方法具有更强的通用性。在Scala中用方括号来定义类型参数,即用[]表示,如 class Pair[T, S](val first, val) 以上将定义一个带有两个类型参数T和S的类,带有类型参数的类是泛型的。如果把类型参数替换成实际的类型将得到普通的类。简单理解原创 2016-08-07 22:37:07 · 467 阅读 · 3 评论 -
Scala入门之Actor
蘑菇云代码由于Spark使用的是Netty做通信,所以这块做了解就行,故不深入。package com.dtspark.scala.basicsimport scala.actors.Actorobject HelloActor { def main(args: Array[String]): Unit = { val helloActor = new HelloActor h原创 2016-08-07 23:18:36 · 294 阅读 · 2 评论 -
Scala进阶之App特质
App特质的作用App特质的作用那就是延迟初始化,从代码上看它继承自DelayedInit,里面有个delayedInit方法trait App extends DelayedInit DelayedInit特质里定义了延迟初始化方法:def delayedInit(x: => Unit): Unit用户可以直接在初始化块里写逻辑,然后编译器会把这段初始化代码块里的逻辑封装成一个函数对象原创 2016-08-19 12:43:16 · 3297 阅读 · 0 评论 -
Scala进阶之隐式转换作用域等问题
隐式转换作用域关于隐式转换查找的顺序问题: 1. 简单查找class Implicits { implicit val content = "Java Hadoop"}object Implicits { implicit val content = "Scala Spark" }object ImplicitsAdvanced { def main(args: Array[原创 2016-08-20 13:24:21 · 1454 阅读 · 0 评论 -
Scala入门之高级类型:this.type
this.type在写Spark程序的代码中一开始就能看到这代码: val conf = new SparkConf conf.setAppName("OnlineBlackListFilter").setMaster("local")上面 setAppName、setMaster返回的就是SparkConf,所以才能继续使用SparkConf的方法点出方法来。而要做到这一点的原创 2016-08-09 15:24:10 · 3569 阅读 · 0 评论 -
Scala入门之高级类型:类型投影
类型投影类型投影的目的是将外部类Outter中定义的方法def print(i:Inner)=i,它可以接受做任意外部类对象中的Inner类。格式是 Outter#Inner直接看代码更容易理解package com.dt.scala.moguyun/** * Created by hlf on 2016/8/9 for learn TypeProjection. * 类型投影主要用在有原创 2016-08-09 16:30:46 · 1093 阅读 · 0 评论 -
Scala入门之高级类型:结构类型
结构类型结构类型(Struture Type)通过利用反射机制为静态语言添加动态特性,从面使得参数类型不受限于某个已命名的的类型.直接看代码,更理解理解package com.dt.scala.moguyun/** * Created by hlf on 2016/8/9. * 结构体类型其实可以看作是一个类,在函数调用时, * 直接通过new操作来创建一个结构体类型对象,当然它是匿名原创 2016-08-09 17:38:36 · 1308 阅读 · 0 评论 -
Scala入门之包与继承
1.包 Scala中的包与java有着诸多的相似之处,但Scala语言中的包更加灵活,实际开发的时候还是尽量使用java包的定义方式并将代码集中进行管理,这样别人读代码的时候更方便,代码更简洁。包的使用有以下几点: 1.外层包无法直接访问内层包,如果一定要使用的话,可以引入包, 内层包可以访问外层包中定义的类或对象,无需引入 2.scala允许在任何地方进行包的引入,_原创 2016-08-09 22:04:51 · 289 阅读 · 0 评论 -
Scala入门之部分应用函数与偏函数
1.部分应用函数部分应用函数(Partial Applied Function)是指缺少部分参数的函数.package com.dt.scala.moguyun/** * 部分应用函数 * Created by Administrator on 2016/8/10. */object PartialAppliedFunctionLearn { def main(args: Arr原创 2016-08-10 13:43:41 · 2570 阅读 · 0 评论 -
Scala入门之外部命令
外部命令 在Java中我们可以使用Runtime.getRuntime().exec();来和系统交互。 在Scala中scala.sys.process提供了shell和系统交互的DSL,包括执行命令、逻辑操作、重定向、管道等操作。 使用!来执行外部命令,如 "ping www.baidu.com" !外部命令感觉用得不多,暂时做下了解。使用逻辑操作#&&,#|| cmd1原创 2016-08-13 22:09:51 · 638 阅读 · 0 评论 -
Scala进阶之核心力量和黄金定律
蘑菇云课堂内容Scala的核心力量是什么? 基于自上而下和自下而上的软件设计和编程实践的基础之上结合数据状态不可变性并且融合了类型系统和隐式转换技巧的函数式编程说明1 自下而上和自上而下的编程方法完美结合 自上而下(对象):面向对象编程,把软件系统作为一个个对象,具体的功能由对象本身以及对象之间的消息传递来完成 自下而上(动作):函数式编程,强调功能的具体实现两者结合,非常强有力的原创 2016-08-18 15:07:30 · 579 阅读 · 0 评论 -
Scala入门之Map、Tuple
蘑菇云代码package com.dtspark.scala.basics/** * 1,默认情况下Map构造的是不可变的集合,里面的内容不可修改,一旦修改就变成新的Map,原有的Map内容保持不变; * 2,Map的实例是调用工厂方法模式apply来构造Map实例,而需要主要的是Map是接口,在apply中使用了具体的实现; * 3,如果想直接new出Map实例,则需要使用HashMap等原创 2016-08-07 00:08:06 · 297 阅读 · 0 评论 -
Scala入门之Array
蘑菇云代码package com.dtspark.scala.basics/** * 大数据技术是数据的集合以及对数据集合的操作技术的统称,具体来说: * 1,数据集合:会涉及数据的搜集、存储等,搜集会有很多技术,存储现在比较经典的是使用Hadoop,也有很多情况使用Kafka; * 2,对数据集合的操作技术:目前全球最火爆的是Spark; * * Spark的框架实现语言是Scala原创 2016-08-07 00:06:09 · 394 阅读 · 0 评论 -
Scala入门之隐式转换与隐式参数
1.隐式转换 隐式转换是一项强大的程序语言功能,它不仅能够简化程序设计,也能够使程序具有很强的灵活性。隐式函数的名称对结构没有影响.函数可以是任何名字,只看参数与返回,也就是看能不能传入的参数是不是能变成需要的类型就行了。 隐式转换可以定义在目标文件当中,即隐式转换函数与目标代码在同一个文件当中,也可以将隐式转换集中放置在某个包中,在使用进直接将该包引入即可,后者更常见。 隐式原创 2016-08-07 23:11:00 · 587 阅读 · 4 评论 -
Scala特质的混入顺序
代码测试package com.hlf.scala.basic/** * 测试多个特质中有同一个方法,混入顺序的不同最终调用的结果 * 结果显示: * 如果混入的特质是子父类型的话,调用的是子的方法 * 如果混入的特质最终父类是同一个的话,调用的是最右边的方法 * Created by hlf on 2016/8/18. */object TestTraitOrder {原创 2016-08-18 13:14:33 · 1259 阅读 · 0 评论 -
Scala入门之集合
蘑菇云课堂代码package com.dt.scala.moguyun/** * 1,在Scala的集合体系中Iterable是共同的Trait,Iterable要求继承者实现一些共同的方法,例如对元素的遍历等; * 2,Array是一个非常基础的数据结构,不从属于Scala集合的体系; * 3,Scala的集合体系中集合分为可变集合与不可变集合之分;不可变的集合在scala.colle原创 2016-08-04 23:50:39 · 441 阅读 · 0 评论 -
Scala入门之模式匹配
1. 蘑菇云课堂代码package com.dtspark.scala.basicsclass DataFrameWorkcase class ComputationFramework(name: String, popular: Boolean) extends DataFrameWorkcase class StorageFramework(name: String, popular: Bool原创 2016-08-01 23:07:45 · 285 阅读 · 0 评论 -
Scala入门之函数初阶
DTSpark课堂代码package com.dtspark.scala.basics/** * 函数可以被简单的被认为是包裹了一条或者几条语句的代码体,该代码体接收若干参数,经过代码体处理后返回结果,形如数学中的f(x) = x + 1 * 在Scala中函数式一等公民,可以向变量一样被传递,被赋值,同时函数可以赋值给变量,变量也可以赋值给函数,之所以可以是这样,原因在于 * 函数背后是类和原创 2016-07-31 21:58:48 · 314 阅读 · 0 评论 -
Scala入门之函数进阶
1.蘑菇云课堂代码package com.dtspark.scala.basics/** * 函数式编程进阶: * 1,函数和变量一样作为Scala语言的一等公民,函数可以直接赋值给变量; * 2, 函数更长用的方式是匿名函数,定义的时候只需要说明输入参数的类型和函数体即可,不需要名称,但是如果你要使用的话,一般会把这个匿名函数赋值给一个变量(其实是val常量),Spark源码中大量存在这种语原创 2016-08-01 11:09:15 · 376 阅读 · 0 评论 -
Scala入门之面向接口编程
一、scala中trait的定义 这里的trait字面意思是特质或者特征,这个词翻译成特征比较合适。它的意义和java,c#中接口很类似。但是trait支持部分实现,也就是说可以在scala的trait中可以实现部分方法。 二、scala中trait的使用 //声明一个 trait trait TraitBase{ def add(x:Int,y:Int): Int =原创 2016-07-30 20:36:41 · 5719 阅读 · 0 评论 -
Scala入门之OOP
蘑菇云代码package com.dtspark.scala.basics/** * 1,在Scala中定义类是用class关键字; * 2,可以使用new ClassName的方式构建出类的对象; * 3, 如果名称相同,则object中的内容都是class的静态内容,也就是说object中的内容class都可以在没有实例的时候直接去调用; * 正是因为可以在没有类的实例的时候去原创 2016-08-06 23:59:34 · 361 阅读 · 0 评论 -
Scala入门之控制结构
蘑菇云课堂代码package com.dtspark.scala.basics/** * Scala中的基本控制结构有顺序、条件和循环三种方式,这个其它的JVM语言是一致的,但是Scala也有一些高级的流程控制结构类模式匹配; * 在这里我们主要if、for、while等三种控制结构及其企业级最佳实践,并且在最后用Spark源码说明 * */object ControlStructure原创 2016-08-06 23:50:43 · 337 阅读 · 0 评论 -
Scala入门HelloScala
蘑菇云课堂代码package com.dtspark.scala.basics/** * object作为Scala中的一个关键字,相当于Java中的public static class这样的一个修饰符,也就说object中的成员都是静态的! * 所以我们在这个例子中的main方法是静态的,不需要类的实例就可以直接被虚拟机调用,而这正是作为JVM平台上程序入口的必备 * 条件; * 疑问原创 2016-08-06 23:43:40 · 370 阅读 · 0 评论 -
Scala入门之提取器
提取器这知识感觉多数跟case class配合使用,但是在与case class配合使用时就算不知道后面的工作机制也没什么关系,会用就行。其实有必要的话可以自己写提取器,而什么时候用提取器,怎么提高数据传输效率才是难点 :(直接上代码,加上个人理解package com.dt.scala.moguyun/** * 提取器 * unapply * 看两点: * 1 类有没有unap原创 2016-08-13 22:17:50 · 277 阅读 · 0 评论