上一篇我们讨论了akka-cluster的分片(sharding)技术。在提供的例子中感觉到akka这样的分布式系统工具特别适合支持大量的带有内置状态的,相对独立完整的程序在集群节点上分布运算。这里重点要关注这些程序的内部状态,它们会占用系统资源包括内存。把状态保存在内存里相对存放在数据库里能
一、Akka简介
Akka时spark的底层通信框架,Hadoop的底层通信框架时rpc。
并发的程序编写很难,但是Akka解决了spark的这个问题。
Akka构建在JVM平台上,是一种高并发、分布式、并且容错的应用工具包;
Akka使用Scala语言编写,同时它提供了Scala和
有时候,所见并不是所得,有些包,你需要去翻他的源码才知道为什么会这样。
背景
今天调试一个程序,用到了一个很久之前的NPM包,名为formstream,用来将form表单数据转换为流的形式进行接口调用时的数据传递。
这是一个几年前的项目,所以使用的是Generator+co实现的异步流程。
其中有
一、关键字
1.final关键字
用final修饰的类:不能被继承
用final修饰的方法:不能被重写
注意:(1)在Scala中变量不需要用final修饰,因为val与var已经限制了变量是否可变
(2)final不能修饰特质,但是可以修饰抽象类
trait Anima
Java中的面向对象:万物皆对象。
我们要封装数据,定义模板等操作,素以我们需要面向对象。
=========================================================================
一、Scala中的单例对象
在java中用sta
在前面几篇讨论里我们介绍了在集群环境里的一些编程模式、分布式数据结构及具体实现方式。到目前为止,我们已经实现了把程序任务分配给处于很多服务器上的actor,能够最大程度的利用整体系统的硬件资源。这是因为通过akka-cluster能够把很多服务器组合成一个虚拟的整体系统,编程人员不需要知道负责运算的
一、Spark交互式命令行
启动脚本:spark-shell
先启动spark:./start-all.sh
本地模式启动命令:/bin/spark-shell
集群模式启动命令:/bin/spark-shell --master spark://spark-1:7077 --tot
一、定义方法、函数、及方法转换为函数
1.方法的定义:
def 方法名(参数1:数据类型,参数2:数据类型...):返回值类型 ={
}
2.定义函数:
val h1 = (a:Int,b:Int) => {a * b}
3.方法转换为函数(在Wind
有人的地方就有江湖,有江湖的地方就有套路。我十二年的程序员生涯,经历了职场上的种种奇葩事。今天就通过一件真实的案例,告诉你一个道理: 把公司当做家,老板在场时口头上说说好了,可千万别当真。
核心员工,锋芒毕露
2010年的时候,我加盟一家创业公司。带我的师父王哥是从华为出来的,技
在新的项目里使用仓库的包
上一讲中我们说了java~gradle构建公用包并上传到仓库,如何发布公用的非自启动类的包到私有仓库,而这一讲我们将学习如何使用这些包,就像我们使用spring框架里的功能包一样。
参考:http://www.zhyea.com/2018/04/24/gradle-rep
.NetCore3.0 你还不打算入手么?
这次主要是推荐一些自己学习中遇到的一些好的资料和自己的看法( 我推荐的都是我看过的
Asp.Net Core
不做介绍了,直接分享资料了
资料:
.NetCore很基础的入门教程
1.
一、Scala程序的开始->HelloScala
这里的操作如同java的helloworld程序,直接放代码!
object HelloScala{
def main(args:Array[String]){
println("HelloScala")
分布式程序运算是一种水平扩展(scale-out)运算模式,其核心思想是能够充分利用服务器集群中每个服务器节点的计算资源,包括:CPU、内存、硬盘、IO总线等。首先对计算任务进行分割,然后把细分的任务分派给各节点去运算。细分的任务相互之间可以有关联或者各自为独立运算,使用akka-cluste
1.对象私有字段
1)private
class Counter(num: Int) {
private var value = 0
def increment() = {
value += 1
}
def isLess(other: Counter) = value
Play Framework从问世至今已经十个年头了,但是可惜的是这么优秀的框架在国内却鲜为人知。尤其是当Play Framework 2.x发布以后,基于Scala语言重写了整个框架。当Scala和Play Framework相遇,这本该是一段美好的佳话,可结局却是,面对Scala语言更多的人望而
在大数据程序流行的今天,许多程序都面临着共同的难题:程序输入数据趋于无限大,抵达时间又不确定。一般的解决方法是采用回调函数(callback-function)来实现的,但这样的解决方案很容易造成“回调地狱(callback hell)”,即所谓的“goto-hell”:程序控制跳来跳去很难
akka-stream的数据流可以由一些组件组合而成。这些组件统称数据流图Graph,它描述了数据流向和处理环节。Source,Flow,Sink是最基础的Graph。用基础Graph又可以组合更复杂的复合Graph。如果一个Graph的所有端口(输入、输出)都是连接的话就是一个闭合流图Run
akka-stream的Graph是一种运算方案,它可能代表某种简单的线性数据流图如:Source/Flow/Sink,也可能是由更基础的流图组合而成相对复杂点的某种复合流图,而这个复合流图本身又可以被当作组件来组合更大的Graph。因为Graph只是对数据流运算的描述,所以它是可以被重复利用
akka-stream原则上是一种推式(push-model)的数据流。push-model和pull-model的区别在于它们解决问题倾向性:push模式面向高效的数据流下游(fast-downstream-subscriber),pull model倾向高效的上游(fast-upstrea
akka-stream是多线程non-blocking模式的,一般来说,运算任务提交到另外线程后这个线程就会在当前程序控制之外自由运行了。任何时候如果需要终止运行中的数据流就必须采用一种任务柄(handler)方式来控制在其它线程内运行的任务。这个handler可以在提交运算任务时获取。akka