Scala知识图谱

news/2024/8/21 14:10:22

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

环境搭建

在SBT的项目中使用scala

console:在平时学习、表达式时,不方便调用的大型的intellij,如果直接使用scala,不能调用前期下载的库。这是可以使用

sbt
console

** 使用SBT构建Scala应用** >$ sbt ~compile
以上命令意味着, 我更改了任何源代码并且保存之后,将直接触发SBT编译相应的源代码以及相应的依赖变更。 假如我们有2个显示器, 左边是命令行窗口,右边是编辑器或者IDE窗口,那么,我们只要在右边的显示器中编辑源代码,左边的显示器就可以实时的反馈编译结果, 这将极大加快开发的迭代速度, 听起来并且看起来是不是很cool?!

** Scala入门之工具篇**

** scala sbt 代理设置**

** sbt下载加速器**

添加以下代码到你的文件中,这样可能会带来莫名的错误!! Enable the SBT plugin by adding

addSbtPlugin("io.get-coursier" % "sbt-coursier" % "1.0.1")

to ~/.sbt/0.13/plugins/build.sbt (enables it globally), or to the project/plugins.sbt file of an SBT project. Tested with SBT 0.13.8 / 0.13.9 / 0.13.11 / 0.13.12 / 0.13.13 / 0.13.15 / 0.13.16-M1 / 1.0.1-M5.

**sbt官方文档 **

> 持续构建和测试   为了加快编辑-编译-测试循环,你可以让 sbt 在你保存源文件时自动重新编译或者跑测试。 在命令前面加上前缀 ~ 后,每当有一个或多个源文件发生变化时就会自动运行该命令。例如,在交互模式下尝试:  > ~ compile 按回车键停止监视变化。 你可以在交互模式或者批处理模式下使用 ~ 前缀。 参见 触发执行 获取详细信息。

** How could I convert a pom xml to sbt dependencies?**

转换 pom.xml文件到 build.sbt文件。 - Place this code into a file called PomToSbt.scala next to pom.xml - Type scala PomtoSbt.scala > build.sbt - The dependencies from pom.xml will be extracted and placed into a complete build.sbt file.

学习例子

  • Scala学习例子

Scala 设计理念,作者亲自写的,翻译了成中文。适合有基础的人宏观上了解scala。

-Scala概述

类和对象(Classes and Objects)

  • What are type classes in Scala useful for?

基本类型和操作(Basic Types and Operations)

函数式对象()

内建控制结构()

函数和包

类型参数化

-Scala中的函数式特性-来自王宏江:非常建议通读一下全文:里面讲了对高阶函数的抽象,函数柯里化的作用。下面这种语句可以经常看到,但是在搜索时不好找的,在这篇文章里能很好解释:M:f[]{g(Int => String)}(a:m):unit{}

类型的协变、逆变

  • Scala中的协变,逆变,上界,下界等 -Of variance and functors

函数和闭包

  • 怎样用简单的语言解释 monad?

控制抽象

组合与继承

  • Introduction to Algebraic Types in Scala:18页的PPT,简单明了

Scala的层级

特质

包和引用

断言和单元测试

样本类和模式匹配

使用列表

Scala容器类体系结构

  • [ Scala容器类体系结构 ]http://docs.scala-lang.org/zh-cn/overviews/core/architecture-of-scala-collections.html 中级难度,对于理解隐形参数、容器的设计都有帮助。

  • https://stackoverflow.com/questions/8293173/what-instance-of-canbuildfrom-does-the-scala-compiler-find-out

集合类型

  • 序列trait:Seq、IndexedSeq及LinearSeq:列出各个操作

有状态的对象

类型参数化

  • Java关于Scala的“视界(view bound)”的模拟

Scala中有一个概念,叫做“视界”。所谓“视界”是指,我不care这个对象具体是什么类型,但我可以把它“视作”某种类型加以利用。

抽象成员

隐式转换和参数

  • 深入理解Scala的隐式转换系统

  • Scala 隐式转换

  • Scala implicits编程彻底实战及Spark源码鉴赏

  • 褪去Scala的糖衣(10) -- Implicit Function

  • Demystifying Implicits and Typeclasses in Scala:> implicit conversions. If you define a one argument method with the implicit modifier, Scala uses that as a way to convert arguments of the input type to the output type in calls when this method is in scope.

  • ImplicitDesignPatternsinScala:lihaoyi新加坡人,scala.js的推动者,可能是新加坡李家的皇族。

  • 隐式类实际是转换成一个类和一个隐式函数

Implicits-resolution

  • Implicits Resolution Type Level Programming in Scala step by step,文章浅显易懂。

实现列表

Scala容器类体系结构

  • Scala容器类体系结构 这篇文章适合中级,对于理解容器、隐形参数都有帮助。

For表达式

抽取器

注解

使用XML

使用对象的模块化编程

对象相等性

Scala和Java的结合

actor和并发

####Future 和 Promise:很多文章在讲future和promise时,只讲使用,没有将关键的性质,当一个future开始运行时,是在另一个线程空间内,因此就有回调之说。

