• Scala编程:隐式转换与隐式参数

    Scala编程:隐式转换与隐式参数Scala提供的隐式转换和隐式参数功能,是非常有特色的功能。是Java等编程语言所没有的功能。它可以允许你手动指定,将某种类型的对象转换成其他类型的对象。通过这些功能,可以实现非常强大,而且特殊的功能。Scala的隐式转换,其实最核心的就是定义隐式转换函数,即implicit conversion function。定义的隐式转换函数,只要在编写的程序内引入,就会被Scala自动使用。Scala会根据隐式转换函数的签名,在程序中使用到隐式转换函数接收的参数类型定义的对象时,会自动将其传入隐式转换函数,转换为另外一种类型的对象并返回。这就是“隐式转换”。隐式转换函数叫什...
      2019-03-24 22:00:08   838    未分类
  • Scala编程:类型参数

    Scala编程:类型参数类型参数是什么?类型参数其实就类似于Java中的泛型。先说说Java中的泛型是什么,比如我们有List a = new ArrayList(),接着a.add(1),没问题,a.add("2"),然后我们a.get(1) == 2,对不对?肯定不对了,a.get(1)获取的其实是个String——"2",String——"2"怎么可能与一个Integer类型的2相等呢?所以Java中提出了泛型的概念,其实也就是类型参数的概念,此时可以用泛型创建List,List a = new ArrayList[Integer](),那么,此时a.add(1)没问题,而a.add("2")呢?就不行了,因为泛型会限制,只能往集合中添加Integer类型,这样就避免了上述的问题。那么Scala的类型参数是什么?其实意思...
      2019-03-24 18:00:43   932    未分类
  • Scala编程:模式匹配

    模式匹配模式匹配是Scala中非常有特色,非常强大的一种功能。模式匹配,其实类似于Java中的swich case语法,即对一个值进行条件判断,然后针对不同的条件,进行不同的处理。但是Scala的模式匹配的功能比Java的swich case语法的功能要强大地多,Java的swich case语法只能对值进行匹配。但是Scala的模式匹配除了可以对值进行匹配之外,还可以对类型进行匹配、对Array和List的元素情况进行匹配、对case class进行匹配、甚至对有值或没值(Option)进行匹配。而且对于Spark来说,Scala的模式匹配功能也是极其重要的,在spark源码中大量地使用了模式匹配功能。因此为了更好地编写Scala程序,并且更加通畅地看懂Spark的...
      2019-03-24 12:00:45   985    未分类
  • Scala编程:函数式编程

    Scala函数式编程语法将函数赋值给变量Scala中的函数是一等公民,可以独立定义,独立存在,而且可以直接将函数作为值赋值给变量Scala的语法规定,将函数赋值给变量时,必须在函数后面加上空格和下划线def sayHello(name: String) { println("Hello, " + name) }val sayHelloFunc = sayHello _ sayHelloFunc("leo")匿名函数Scala中,函数也可以不需要命名,此时函数被称为匿名函数。可以直接定义函数之后,将函数赋值给某个变量;也可以将直接定义的匿名函数传入其他函数之中Scala定义匿名函数的语法规则就是,(参数名:参数类型) => 函数体这种匿名函数的语法必须深...
      2019-03-23 22:01:44   957    未分类
  • Scala编程:面向对象

    类定义一个简单的类scala> :paste// Entering paste mode (ctrl-D to finish)class HelloWorld {  private var name = "leo"   def sayHello() { print("Hello, " + name) }  def getName = name }// Exiting paste mode, now interpreting.defined class HelloWorldscala> var helloWorld = new HelloWorldhelloWorld: HelloWorld = HelloWorld@383d9653 scala> helloWorld.sayHello()Hello, leo scala> helloWorld.getName // 也可以不加括号,如果定义方法时不带括号,则调用方法时也不能带括号res83: ...
      2019-03-23 18:00:06   1144    未分类
  • Scala基础语法:Map与Tuple

    创建Map创建一个不可变的Mapscala> val ages=Map("leo"->30, "Jen"->25) ages: scala.collection.immutable.Map[String,Int] = Map(leo -> 30, Jen -> 25) scala> ages("leo") res65: Int = 30scala> val ages = Map(("Leo", 30), ("Jen", 25), ("Jack", 23))创建一个可变的Mapscala> val ages=scala.collection.mutable.Map("leo"->30, "Jen"->25) ages: scala.collection.mutable.Map[String,Int] = Map(Jen -> 25, leo -> 30) scala> ages("leo") = 31scala> ages("leo&quo...
      2019-03-23 12:00:05   818    未分类
  • Scala基于语法:数组

    Array创建空数组val a = new Array[Int](10)val a = new Array[String](10)val a = Array("hello", "world") a(0) = "hi"ArrayBuffer在Scala中,如果需要类似于Java中的ArrayList这种长度可变的集合类,则可以使用ArrayBuffer。scala> import scala.collection.mutable.ArrayBufferimport scala.collection.mutable.ArrayBufferscala> val b = ArrayBuffer[Int]() b: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer() scala> b += 1res24: b.type = ArrayBuffer(1) scala> b +=(2,3,4,5) res26: b.type = ArrayBuffer(1, 2, 3, 4, 5) scala>&...
      2019-03-22 22:00:20   883    未分类
  • Scala基础语法:函数

    Scala基础语法:函数函数的定义与调用scala> :paste// Entering paste mode (ctrl-D to finish)def sayHello(name:String, age:Int)={ if (age > 18){   printf("hi %s, you are a big boy\n", name)   age  } else{   printf("hi %s,you are a little boy\n",name)   age  } }// Exiting paste mode, now interpreting.sayHello: (name: String, age: Int)Intscala> sayHello("leo", 30) hi leo, you are a big boy res35: Int = 30单行函数scala > def sayHello(name...
      2019-03-22 18:00:40   1124    未分类
  • Scala基础语法:条件控制域循环

    if表达式的定义val age = 30 if(age > 18) 1 else 0if表达式的类型判断val age = 30 if(age > 18) "adult" else 0自己判断返回值类型,返回公共类型Any在scala的命令行可以使用:paste来运行整段代码scala> :paste // Entering paste mode (ctrl-D to finish) if(age > 18) "adult" else 0 // Exiting paste mode, now interpreting. res12: Any = adult默认情况下,scala不需要语句终结符,默认每一行作为一条语句print和println: println多一行换行符scala> print("hello world") hello world scala> println(&qu...
      2019-03-21 12:00:44   782    未分类
  • Spark概述

    Spark使用Spark RDD、Spark SQL、Spark Streaming、MLib、GraphX就解决了大数据领域中离线批处理、交互式查询、流失计算、机器学习、图计算等常见的任务。集成Hadoop:Hadoop的HDFS、Hive、HBase负责存储,YARN负责资源调度,Spark负责复杂计算。Spark相较于MepReduce速度快的主要原因,MapReduce的计算模型太死板,必须是map-reduce模式。Spark SQL和Hive:Spark SQL替代的是Hive的查询引擎,而不是全部SparkStreaming和Storm:都用于实时流计算,如果对实时性要求较高则使用Storm,如果在几秒内实时使用SparkStreaming。Hadoop + Spark如果能够学扎实基础课程,以及Spark核心编程,那么可以称之为Spark入门级别的水平。如果能够学扎实基础课程、...
      2019-03-15 22:01:23   1010    未分类

联系我们

在线咨询: 点击这里给我发消息

邮件:731000228@qq.com