scala资料总结,一些小技巧
1、得到每种数据类型所表示的范围
Short.MaxValue | 32767 |
Short.MinValue | -32768 |
Int.MaxValue | 2147483647 |
Int.MinValue | -2147483648 |
Double.MaxValue | 1.7976931348623157E308 |
Double.MinValue | -1.7976931348623157E308 |
2、Scala 中没有break方法,可以使用
import scala.util.control.Breaks._
break()
3、用scala 产生0-256的随机数
- import java.lang.Math.random
- A(i) =(random()*256).toShort
4、数学函数,幂指数
- import breeze.numerics.pow
5、类型转换,如转换为 short 类型
a.toShort
6、循环方式
while
foreach(a=>println(a))
for(i<- 0 to 10)
7、定义数组方式
var A= new Array[Int](100)
8、定义函数方式
def DtoB(X :Int) : Array[Short] ={ }
总之,千万不要忘了scala 是面向函数语言
scala资料总结
1、Scala中文社区
http://www.scala-china.NET/discuz/forum.PHP?mod=viewthread&tid=142875&extra=page%3D1
2、scala标准库
http://www.scala-lang.org/api/current/index.html#package
3、scala tour(非常有用,总结得很精辟)
http://zh.scala-tour.com/#/welcome
4、scala 学习笔记
http://blog.csdn.Net/a071800/article/details/47279951
5、scala 基础学习篇(别人的学习笔记)
http://blog.csdn.net/android_lyxd/article/details/38016851
6、scala 学习笔记
http://blog.csdn.net/bluishglc/article/details/43956625
7、scala基础语法代码
http://blog.csdn.net/yunlong34574/article/details/38620699
8、scala list讲解
http://www.yiibai.com/scala/scala_lists.html
scalc入门与配置
一、概述
1.什么是scala
Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。
scala 特性:
面向对象特性、
函数式编程
静态类型
扩展性
并发性
详细的阐述,参考菜鸟教程:http://www.runoob.com/scala/scala-intro.html
易百教程:https://www.yiibai.com/scala/scala_overview.html
通过官网的一句话总结:当面向对象遇上函数式编程。
到今天(2018年),scala 已经15岁了!
2.scala 如何工作
- 编译成Java字节码
- 可在任何标准JVM上运行
- 甚至是一些不规范的JVM上,如Dalvik
- Scala编译器是Java编译器的作者写的
3.为什么选择scala

- 最主要有三点:
1. API能做得优雅; 这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验。
2. 能融合到Hadoop生态圈,要用JVM语言; Hadoop现在是大数据事实标准,Spark并不是要取代Hadoop,而是要完善Hadoop生态。
JVM语言大部分可能会想到Java,但Java做出来的API太丑,或者想实现一个优雅的API太费劲。
3. 速度要快; Scala是静态编译的,所以和JRuby,Groovy比起来速度会快很多,非常接近Java。关于Scala性能的问题,
主要分两种情况,
1. Scala的基准性能很接近Java,但确实没有Java好。但很多任务的单次执行的,性能损失在毫秒级不是什么问题;
2. 在大数据计算次数很多的情况下,我们全部写成命令式,而且还要考虑GC,JIT等基于JVM特性的优化。Scala很难是个很含糊的问题,
关键是要看你想达到什么目的。我们培训客户做Spark开发,基本上一两个星期就可以独立工作了。当然师傅领进门,修行靠个人
,一两个星期能独立工作不代表能马上成为Scala或Spark专家。
这里回答主要针对大数据产品应用开发,不是大数据分析。大数据分析是个更泛的话题,包括大数据分析实验和大数据分析产品等。
实验关心建模和快速试不同方式,产品关心稳定、可拓展性。大数据分析实验首选R(SAS),python和Matlab, 通常只拿真实数据的一小部分,
在一个性能很好的单机上试各种想法。Scala目前在大数据分析实验上没有太多优势,不过现在有人在做R语言的Scala实现,
可以无缝和Spark等大数据平台做衔接。当然现在也已经有SparkR了,可能用R和Spark做交互。

二、安装scala
- SCALA_HOME: 变量值一栏输入:F:\scala
- Path追加:%SCALA_HOME%\bin;%SCALA_HOME%\jre\bin;
- scala -version #验证
三、安装IDEA的scala插件
重启完成插件的安装、
三、基础知识
1.交互式编程
在cmd窗口输入scala即可

- $ scala
- Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_31).
- Type in expressions to have them evaluated.
- Type :help for more information.
- scala> 1 + 1
- res0: Int = 2
- scala> println("Hello World!")
- Hello World!
- scala>

