分布式计算框架

news2024/11/17 8:55:47

进入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值

    // 初始化级数和n
    var Sn = 0.0
    var n = 1.0

    // 循环计算级数的和,直到Sn大于或等于q
    while (Sn < q) {
      Sn += 1.0 / n
      n += 1.0
    }

    // 输出Sn的值
    println(s"Sn=${Sn}")
  }
}

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

object ClassScores {
  def main(args: Array[String]): Unit = {
    // 初始化Map来存储每个班级的分数列表,明确指定列表类型为Int
    var 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.ListBuffer

object ruc02 {
  def main(args: Array[String]): Unit = {
    // 读取文件内容
    val lines = Source.fromFile("filename.txt").getLines().toList

    // 跳过表头
    val headers = lines.head.split("\\s+").tail
    val students = lines.tail.map(_.split("\\s+").map(_.toInt))

    // 定义统计函数
    def statistics(scores: List[Int]): (Double, Int, Int) = {
      val total = scores.sum
      val average = total.toDouble / scores.length
      val min = scores.min
      val 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) // 性别字段的索引是1
      headers.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).toList
        val (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.Source

object 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).toInt
        array1.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 = 0
    while (index < array.length) {
      val scores = array.slice(index, index + Nn)
      val average = scores.sum.toDouble / scores.length
      val min = scores.min
      val max = scores.max
      data2.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(" ")}.toList
    val courseNames = all_Data.head.drop(1).toArray  // Convert to Array for mutability
    val allStudents = all_Data.tail.map(_.map(_.trim)) // Remove leading and trailing spaces

    val 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.length

    get_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)
  }
}

实验截图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2162753.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HarmonyOS开发之利用TextPicker实现日期选择框只有【年】

效果图&#xff1a; 一&#xff1a;实现年份数组 function generateYearArray(startYear, endYear) {const yearArray [];for (let year startYear; year < endYear; year) {yearArray.push(year年);}return yearArray; } 二&#xff0c;设置年份区间&#xff08;1995,2…

每日论文2——用于锁相环应用的0.025%直流电流失配电荷泵

《A 0.025% DC Current Mismatch Charge Pump for PLL Applications 》2021 IEEE International Midwest Symposium on Circuits and Systems (MWSCAS) The Key Lab of micro-nano electronics and system integration of Xian city, Xian 本文结构主要不同是仅用了一个OPA&…

JAVA并发编程系列(11)线程池底层原理架构剖析

面试官&#xff1a;说说JAVA线程池的几个核心参数&#xff1f; 之前我们用了10篇文章详细剖析了synchronized、volatile、CAS、AQS、ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier、并发锁、Condition等各个核心基础原理&#xff0c;今天开始我们说说并发领域的各种…

基于单片机的精确电压表DA-AD转换

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;采用DAC0832和ADC0832检测电压&#xff0c;0到8.5V&#xff0c;设计复位电路 LED管显示实际稳压值&#xff0c;初始电压0 二、硬件资源 基于KEIL5编写C代码&#xff0c…

《MATLAB项目实战》,专栏目录和介绍

文章目录 前言专栏介绍&#x1f393;一、 项目实战篇和GUI界面篇&#x1f393;二、 项目基础篇总结 前言 MATLAB 是一款强大且广泛应用的数值计算和数据可视化软件工具&#xff0c;它提供了一个高效、简洁的编程环境&#xff0c;使用户能够进行从简单的矩阵运算到复杂的多维数…

QT+ESP8266+STM32项目构建三部曲二--阿里云云端处理之云产品流转

一、创建一个新的产品 创建两个设备&#xff1a;一个用于stm32端连接并动态上传数据&#xff0c;一个用于上位机端订阅获取数据 添加功能&#xff0c;也就是物模型的的标签&#xff0c;这里根据自己在设计过程中需要的标签&#xff0c;自由设计 我这里定义了两个不同数据类型…

HBase DDL操作代码汇总(namespace+table CRUD操作)

HBase DDL操作 DDL操作主要是关于命名空间和表格的内容增删改查。 注&#xff1a;如果出现无法连接到zookeeper等的相关错误&#xff0c;可以将以下代码打jar包&#xff0c;在HMaster节点上执行 错误提示&#xff1a; Exception in thread “main” java.net.SocketTimeoutExc…

苹果更新过时产品:三款 Mac 成“古董”,九款 Mac 彻底“停产”

9 月 24 日消息苹果今天更新了“过时产品”名单&#xff0c;新增加了三款 Mac 型号&#xff0c;并将另外九款 Mac 型号从“过时产品”归为“停产产品”。 新入列的 Mac 过时产品&#xff1a; MacBook Air&#xff08;视网膜显示屏&#xff0c;13 英寸&#xff0c;2018 年&…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-24

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-24 1. Enriching Datasets with Demographics through Large Language Models: What’s in a Name? K AlNuaimi, G Marti, M Ravaut, A AlKetbi, A Henschel… - arXiv preprint arXiv …, 2024 通过大型语言…

