一.模式匹配 Scala支持模式匹配机制,可以代替swith语句.执行类型检查.以及支持析构表达式等. 1.1 更好的swith Scala不支持swith,可以使用模式匹配match...case语法代替.但是match语句与Java中的switch有以下三点不同: Scala中的case语句支持任何类型:而Java中case语句仅支持整型.枚举和字符串常量: Scala中每个分支语句后面不需要写break,因为在case语句中break是隐含的,默认就有: 在Scala中match语句是有返…
所谓学习,那么首先就先简单介绍一下scala吧 1.scala的介绍 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性. Scala 运行在Java虚拟机上,并兼容现有的Java程序. Scala 源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库. 2.Scala 特性 面向对象特性 Scala是一种纯面向对象的语言,每个值都是对象.对象的数据类型以及行为由类和特质描述. 类抽象机制的扩展…
一.Scala中的并发编程 1.Java中的并发编程 ①Java中的并发编程基本上满足了事件之间相互独立,但是事件能够同时发生的场景的需要. ②Java中的并发编程是基于共享数据和加锁的一种机制,即会有一个共享的数据,然后有若干个线程去访问这个共享的数据(主要是对这个共享的数据进行修改),同时Java利用加锁的机制(即synchronized)来确保同一时间只有一个线程对我们的共享数据进行访问,进而保证共享数据的一致性. ③Java中的并发编程存在资源争夺和死锁等多种问题,因此程序越大问题越麻烦…
一.类 1.类的定义 scala语言中没有static成员存在,但是scala允许以某种方式去使用static成员这个就是伴生机制,所谓伴生,就是在语言层面上,把static成员和非static成员用不同的表达方式,class和object,但双方具有相同的package和name,但是最终编译器会把他们编译到一起,这是纯粹从语法层面上的约定.通过javap可以反编译看到.另外一个小魔法就是单例,单例本质上是通过伴生机制完成的,直接由编译器生成一个class对象,这样至少在底层能够统一. //在…
一.Scala解释器的使用 REPL:Read(取值)-> Evaluation(求值)-> Print(打印)-> Loop(循环) scala解释器也被称为REPL,会快速编译scala代码为字节码,然后交给JVM来执行. 计算表达式:在scala>命令行内,键入scala代码,解释器会直接返回结果. 如果你没有指定变量来存放这个值,那么值默认的名称为res,而且会 显示结果的数据类型,比如Int.Double.String等等. 例如,输入1 + 1,会看到res0: Int…
一.映射(Map) 1.1 构造Map // 初始化一个空map val scores01 = new HashMap[String, Int] // 从指定的值初始化Map(方式一) val scores02 = Map("hadoop" -> 10, "spark" -> 20, "storm" -> 30) // 从指定的值初始化Map(方式二) val scores03 = Map(("hadoop"…
一.List字面量 List是Scala中非常重要的一个数据结构,其与Array(数组)非常类似,但是List是不可变的,和Java中的List一样,其底层实现是链表. scala> val list = List("hadoop", "spark", "storm") list: List[String] = List(hadoop, spark, storm) // List是不可变 scala> list(1) = "…
一.前言 今天,我们要通过实验学习和认识一下看门狗的使用,看门狗是为了防止防止程序跑飞的,通过不断的喂狗,使看门狗能持续监管程序的运行状态,当程序跑飞时,能及时把程序拽回来. 二.原理与分析 在CPU 可能受到一个软件颠覆的情况下,看门狗定时器(WDT)用作一个恢复的方法.当软件在选定时间间隔内不能清除WDT 时,WDT 必须就复位系统.看门狗可用于受到电气噪音.电源故障.静电放电等影响的应用,或需要高可靠性的环境.如果一个应用不需要看门狗功能,可以配置看门狗定时器为一个间隔定时器,这样可以用于…
一.泛型 1.泛型的介绍 泛型用于指定方法或类可以接受任意类型参数,参数在实际使用时才被确定,泛型可以有效地增强程序的适用性,使用泛型可以使得类或方法具有更强的通用性.泛型的典型应用场景是集合及集合中的方法参数,可以说同java一样,scala中泛型无处不在,具体可以查看scala的api. 2.泛型类.泛型方法 泛型类:指定类可以接受任意类型参数. 泛型方法:指定方法可以接受任意类型参数. 3.示例 1.定义泛型类 /* 下面的意思就是表示只要是Comparable就可以传递,下面是类上定义的…
一.概念 Scala 2.10引入了一种叫做隐式类的新特性.隐式类指的是用implicit关键字修饰的类.在对应的作用域内,带有这个关键字的类的主构造函数可用于隐式转换. 隐式转换和隐式参数是Scala中两个非常强大的功能,利用隐式转换和隐式参数,你可以提供优雅的类库,对类库的使用者隐匿掉那些枯燥乏味的细节. 二.作用 隐式的对类的方法进行增强,丰富现有类库的功能 三.隐式参数 1)关键字:implicat 2)隐士的东西只能在object里面才能使用 3)作用域 四.隐式转换函数 是指那种以i…