scala

scala 中的型变

柔情痞子 提交于 2020-08-05 16:29:46
``` sealed trait List[+A] // `List` data type, parameterized on a type, `A` case object Nil extends List[Nothing] // A `List` data constructor representing the empty list /* Another data constructor, representing nonempty lists. Note that `tail` is another `List[A]`, which may be `Nil` or another `Cons`. */ case class Cons[+A](head: A, tail: List[A]) extends List[A] object List { // `List` companion object. Contains functions for creating and working with lists. def sum(ints: List[Int]): Int = ints match { // A function that uses pattern matching to add up a list of integers case Nil => 0 //

kafka的基本介绍、架构

感情迁移 提交于 2020-08-05 13:57:21
一、kafka的基本介绍 官网:http://kafka.apache.org/ kafka是一个分布式,分区的,多副本的,多订阅者的消息发布订阅系统(分布式MQ系统),可以用于搜索日志,监控日志,访问日志等。 最初由linkedin公司开发,使用scala语言编写, Kafka is a distributed,partitioned,replicated commit logservice。 kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息 二、kafka的好处 可靠性: 分布式的,分区,复制和容错。 可扩展性: kafka消息传递系统轻松缩放,无需停机。 耐用性: kafka使用分布式提交日志,这意味着消息会尽可能快速的保存在磁盘上,因此它是持久的。 性能:kafka对于发布和定于消息都具有高吞吐量。即使存储了许多TB的消息,他也爆出稳定的性能。 kafka非常快: 保证零停机和零数据丢失。 三、分布式的发布与订阅系统 apache kafka是一个分布式发布- 订阅消息系统和一个强大的队列

ScalaFX简化了基于JavaFX的用户界面的创建

限于喜欢 提交于 2020-08-05 13:30:09
ScalaFX 源代码名称:scalafx 源代码网址:http://www.github.com/scalafx/scalafx scalafx源代码文档 scalafx源代码下载 Git URL:复制 git://www.github.com/scalafx/scalafx.git Git Clone代码到本地:复制 git clone http://www.github.com/scalafx/scalafx Subversion代码到本地:复制 $ svn co --depth empty http://www.github.com/scalafx/scalafx Checked out revision 1. $ cd repo $ svn up trunk ScalaFX是在 8和 JavaFX 2.2之上的Scala 语言中编写的UI DSL。 这意味着每个ScalaFX应用程序都是有效的Scala 应用程序。 通过扩展它支持与Java完全兼容,可以在Java虚拟机( JVM ) 和 JavaFX 8或者 JavaFX 2.2支持的任何地方运行。 Join the chat at https://gitter.im/scalafx/scalafx Build StatusMaven CentralScaladocReference Status 最初

spark expression rename the column list after aggregation

余生长醉 提交于 2020-08-05 07:14:37
问题 I have written below code to group and aggregate the columns val gmList = List("gc1","gc2","gc3") val aList = List("val1","val2","val3","val4","val5") val cype = "first" val exprs = aList.map((_ -> cype )).toMap dfgroupBy(gmList.map (col): _*).agg (exprs).show but this create a columns with appending aggregation name in all column as shown below so I want to alias that name first(val1) -> val1, I want to make this code generic as part of exprs +----------+----------+-------------+------------

spark expression rename the column list after aggregation

我的未来我决定 提交于 2020-08-05 07:11:34
问题 I have written below code to group and aggregate the columns val gmList = List("gc1","gc2","gc3") val aList = List("val1","val2","val3","val4","val5") val cype = "first" val exprs = aList.map((_ -> cype )).toMap dfgroupBy(gmList.map (col): _*).agg (exprs).show but this create a columns with appending aggregation name in all column as shown below so I want to alias that name first(val1) -> val1, I want to make this code generic as part of exprs +----------+----------+-------------+------------

spark expression rename the column list after aggregation

天大地大妈咪最大 提交于 2020-08-05 07:11:13
问题 I have written below code to group and aggregate the columns val gmList = List("gc1","gc2","gc3") val aList = List("val1","val2","val3","val4","val5") val cype = "first" val exprs = aList.map((_ -> cype )).toMap dfgroupBy(gmList.map (col): _*).agg (exprs).show but this create a columns with appending aggregation name in all column as shown below so I want to alias that name first(val1) -> val1, I want to make this code generic as part of exprs +----------+----------+-------------+------------

Regex program to search a string with spaces and back slashes performance issue

喜你入骨 提交于 2020-08-05 04:54:19
问题 These are the lines of text I have: Region\ name=Provence\ Alpes\ Cote\ d'Azur shops=350,City=Nice 12345 Region\ name=Provence\ Alpes\ Cote\ d'Azur,City=Nice shopsabcdabcdabcdasssss=350 13456 City=Nice,Region\ name=Provence\ Alpes\ Cote\ d'Azur shopsabcdabcdabcdasssss=350 23456 Input : Region\ name Output : Provence\ Alpes\ Cote\ d'Azur Input : City Output : Nice Below solution provides the result: val data =List("Region\\ name=Provence\\ Alpes\\ Cote\\ d'Azur shops=350,City=Nice" ,"Region\\

Regex program to search a string with spaces and back slashes performance issue

别说谁变了你拦得住时间么 提交于 2020-08-05 04:54:14
问题 These are the lines of text I have: Region\ name=Provence\ Alpes\ Cote\ d'Azur shops=350,City=Nice 12345 Region\ name=Provence\ Alpes\ Cote\ d'Azur,City=Nice shopsabcdabcdabcdasssss=350 13456 City=Nice,Region\ name=Provence\ Alpes\ Cote\ d'Azur shopsabcdabcdabcdasssss=350 23456 Input : Region\ name Output : Provence\ Alpes\ Cote\ d'Azur Input : City Output : Nice Below solution provides the result: val data =List("Region\\ name=Provence\\ Alpes\\ Cote\\ d'Azur shops=350,City=Nice" ,"Region\\

关于Java8的精心总结

僤鯓⒐⒋嵵緔 提交于 2020-08-05 04:48:22
前言 ​ 最近公司里比较新的项目里面,看到了很多关于java8新特性的用法,由于之前自己对java8的新特性不是很了解也没有去做深入研究,所以最近就系统的去学习了一下,然后总结了一篇文章第一时间和大家分享一下。 ​ ​ 在了解一项新技术之前,我们需要了解我们为什么要去学习它以及它的优点,以下是我总结的: Java8(又称jdk1.8)是java语言开发的一个主要版本,Java8是oracal公司于2014年3月发布,可以看成是自java5以来最具有革命性的版本。 新特性的优点: 速度更快、代码更少、便于并行、最大化减少空指针异常 函数式编程提供了一种更高层次的抽象化 排序: List<RoleEntity> rolesListSort = rolesList.stream().sorted(Comparator.comparing(RoleEntity::getCreateDate)).collect(Collectors.toList()); Consumer是一个函数式接口 参数是Consumer类型的,Consumer里面的泛型表示泛型的类型要么是Integer,要么是Integer的父类,super表示它及它上面的,也就是父类。 下面这段代码是在Iterable接口里面的默认方法,jdk8之后的新方法,默认方法(默认方法的引入很大程度上是为了保证向后兼容) default

Flink统计当日的UV、PV

邮差的信 提交于 2020-08-05 00:27:56
  Flink 统计当日的UV、PV   测试环境:     flink 1.7.2   1、数据流程          a.模拟数据生成,发送到kafka(json 格式)       b.flink 读取数据,count     c. 输出数据到kafka(为了方便查看,输出了一份到控制台)   2、模拟数据生成器     数据格式如下 : {"id" : 1, "createTime" : "2019-05-24 10:36:43.707"}     id 为数据生成的序号(累加),时间为数据时间(默认为数据生成时间)   模拟数据生成器代码如下:    /** * test data maker */ object CurrentDayMaker { var minute : Int = 1 val calendar: Calendar = Calendar.getInstance() /** * 一天时间比较长,不方便观察,将时间改为当前时间, * 每次累加10分钟,这样一天只需要144次循环,也就是144秒 * @return */ def getCreateTime(): String = { // minute = minute + 1 calendar.add(Calendar.MINUTE, 10 ) sdf.format(calendar.getTime) }