Centos下安装Maven(无坑版)

Linux 安装 Maven Maven 压缩包下载与解压 华为云下载源&#xff0c;自行选择版本 下面的示例使用的是 3.8.1 版本 wget https://repo.huaweicloud.com/apache/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.tar.gz解压 tar -zxvf apache-maven-3.8.1-bin.tar.gz移…

腾讯云点播及声音上传

文章目录 1、开通腾讯云点播2、获取腾讯云API密钥3、完成声音上传3.1、引入依赖3.2、参考&#xff1a;接入点地域3.3、参考&#xff1a;任务流设置3.4、首先修改配置&#xff1a;3.4.1、 3.5、TrackInfoApiController --》 uploadTrack()3.6、VodServiceImpl --》 uploadTrack(…

长列表加载性能优化

一、长列表优化概述 列表是应用开发中最常见的一类开发场景&#xff0c;它可以将杂乱的信息整理成有规律、易于理解和操作的形式&#xff0c;便于用户查找和获取所需要的信息。应用程序中常见的列表场景有新闻列表、购物车列表、各类排行榜等。随着信息数据的累积&#xff0c;特…

MobaXterm基本使用 -- 服务器状态、批量操作、显示/切换中文字体、修复zsh按键失灵

监控服务器资源 参考网址&#xff1a;https://www.cnblogs.com/144823836yj/p/12126314.html 显示效果 MobaXterm提供有这项功能&#xff0c;在会话窗口底部&#xff0c;显示服务器资源使用情况 如内存、CPU、网速、磁盘使用等&#xff1a; &#xff08;完整窗口&#xff0…

kafka集群架构与原理

前言 这次我们从消息队列开始讨论。生产者-消费者模型中间需要一个消息队列&#xff0c;以存储生产者的产品。对传统的消息队列来说&#xff0c;它支持点对点&#xff08;P2P&#xff09;和发布/订阅&#xff08;Pub/Sub&#xff09;两种消息模型。在点对点模型中&#xff0c;消…

【楚怡杯】职业院校技能大赛 “云计算应用” 赛项样题九

某企业根据自身业务需求&#xff0c;实施数字化转型&#xff0c;规划和建设数字化平台&#xff0c;平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”&#xff0c;拟采用开源OpenStack搭建企业内部私有云平台&#xff0c;开源Kubernetes搭建云原生服务平台&#xff0c;选…

基于姿态估计算法的健身辅助应用

作为一名健身爱好者&#xff0c;我一直对探索改善锻炼习惯的方法很感兴趣。一个一直让我着迷的领域是使用计算机视觉和机器学习来分析和纠正锻炼过程中的姿势。在本文中&#xff0c;我将分享我使用姿势估计算法构建一个简单的健身房训练辅助应用程序的历程。 NSDT工具推荐&…

Qt实现自定义的文件对话框CustomFileDialog

背景&#xff1a; 最近客户有需求说Qt自带的文件对话框在windows上打开网络共享文件的时候比较卡&#xff0c;需要解决这个问题&#xff0c;于是参考Qt源码&#xff0c;自定义了一个文件对话框。已经实现流畅加载网络共享文件夹了。效果如下&#xff0c;所有的代码都可以直接修…

ComfyUI中缺失节点安装一点小小注意事项

加载工作流&#xff0c;遇到了红当当的缺失节点警告窗口&#xff1a; 在ComfyUI-Manager点击安装缺失节点&#xff0c;发现竟然弹出4个&#xff0c;而上面告警窗口中只是缺失3个&#xff0c;究竟是怎么回事呢&#xff0c;刚开始接触ComfyUI时&#xff0c;我也是不管3721&#x…

echarts 导出pdf空白原因

问题阐述 页面样式&#xff1a; 导出pdf: 导出pdf&#xff0c;统计图部分为空白。 问题原因 由于代码中进行了dom字符串的复制&#xff0c;而echarts用canvas绘制&#xff0c;canvas内部内容不会进行复制&#xff0c;只会复制canvas节点&#xff0c;因此导出pdf空白。 解决…

卷轴模式开发的技术架构分析与源代码展示

在软件开发中&#xff0c;"卷轴模式"&#xff08;虽然不是一个广泛认知的术语&#xff0c;在此我们可以理解为一种类似于游戏或应用中内容逐步加载与展示的模式&#xff0c;类似于古代卷轴展开的方式&#xff09;通常用于处理大量数据或内容&#xff0c;特别是当这些…