Scala语言基础与开发实战

Topic和Partitions

比如现在有Topic1和Topic2两个Topic,其中Topic1被分成15个Partition,Topic2被分成18个Partition,那么整个集群上面会相应地生成33个文件夹。Topic中每个Partition对应一个逻辑日志。每次生产者发布消息到一个Partition,代理就将消息追加到最后一个Segment文件中。每条消息都有一个当前Partition下唯一的64字节的offset,它指明了这条消息的起始位置。然而Kafka提供两种策略删除旧数据,一种是基于时间策略,另一种是基于Partition文件大小策略。
理论教育 2023-11-24

Scala语言基础与开发实战:迭代器操作示例

本示例为迭代器复制操作的代码,在复制过程中演示了模式匹配的使用,示例代码如下所示:映射操作的代码示例。本示例为获取迭代器的子集合操作的代码,包含take、drop等方法的代码,示例代码如下所示:剩下几种获取子集合的操作可以参考集合的操作实例部分内容,和上面几种操作类似。本示例为迭代器拉链操作的代码,包含zip、zipAll等方法的代码,示例代码如下所示:字符串相关操作的代码示例。
理论教育 2023-11-24

Scala的Actor模型简介

Actor模型在并发编程中是比较常见的一种模型,很多开发语言都提供了原生的Actor模型实现,例如Erlang、Scala等。为了使这个操作持续下去,通常都使得这个过程是循环的,让Actor可以时刻处理发送来的消息。Actor模型提供了一种不共享任何数据、依赖消息传递的模型。在并发编程中,Actor模型相对于使用共享数据和锁模型的实现来说,推断和使用都更加容易。Actor模型在并发编程上面的优势,使其在并发编程中获得了广泛的运用。图9-1Actor通信模型
理论教育 2023-11-24

Scala语言基础与开发实战:不同访问权限构造器

Scala类中主构造器如不指定访问修饰符,默认访问权限为public,生成公有构造器;在类中定义主构造器的访问修饰符为private,生成私有构造器,只允许类本身访问,防止外部实例化。在Windows系统中选择“开始”→“运行”命令,在“运行”窗口中输入CMD命令,进入DOS环境,在命令行提示符中进入OOPInScala的目录,在DOS提示符中输入:scalac OOPInScala.Scala,编译生成JVM字节码,在DOS提示符下使用Javap-private Teacher查看Teacher类的定义,此时class Teacher类中主构造器访问权限为公有:public com.dt.scala.oop.Teacher。
理论教育 2023-11-24

Scala语言基础与开发实战:Akka日志配置解析与实践

在Akka中使用日志框架有两点值得关心:第一是如何调整日志的级别,第二是如何在一个Akka程序中使用自己熟悉的日志框架。下面将详细讲解Akka中日志的配置及使用。在Akka中,日志适配器使用eventStream发送日志消息到eventHandler。
理论教育 2023-11-24

Scala语言基础与开发实战:界定操作示例

下面根据前几个小节所列的各个界定种类,分别给出具体的操作示例及其解析。上下界界定的操作示例。本示例包含边界的上界界定与下界界定,示例代码如下所示:查看Java类库的String类,可以看到String确实是Comparable[String]的子类,并且实现了compareTo方法,对应代码如下:视图界定的操作示例。
理论教育 2023-11-24

Scala消息生产者(Producer)设计

上面的步骤将最小化Kafka Producer实例的建立数量,同时也会最小化TCP连接的数量,通常由Kafka集群确定。可以使用这个Pool设置来精确地控制对流应用程序可用的Kafka Producer实例数量。5)通过Kafka生产者Pool将结果写回一个不同的Kafka topic。
理论教育 2023-11-24

Scala语言的带有getter和setter属性的实战应用

编写Java类时,Java类属性的定义使用getter和setter方法,这样的一对getter和setter方法称为属性。在Scala中,getter和setter方法并不是直接命名为getxxx和setxxx的,而是类似privateAge和privateAge=的定义,理解为privateAge就是getxxx方法,privateAge=就是setxxx方法,和Java中的用意是一样的。
理论教育 2023-11-24

Scala语言基础与开发实战:软件工具准备