2.注释
与Java保持一致
3.包
定义包与导包与Java一致
4.访问修饰符
Scala 访问修饰符基本和Java的一样,分别有:private,protected,public。
如果没有指定访问修饰符符,默认情况下,Scala对象的访问级别都是 public。
Scala 中的 private 限定符,比 Java 更严格,在嵌套类情况下,外层类甚至不能访问被嵌套类的私有成员。
在 scala 中,对保护(Protected)成员的访问比 java 更严格一些。因为它只允许保护成员在定义了该成员的的类的子类中被访问(Java本包和子类)。
5.结束符
结束符分号;在scala是可选的(通常IDEA会提示是多余的)
IDEA创建scala项目的三种方法
转自 https://blog.csdn.net/u013850277/article/details/78526046
- 用了好几年的Eclipse,最近想着了解下Scala,听说Intelli JDEA这个工具很强大,因而开始着手试试 Intelli JDEA,下面是运用该工具创建Scala项目的一些简单操作。
Scala的拥护者们认为Scala的主要优势是速度和它的表达性。
安装完 IJ IDEA 工具以及配置好Scala 环境便可进行Scala 开发了。
IJ IDEA 原本是不支持开发Scala的,因而需要自行安装Scala插件在线安装Scala插件步骤如下:
一、创建普通Scala 项目
选择IDEA 便是创建普通的Scala 项目(注:IJ IDEA版本的不同,这里IDEA可能显示成Scala,不过这个并没有什么影响)
如果scala已下载安装,此处直接添加已有scala的路径即可,下载步骤如下:
新建一个scala class ,选object,创建后如下所示:
二、创建Sbt 项目
- sbt是scala的御用打包管理工具,SBT-based Scala project (recommended)
- 注:第一次通过 SBT 创建Scala项目时会很慢(大概需要十来分钟),因为SBT会加载很多相关的包,但是后面再进行创建就会很快了。
前面的步骤跟创建普通项目一样:
- 选择Scala 版本以及SBT 版本,笔者SBT选择默认的,Scala 选择与本地安装版本一致的
- 创建后的项目结构如图所示:
- 创建Object
三、通过Maven 创建 Scala 项目
- 通过File - > new project 与前面两种方式一致就不重复了
- 选择Maven(前提得先配置好IJ IDEA 工具的Maven环境)
具操作见下图:
- 点击Next,如下图:
- 点击Next,选择已安装的Maven 环境
- 创建成功后如下所示:
- 上面的 App 类以及test中对应的类是创建项目时自动创建的,试着运行发现出现上述错误,本人比较懒,所以直接将自动创建的类全部drop掉,自行创建了一个HelloScala类,运行没问题,如下图:
- 1.首先启动hdfs
- 2.向hdfs上传一个文件到hdfs://node1.itcast.cn:9000/words.txt
- 3.在spark shell中用scala语言编写spark程序
- sc.textFile("hdfs://node1.itcast.cn:9000/words.txt").flatMap(_.split(" "))
- .map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://node1.itcast.cn:9000/out")
- 4.使用hdfs命令查看结果
- hdfs dfs -ls hdfs://node1.itcast.cn:9000/out/p*
- 说明:
- sc是SparkContext对象,该对象时提交spark程序的入口
- textFile(hdfs://node1.itcast.cn:9000/words.txt)是hdfs中读取数据
- flatMap(_.split(" "))先map在压平
- map((_,1))将单词和1构成元组
- reduceByKey(_+_)按照key进行reduce,并将value累加
- saveAsTextFile("hdfs://node1.itcast.cn:9000/out")将结果写入到hdfs中
scala资料总结,一些小技巧的更多相关文章
- Java内存管理的9个小技巧
Java内存管理的9个小技巧很多人都说“Java完了,只等着衰亡吧!”,为什么呢?最简单的的例子就是Java做的系统时非常占内存!一听到这样的话,一定会有不少人站出来为Java辩护,并举出一堆的性能测 ...
- iOS 开发中使用到的小技巧汇总
国庆即将来到,一个小项目也即将完成,把自己在项目中用的一些小技巧写出来,方便查找. 1,去掉分割线--动画设置透明度alpha //去掉tableView的分隔线: self.tableVie ...
- Chrome 的 100 个小技巧 中文版
英文原版<100 Tips For Chrome, Chrome OS and ChromeBook Users>作者博客 - chromestory.com 本文是对<100 Ti ...
- 【Xamarin挖墙脚系列:代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧(转)】
正愁如何选择构建项目中的视图呢,现在官方推荐画板 Storybord...但是好像 xib貌似更胜一筹.以前的老棒子总喜欢装吊,用代码写....用代码堆一个HTML页面不知道你们尝试过没有.等页面做出 ...
- Datatable.Compute小技巧
在个人版机房重构的过程中,大家最发愁的一件事无非就是上下机,结账和报表.那么在结账的过程中,最发愁的是否就数计算日结账单的数据和周结账的数据.还记得在第一遍机房收费系统的过程中用的是for 循环,但是 ...
- Vim实用小技巧
Vim实用小技巧 一些网络上质量较高的Vim资料 从我07年接触Vim以来,已经过去了8个年头,期间看过很多的Vim文章,我自己觉得非常不错,而且创作时间也比较近的文章有如下这些. Vim入门 目前为 ...
- 关于Java内存管理的几个小技巧
这里将介绍几则Java内存管理的小技巧,让你让你从Java入门开始告别陋习,为Java程序提速.有不少人都说"Java完了,只等着衰亡吧!",为什么呢?最简单的的例子就是Java做 ...
- MAC使用小技巧之用好mac电脑?的10个必知的小技巧!
很多朋友是不是都有这样的困惑,刚接手Mac电脑,无论是笔记本亦或是台式机,很是不方便,因为windows系统那种习惯已经先入为主了,今天就给大家普及一些小技巧. 当你看到这篇文章,不管你有没有mac电 ...
- Facebook内部报告:争取青少年用户的鸡贼小技巧
翻译:吴祺深 欢迎访问网易云社区,了解更多网易技术产品运营经验. 去年十月,Facebook收购了TBH,最后却关闭了这款APP,不过一则内部报告透露了,通过这款流行的投票APP,这家公司学会了如何去 ...
随机推荐
- CI框架--浅谈前后台区分
谈到CI框架,这是我第二个用到的框架,初步使用过后,眼前一亮.CI框架上手简单.模式明确.适合新手学习框架时入手. 下面给大家讲讲CI框架区分前后台文件的具体做法: 首先在application文件夹 ...
- 使用Gradle构建项目
使用gradle构建项目之前,咱们先聊聊maven,使用maven构建项目和配置主要 接下来正式使用gradle来构建项目的和步骤: 1.下载源码 2.下载gradle 1.下载地址:https:// ...
- 使用Centos7 安装docker的步骤
1.Linuxyum源切换阿里云软件源 备份本机软件源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.b ...
- [J2EE规范]RMI简单实例 标签: j2ee实例 2017-06-29 18:05 217人阅读 评论(13)
RMI是什么? RMI是指Java Remote Method Invocation,远程方法调用,RMI是Java的一组拥护开发分布式应用程序的API.RMI使用Java语言接口定义了远程对象,它集 ...
- Intellij:用Intellij出的Gradle插件进行开发
前言:之前看到网上大部分的Intellij开发教程都是采用Intellij官方文档的那个版本,配置Intellij SDK一大堆的. 现在给大家介绍简单的方法吧,我们组内大神找到的.我们需要用到的是I ...
- 深入理解 Node.js 进程与线程
原文链接: https://mp.weixin.qq.com/s?__biz=MzAxODE2MjM1MA==&mid=2651557398&idx=1&sn=1fb991da ...
- day39 07-Spring的AOP:自动代理
带有切点的切面或者是不带有切点的切面配置一个类就要配置一段生成代理的代码,这样太麻烦了. 选中orderDao右键watch JDK动态代理是先创建被代理对象,然后在创建代理对象的时候传入被代理对象. ...
- IIS 设置 FTP 服务器 添加多个账户
我们有很多童鞋经常开不动IIS自带的FTP如何创建,就算创建了也不会实现多用户,下面我来分享一下我的经验吧: 使用 IIS 设置 FTP 服务器 依次单击“开始”按钮.“控制面板”和“添加或删除程序” ...
- oracle函数的分类
v 单行函数:对每一行输入值进行计算,得到相应的计算结果,返回给用户,也就是说,每行作为一个输入参数,经过函数计算得到每行的计算结果. 比如select length(ename) from emp ...
- 直击 KubeCon 2019 现场,阿里云 Hands-on Workshop 亮点回顾
2019 年 6 月 24 日,KubeCon + CloudNativeCon 第二次在中国举办.此次大会阿里共有 26 个技术演讲入选,并有两场沙龙活动,阿里云专家也与技术极客们也再次相聚.Kub ...