分布式计算框架
进入Scala模式
终端里输入Scala
创建一个新的Scala文件
vim 文件名.scala
复制粘贴代码
ctrl+shift c/v
使用vim
先进入插入模式,可以通过按i
键来实现,然后粘贴代码,完成后按Esc
键退出插入模式,保存并退出可以通过输入:wq
然后按Enter
键。
编译运行程序
scalac 文件名.scala
scala 文件名
终端退出scala模式
:quit / :exit
删除在vim里写好的代码
-
删除字符或单词:
- 在普通模式(Normal mode)下,你可以使用
x
命令来删除光标所在位置的单个字符。 - 要删除一个单词,首先使用
w
命令将光标移动到单词的末尾,然后使用x
来删除整个单词。
- 在普通模式(Normal mode)下,你可以使用
-
删除一行:
- 在普通模式下,使用
dd
命令删除光标所在的整行。
- 在普通模式下,使用
-
删除多行:
- 在普通模式下,使用数字加
dd
来删除光标所在位置向下的多行。例如,5dd
会删除光标所在行和接下来的四行。
- 在普通模式下,使用数字加
-
删除到行尾:
- 在普通模式下,使用
D
命令删除从光标位置到行尾的所有内容。
- 在普通模式下,使用
-
删除到文件末尾:
- 在普通模式下,使用
:%d
命令删除整个文件的内容。
- 在普通模式下,使用
-
撤销删除:
- 如果你不小心删除了内容,可以使用
u
命令来撤销删除操作。
- 如果你不小心删除了内容,可以使用
-
退出 Vim:
- 如果你想要退出 Vim 而不保存任何更改,可以在普通模式下使用
:q!
命令。
- 如果你想要退出 Vim 而不保存任何更改,可以在普通模式下使用
请注意,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 先进入插入模式,可以通过按i键来实现,然后粘贴代码,完成后按Esc键退出插入模式,保存并退出可以通过输入:wq然后按…...

YOLO交通目标识别数据集(红绿灯-汽车-自行车-卡车等)
YOLO交通目标识别 数据集 模型 ui界面 ✓图片数量15000,xml和txt标签都有; ✓class:biker,car,pedestrian,trafficLight,trafficLight-Green,trafficLight-GreenLeft, t…...

Vue学习记录之六(组件实战及BEM框架了解)
一、BEM BEM是一种前端开发中常用的命名约定,主要用于CSS和HTML的结构化和模块化。BEM是Block、Element、Modifier的缩写。 Block(块):独立的功能性页面组件,可以是一个简单的按钮,一个复杂的导航条&…...

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

【CSS Tricks】深入聊聊前端编写css的方法论
目录 引言BEM 规范OOCSS 规范结构与样式分离容器与内容分离 SMACSS 规范ITCSS 规范设置层工具层通用层元素层对象层组件层微调层由此分层后的项目代码结构也会相应做修改,主要有两种形式:文件夹形式文件名形式引用方式按照层级顺序引用 ACSS 规范总结 引…...

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

5.使用 VSCode 过程中的英语积累 - Go 菜单(每一次重点积累 5 个单词)
前言 学习可以不局限于传统的书籍和课堂,各种生活的元素也都可以做为我们的学习对象,本文将利用 VSCode 页面上的各种英文元素来做英语的积累,如此做有 3 大利 这些软件在我们工作中是时时刻刻接触的,借此做英语积累再合适不过&a…...
Java高级Day50-连接池
132.数据库连接池 传统获取Connection问题分析 传统的JDBC数据库连接使用DriverManager来获取,每次向数据库建立连接的时候都要将Connection加载到内存中,再验证IP地址,用户名和密码。需要数据库连接的时候,就向数据库请求一个&a…...
软件设计-开闭原则
开闭原则是一种重要的设计思想,它为软件系统的可扩展性和可维护性提供了有力的支持。 一、开闭原则的原理 开闭原则(Open-Closed Principle, OCP)是指软件实体(类、模块、函数等)应当对扩展开放,对修改关…...
Angular面试题八
一、请解释Angular中的AOT编译是什么,并简述其优势。 Angular中的AOT编译,全称为Ahead-of-Time(预先编译),是一种在构建过程中将Angular应用程序的模板和组件编译成本地机器代码(通常是JavaScript代码&…...
【Kubernetes】常见面试题汇总(三十六)
目录 88. Pod 启动失败如何解决以及常见的原因有哪些? 89.简述 K8s 中 label 的几种应用场景。 特别说明: 题目 1-68 属于【Kubernetes】的常规概念题,即 “ 汇总(一)~(二十二)” 。 题…...

深入解析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 θ…...

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

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

C++ | Leetcode C++题解之第433题最小基因变化
题目: 题解: 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来创建菜单栏,一个主窗口,只允许有一个菜单栏,位于主窗口的顶部、主窗口标题栏下面;一个菜单栏里面有多…...
python网站创建001:内容概览
内容概览: 1. Python环境搭建(Python解释器、Pycharm、环境变量等) 2. 基础语法(条件、循环、输入输出、编码等) 3. 数据类型型(整型、布尔型、字符串、列表、字典、元组、集合等) 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单片机的区别:是否应该直接学习STM32? 在单片机的世界里,STM32和51单片机都是非常重要的角色。对于初学者来说,是否可以直接跳过51单片机,直接学习STM32,这个问题一直存在争议。让我们深入探讨这…...

第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...