Scala - 快速学习05 - 数据结构】的更多相关文章

1- 数组(Array) 数组一般包括定长数组和变长数组. 可以不指明数组类型,Scala会自动根据提供的初始化数据来推断出数组的类型. 在Scala中,对数组元素的应用,是使用圆括号,而不是方括号. 示例:定长数组 就是长度不变的数组,在Scala中使用Array进行声明. val myIntArr = new Array[Int](3) //> myIntArr : Array[Int] = Array(0, 0, 0) myIntArr(0) = 111 myIntArr(1) = 222…
函数式编程的崛起 函数式编程中的“值不可变性”避免了对公共的可变状态进行同步访问控制的复杂问题,能够较好满足分布式并行编程的需求,适应大数据时代的到来. 函数是第一等公民 可以作为实参传递给另外一个函数 可以作为返回值 可以赋值给变量 可以存储在数据结构里 def greeting() = (name: String) => { s"Hello" + " " + name } //> greeting: ()String => String gre…
1- 下载与安装 下载链接:http://www.scala-lang.org/download/ CMD To run Scala from the command-line, simply download the binaries and unpack the archive. http://www.scala-lang.org/download/install.html CMD : SBT(Simple Build Tool) 专门为scala语言设计的构建工具,包括运行环境,能够进行依…
VI.Collections 1.Array 一些常用方法:println,  map( _ * 2), filter(_ % 2 == 0),  sum,   reserve Array是不可变的,可变的Array使用ArrayBuffer,需要先引入scala.collection.mutable包.例如,预先不知道数组长度可以使用ArrayBuffer来构建数组,构建完毕后,调用它的toArray方法,得到不可变的Array供后续使用,以提高性能.向ArrayBuffer的尾部添加或删除元…
1- 集合类(collection) 系统地区分了可变的和不可变的集合. scala.collection包中所有的集合类 可变集合(Mutable) 顾名思义,意味着可以修改,移除或者添加一个元素. scala.collection.mutable 中的所有集合类: 不可变集合(Immutable) 对不可变集合的操作(修改,添加,删除某个集合元素),都是返回一个新的集合,原来的集合不会发生改变. 由于“永远不会被改变”的特性,可以说不可变集合是线程安全的. Scala在默认情况下采用的是不可…
Scala中的模式匹配的功能可以应用到switch语句.类型检查.“解构”等多种场合. 简单匹配 Scala的模式匹配最常用于match语句中.Scala的match语句类似Java里的switch. 匹配实例: def color(num: Int): String = { val colorNum = num val colorStr = colorNum match { case 1 => "red" case 2 => "green" case…
1- 类 1.1- 简介:类.方法及对象 类是用来创建对象的蓝图. Scala文件中包含的多个类之间,都是彼此可见的,不需要声明为public. 创建对象 定义好类以后,就可以使用new关键字来创建对象. 字段默认为public,在类外部和内部都可以访问该字段. 私有字段使用private关键字修饰,外界无法访问,只有在类内部可以访问该字段. 方法 通过def关键字实现方法的定义 方法的返回值:方法里面的最后一个表达式的值就是方法的返回值,不需要靠return语句. 如果方法不返回任何值,返回值…
表达式求值策略(Evaluation Strategy) Scala中所有的运算都是基于表达式的. Call By Value - 对函数实参求值,且仅求值一次:函数调用之前对所有表达式进行求值 Call By Name - 函数实参每次在函数体内被用到时都会求值:函数形参类型以“=>”开头 进行函数设计和调用的过程中,要理解两者之间的差异,明白执行过程和期望的结果. Scala通常使用“Call By Value”. 示例1: object test { def test1(x: Int, y…
1- 变量 变量 mutable variable 在程序运行过程中其值可能发生改变的量 关键词var定义变量,定义时直接进行求值 常量 immutable variable 在程序运行过程中其值不会发生变化的量 在声明时就必须被初始化,而且一旦初始化后就不能再赋值: 关键词val定义常量,定义时直接进行求值: 关键词lazy val --- 惰性求值的常量,只有当该变量第一次被使用时才会被求值 常量不能修改.如果程序尝试修改常量的值,将会在编译时报错 变量类型引用 可以不显示指定变量的类型,S…
Scala简介 Scala(Scalable Language)是一门多范式(multi-paradigm)编程语言,Scala的设计吸收借鉴了许多种编程语言的思想,具备面向对象编程.函数式编程等特性. Scala具备强大的并发性,支持函数式编程,可以更好地支持分布式系统: Scala语法简洁,能提供优雅的API: Scala兼容Java,运行速度快,且能融合到Hadoop生态圈中:   Scala特性 交互式编程:提供REPL(Read-Eval-Print Loop,交互式解释器),可以即时…
IV.控制结构 1.if/else 除基本用法外,if/else语句能用来赋值,进而代替?:运算符.这得益于在Scala中,每个语句块都有值,就是该语句块最后一个语句的值.请看下面的代码. def abs(x: Int) = if(x < 0) -x else x 2.与If语句不同,While语句本身没有值,即整个While语句的结果是Unit类型的(). PS:scala中赋值语句也没有值. 3.用于迭代一个集合的for语句,格式为for(item <- collection).一些col…
为了用spark,先学下scala. 参考教程:http://meetfp.com/zh/scala-basic doc查询:http://docs.scala-lang.org 其它资料:http://scalachina.com/node/16 http://blog.csdn.net/mapdigit/article/details/21878083 特点: Scala是一种纯面向对象的语言,一切都是对象:将原始类型和类统一起来,同时也将函数和操作符统一起来. Scala又是函数式语言,这…
系列文章:[传送门] Python对象是Python语言的核心部分.Python使用类(class)和对象(object),进行面向对象(object-oriented programming,简称OOP)的编程. 面向对象的最主要目的是提高程序的重复使用性. Python的类 例子 class Bird(object): have_feather = True way_of_reproduction = 'egg' print (id(Bird)) #内建函数id():唯一的身份标识 #两个变…
60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空格缩进表示等. 今天自己用了60分钟快速学习了下Python的语法.和大家分享下,也算是自己这一个小时的学习总结吧! 第一步:开发环境搭建: PyCharm 4.5.4 下载地址:http://www.jetbrains.com/pycharm/download/ 支持多种类型的操作系统,我这次是在…
前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提供初始值时不要使用new,复杂对象数组没有提供初始值时必须提供new 用()来访问元素 用for(elem <- arr)来遍历数组 用for(elem <- arr if...)...yield...来将原数组转型为新数组 Scala数组和Java数组可以互操作 数组 1.定长数组定义: //定…
60分钟Python快速学习(给发哥一个交代) 阅读目录 第一步:开发环境搭建: 第一个Python功能:初识Python 02.Python中定义变量不需要数据类型 03.在Pythod中定义方法 04.在Python中书写自己的类 60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空格缩进表示等. 今天自己用了60分钟快速学习了下Python的语…
Java作为一门名副其实的工业级语言,语法友好,学习简单,大规模的应用给代码质量的管控带来了困难,特别是团队开发中,开发过程中的规范会直接影响最终项目的稳定性. 善医者“未有形而除之”,提高工程健壮性最好的方式是在代码出现问题之前就排除掉,不给Bug出现的机会.一份好的开发规范就可以起到这样的作用,大大减少产品上线后的问题. <阿里巴巴Java开发手册>是阿里巴巴的内部编码规范,阿里官方的Java代码规范标准, 手册以Java应用开发为维度,分为编程规约.异常日志规约.MYSQL规约.工程规约…
Scala基础学习 摘要: 在篇主要内容:如何把Scala当做工业级的便携计算器使用,如何用Scala处理数字以及其他算术操作.在这个过程中,我们将介绍一系列重要的Scala概念和惯用法.同时你还将学到作为初学者如何浏览Scaladoc文档 1. 使用Scala解释器 2. 用var和val定义变量 3. 数值类型 4. 使用操作符和函数 5. 浏览Scaladoc Scala解释器 启动Scala解释器的步骤如下: 安装Scala 确保scala/bin目录位于系统PATH中 在你的操作系统中…
最近文章:高可用数据采集平台(如何玩转3门语言php+.net+aauto).高并发数据采集的架构应用(Redis的应用) 项目文档:关键词匹配项目深入研究(二)- 分表思想的引入 吐槽:本人也是非常讨厌拿来主义的,有些培训每个细节都提到过,主管还找我要实际案例,而不是去安排合适的人去做这件事情,有点过于拿来主义了,有点担心. 好消息的是:高并发数据采集的架构应用(Redis的应用)团队已经实现了,不过有部分代码还是我写的,值得喝彩下,说明团队的能力还是不错的. 最近有时间,我也是用.net完成…
学习JavaScript数据结构与算法 的笔记 包含第四章队列, 第五章链表 本人所有文章首发在博客园: http://www.cnblogs.com/zhangrunhao/ 04队列 实现基本队列 class Queue { constructor () { this.items = [] } enqueue(item) { return this.items.push(item) } dequeque() { return this.items.shift() } font() { ret…
之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空格缩进表示等. 今天自己用了60分钟快速学习了下Python的语法.和大家分享下,也算是自己这一个小时的学习总结吧!   第一步:开发环境搭建: PyCharm 4.5.4 下载地址:http://www.jetbrains.com/pycharm/download/ 支持多种类型的操作系统,我这次是在Window 7 上安装的…
前言 由于工作原因,很多情况下需要快速学习新的知识,针对docker如果从头到尾看相关书籍学习会非常慢,所以整理了下docker的常用操作,只要跟着本文学习操作,一小时就能掌握docker大部最常用分操作方法,也可以当做工具手册随时查找学习,当然本文未涉及的部分,还是需要通过阅读书籍学习,这文章的目的是帮助需要快速上手应用的人.由于写该文章的时候还比较早,所以所用系统和docker版本比较早,但是基本上其他版本操作基本一致,就不在重新更换版本重新编写. 一. Ubuntu 14.0.4系统安装d…
前言 总括: 本文讲解了数据结构中的[集合]概念,并使用javascript实现了集合. 原文博客地址:学习javascript数据结构(三)--集合 知乎专栏&&简书专题:前端进击者(知乎)&&前端进击者(简书) 博主博客地址:Damonare的个人博客 人生多风雨,何处无险阻. 正文 集合简介 在上一篇学习javascript数据结构(二)--链表中我们说了链表这种数据结构,但归根结底,不论是栈,队列亦或是链表都是线性结构.他们都是一种很规矩的数据结构,就像幼儿园的小朋…
前言 人生总是直向前行走,从不留下什么. 原文地址:学习javascript数据结构(二)--链表 博主博客地址:Damonare的个人博客 正文 链表简介 上一篇博客-学习javascript数据结构(一)--栈和队列说了栈和队列在javascript中的实现,我们运用javascript提供的API很容易的实现了栈和队列,但这种数据结构有一个很明显的缺点,因为数组大小是固定的所以我们在移除或是添加一项数据的时候成本很高,基本都需要吧数据重排一次.(javascript的Array类方法虽然很…
前言 只要你不计较得失,人生还有什么不能想法子克服的. 原文地址:学习javascript数据结构(一)--栈和队列 博主博客地址:Damonare的个人博客 几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构.javascript也有数组类型,而数组呢,其实就是一种特殊的栈或是队列,利用javascript Array所内置的API可以很方便的模拟栈和队列. 正文 我想对于数组每一个学过编程语言的都不会陌生吧,我们知道,我们可以在数组的任意位置添加或是删除元素,然而,有时候我…
LinqPad工具:帮你快速学习Linq 参考: http://www.cnblogs.com/li-peng/p/3441729.html ★:linqPad下载地址:http://www.linqpad.net/: 一.基本操作 1.    第一步:连接数据库: 2. 进行具体的linq操作: 执行查询: 二.实战用法:Left Join和Inner Join 1. 首先建数据库: 代码: create database MyDataDemo go use MyDataDemo go dro…
估计不会写C语言的同学也都听过C语言,从头开始快速学一下吧,以后肯定能用的上. 如果使用过其它类C的语言,如JAVA,C#等,学C的语法应该挺快的. 先快速学习并练习一些基本的语言要素,基本类型,表达式,函数,循环结构, 基本字符串操作, 基本指针操作,动态分配内存,使用结构表示复杂数据, 使用函数指针实现灵活逻辑. 虽然C是一个规模很小的语言,但也得自己多设计一些练习练手才能学会. 基本类型 我就记得char, int, 别的都不常用吧应该,用的时候再搜索. 表达式 和JAVA, C#差不多吧…
JavaScript学习05 定时器 定时器1 用以指定在一段特定的时间后执行某段程序. setTimeout(): 格式:[定时器对象名=] setTimeout(“<表达式>”,毫秒) 功能:执行<表达式>一次. 例子: <!DOCTYPE html> <html> <head> <title>timer1.html</title> <meta http-equiv="keywords" co…
Java虚拟机JVM学习05 类加载器的父委托机制 类加载器 类加载器用来把类加载到Java虚拟机中. 类加载器的类型 有两种类型的类加载器: 1.JVM自带的加载器: 根类加载器(Bootstrap) 扩展类加载器(Extension) 系统类加载器(System) 2.用户自定义的类加载器: java.lang.ClassLoader的子类,用户可以定制类的加载方式. JVM自带的加载器 Java虚拟机自带了以下几种加载器. 1.根(Bootstrap)类加载器: 该加载器没有父加载器. 它…
1. Java线程池 线程池:顾名思义,用一个池子装载多个线程,使用池子去管理多个线程. 问题来源:应用大量通过new Thread()方法创建执行时间短的线程,较大的消耗系统资源并且系统的响应速度变慢.[在一个什么程度上能够判断启用线程池对系统的资源消耗比启动定量的new Thread()资源消耗低?这个怎么测试?][用户体验卡顿?慢?观察CPU百分比?] 解决办法:使用线程池管理短时间执行完毕的大量线程,通过重用已存在的线程,降低线程创建和销毁造成的消耗,提高系统响应速度. 2. Java线…