在Windows中安装Scala,需安装的软件包括:1)JDK:Java语言软件开发工具包。这里,Windows虚拟网卡配置的地址为192.168.2.1;Linux虚拟机的网卡地址为192.168.2.100。6)文件传输工具WinSCP。图1-3WinSCP输入地址及端口单击Login按钮,进入文件传输页面,左侧显示本地主机Windows的文件系统,右侧显示远程Linux虚拟机的文件系统。图1-4WinSCP文件复制
理论教育 2023-11-24

Scala语言基础:Actor状态变化

Reactor定义了一个getState方法,这个方法可以将Actor当前的运行状态作为Actor.State枚举的一个成员返回。一个已挂起,并正在等待消息的Actor处于Actor.State.Suspended状态;一个已终止的Actor处于Actor.State.Terminated状态。例9-4演示Actor运行状态,并在终端上打印出来。当执行完act方法后,Actor自然退出,当然也可以调用Actor的exit方法,该方法总返回Nothing。当Actor完全退出后,可以调用restart方法重新启动Actor运行。
理论教育 2023-11-24

Linux环境下的Spark安装与配置

spark-env.sh配置文件修改输入#cd/usr/local/spark-1.6.0-bin-hadoop2.6/conf命令,修改Spark的配置目录。从图中可以看到,在spark shell环境中出现了熟悉的Scala提示符,因为Spark原生开发语言是Scala,因此Spark与Scala可以完美集成。以Web方式查看SparkVMware Workstation的Linux虚拟机的Spark启动起来以后,在Windows本地计算机上上打开Web浏览器,在浏览器中输入Spark的URL:http://192.168.2.100:8080/,就可以查看Spark系统的相关信息。至此,Spark系统安装全部完成,Spark安装成功。关闭Spark服务进程。
理论教育 2023-11-24

Akka设计理念简介

Akka是用Scala编写的基于Actor模型的消息传递框架,用于简化编写容错的、高可伸缩性的Java和Scala的Actor模型应用。在第10~12章中,详细介绍了Akka架构,包括Akka的基本特性、常用的API使用、Akka分布式环境的搭建、基于Akka模型实现的并行单词计数统计实例,以及Akka在Spark中的运用等内容。Akka就是为了改变这种状况而生的。本章将深入介绍Akka框架模型、Actor的不同创建方式和Actor API的使用。
理论教育 2023-11-24

Scala语言开发实战:创建Transactor

下面使用Transactor完成11.3.5小节中相同的转账功能。首先创建一个MoneyTransactor继承自Transactor,在MoneyTransactor中定义一个使用Ref包裹STM变量,该变量是一个共享变量,表示账户余额。Transactor继承自Actor,有preRestart方法,因此可以重用这个方法。当Transactor收到协作事务之外的消息,它会产生一个新的事务并执行消息。接下来,将实现Tranfer Actor并让它作为一个Transactor。在Transfer Actor需要将两个账户包含到协作事务中。至此,Transactor所有的讲解基本上结束。使用Transactor可以隐藏使用协作事务,并且可以减少代码量。
理论教育 2023-11-24

Agent事务数据更新-Scala语言基础与开发实战

在例11-8中,使用两个变量updates和count,count变量用于触发临界区代码的重新执行,被包裹在STM引用中,updates变量用于记录Agent的更新次数。定义了一个名为count的STM引用,用于触发写冲突,该冲突将会导致事务的重新执行。事实上在STM事务中的Agent事务是不能够解决Agent事务负担过重的问题的,为了解决这个问题,需要在不同线程中使用相互协作的atomic块,Akka中可以通过协作事务和transactor来处理,这部分内容将在稍后介绍。
理论教育 2023-11-24

使用Kafka客户端开发实战

上面已经搭建好了基于Kafka开发应用程序的环境,相信大家应该非常期待Kafka的客户端开发,接下来将详细讲解怎样开发Kafka的生产者和消费者。换句话说,读者可以基于Kafka提供的API,用这些语言来编写自己的客户端程序。
理论教育 2023-11-24

Scala语言基础与开发实战-Curring函数

柯里化函数Curring,函数的名称是以科学家Haskell Brooks Curry的名字命名的,指的是将原来函数中接收两个参数的传入,将两个参数拆开,变成接收第一个参数的函数,新的函数返回一个以原来第二个参数为参数的函数。Scala定义multiple函数示例。Scala可以将multiple函数进行柯里化改造,将两个参数分别传入计算,println计算出结果为100,def curring=xy就是柯里化函数。
理论教育 2023-11-24
-已经加载完成-