
Scala
文章平均质量分 76
oo寻梦in记
这个作者很懒,什么都没留下…
展开
-
【Java 和 Scala】-- Java 与 Scala 的 Assert 断言对比
断言(Assertion)是一种用于在开发和测试阶段检查代码逻辑的机制。它通常用于验证程序的某些假设是否成立,若不成立,则会抛出错误或异常,以便开发者发现潜在的逻辑错误。在 Java 和 Scala 中,assert关键字用于进行断言检查,它通常只在调试或测试阶段启用,而不会影响生产环境的代码运行。原创 2025-03-12 10:42:10 · 934 阅读 · 0 评论 -
【Java 基础】-- ArrayList 和 Linkedlist
ArrayList数据结构:基于动态数组实现。特点元素按索引存储,随机访问效率高(时间复杂度 O(1)O(1)O(1))。动态扩容机制,扩容时会重新分配更大的数组,并将旧数组中的元素复制过去。插入或删除时,若非在末尾操作,需要移动大量元素(时间复杂度最差为 O(n)O(n)O(n))。适用场景:频繁读取或操作末尾元素的场景。LinkedList数据结构:基于双向链表实现。特点每个节点存储数据及前后节点的引用。原创 2024-12-23 17:28:13 · 768 阅读 · 0 评论 -
【Java 基础】-- TreeMap 和HashMap 的内存开销情况
的内存开销有所不同,这是由于它们底层数据结构的差异导致的。的总内存开销近似为: Memory=4×table size+n×(20+4×L)的总内存开销近似为: Memory=n×32。在相同数据量的情况下,个元素,每个元素的平均链表长度为。在存储相同数量的元素时(假设。原创 2024-12-23 16:40:25 · 466 阅读 · 0 评论 -
【Java基础】-- HashMap 和 TreeMap 遍历速度
的遍历速度差异显著,这与它们的底层数据结构直接相关。在相同数据量级情况下,HashMap。原创 2024-12-23 16:37:44 · 637 阅读 · 0 评论 -
【Java基础】-- Java包(package)命名规范
在 Java 中,包(package)是一种用于组织和管理类的命名空间的机制。包能够帮助开发者组织代码、避免命名冲突,并提供了一种逻辑上的层次结构。在命名包时,遵循一致的命名规范是很重要的,以确保代码的可读性和可维护性。原创 2023-11-29 09:57:28 · 4973 阅读 · 0 评论 -
【Java 基础】-- 为什么需要实现 Serializable 接口
1、什么是序列化 序列化:将对象写入到IO流中 反序列化:从IO流中恢复对象 补充: Serializable 是一个空接口,它的目的仅是标识一个类的对象可以被序列化。 Java 提供的一种高效机制:将对象的状态信息转换为可以存储或传输的形式的过程,在序列化期间,对象将其当前状态写入到临时存储区或持久性存储区,之后,便可以通过从存储区中读取或反序列化对象的状态信息,来重新创建该对象。2、什么情况下需要序列化 当你想把的内存中的对象持久化时...原创 2020-07-05 11:05:23 · 3071 阅读 · 0 评论 -
【Structured Streaming】-- 输出模式
环境spark 2.4.0scala 2.11.8jdk 1.8http://spark.apache.org/docs/2.4.0/structured-streaming-programming-guide.html#output-modes原创 2020-04-24 19:17:32 · 568 阅读 · 0 评论 -
【Flink基础】-- 写入 Kafka 的两种方式
方式一:用 Robin 的方式写入 Kafka1、实现 exactly-once 语义的 kafka sink,用 Robin 的方式写入 Kafka2、randomRobin: 创建 FlinkKafkaProducer 时,指定空的 customPartitioner,flink 会把 一个 sink subtask 的数据以 round-robin 方式写入 kafka 的各个分区...原创 2020-04-20 21:58:24 · 4262 阅读 · 1 评论 -
【Java基础】-- System.exit(-1)、System.exit(0)和System.exit(1)区别
System.exit(-1)、System.exit(0)、System.exit(1)区别1、源码链接https://docs.oracle.com/javase/8/docs/api/java/lang/System.html#exit(int)2、说明所在包:package java.lang源码方法: /** * Terminates the current...原创 2020-01-21 11:10:05 · 12144 阅读 · 0 评论 -
[MongoDB基础]-- Spark 写 Dataframe 数据到 Mongo
如何将 Dataframe 数据写入 Mongo1、准备2、输入数据3、代码4、查询5、参考文档1、准备环境:Spark 2.3.1 + Mongo 4.2.3 +scala -2.11.8+ jdk 1.8.0 + Hadoop-2.7.3业务:将 json 数据 使用 spark 读出来,然后写入 mongo2、输入数据json 格式{ "name": "BeJson",...原创 2020-03-22 16:54:29 · 1590 阅读 · 0 评论 -
[Scala进阶]-- Spark累加器(单例模式应用)
一、举例创建单例模式的累加器package com.ngaa.bigdata.common.utilsimport org.apache.spark.{Accumulator, SparkContext}/** * Created by root on 20170618. * Update date: * Time: 12:04 PM * Project: test-...原创 2017-06-18 12:50:44 · 1520 阅读 · 0 评论 -
[Java排序算法]--堆排序 (Heap Sort)
前言 最近遇到一个求解TopN的场景,从1亿条数据中,找出最大或者最小的10个数。 怎么办?不可能对数据进行全排序吧,哪里有那么大的内存空间!谷歌搜索了相关的解决方案,最终定位在使用堆排序解决这个问题。 摘要 1、什么是二叉树? 2、什么是堆? 3、堆排序原理? 4、堆排序的Java实现。 5、堆排序的Sc...原创 2017-10-31 10:17:11 · 3072 阅读 · 0 评论 -
[Scala基础]--类型转换(String to Double 、Long、Float和Int)
前言: 关于Scala的类型转换方式有许多种,但初学时仍会忽略一些重要细节,比如异常情况的捕获等等。 那么本文将简单介绍Scala的String进行相关的类型转换,供大家学习参考。主要内容: 1、Scala的富包装器:富操作和富类列表 2、Scala的隐式转换的目的 通过隐式转换,程序员可以在...原创 2017-10-18 11:57:27 · 53199 阅读 · 1 评论 -
[Scala基础]--Scala枚举使用
参考:http://www.scala-lang.org/api/current/scala/Enumeration.htmlhttp://www.jianshu.com/p/675dad38c8a6http://xiaoxin2009.github.io/Scala%E7%B1%BB%EF%BC%8C%E5%AF%B9%E8%B1%A1.htmlScala的枚举与java/c++不同,scala...原创 2017-09-27 11:54:40 · 2417 阅读 · 0 评论 -
[Scala基础]--call by name和call by value的区别
scala版本:scala-2.10.5一、前言这里涉及到Scala的匿名函数、高阶函数、闭包和Jvm相关的知识,有关内容请查阅这本pdf书籍:Scala Cookbook - Recipes for Object-Oriented and Functional Programming_Alvin Alexander_2013在Spark的源码中,大量使用call by name ...原创 2018-05-23 16:38:20 · 3554 阅读 · 3 评论 -
[Scala基础]--java运行jar类、scala运行jar类
1、java运行测试jar:执行---》java -classpath F:/TestHello.jar Test2或者java -cp F:/TestHello.jar Test2打印结果:hello world java类如下:/** * Document:本类作用---->打印hello world * User: yangjf * Date: 2016/9/25 9...原创 2016-09-25 09:51:05 · 10769 阅读 · 0 评论 -
[scala基础]--Option/Some/None
Scala的Option/Some/None操作:一、环境:Idea 16+Jdk-1.7+Scala-2.10.4二、测试代码:import scala.io.Sourceimport scala.util.{Try,Success,Failure}/** * Document:本类作用---->测试Options、Some、None * User: yangjf * D...原创 2016-09-25 19:54:29 · 1506 阅读 · 0 评论 -
[Scala基础]--调用url获取返回值
在Scala编程中,常常会用到调用第三方接口,获取返回值(文件内容是字符类型,或者返回的是字符串),那么使用Scala自带的Scala.io.Source类,将非常方便。举例如下: 1、url="http://localhost:9008/services/user/getSampleValue" 2、返回值:有两种 (1)字符串:"{"status":"1","timestamp...原创 2016-12-14 10:22:31 · 4726 阅读 · 0 评论 -
[scala基础]--类型匹配
一、由于scala是动静态结合语言,既可以面向对象编程,又可以面向函数编程。在运行时决定数据类型,所以经常在类型匹配中使用Some来匹配类型。如果不添加Some匹配,会导致结果不是我们想要的。1、比如有Map集合:val strMap=("123"->"tom","456"->"sina")2、现在想要通过key获取value:val value=strMap.get("123")原创 2017-01-03 18:02:24 · 1016 阅读 · 0 评论 -
[scala解析]--json字符串
一、主题:使用Scala的类库解析json字符串,避免引入第三方依赖包二、实现如下:import org.json4s.DefaultFormatsimport org.json4s.jackson.JsonMethods._import scala.collection.mutable/** * Created by yangjf on 2017/1/3 * Update da...原创 2017-01-03 18:49:41 · 4409 阅读 · 2 评论 -
[Scala基础]--windows配置jdk、scala和maven环境变量
windows的开发环境下,必须要正确配置java和maven的环境变量,下面就简单介绍下配置方法,希望对初学者有帮助。1、根据需要下载对应版本的jdk官方:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u80-oth-JPR2、下载稳定...原创 2017-04-16 23:13:40 · 1535 阅读 · 0 评论 -
[scala基础]--结果匹配方式
一、使用try{}catchval custom_id_b = try { custom_domainMap(domain_b)} catch { cas二、使用match{}caseval custom=custom_id_map.get(domain)val custom_id_b=custom match {case Some(id)=>id case None=>"...原创 2017-07-11 22:49:57 · 371 阅读 · 0 评论 -
[HBase基础]-- spark创建hbase表(非分区表)
一、spark本地或者集群创建hbase表(不需要Kerberos认证)、并且插入数据 1、环境准备:idea 16+scala-2.10.4+cdh-spark-1.6.1+jdk-1.7+hbase-1.2.0-cdh5.8.0 2、 (1)创建maven工程:pdf-hbase(2)新建一个文件夹libs,导入cdh的spark jar,添加jar到项目中spark-...原创 2016-09-10 15:11:33 · 3898 阅读 · 0 评论 -
[Scala基础]--循环控制(类比java的break和continue)
Java的循环控制操作主要有break和continue,但是Scala没有continue关键字,下面举例使用break构建continue的效果。需要用到scala的依赖包:import scala.util.control.Breaks.{break, breakable}1、breakable在for循环外,遇到break则终止for循环test("2018年4月20日11:34:31 测...原创 2018-04-20 11:54:26 · 551 阅读 · 0 评论 -
[scala基础]--Trait Traversable
Trait TraversableTraversable(遍历)是容器(collection)类的最高级别特性,它唯一的抽象操作是foreach:def foreach[U](f: Elem => U)需要实现Traversable的容器(collection)类仅仅需要定义与之相关的方法,其他所有方法可都可以从Traversable中继承。foreach方法用于遍历容器(collectio...翻译 2016-08-14 14:56:14 · 2044 阅读 · 0 评论 -
[Java 进阶]-- import 和 import static 区别
1、Oracle 官方说明https://docs.oracle.com/javase/8/docs/technotes/guides/language/static-import.html2、Stackoverflow 讨论https://stackoverflow.com/questions/420791/what-is-a-good-use-case-for-static-...原创 2019-09-15 11:29:02 · 352 阅读 · 0 评论 -
[大数据面试]-- 2.Scala 题目
========= 基础 =========1 var, val和def三个关键字之间的区别?valimmutable variablevarmutable variabledef function defined keyword2.object 和 class 的区别?object 单例 无构造器 成员变量和method都是static 可以直接访问main方法...原创 2019-08-05 21:29:44 · 814 阅读 · 1 评论 -
[Sacla基础]-- 某天时间往后或者往前推 n天
实现如下import java.util.Calendarimport java.util.Dateimport java.text.SimpleDateFormatimport java.util.GregorianCalendarobject TestAddSomeDat{ def main(args :Array[String]){ // 获取指定日期 day=2...原创 2019-03-05 10:10:54 · 774 阅读 · 0 评论 -
[Scala 基础]-- 词汇语法
英文原文:https://www.scala-lang.org/files/archive/spec/2.11/01-lexical-syntax.html#integer-literals词法语法Scala程序使用Unicode Basic Multilingual Plane(BMP)字符集编写; 目前不支持Unicode补充字符。本章定义了Scala的词法语法的两种模式,即Scala...翻译 2018-12-11 12:32:54 · 645 阅读 · 0 评论 -
[Spark 进阶]-- 优化Spark作业以获得最佳性能
感谢原文作者:https://michalsenkyr.github.io/2018/01/spark-performanceSpark作业的开发在表面上看起来很容易,而且大部分都是如此。提供的 API设计精良且功能丰富,如果您熟悉Scala集合或Java流,您将立即完成实施。实际上,当在集群上运行它们并且满负载时,硬件部分实际上是因为并非所有作业在性能方面都是相同的。不幸的是,要以最佳方式实...翻译 2018-11-21 19:37:05 · 2026 阅读 · 0 评论 -
[Scala基础]--Scala构建超过22个元素的class
一、背景1、case class的元素超过22个以后即会编译报错2、有些业务场景下,需要超过22个元素的值二、如何解决Scala提供了解决方案,即使用类实现Product特质三、举例package com.ngaa.scala/** * @author Created by yangjf on 20180712. * Update date: * T...原创 2018-07-13 15:21:38 · 4186 阅读 · 0 评论 -
[Scala基础]--包对象
感谢原文作者:https://my.oschina.net/aiguozhe/blog/35202?p=1 Scala 2.8提供包对象(package object)的新特性。什么是包对象呢?按我的理解,根据Scala“一切皆对象”设计哲学,包(package)也是一种对象。既然是对象,那么就应该有属性和方法,也可以在包对象内声明某个类型的别名。举个例 package com{ packa...转载 2018-07-12 15:55:24 · 544 阅读 · 0 评论 -
[Scala进阶]--匿名函数和高阶函数
感谢原文链接:http://cakin24.iteye.com/blog/2390439Scala版本:2.10.5一 函数是第一等公民1、把函数作为实参传递给另外一个函数。2、把函数作为返回值。3、把函数赋值给变量。4、把函数存储在数据结构里。在Scala中,函数就像普通变量一样,同样也具有函数的类型。 二 函数类型1、定义在Scala语言中,函数类型的格式为A =>B,表示一个接受类型A...转载 2018-05-23 17:33:47 · 1052 阅读 · 0 评论 -
[Scala基础]--classOf[T]、getClass和 class
一、先举一个案例上面显示了两者的不同之处,getClass 方法得到的是 Class[A]的某个子类,而 classOf[A] 得到是正确的 Class[A],但是去比较的话,这两个类型是equals为true的。这里有细微的差别,体现在类型赋值时,因为java里的 Class[T]是不支持协变的,所以无法把一个 Class[_ < : A] 赋值给一个 Class[A]。二、关于协变和逆变...原创 2018-05-08 10:19:43 · 11006 阅读 · 0 评论 -
[面试]--面试问题中的十大算法
感谢原文链接:https://www.geeksforgeeks.org/top-10-algorithms-in-interview-questions/Top 10 algorithms in Interview QuestionsIn this post “Top 10 coding problems of important topics with their solutions ” a...转载 2018-05-07 14:22:05 · 2085 阅读 · 0 评论 -
[Scala文件操作]----读取和写入字符
如果有以下情景,怎么用scala实现读写文件?1、实现读取以下文件内容E:/device_level2、将字符串写入文件"E:/test.txt"实现如下:package com.ngaa.scala.testimport java.io.{ByteArrayInputStream, File, FileInputStream, InputStream}import scala.io.Bu...原创 2017-07-05 14:53:58 · 2769 阅读 · 1 评论 -
[scala代码风格指南]--缩进
英文原文:http://docs.scala-lang.org/style/译文如下:缩进缩进应遵循“2个空格的惯例”。因此,而不是像这样缩进:// wrong!class Foo { def bar = ...}你应该这样缩进:// right!class Foo { def bar = ..}Scala语言鼓励了嵌套范围和逻辑块(函数值等)的惊人数量。自己动手,不要在语法上自己找麻烦,...翻译 2017-07-26 12:18:14 · 3808 阅读 · 1 评论 -
[scala基础]--集合操作汇总
集合集合是不包含重复元素的可迭代对象。下面的通用集合表和可变集合表中概括了集合类型适用的运算。分为几类:测试型的方法:contains,apply,subsetOf。contains方法用于判断集合是否包含某元素。集合的apply方法和contains方法的作用相同,因此 set(elem) 等同于set constains elem。这意味着集合对象的名字能作为其自身是否包含某元素的测试函数。例...翻译 2016-08-14 10:49:27 · 1693 阅读 · 0 评论 -
[scala基础]--iterators类操作
Iterators迭代器不是一个容器,更确切的说是逐一访问容器内元素的方法。迭代器it的两个基本操作是next和hasNext。调用it.next()会返回迭代器的下一个元素,并且更新迭代器的状态。在同一个迭代器上再次调用next,会产生一个新元素来覆盖之前返回的元素。如果没有元素可返回,调用next方法会抛出一个NoSuchElementException异常。你可以调用[迭代器]的hasNex...翻译 2016-08-14 10:52:40 · 7627 阅读 · 0 评论 -
[scala基础]--拆分List操作
运行环境:Jdk1.7、scala-2.10.4package study/** * Document:本类作用---->拆分List * User: yangjf * Date: 2016/8/14 8:57 */object TestArrays { def main(args: Array[String]) { val lists=List(12,3...原创 2016-08-14 14:41:22 · 5330 阅读 · 0 评论