scala
挖矿的小强
我失败过,但我从未放弃过
展开
-
第20节:Scala 提取器与注解深度解析之编程进阶
一 :提取器理论: 所谓提取器就是一个带有unapply方法的对象。你可以吧unapply方法当做是半生对象中apply方法的反向操作。 (1)apply方法接受构造参数,然后将他们变成对象。 (2)而unapply方法接受一个对象,然后从中提取值——通常这些值就是当初用来构造该对象的值。@DTCoder(name = "Scala",salary = 170900) case原创 2017-04-23 10:29:53 · 235 阅读 · 0 评论 -
第7节:scala面向对象编程
查看spark源码中使用scala面向对象编程的例子 class Helloop(age:Int){ var name="Spark" def原创 2017-10-22 22:14:34 · 242 阅读 · 0 评论 -
第10节:scala面向对象编程中的继承
1.继承的作用:代码维护,代码复用2.类继承时不会继承其伴生对象,只是继承类本身。而类可以使用伴生对象的方法,这样非常灵活3.所有rdd的子类都可以继承其父类的大部分方法,因为其中有个权限问题,所以不能全继承 4.重写父类方法必须写override5.override可以复写父类的方法,也可以复写父类的属性6.isInstan原创 2017-11-12 21:38:40 · 238 阅读 · 0 评论 -
第11节:scala面向接口编程
scala接口继承中第一个关键字一定是extends后面再出现接口要用with来实现接口scala中有个抽象属性:未被实例化的属性,必须说明类型,如val name:Stringscala对象的实例也可以混入接口,以扩展实例对象的功能package com.dt.spark.scala.bascistrait Logger{ def log(message:String){ print原创 2017-11-12 21:59:40 · 390 阅读 · 0 评论 -
第12节:Scala函数式编程进阶(匿名函数,高阶函数,函数类型推断,currying柯里化)
package basicsobject fuctionalPrograming { def main(args: Array[String]): Unit = { //1.函数和变量一样作为scala语言的一等公民,函数可以直接赋值给变量 val hidata= hibigdata _ hidata("spark") /* 2.幻术更常用的方式是匿名原创 2017-11-12 23:38:52 · 308 阅读 · 0 评论 -
第8节:scala常用集合Map和Tuple
package basicsobject HelloMapTuple { def main(args: Array[String]): Unit = { var bigdatas = Map("Spark" -> 6, "Hadoop" -> 11) //bigdatas("Spark")=10直接构造的map是不可变的,一旦改变就变成新的内容,原有内容保持不变 p原创 2017-11-05 21:45:33 · 204 阅读 · 0 评论 -
第9节:从spark源码角度分析scala面向对象思想
主构造器在scala中构造器一定用thissparkcontext运行一定有自己的配置对象有些全局配置可以在程序开始时就被实例化,有的可以不实例化,用lazy修饰,只有在使用的时候才会实例化scala中没有static来修饰静态变量活方法,所以全局用object来定义唯一的实例,如果想定义很多实例时,一般用工厂方法模式一般写框架的人都喜欢原创 2017-11-05 22:11:02 · 195 阅读 · 0 评论 -
第2节:如何成为scala高手
原创 2017-10-19 22:10:41 · 223 阅读 · 0 评论 -
第5节:Scala函数式编程
谓顺序可变参数加上递归的方式实现累加,tail返回的是Seq类型,tail后面转变成可变参数原创 2017-10-21 22:45:24 · 182 阅读 · 0 评论 -
第13节:scala编程之模式匹配
package basics/** * 模式匹配 */class DataFrameWorkcase class ComputeionFramework(name: String, popular: Boolean) extends DataFrameWork {}case class StorageFramework() extends DataFrameWorko原创 2017-11-15 22:09:24 · 148 阅读 · 0 评论 -
第14节:scala编程之集合
package basics/** * 1.在scala集合体系中Iterable是共同的Trait,Iterable要求继承实现一些共同的方法 ,例如对元素的遍历 * 2.Array是一个非常基础的数据结构,不是从属scala集合的体系 * 3.scala集合的体系分为可变的集合(在scala.collection.mutable中)和不可变的集合(scala.collection.i原创 2017-11-15 22:18:36 · 164 阅读 · 0 评论 -
第15节:scala编程之类型参数
package basics/** * sacla类型系统 * 1.scala的类和方法,函数可以是泛型,实例化时指定具体的类型,RDD几乎所有的类型定义都是泛型,因为RDD会派生很多子类 * 通过子类适配了各种不同数据源和业务逻辑 * 2.关于对类型边界的限定分为上边界和下边界: * 上边界:表达了泛型的类型必须是某种类型或者某种类型的子类,语法为:,这里的一个新的现象是对原创 2017-11-15 22:59:13 · 178 阅读 · 0 评论 -
第16节:scala使用implicit进行的隐式转换
package com.dt.spark.scala.bascis /** *使用implicit可以是所在类在执行没有的方法时检查下自己或者子类中是否存在该方法,如果存在则不会报错 *1.在object中隐式转换 *2.使用implicit 进行的隐式转换 */ class Man (val name:String) /* 第一种方式 *原创 2017-11-16 22:10:34 · 294 阅读 · 0 评论 -
第6节:scala中数组的操作运算
1.partitions本身也是个集合package croyimport scala.collection.mutable.ArrayBufferimport scala.util.Sortingobject HelloArrayOps { def main(args: Array[String]): Unit = { /原创 2017-10-22 21:07:12 · 317 阅读 · 0 评论 -
第1节:Scala大数据黄金时代的编程语言
1、spark首选语言,框架实现语言2.公认的第一重要的kafka开发语言,kafka具有无可匹及的吞吐量和消息数据的持久化能力原创 2017-10-19 21:58:13 · 281 阅读 · 0 评论 -
第19节:Scala偏函数、异常、Lazy值编码
一:偏函数(Partial)定义 偏函数:当函数有多个参数,而在使用该函数时不想提供所有参数(比如函数有3个参数),只提供0~2个参数,此时得到的函数便是偏函数。object HelloPartialFunction { def main(args: Array[String]): Unit = { val sample = 1 to 10 /* val isEven原创 2017-04-23 10:35:50 · 195 阅读 · 0 评论 -
第21节:Scala文件和xml操作(上)
1 spark源码的文件和xml使用的源码鉴赏2 scala文件和xml操作实战 package com.dtspark.scala.basicsimport java.io.ByteArrayOutputStreamimport java.io.ObjectInputStreamimport java.io.ByteArrayInputStreamimport原创 2017-04-23 15:10:33 · 351 阅读 · 0 评论 -
第22节:Scala集合和高级函数操作
scala> (1 to 10)res0: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)scala> (1 to 10).re:8: error: value re is not a member of scala.collection.immutable.Rang原创 2017-04-23 16:14:27 · 829 阅读 · 0 评论 -
第23节:Scala外部命令和正则表达式
import sys.process._ //导入包 object Hell0RegExpAndCMD{ def main(args: Array[String]): Unit = { //"javac Hello.Java" ! "Java Hello" ! val pattern = "[0-9]+".r val resul原创 2017-04-24 19:47:51 · 314 阅读 · 0 评论 -
第24节:关于继承和trait进阶
Scala继承体系,源头在Any,一分为二AnyRef和AnyVal,终结于Nothing scala是完全面向对象的,因为它把值类型封装成类和对象,scala搞了个更高层次的抽象java中1是没有方法的,scala中的1有,虽然存在隐式转换Scala集成体,一分为二,开始于Any和AnyValue,结束语nothingobj原创 2017-04-24 20:59:36 · 262 阅读 · 0 评论 -
第25节:Scala并发编程进阶
现代的并发编程=消息系统+线程复用import scala.actors.Actor/** * 并发编程进阶 */class HelloCcalaActor extends Actor{ def act(){ while (true) { receive{//不可以复用线程处理高并发特别消耗性能 case "isscala"原创 2017-04-24 21:59:39 · 258 阅读 · 0 评论 -
第26节:Scala的核心力量和黄金定律
原创 2017-04-25 20:44:40 · 277 阅读 · 0 评论 -
第27节:Scala面向对象内幕实践解密
下面解释为什么不需要写main方法直接继承App就可以执行方法:object AppInternals { }trait Helper extends DelayedInit { def delayeinit(body: => Unit) = { println("this is the initialization code of C")原创 2017-04-25 21:42:21 · 222 阅读 · 0 评论 -
Scala隐式转换和作用域分析
1 Scala隐式转换内幕2 Scala作用域3 Scala隐式转换思考 /** * 隐式转换和作用域 */class Implicits(x: Int) { def printValue = { val x = 100 println(x) }}class RicherFile(val file: java.io.F原创 2017-04-26 22:51:02 · 755 阅读 · 0 评论 -
Kafka+Spark Streaming+Redis实时计算整合实践
基于Spark通用计算平台,可以很好地扩展各种计算类型的应用,尤其是Spark提供了内建的计算库支持,像Spark Streaming、Spark SQL、MLlib、GraphX,这些内建库都提供了高级抽象,可以用非常简洁的代码实现复杂的计算逻辑、这也得益于Scala编程语言的简洁性。这里,我们基于1.3.0版本的Spark搭建了计算平台,实现基于Spark Streaming的实时计算。我原创 2017-09-25 15:49:16 · 1992 阅读 · 0 评论 -
第3课:在IDE下开发一个Scala程序,透彻解析及Scala控制结构
1 通过IDE 开发第一个scala程序彻底详解2 scala基础语法和控制结构实战详解 object作为scala的一个关键字,相当于 java中public static class这样的一个修饰符,object中的成员都是静态的,main方法是静态的,不需要类的实例就可以直接被虚拟机调用,这正是作为jvm平台上程序入口的必备条件。 packag原创 2017-10-19 22:27:57 · 227 阅读 · 0 评论 -
第4节:Scala控制结构if..else,for,while,breakable
控制结构在spark源码中的鉴赏 none 省写的话默认是()是返回any类型,而none是optional类型。 case object None extends Option[Nothing] { def isEmpty = true def get = throw new原创 2017-10-21 22:02:27 · 610 阅读 · 0 评论 -
第17节:scala中Actor并发编程
package basicsimport scala.actors.Actor/** * Created by Administrator on 2017/11/16. *模拟两个人收发邮件 */object HelloActor { def main(args: Array[String]): Unit = { val helloActor = new HelloAc原创 2017-11-16 23:19:59 · 220 阅读 · 0 评论