为什么推荐Kestrel作为网络开发框架
为什么推荐Kestrel 网络框架千千万万,在dotnet平台,我们可以直接手撸Socket,也可以基于dotnetty来开发,或者选择某些第三方类似于dotnetty的网络库,为何我要推荐Kestrel呢? 1 使用框架 网络编程是简单的,简单到大概就 new Socket(),Send()...[2022/12/12]
python?Scala函数与访问修辞符实例详解
目录常规函数可变参数函数使用名字调用函数匿名函数访问修饰符 常规函数 object Demo { def main(args: Array[String]) { println( "Returned Value : " + addInt(5,7) ); 普通调用...[2022/8/3]
java与scala数组及集合的基本操作对比
目录java与scala数组及集合的操作scala数组基本操作对应java代码scala可变数组ArrayBufferjava 相应 ArrayList操作scala 的数组遍历java数组的遍历scala数组与java数组对比源码上 java与scala数组及集合的操作 这篇博客介绍了scal...[2021/10/11]
Java和Scala集合间的相互转换方式
目录Java和Scala集合间的相互转换scala与java互转Java与Scala的集合对比一、Java集合1、Collection=>Set接口2、Collection=>List接口3、Map接口二、Scala集合1、Seq2、Set3、Map Java和Scala集合间的相互转换...[2021/10/11]
Scala中Array和List的区别说明
目录Scala Array和List的区别Scala快排List和Array数组效率实测 Scala Array和List的区别 Difference between Array and List in scala Q:什么时候用Array(Buffer)和List(Buffer)?...[2021/10/11]
Java与Scala创建List与Map的实现方式
目录Java与Scala创建List与MapJava自定义map与scala map对比1. 背景2. java代码 Java与Scala创建List与Map Java List<String> languages = new ArrayList<>(); ...[2021/10/11]
alpakka-kafka(5)-kafka集群配置与分布式应用部署
在进入具体的kafka应用设计之前我们先把kafka集群环境配置介绍一下。多节点kafka-cluster的安装、配置非常简单,所以应该不用太多篇幅就可以完成一个完整可用的kafka-cluster环境了: 1、安装Kafka之前需要安装zookeeper。无论zookeeper或者kafka...[2021/6/15]
alpakka-kafka(3)-kafka应用案例-需求分析
在大型复杂的应用中,业务模块之间总是相互关联,相互纠缠。无论对业务管理或软件开发方面都会造成困惑:从业务管理方面难以厘清确切的管理范围和职责:就是说不知一项业务具体谁来管。在软件开发方面则无法确定开发人员的具体分工和维护责任,即确定一项业务功能具体靠谁来修改、优化。拿...[2021/3/29]
alpakka-kafka(4)-kafka应用案例-系统分析
上一篇我们通过示范案例基本了解了一个独立交易类型的库存管理模块应该是怎样的一块业务。这篇我们讨论一些如何从技术上来实现这样的业务模块。讲确切点应该说如何借助kafka的特性来实现功能开发。 底层方面:多节点服务器集群、kafka分布部署。 对上一层主要关注partition相关的问题:par...[2021/3/29]
alpakka-kafka(2)-consumer
alpakka-kafka-consumer的功能描述很简单:向kafka订阅某些topic然后把读到的消息传给akka-streams做业务处理。在kafka-consumer的实现细节上,为了达到高可用、高吞吐的目的,topic又可用划分出多个分区partition...[2021/3/1]
alpakka-kafka(1)-producer
alpakka项目是一个基于akka-streams流处理编程工具的scala/java开源项目,通过提供connector连接各种数据源并在akka-streams里进行数据处理。alpakka-kafka就是alpakka项目里的kafka-connector。对于我们...[2021/2/22]
踩坑 scala 打包上传 找不到类
出现的问题 ? 打包后上传到 spark-submit 提交,报错集群找不到cla 寻找原因 创建是object文件,main方法可执行,在此确定代码编写没问题,寻找别的原因 clean 后重新打包,发现无效 更换打包方法 一开始是使用的maven中的package...[2021/1/25]
kakafka - 为CQRS而生
前段时间跟一个朋友聊起kafka,flint,spark这些是不是某种分布式运算框架。我自认为的分布式运算框架最基础条件是能够把多个集群节点当作一个完整的系统,然后程序好像是在同一台机器的内存里运行一样。当然,这种集成实现方式有赖于底层的一套消息系统。这套消息系统可以把消息...[2020/12/8]
akka-typed(1) - actor生命周期管理
akka-typed的actor从创建、启用、状态转换、停用、监视等生命周期管理方式和akka-cla ic还是有一定的不同之处。这篇我们就介绍一下akka-typed的actor生命周期管理。 每一种actor都是通过定义它的行为属性behavior形成模版...[2020/11/9]
akka-typed(2) - typed-actor交流方式和交流协议
akka系统是一个分布式的消息驱动系统。akka应用由一群负责不同运算工作的actor组成,每个actor都是被动等待外界的某种消息来驱动自己的作业。所以,通俗点描述:akka应用就是一群actor相互之间发送消息的系统,每个actor接收到消息后开始自己负责的...[2020/11/9]
akka-typed(3) - PersistentActor has EventSourcedBehavior
akka-typed中已经没有PersistentActor了。取而代之的是带有EventSourcedBehavior的actor,也就是一种专门支持EventSource模式的actor。EventSource的原理和作用在之前的博客里已经有了比较详细的介绍...[2020/11/9]
akka-typed(4) - EventSourcedBehavior in action
前面提到过,akka-typed中较重要的改变是加入了EventSourcedBehavior。也就是说增加了一种专门负责EventSource模式的actor, 最终和其它种类的actor一道可以完美实现CQRS。新的actor,我还是把它称为persistentActo...[2020/11/9]
kka-typed(5) - cluster:集群节点状态监视
akka-cluster对每个节点的每种状态变化都会在系统消息队列里发布相关的事件。通过订阅有关节点状态变化的消息就可以获取每个节点的状态。这部分已经在之前关于akka-cluster的讨论里介绍过了。由于akka-typed里采用了新的消息交流协议,而系统消息的发布和订阅也...[2020/11/9]
akka-typed(6) - cluster:group router, cluster-load-balancing
先谈谈akka-typed的router actor。route 分pool router, group router两类。我们先看看pool-router的使用示范: val pool = Routers.pool(poolSize = 4)( ma...[2020/11/9]
akka-typed(7) - cluster:sharding, 集群分片
在使用akka-typed的过程中发现有很多地方都简化了不少,变得更方便了,包括:Supervision,只要用Behaviors.supervise()把Behavior包住,很容易就可以实现这个actor的SupervisorStrategy.restartWithBa...[2020/11/9]
akka-typed(8) - CQRS读写分离模式
前面介绍了事件源(EventSource)和集群(cluster),现在到了讨论CQRS的时候了。CQRS即读写分离模式,由独立的写方程序和读方程序组成,具体原理在以前的博客里介绍过了。akka-typed应该自然支持CQRS模式,最起码本身提供了对写方编程的支持,这点从Ev...[2020/11/9]
Scala 中的约定
内容来自书籍《Scala 实用指南》3.8 Scala 中有一些约定,可以让代码简洁且易于阅读、编写。下面是这些特性的示例。 支持脚本。不是所有的代码都需要放在一个类中。如果一个脚本就能满足需求,就直 接将可执行的代码放在一个文件中,没有必要都堆在一个类中。 ...[2020/11/9]
akka-typed(10) - event-sourcing, CQRS实战
在前面的的讨论里已经介绍了CQRS读写分离模式的一些原理和在akka-typed应用中的实现方式。通过一段时间akka-typed的具体使用对一些经典akka应用的迁移升级,感觉最深的是EvenSourcedBehavior和akka-cluster-sharding了。前者是经典akk...[2020/11/9]
akka-grpc - 基于akka-http和akka-streams的scala gRPC开发工具
关于grpc,在前面的scalaPB讨论里已经做了详细的介绍:google gRPC是一种全新的RPC框架,在开源前一直是google内部使用的集成工具。gRPC支持通过http/2实现protobuf格式数据交换。protobuf即protocol buffer,是goog...[2020/11/9]
akka-grpc - 应用案例
上期说道:http/2还属于一种不算普及的技术协议,可能目前只适合用于内部系统集成,现在开始大面积介入可能为时尚早。不过有些项目需求不等人,需要使用这项技术,所以研究了一下akka-grpc,写了一篇介绍。本想到此为止,继续其它项目。想想这样做法有点不负责任,像是草草收场。...[2020/11/9]
Java/Scala 中三种特殊类型的值
在Java或Scala中存在三种特殊类型的值,分别是Infinity,-Infinity,NaN,但这三个特殊值只存在于Double类型的计算过程中,对于同样形式的计算整形数据则会抛出异常如1.0/0.0 和 1/0 是不一样的r def main(args: Array[Str...[2020/11/9]
scala 命名规范
包名 规范 一般是小写字母、数字、点组成 不能以数字开头 不能使用关键字 示例 com.公司名.项目名.模块名 com.guigu.oa.model com.sina.user 类名 规范 数字、字母、下划线、美元符号组成 一般以大写字母开头 一般使用驼峰命名法 不能使用关键字 ...[2020/11/9]
akka-streams - 从应用角度学习:basic stream parts
实际上很早就写了一系列关于akka-streams的博客。但那个时候纯粹是为了了解akka而去学习的,主要是从了解akka-streams的原理为出发点。因为akka-streams是akka系列工具的基础,如:akka-http, persistence-qu...[2020/11/9]
scala case class + BeanProperty+fastjson 快速实现类的序列化与反序列化
在实际的开发中,我们往往需要定义大量的类结构,来实现面向对象式的数据管理。考虑一种场景,这种场景下单个类管理的类成员变量有很多个,我们如何实现在少量代码编写的情况先实现一个类的序列化? 1. 在Java 中要实现一个类的序列化,需要 implements Serializab...[2020/11/9]
flink 两个datastream实现left_join的两种方法
本文只是以left_join作为举例,right_join,full_join 等是同理的,大家可以自行扩展 1. 实验思路 1.提供两个流 nameStream: 用...[2020/11/9]
flink 处理实时数据的三重保障
flink 处理实时数据的三重保障 window+watermark 来处理乱序数据 对于 TumblingEventTimeWindows window 的元数据startTime,endTime 和程序启动时间无关,当你指定出 window.size...[2020/11/9]
flink 如何实现对watermark 的checkpoint,防止数据复写
fink slink 后的数据被复写了??? 生产环境总会遇到各种各样的莫名其名的数据,一但考虑不周便是车毁人亡啊。 线上sink 流是es , es 的文档id 是自定义的 id+windowSatarTime 设window size = 10min , wa...[2020/11/9]
Spark Core知识点复习-1
Day1111 Spark任务调度 Spark几个重要组件 Spark Core RDD的概念和特性 生成RDD的两种类型 RDD算子的两种类型 算子练习 分区 RDD的依赖关系 DAG:有向无环图 任务提交 缓存 ...[2019/11/12]
restapi(9)- caching, akka-http 缓存
restapi作为前后端交互的枢纽:面对大批量的前端请求,需要确保回复的及时性。使用缓存是一项有效工具。我们可以把多数前端请求的回复response存入缓存,特别是一些需要大量计算才能获取的回复值,更可以大大提高后端的反应速度。值得庆幸的是akka-http已经提供了对缓存的支持,是基于...[2019/11/12]
Scala Types 2
存在类型 形式: forSome { type ... } 或 forSome { val ... } 主要为了兼容 Java 的通配符 示例 Array[_] 等价于 Array[T] forSome { type T} Map[_, _] 等价于 Map[T, U] f...[2019/11/4]
Scala Types 1
在 Scala 中所有值都有一种对应的类型 单例类型 形式:value.type,返回类型 value / null 场景1:链式API调用时的类型指定 cla Super { def m1(t: Int) = {println(t); this} def m2(t: I...[2019/10/30]
restapi(8)- restapi-sql:用户自主的服务
学习函数式编程初衷是看到自己熟悉的oop编程语言和sql数据库在现代商业社会中前景暗淡,准备完全放弃windows技术栈转到分布式大数据技术领域的。但是在现实中理想总是不如人意,本来想在一个规模较小的公司展展拳脚,以为小公司会少点历史包袱,有利于全面技术改造。但现实是:即使...[2019/10/29]
新手如何进入大数据领域,学习路线是什么
大数据不是某个专业或一门编程语言,实际上它是一系列技术的组合运用。 有人通过下方的等式给出了大数据的定义。 大数据 = 编程技巧 + 数据结构和算法 + 分析能力 + 数据库技能 + 数学 + 机器学习 + NLP + OS + 密码学 + 并行编程 虽然这个等式看起来很长...[2019/10/12]
Scala Type Parameters 2
类型关系 Scala 支持在泛型类上使用型变注释,用来表示复杂类型、组合类型的子类型关系间的相关性 协变 +T,变化方向相同,通常用在生产 假设 A extends T, 对于 Clazz[+T],则 Clazz[A] 也可看做 Clazz[T] 官网示例 abstr...[2019/10/10]
Scala Type Parameters 1
类型参数 表现形式:在名称后面以方括号表示, Array[T] 何处使用 cla 中,用于定义变量、入参、返回值 cla Pair[T, S](val first: T, val second: S) scala 可自动推断具体的类型 val p = new Pair(42...[2019/10/9]
Scala Class etc. 2
Higher-Order Functions def 定义的是方法,而不是函数 函数可作为变量存在,可直接调用,也可作为值传递给其他函数 _ 后缀将普通方法变为函数: ceil _ 根据上下文编译器可以自动将方法转换为函数,也可省略 _ 后缀 高阶函数,接收函数的函数 参数类型推导 ...[2019/10/8]
Scala Operators, File & RegExp
Operators Thread.`yield`() 反引号除了用于命名标识符,还可以在调用方法时避免冲突(yield 为 Scala 关键字,但也是 Thread 的方法) 中缀运算符(infix operators),实际是带两个参数的方法,定义时跟普通方法一样;a to b 实际是...[2019/10/8]
Scala Collection Method
接收一元函数 map 转换元素,主要应用于不可变集合 (1 to 10).map(i => i * i) (1 to 10).flatMap(i => (1 to i).map(j => i * j)) transform 与 map 相同,不过用于可变集合,直...[2019/10/8]
Scala XML
XML 直接在代码中使用 XML 字面量 val doc: Elem = <html><head><title>Test</title></head><body>test</body></htm...[2019/10/8]
Scala Future
Future scala.concurrent.Future 异步执行代码块 import java.time._ import scala.concurrent._ import ExecutionContext.Implicits.global 全局线程池 Future { ...[2019/10/8]
restapi(7)- 谈谈函数式编程的思维模式和习惯
国庆前,参与了一个c# .net 项目,真正重新体验了一把搬砖感觉:在一个多月时间好像不加任何思考,不断敲键盘加代码。我想,这也许是行业内大部分中小型公司程序猿的真实写照:都是坐在电脑前的搬砖工人。不过也不是没有任何收获,在搬砖的过程中我似乎发现了一些现象和造成这些现象背后...[2019/10/8]
Scala Class etc.
Cla es 一个源文件可包含多个类,每个类默认都是 public 类字段必须初始化,编译后默认是 private,自动生成 public 的 getter etter ;Person 示例 private 字段,生成 private 的 getter etter val 字段,只生成...[2019/9/30]
Scala Basis
基础 Scala 中数据类型也是 cla 7 种数值类型: Byte, Char, Short, Int, Long, Float, and Double Boolean 类型 原始类型与 cla 类型无区别,可在数字上调用方法(隐式转换为对应的方法调用,如对 Int 操作转为 ...[2019/9/29]
Scala Data Structure
Arrays Array 固定长度;ArrayBuffer 可变长度 arr.toBuffer, buf.toArray 初始化是不要使用 new 使用 () 访问元素 使用 for (elem <- arr) 遍历元素;倒序 arr.reverse 使用 for (elem ...[2019/9/29]
[Scala]集合中List元素转Tuple元素的函数迭代写法
____ 本文链接: https: www.cnblogs.com enwren/p/Scala-Lis-2-Tuple.html —— Scala没有提供相应写法, 但迭代写法仍然可以做到。 有两种写法...[2019/9/26]