当前位置: 首页 > news >正文

分布式计算框架

进入Scala模式

终端里输入Scala

创建一个新的Scala文件

vim 文件名.scala

复制粘贴代码

ctrl+shift c/v

使用vim

先进入插入模式,可以通过按i键来实现,然后粘贴代码,完成后按Esc键退出插入模式,保存并退出可以通过输入:wq然后按Enter键。

编译运行程序

scalac 文件名.scala
scala 文件名

终端退出scala模式

:quit  /  :exit

删除在vim里写好的代码

  1. 删除字符或单词

    • 在普通模式(Normal mode)下,你可以使用 x 命令来删除光标所在位置的单个字符。
    • 要删除一个单词,首先使用 w 命令将光标移动到单词的末尾,然后使用 x 来删除整个单词。
  2. 删除一行

    • 在普通模式下,使用 dd 命令删除光标所在的整行。
  3. 删除多行

    • 在普通模式下,使用数字加 dd 来删除光标所在位置向下的多行。例如,5dd 会删除光标所在行和接下来的四行。
  4. 删除到行尾

    • 在普通模式下,使用 D 命令删除从光标位置到行尾的所有内容。
  5. 删除到文件末尾

    • 在普通模式下,使用 :%d 命令删除整个文件的内容。
  6. 撤销删除

    • 如果你不小心删除了内容,可以使用 u 命令来撤销删除操作。
  7. 退出 Vim

    • 如果你想要退出 Vim 而不保存任何更改,可以在普通模式下使用 :q! 命令。

请注意,Vim 的模式非常重要。确保你在执行删除操作之前处于普通模式。如果你不确定自己处于哪个模式,可以按下 Esc 键返回普通模式。

如果你刚刚在 Vim 中写好了代码并想要全部删除,可以使用以下命令:

 

:%d

这将在普通模式下删除整个文件的内容。如果你只想删除文件的一部分,确保使用正确的命令和范围。如果你只是想退出而不保存更改,可以使用:

 

:q!

这将放弃所有更改并退出 Vim。

创建.txt文件并在里面写入内容

import java.io.FileWriter// 指定文件名
val filename = "filename.txt"// 使用try-with-resources语句确保文件最终被关闭
val file = new FileWriter(filename)
try {// 写入内容到文件file.write("学号 性别 数学 英语 物理\n")file.write("301610 男 80 64 78\n")file.write("301611 女 65 87 58\n")
} catch {case e: Exception => e.printStackTrace() // 处理可能的异常
} finally {// 关闭文件file.close()
}

实验成功代码

计算级数