def apply[T](body: =>T)(implicit executor: ExecutionContext): scala.concurrent.Future[T]  

Yup. You got me there. The method also accepts something called an ExecutionContext as an implicit argument. When a block of code is used to construct a Future, the computation runs on an ExecutionContext. The ExecutionContext is synonymous with a ThreadPool and when a Future is started, it runs on a separate Thread.

Analyzing functions returning Future[T]: Not all rely on the Future.

Create actor区别 与 Scala lazy declaration,Akka Actor Props factory:生成Actor有多种方法,为什么官方推荐使用Actoof(classOf[myActor])

连接符解析

Gui编程

奇淫异巧

  • 浅谈 Scala 中下划线的用途
  • scala的cons(::)和(:::)连接符和对List元素的操作
  • scala的List容器里++和:::运算符有什么不同?:简单的说,两个算符(其实是函数)的效果是一模一样的。:::是 List 专有的函数,后来Scala 的 collection API 重新设计,加入了++函数,++定义在 trait TraversableLike 中,更加通用,但是 List 中已经存在的:::是不能删除的,要保留兼容性。

关于Mondad

--Cats库附带的文档

其他资源:

  • awesome scala -王宏江:中原Scala水平高的高人

  • 褪去Scala的糖衣:对Scala初学后,可以学习这个系列的博文。

  • utils4s(http://jacksu.github.io/utils4s)

  • Twiter课堂

  • a071800的专栏 (http://http://blog.csdn.net/a071800/article/details/47279951) 里面比较零碎,有比较少见的文法、句法。可以浏览看下。

  • What is the rationale behind having companion objects in Scala?(https://stackoverflow.com/questions/609744/what-is-the-rationale-behind-having-companion-objects-in-scala)输入链接说明

  • Scala泛函编程实践之路:博文里面有,泛函程序学习,Scalaz库学习。

  • The Neophyte's Guide to Scala

  • tpolecat comments about scala : Returning the "Current" Type in Scala

应用实践

  • Scala在挖财的应用实践

茶余饭后

  • Scala的设计目标:

    -Scala这门语言最早是如何被设计出来的? -Scala的设计目标——Martin Odersky访谈(二)

    -Scala类型系统的目的——Martin Odersky访谈(三)

    -Scala模式匹配的亮点——Martin Odersky访谈(四)

转载于:https://my.oschina.net/greister/blog/832343


http://www.niftyadmin.cn/n/2776859.html

相关文章

java 8 排序_Java 八大排序实现

参考链接本文只给出算法的Java实现版本,具体原理参考:八大排序算法。公用代码下面的swap()函数,是排序算法中经常用到的,单独贴出来。public void swap(int[] a, int i, int j) {int tmp a[i];a[i] a[j];a[j] tmp;}冒泡排序/**…

Web服务器一些机制

1 通信协议 1.1 HTTP/HTTPS HTTP是HyperTextTransfer Protocol(超文本传输协议)的缩写。HTTP协议是用于从Web服务器传输超文本到本地浏览器的协议,它能使浏览器更加高效,使网络传输减少,保证计算机正确快速地传输超文…

点击流日志分析架构

2019独角兽企业重金招聘Python工程师标准>>> 整体流程设计 1、通过日志收集系统将数据获取并存放到某个存储介质中,本例可以使用kafka 2、Storm程序从kafka中消费数据数据,逐条消费的日志 3、Storm程序从数据库中加载产品人员配置的任务信息 …

java字符串hash算法_Hash算法大全(java实现)

packagecom.conan;/*** Hash算法大全* 推荐使用FNV1算法** algorithm None*authorGoodzzp 2006-11-20* lastEdit Goodzzp 2006-11-20* editDetail Create*/publicclassHashAlgorithms {/*** 加法hash**paramkey* 字符串*paramprime* 一个质数*returnhash…

MyBatis事务隔离级别

一般数据库的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。 √: 可能出现 : 不会出现 脏读 不可重复读 幻读 说明Read uncommitted √ √…

java json和map相互转化

2019独角兽企业重金招聘Python工程师标准>>> java使用json要导入如下这些包: commons-beanutils-1.7.0.jar commons-lang-2.1.jar ezmorph-1.0.2.jar json-lib-1.1-jdk15.jar commons-logging-1.0.4.jar commons-collections.jar commons-collections…

获取Executor提交的并发执行的任务返回结果的两种方式/ExecutorCompletionService使用

当我们通过Executor提交一组并发执行的任务,并且希望在每一个任务完成后能立即得到结果,有两种方式可以采取: 方式一: 通过一个list来保存一组future,然后在循环中轮训这组future,直到每个future都已完成。如果我们不希…

java timertask 定时_java任务调度之Timer定时器

定时器相信大家都不陌生,平时使用定时器就像使用闹钟一样,我们可以在固定的时间做某件事,也可以在固定的时间段重复做某件事,今天就来分析一下java中自带的定时任务器Timer。一、Timer基本使用在Java中为我们提供了Timer来实现定时…