分布式计算框架
进入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,这个问题一直存在争议。让我们深入探讨这…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...
从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...
WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...
Android屏幕刷新率与FPS(Frames Per Second) 120hz
Android屏幕刷新率与FPS(Frames Per Second) 120hz 屏幕刷新率是屏幕每秒钟刷新显示内容的次数,单位是赫兹(Hz)。 60Hz 屏幕:每秒刷新 60 次,每次刷新间隔约 16.67ms 90Hz 屏幕:每秒刷新 90 次,…...
Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目
应用场景: 1、常规某个机器被钓鱼后门攻击后,我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后,我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...