object Exercise2_1 {def main(args: Array[String]): Unit = {// 读取用户输入的q值val q = scala.io.StdIn.readDouble() // 读取输入的q值// 初始化级数和nvar Sn = 0.0var n = 1.0// 循环计算级数的和,直到Sn大于或等于qwhile (Sn < q) {Sn += 1.0 / nn += 1.0}// 输出Sn的值println(s"Sn=${Sn}")}
}

分别取出下面三个班级Top3的分数  ruc01

object ClassScores {def main(args: Array[String]): Unit = {// 初始化Map来存储每个班级的分数列表,明确指定列表类型为Intvar scores = Map("class1" -> List[Int](),"class2" -> List[Int](),"class3" -> List[Int]())// 读取数据并填充分数列表val data = List(("class1", 90), ("class2", 91), ("class1", 88),("class2", 99), ("class1", 100), ("class2", 77),("class1", 77), ("class2", 57), ("class3", 77),("class3", 88), ("class3", 99), ("class3", 100),("class3", 22), ("class3", 77))// 将分数添加到对应的班级列表中data.foreach {case (className, score) =>scores = scores.updated(className, scores(className) :+ score)}// 导入隐式转换,以便能够对Int进行排序import scala.math.Ordered// 打印每个班级的Top 3分数scores.foreach { case (className, scoreList) =>// 显式指定排序顺序val topScores = scoreList.sorted(Ordering[Int].reverse).take(3)println(s"Top 3 scores for $className: ${topScores.mkString(", ")}")}}
}

统计学生成绩一     ruc02   仅成功编译,无法运行

import scala.io.Source
import scala.collection.mutable.ListBufferobject ruc02 {def main(args: Array[String]): Unit = {// 读取文件内容val lines = Source.fromFile("filename.txt").getLines().toList// 跳过表头val headers = lines.head.split("\\s+").tailval students = lines.tail.map(_.split("\\s+").map(_.toInt))// 定义统计函数def statistics(scores: List[Int]): (Double, Int, Int) = {val total = scores.sumval average = total.toDouble / scores.lengthval min = scores.minval max = scores.max(average, min, max)}// 计算总体统计数据val overallStats = headers.zipWithIndex.map { case (header, index) =>val scores = students.map(_(index))val (average, min, max) = statistics(scores)(header, (average, min, max))}.toMap// 计算男女分别的统计数据val genderStats = Map("male" -> headers.tail.map(_ => ListBuffer[Int]()),"female" -> headers.tail.map(_ => ListBuffer[Int]()))students.foreach { student =>val gender = student(1) // 性别字段的索引是1headers.tail.indices.foreach { index =>val headerIndex = index + 1 // 跳过性别字段val score = student(headerIndex)genderStats(gender.toString)(headerIndex - 1) += score}}val statsForGender = (gender: String) => {headers.tail.map { header =>val scores = genderStats(gender)(headers.indexOf(header) - 1).toListval (average, min, max) = statistics(scores)((gender, header), (average, min, max))}.toMap}val maleStats = statsForGender("male")val femaleStats = statsForGender("female")// 打印统计结果println("Overall statistics:")overallStats.foreach { case (course, stats) =>println(s"$course: avg=${stats._1}, min=${stats._2}, max=${stats._3}")}println("\nMale statistics:")maleStats.foreach { case ((gender, course), stats) =>println(s"$course: avg=${stats._1}, min=${stats._2}, max=${stats._3}")}println("\nFemale statistics:")femaleStats.foreach { case ((gender, course), stats) =>println(s"$course: avg=${stats._1}, min=${stats._2}, max=${stats._3}")}}
}

统计学生成绩二   仅成功编译,无法运行

import scala.collection.mutable.ArrayBuffer
import scala.io.Sourceobject ruc02 {def get_alldata(allStudents: List[Array[String]], courseNames: Array[String], array1: ArrayBuffer[Int], array2: ArrayBuffer[Int], array3: ArrayBuffer[Int]): Unit = {for (i <- 2 until courseNames.length + 2) {for (j <- allStudents.indices) {val score = allStudents(j)(i).toIntarray1.append(score)if (allStudents(j)(1) == "male") {array2.append(score)} else if (allStudents(j)(1) == "female") {array3.append(score)}}}}def get_data(array: ArrayBuffer[Int], data2: ArrayBuffer[Double], Nn: Int): Unit = {var index = 0while (index < array.length) {val scores = array.slice(index, index + Nn)val average = scores.sum.toDouble / scores.lengthval min = scores.minval max = scores.maxdata2.append(average)data2.append(min)data2.append(max)index += Nn}}def print_data(data2: ArrayBuffer[Double], courseNames: Array[String]): Unit = {for (i <- courseNames.indices) {println(s"${courseNames(i)}:  average=${data2(i * 3).formatted("%.2f")},  min=${data2(i * 3 + 1)},  max=${data2(i * 3 + 2)}")}}def main(args: Array[String]): Unit = {val File = Source.fromFile("d:/2.txt")val all_Data = File.getLines().map {_.split(" ")}.toListval courseNames = all_Data.head.drop(1).toArray  // Convert to Array for mutabilityval allStudents = all_Data.tail.map(_.map(_.trim)) // Remove leading and trailing spacesval array1 = ArrayBuffer[Int]()val array2 = ArrayBuffer[Int]()val array3 = ArrayBuffer[Int]()get_alldata(allStudents, courseNames, array1, array2, array3)val data2 = ArrayBuffer[Double]()val Nn = courseNames.lengthget_data(array1, data2, Nn)get_data(array2, data2, Nn)get_data(array3, data2, Nn)println("course  average  min  max")print_data(data2.take(Nn * 3), courseNames)println("course  average  min  max(male)")print_data(data2.slice(Nn * 3, Nn * 6), courseNames)println("course  average  min  max(female)")print_data(data2.slice(Nn * 6, Nn * 9), courseNames)}
}

实验截图

相关文章:

分布式计算框架

进入Scala模式 终端里输入Scala 创建一个新的Scala文件 vim 文件名.scala 复制粘贴代码 ctrlshift c/v 使用vim 先进入插入模式&#xff0c;可以通过按i键来实现&#xff0c;然后粘贴代码&#xff0c;完成后按Esc键退出插入模式&#xff0c;保存并退出可以通过输入:wq然后按…...

YOLO交通目标识别数据集(红绿灯-汽车-自行车-卡车等)

YOLO交通目标识别 数据集 模型 ui界面 ✓图片数量15000&#xff0c;xml和txt标签都有&#xff1b; ✓class&#xff1a;biker&#xff0c;car&#xff0c;pedestrian&#xff0c;trafficLight&#xff0c;trafficLight-Green&#xff0c;trafficLight-GreenLeft&#xff0c; t…...

Vue学习记录之六(组件实战及BEM框架了解)

一、BEM BEM是一种前端开发中常用的命名约定&#xff0c;主要用于CSS和HTML的结构化和模块化。BEM是Block、Element、Modifier的缩写。 Block&#xff08;块&#xff09;&#xff1a;独立的功能性页面组件&#xff0c;可以是一个简单的按钮&#xff0c;一个复杂的导航条&…...

为什么会出现电话机器人?语音电话机器人的出现起到了什么作用?

电话机器人的出现是科技发展与市场需求相结合的产物&#xff0c;它们的广泛应用反映了现代社会对效率、成本和服务质量的不断追求。以下是电话机器人出现的几个主要原因。 1. 市场需求的变化 随着经济的发展和消费模式的转变&#xff0c;客户对服务的期望不断提高。他们希望能…...

【CSS Tricks】深入聊聊前端编写css的方法论

目录 引言BEM 规范OOCSS 规范结构与样式分离容器与内容分离 SMACSS 规范ITCSS 规范设置层工具层通用层元素层对象层组件层微调层由此分层后的项目代码结构也会相应做修改&#xff0c;主要有两种形式&#xff1a;文件夹形式文件名形式引用方式按照层级顺序引用 ACSS 规范总结 引…...

多维时序 | GWO-VMD-SSA-LSTM灰狼优化变分模态分解联合麻雀优化长短期记忆网络多变量时间序列光伏功率预测(Matlab)

多维时序 | GWO-VMD-SSA-LSTM灰狼优化变分模态分解联合麻雀优化长短期记忆网络多变量时间序列光伏功率预测 目录 多维时序 | GWO-VMD-SSA-LSTM灰狼优化变分模态分解联合麻雀优化长短期记忆网络多变量时间序列光伏功率预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 …...

5.使用 VSCode 过程中的英语积累 - Go 菜单(每一次重点积累 5 个单词)

前言 学习可以不局限于传统的书籍和课堂&#xff0c;各种生活的元素也都可以做为我们的学习对象&#xff0c;本文将利用 VSCode 页面上的各种英文元素来做英语的积累&#xff0c;如此做有 3 大利 这些软件在我们工作中是时时刻刻接触的&#xff0c;借此做英语积累再合适不过&a…...

Java高级Day50-连接池

132.数据库连接池 传统获取Connection问题分析 传统的JDBC数据库连接使用DriverManager来获取&#xff0c;每次向数据库建立连接的时候都要将Connection加载到内存中&#xff0c;再验证IP地址&#xff0c;用户名和密码。需要数据库连接的时候&#xff0c;就向数据库请求一个&a…...

软件设计-开闭原则

开闭原则是一种重要的设计思想&#xff0c;它为软件系统的可扩展性和可维护性提供了有力的支持。 一、开闭原则的原理 开闭原则&#xff08;Open-Closed Principle, OCP&#xff09;是指软件实体&#xff08;类、模块、函数等&#xff09;应当对扩展开放&#xff0c;对修改关…...

Angular面试题八

一、请解释Angular中的AOT编译是什么&#xff0c;并简述其优势。 Angular中的AOT编译&#xff0c;全称为Ahead-of-Time&#xff08;预先编译&#xff09;&#xff0c;是一种在构建过程中将Angular应用程序的模板和组件编译成本地机器代码&#xff08;通常是JavaScript代码&…...

【Kubernetes】常见面试题汇总(三十六)

目录 88. Pod 启动失败如何解决以及常见的原因有哪些&#xff1f; 89.简述 K8s 中 label 的几种应用场景。 特别说明&#xff1a; 题目 1-68 属于【Kubernetes】的常规概念题&#xff0c;即 “ 汇总&#xff08;一&#xff09;~&#xff08;二十二&#xff09;” 。 题…...

深入解析SGD、Momentum与Nesterov:优化算法的对比与应用

目录 1. 梯度下降算法2. BGD、SGD、MBGD3. momentum与dampening3.1 另一种形式的momentum3.1.1 学习率固定3.1.2 学习率不固定 4. nesterov4.1 PyTorch中的Nesterov4.2 Polyak与Nesterov的比较 Ref 1. 梯度下降算法 先考虑一元情形。假设待更新的参数为 θ \theta θ&#xf…...

Vue2实现主内容滚动到指定位置时,侧边导航栏也跟随选中变化

需求背景&#xff1a; PC端项目需要实现一个有侧边导航栏&#xff0c;可点击跳转至对应内容区域&#xff0c;类似锚点导航&#xff0c; 同时主内容区域上下滚动时&#xff0c;可实现左侧导航栏选中样式能实时跟随变动的效果。 了解了一下&#xff0c;Element Plus 组件库 和 …...

dev containers plugins for vscode构建虚拟开发环境

0. 需求说明 自用笔记本构建一套开发环境&#xff0c;用docker 虚拟插件 dev containers,实现开发环境的构建&#xff0c;我想构建一套LLMs的环境&#xff0c;由于环境配置太多&#xff0c;不想污染本地环境&#xff0c;所以选择隔离技术 1. 环境准备 vscodedocker 2. 步骤…...

C++ | Leetcode C++题解之第433题最小基因变化

题目&#xff1a; 题解&#xff1a; class Solution { public:int minMutation(string start, string end, vector<string>& bank) {int m start.size();int n bank.size();vector<vector<int>> adj(n);int endIndex -1;for (int i 0; i < n; i)…...

Qt窗口——QMenuBar

文章目录 QMenuBar示例演示给菜单栏设置快捷键给菜单项设置快捷键添加子菜单添加分割线添加图标 QMenuBar Qt中采用QMenuBar来创建菜单栏&#xff0c;一个主窗口&#xff0c;只允许有一个菜单栏&#xff0c;位于主窗口的顶部、主窗口标题栏下面&#xff1b;一个菜单栏里面有多…...

python网站创建001:内容概览

内容概览&#xff1a; 1. Python环境搭建&#xff08;Python解释器、Pycharm、环境变量等&#xff09; 2. 基础语法&#xff08;条件、循环、输入输出、编码等&#xff09; 3. 数据类型型&#xff08;整型、布尔型、字符串、列表、字典、元组、集合等&#xff09; 4. 函数&…...

代码随想录第22天|

class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(s.begin(), s.end());int index s.size() - 1; // 饼干数组的下标int result 0;for (int i g.size() - 1; i > 0; i--) { // 遍历…...

WPF-基础-02 DispatcherObject类

public abstract class DispatcherObject {protected DispatcherObject();public Dispatcher Dispatcher { get; }public bool CheckAccess();public void VerifyAccess(); }WPF中使用Dispatcher更新界面 xaml<Grid><TextBlock x:Name"tbkShow" Horizontal…...

STM32与51单片机的区别:是否应该直接学习STM32?

STM32与51单片机的区别&#xff1a;是否应该直接学习STM32&#xff1f; 在单片机的世界里&#xff0c;STM32和51单片机都是非常重要的角色。对于初学者来说&#xff0c;是否可以直接跳过51单片机&#xff0c;直接学习STM32&#xff0c;这个问题一直存在争议。让我们深入探讨这…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...