“大模型横扫千军”背后的大数据挖掘--浅谈MapReduce

news2025/1/27 13:38:06

文章目录

    • O 背景知识
      • 1 数据挖掘
      • 2 邦费罗尼原则
      • 3 TF.IDF
      • 4 哈希函数
      • 5 分布式文件系统
    • 一、MapReduce基本介绍
      • 1. Map 任务
      • 2. 按键分组
      • 3. Reduce 任务
      • 4. 节点失效处理
      • 5.小测验:在一个大型语料库上有100个map任务和若干reduce任务:
    • 二、基于MapReduce的基本运算
      • 1. 选择(Selection)
      • 2. 交(Intersection)
      • 3. 并(Union)
      • 4. 补(Difference)
      • 5. 聚合分组(Aggregation and Grouping)
      • 6. 矩阵乘法(Matrix Multiplication)
    • 三、MapReduce的复杂性估计
      • 1. 复制率(Replication Rate)
      • 2. Reduce 规模(Reduce Size)
      • 3. 映射模式(Mapping Patterns)

O 背景知识

1 数据挖掘

定义:数据挖掘是从大规模数据集中提取有用信息和模式的过程,通常应用于预测和决策支持。

例子:零售商通过分析销售数据,发现顾客在购买啤酒时经常同时购买尿布。基于这一发现,零售商可以优化商品陈列,提升销量。

2 邦费罗尼原则

定义:邦费罗尼原则指出,如果某个特征在随机数据中频繁出现,那么这种特征在特定数据集中的显著性可能不可靠。

例子:假设在多个随机抽样中发现某个疾病与吸烟之间的关联。如果该关联在随机数据中普遍存在,那么在具体研究中,该关联可能并不是显著的。

3 TF.IDF

定义:TF.IDF是一个用于评估文本中某个词汇重要性的度量,结合了该词在文档中的出现频率和在所有文档中的稀有性。
TF-IDF(Term Frequency-Inverse Document Frequency)是一种常用的文本挖掘技术,用于评估某个词在文档中的重要性。它结合了词在文档中的频率(TF)和词在整个文档集中的稀有性(IDF)。下面是 TF 和 IDF 的计算方法。

  1. 词频(TF)

词频(Term Frequency, TF)是指某个特定词汇在文档中出现的频率。计算公式如下:
TF ( t , d ) = 词 t 在文档 d 中出现的次数 文档 d 中总词数 \text{TF}(t, d) = \frac{\text{词 t 在文档 d 中出现的次数}}{\text{文档 d 中总词数}} TF(t,d)=文档 d 中总词数 t 在文档 d 中出现的次数
其中:

  • ( t ) 是某个特定的词。
  • ( d ) 是某个特定的文档。
  1. 逆文档频率(IDF)

逆文档频率(Inverse Document Frequency, IDF)用于衡量词汇的重要性,尤其是那些在多个文档中都出现的词汇。计算公式如下:

IDF ( t ) = log ⁡ ( N ∣ { d ∈ D : t ∈ d } ∣ ) \text{IDF}(t) = \log\left(\frac{N}{|\{d \in D: t \in d\}|}\right) IDF(t)=log({dD:td}N)
其中:

  • ( N ) 是文档总数。
  • ∣ { d ∈ D : t ∈ d } ∣ |\{d \in D: t \in d\}| {dD:td}是包含词 ( t ) 的文档数量。
  1. TF-IDF 计算

结合以上两者,TF-IDF 的计算公式为: TF-IDF ( t , d ) = TF ( t , d ) × IDF ( t ) \text{TF-IDF}(t, d) = \text{TF}(t, d) \times \text{IDF}(t) TF-IDF(t,d)=TF(t,d)×IDF(t)

例子:在一篇关于“数据挖掘”的文章中,词“数据”出现了50次,而在100篇文档中只出现在10篇中。则“数据”的TF.IDF值较高,说明它是该文档的重要主题词。

4 哈希函数

定义:哈希函数是将输入数据(如字符串)转换为固定大小(通常是整数)的输出值的算法,具有快速计算和均匀分布的特点。

例子:在一个用户数据库中,使用哈希函数将用户的电子邮件地址转换为一个哈希值,这样可以快速查找用户的信息而不必逐个匹配。

5 分布式文件系统

定义:分布式文件系统是一种将文件存储在网络中多台计算机上,并允许用户和应用程序通过统一接口进行访问的系统。它能实现文件的透明访问、数据冗余和高可用性。

特征

  • 多副本:文件通常在多个节点上存储副本,以提高容错性和数据安全性。
  • 并发访问:支持多个用户同时访问和修改文件,提供机制以维护数据一致性。

例子:在Hadoop的HDFS中,文件会被分割成多个块,并在不同的节点上存储这些块的副本,以便于大数据处理和容错;在Google File System中,文件也会被划分为多个块,并在多个服务器上进行冗余存储。

一、MapReduce基本介绍

定义:MapReduce 是一种编程模型和处理大规模数据集的计算框架,最早由 Google 提出。它将数据处理过程分为两个主要阶段:Map 阶段和 Reduce 阶段。MapReduce 允许开发人员以简洁的方式进行并行计算,适用于大数据环境。
在这里插入图片描述

1. Map 任务

在 Map 阶段,输入数据被分成若干个片段,独立处理。每个片段通过一个 Map 函数进行处理,Map 函数的作用是读取输入数据并生成一系列的中间键值对。

  • 输入:原始数据集(如文本文件)。
  • 输出:中间键值对(key-value pairs),这些键值对将被用于后续的 Reduce 任务。

示例:在词频统计中,Map 函数会把每个单词作为键,值为 1,生成如 {“hello”: 1, “world”: 1} 的中间结果。

2. 按键分组

在 Map 阶段之后,系统会对所有 Map 任务生成的中间键值对进行洗牌(Shuffle)和分组,将相同的键聚集在一起,并将这些键值对发送到相应的 Reduce 任务。

  • 洗牌:将所有 Map 任务输出的中间结果进行排序和分配。
  • 分组:相同的键会被聚集在一起,便于 Reduce 阶段处理。

这一过程确保每个 Reduce 任务只处理一组特定的键及其相关联的值。

3. Reduce 任务

Reduce 阶段的主要任务是处理从 Map 任务中得到的中间数据,合并相同键的值并生成最终输出结果。

  • 输入:中间键值对(经过分组后的数据)。
  • 输出:最终结果,通常是经过汇总、计算后的数据(例如词频计数的总和)。

示例:在词频统计中,Reduce 函数会将相同单词的值进行求和,最终输出如 {“hello”: 10, “world”: 5} 的结果。

4. 节点失效处理

在分布式环境中,节点失效是常见的问题。MapReduce 框架设计了机制来处理节点失效,以确保任务的可靠性和正确性。

  • 任务重试:如果某个 Map 或 Reduce 任务的执行节点失败,系统会自动重新调度该任务到其他可用节点进行执行。
  • 任务监控:主控制节点(如 Job Tracker)会监控每个任务的执行状态,及时发现失败并重新分配任务。
  • 数据冗余:数据片段会在多个节点上进行冗余存储,这样即使某个节点失效,其他节点仍然可以提供相应的数据。

5.小测验:在一个大型语料库上有100个map任务和若干reduce任务:

(a) 如果在 Map 任务中不使用组合器,那么处理值的 Reducer 的时间差异会不会很大?为什么?

回答
如果不使用组合器,所有的中间键值对都会被直接发送到 Reducer。在大规模数据集的情况下,Map 阶段可能会生成大量中间结果,尤其是在词频统计这样的应用中,比如同一个词可能会出现多次。

  • 时间差异:由于所有的中间结果都需要通过网络传输到 Reducer,处理大量重复的键值对会导致网络带宽的浪费和 Reducer 的处理时间增加,可能会导致某些 Reducer 处理的时间远远长于其他 Reducer。因此,Reducer 的处理时间差异可能会很大。
  • 组合器的作用:组合器可以在 Map 任务的本地阶段对中间结果进行初步汇总,从而减少传输到 Reducer 的数据量,这样可以显著提高整体效率并减少时间差异。

(b) 如果将 Reducer 组合成数量较少的 Reduce 任务,比如说随机的 10 个任务,那么上述时间差异不会十分显著?如果将 Reducer 组合成 10,000 个 Reduce 任务,结果会怎么样?

回答

  • 数量较少的 Reduce 任务:如果将 Reducer 组合成较少的 Reduce 任务(如 10 个),每个 Reducer 将需要处理更多的中间键值对。虽然每个 Reducer 的工作量增大,但由于任务数量较少,整体处理时间可能不会显著增加,因为任务调度和启动的开销相对较小,且可以并行处理。

  • 数量较多的 Reduce 任务:如果将 Reducer 组合成 10,000 个 Reduce 任务,可能会导致以下问题:

    • 过多的任务调度开销:每个任务的启动和调度都有一定的成本,过多的任务会导致系统资源的浪费和调度延迟。
    • 不均衡的负载:由于每个 Reducer 可能处理的中间结果数量相对较少,可能会导致有些 Reducer 完成得很快,而有些 Reducer 可能仍在处理数据,造成整体效率下降。
    • 资源消耗:大量的 Reducer 任务会消耗更多的系统资源,可能导致系统性能瓶颈。

© 假设我们在 100 个 Map 任务中使用组合器,那么上面时间的差异不会很显著?为什么?

回答
当使用组合器时,Map 阶段可以在本地汇总和压缩输出的中间结果,减少传输到 Reducer 的数据量。

  • 数据量减少:组合器能够有效地减少传输到 Reducer 的中间结果数量。这不仅降低了网络带宽的需求,还减少了 Reducer 端处理的工作量。
  • 时间差异降低:由于每个 Reducer 接收到的中间结果量相对较少,处理时间差异会缩小,因此整体的处理时间差异不会显著。所有 Reducer 能够更均匀地分配工作负载,提高了处理效率。

二、基于MapReduce的基本运算

MapReduce 是一种强大的编程模型,适用于处理和生成大规模数据集。它在多种基本运算中都得到了广泛应用,以下是基于 MapReduce 的一些基本运算的介绍,包括选择、交、并、补、聚合分组和矩阵乘法等。

1. 选择(Selection)

选择操作用于从数据集中筛选满足特定条件的记录。在 MapReduce 中,该操作主要在 Map 阶段完成。

实现步骤

  • Map 阶段:读取输入数据集,检查每条记录是否满足条件(如某一字段的值是否为特定值)。如果满足条件,就输出该记录。
  • Reduce 阶段:通常选择操作不需要 Reduce 阶段,因为只需输出符合条件的结果。

示例:假设我们有一个包含用户信息的日志文件,我们想要选择年龄大于 18 岁的用户:

def map_function(record):
    if record.age > 18:
        emit(record.id, record)

2. 交(Intersection)

交操作用于找到两个数据集中的共同元素。在 MapReduce 中,可以通过 Map 和 Reduce 组合实现。

实现步骤

  • Map 阶段:对每个数据集的记录进行处理,输出形式为 (key, source),其中 key 是记录的关键字段,source 是数据集标识。
  • Reduce 阶段:对于相同的 key,检查其来源。如果来自两个不同的数据集,则输出这个 key

示例:假设有两个用户ID列表,我们要找出两个列表中的共同元素。

def map_function(record):
    emit(record.user_id, "dataset1")  # 对于第一个数据集
    emit(record.user_id, "dataset2")  # 对于第二个数据集

def reduce_function(key, values):
    if "dataset1" in values and "dataset2" in values:
        emit(key, key)  # 输出交集的元素

3. 并(Union)

并操作用于合并两个数据集,返回两个数据集中的所有元素。在 MapReduce 中,也可以通过 Map 和 Reduce 来实现。

实现步骤

  • Map 阶段:对两个数据集的记录进行处理,将所有记录发送到 Reducer。
  • Reduce 阶段:简单地输出所有接收到的记录。

示例:将两个用户ID列表合并为一个列表。

def map_function(record):
    emit(record.user_id, None)

def reduce_function(key, values):
    emit(key, key)  # 输出并集的元素

4. 补(Difference)

补操作用于找到在一个数据集中存在但在另一个数据集中不存在的元素。可以通过 Map 和 Reduce 实现。

实现步骤

  • Map 阶段:处理数据集,输出 (key, source)
  • Reduce 阶段:检查 key 的来源,如果只来自第一个数据集,则输出该 key

示例:找出在第一个用户ID列表中,但不在第二个用户ID列表中的元素。

def map_function(record):
    emit(record.user_id, "dataset1")  # 第一个数据集

def reduce_function(key, values):
    if "dataset1" in values and "dataset2" not in values:
        emit(key, key)  # 输出补集的元素

5. 聚合分组(Aggregation and Grouping)

聚合分组操作用于根据某些键对数据进行分组,并对每组的数据进行汇总计算(如求和、计数等)。

实现步骤

  • Map 阶段:根据特定的键(如某字段的值)输出 (key, value) 对。
  • Reduce 阶段:对相同的 key 进行汇总计算。

示例:计算每个用户的订单总数。

def map_function(record):
    emit(record.user_id, 1)  # 每个订单计为 1

def reduce_function(user_id, values):
    total_orders = sum(values)  # 汇总每个用户的订单数
    emit(user_id, total_orders)

6. 矩阵乘法(Matrix Multiplication)

矩阵乘法是更复杂的运算,可以通过 MapReduce 来实现。假设我们有两个矩阵 A 和 B,想要计算 C = A * B。

实现步骤

  • Map 阶段:将矩阵 A 和 B 的元素进行处理。对于 A 的每个元素 (i, j),输出 (i, k),值为 A[i][j] * B[j][k]。对于 B 的每个元素,输出 (j, k) 及其对应值。
  • Reduce 阶段:将相同的 (i, k) 汇总,计算总和。

示例

# 假设 A[i][j] 和 B[j][k] 的索引表示
def map_a(i, j, value):
    for k in range(num_cols_B):
        emit((i, k), value * B[j][k])  # 从 A 发出

def map_b(j, k, value):
    for i in range(num_rows_A):
        emit((i, k), value * A[i][j])  # 从 B 发出

def reduce_function(index, values):
    total = sum(values)  # 对于相同的 (i, k) 汇总
    emit(index, total)

三、MapReduce的复杂性估计

1. 复制率(Replication Rate)

定义
在 MapReduce 中,复制率通常指的是所有 Map 任务产生的键值对的数量与其输入数据的大小之比。更具体地说,可以用以下公式表示:

复制率 = 所有 Map 任务产生的键值对数量 输入数据的大小 \text{复制率} = \frac{\text{所有 Map 任务产生的键值对数量}}{\text{输入数据的大小}} 复制率=输入数据的大小所有 Map 任务产生的键值对数量

影响因素

  • 数据冗余:较高的复制率意味着每个输入记录会生成更多的输出键值对,这可能会增加后续处理的复杂性。
  • 中间结果的处理:在某些情况下,尤其是使用组合器时,复制率可以影响 Reducer 接收到的数据量,从而影响性能。
  • 资源利用率:过高的复制率可能导致不必要的资源消耗,尤其是在处理大规模数据时。

复杂性估计
复制率是评估 MapReduce 性能的重要指标。合理的复制率能够提高数据处理效率,但过高的复制率则可能会导致资源浪费和处理延迟。因此,在设计 MapReduce 作业时,需要仔细考虑复制率的设置。

2. Reduce 规模(Reduce Size)

定义
Reduce 规模通常指的是参与 Reduce 阶段的任务数量和每个任务处理的数据量,决定了整个 MapReduce 作业的并行处理能力。

影响因素

  • 任务数量:增加 Reduce 任务的数量可以提高并行处理能力,降低单个任务的负载。
  • 数据倾斜:如果某些键的值集中,可能导致某些 Reduce 任务的负载过重,从而影响整体性能。
  • 网络传输开销:Reduce 任务接收的数据量越大,其网络传输成本也越高。

复杂性估计
合理的 Reduce 规模设计可以提高作业的执行效率。需要根据输入数据的规模和特性调整 Reduce 任务的数量,以避免数据倾斜和资源浪费。

3. 映射模式(Mapping Patterns)

定义
映射模式指的是在 MapReduce 中数据如何被映射(处理)的方式。不同的映射模式会对复杂性和性能产生不同影响。

常见的映射模式

  • 单一映射模式:每个 Mapper 处理特定的数据分片,适合于简单的处理任务。
  • 分布式映射模式:多个 Mapper 同时处理数据,适用于大规模并行计算,增强了处理能力。
  • 多输入模式:一个 Mapper 可以处理来自多个输入源的数据,适合于需要联合多份数据进行处理的场景。

复杂性估计
映射模式影响时间复杂性和空间复杂性。选择合适的映射模式可以提高数据处理的效率。例如,分布式映射模式通常能获得更好的处理速度,但可能会增加对资源的需求。

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

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

相关文章

蓝桥杯3519 填充 | 分类讨论

题目传送门 很简单&#xff0c;遍历一次字符串&#xff0c;将‘?’作为0或1处理&#xff0c;发现00和11统计次数即可。 s str(input()) cnt 0 arr [00, 11, 0?, ?0, 1?, ?1, ??] i0 while i < len(s)-1:if s[i:(i2)] in arr:i 2cnt 1else:i 1 print(cnt)END✨

嵌入式知识点总结 ARM体系与架构 专题提升(一)-硬件基础

嵌入式知识点总结 ARM体系与架构 专题提升(一)-硬件基础 目录 1.NAND FLASH 和NOR FLASH异同 ? 2.CPU,MPU,MCU,SOC,SOPC联系与差别? 3.什么是交叉编译&#xff1f; 4.为什么要交叉编译&#xff1f; 5.描述一下嵌入式基于ROM的运行方式和基于RAM的运行方式有什么区别? 1…

EchoMimicV2的部署使用

最近有一个录课的需要&#xff0c;我不想浪费人力&#xff0c;只想用技术解决。需求很简单&#xff0c;就是用别人现成的录课视频中的形象和声线&#xff0c;再结合我提供的讲稿去生成一个新的录课视频。我觉得应该有现成的技术了&#xff0c;我想要免费大批量生产。最近看到这…

迅为RK3568开发板篇OpenHarmony实操HDF驱动控制LED-添加内核编译

编译内核时将该 HDF 驱动编译到镜像中&#xff0c;接下来编写驱动编译脚本 Makefile&#xff0c;代码如下所示&#xff1a; 加入编译体系&#xff0c;填加模块目录到 drivers/hdf_core/adapter/khdf/linux/Makefile 文件 更多内容可以关注&#xff1a;迅为RK3568开发板篇OpenHa…

期权帮|在股指期货中超过持仓限额怎么办?

锦鲤三三每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 在股指期货中超过持仓限额怎么办&#xff1f; 一、立即平仓或减仓&#xff1a; &#xff08;1&#xff09;最直接且有效的方法是立即平仓或减仓&#xff0c;以降低持仓量至限额…

Linux 高级路由与流量控制-用 tc qdisc 管理 Linux 网络带宽

大家读完记得觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 此分享内容比较专业&#xff0c;很多与硬件和通讯规则及队列&#xff0c;比较底层需要有技术功底人员深入解读。 Linux 的带宽管理能力 足以媲美许多高端、专用的带宽管理系统。 1 队列&#xff0…

openstack单机安装

openstack单机安装 网卡配置安装依赖开启虚拟环境修改配置文件 部署openstack部署openstack客户端访问可视化界面Horizon补充 本篇主要讲述Ubuntu2204单机安装openstackstable/2024.2。其他版本的Linux系统或者openstack版本&#xff0c;请参考openstack官网。 网卡配置 需要配…

计算机视觉-卷积

卷积-图像去噪 一、图像 二进制 灰度 彩色 1.1二进制图像 0 1 一个点可以用一个bit&#xff08;0/1&#xff09;来表示 1.2灰度图像 0-255 一个点可以用一个byte来表示 1.3彩色图像 RGB 表达一个彩色图像先说它的分辨率p/w&#xff08;宽&#xff09;和q/h&#xff08;高…

贵州端午黔粽探源:贵州味道与黔味文化与糯米的融合?

黔粽的由来? 黔粽的贵州味道?探索贵州“黔味文化”找寻答案! 黔粽的特色由来与贵州味道 贵州粽,简称黔粽。黔粽的主要特色是“酸辣”,以其独特的“酸辣”口味和地域特色,与浙粽、京粽、粤粽、川粽、云粽、闽粽、台湾粽并列为“全国八大粽子派别”之一,并与甜味粽、咸味粽共…

使用python-docx包进行多文件word文字、字符批量替换

1、首先下载pycharm。 2、改为中文。 3、安装python-docx包。 搜索包名字&#xff0c;安装。 4、新建py文件&#xff0c;写程序。 from docx import Documentdef replace1(array1):# 替换词典&#xff08;标签值按实际情况修改&#xff09;dic {替换词1: array1[0], 替换…

Excel 技巧17 - 如何计算倒计时,并添加该倒计时的数据条(★)

本文讲如何计算倒计时&#xff0c;并添加该倒计时的数据条。 1&#xff0c;如何计算倒计时 这里也要用公式 D3 - TODAY() 显示为下面这个样子的 然后右键该单元格&#xff0c;选 设置单元格格式 然后点 常规 这样就能显示出还书倒计时的日数了。 下拉适用到其他单元格。 2&a…

2025.1.21——八、[HarekazeCTF2019]Avatar Uploader 2(未完成) 代码审计|文件上传

题目来源&#xff1a;buuctf [HarekazeCTF2019]Avatar Uploader 2 一、打开靶机&#xff0c;整理信息 跟Avatar Uploader 1 题目长得一样&#xff0c;先上传相同文件看看情况&#xff0c;另外这道题还有源码&#xff0c;可以看看 二、解题思路 step 1&#xff1a;上传同类…

ChatGPT接入苹果全家桶:开启智能新时代

最近&#xff0c;科技界最重磅的消息莫过于ChatGPT正式接入苹果iOS生态系统&#xff01;这意味着苹果用户将能够直接在iPhone、iPad和Mac上体验到这款强大的AI代码生成器带来的便利&#xff0c;开启一个全新的智能时代。这篇文章将深入探讨ChatGPT与苹果生态的整合&#xff0c;…

易语言模拟真人鼠标轨迹算法 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序&#xff0c;它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言&#xff0c;原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势&#xff1a; 模拟…

一部手机如何配置内网电脑同时访问内外网

做过运维的朋友都知道&#xff0c;最麻烦的是运维电脑不能远程&#xff0c;每次都得现场进行维护&#xff0c;明明客户那边有可以访问内网的电脑&#xff0c;怎么操作能将这台电脑能访问跟到外网呢&#xff0c;这样不就能通过远程软件远程了吗&#xff1f;嘿嘿。按以下步骤试试…

直线拟合例子 ,岭回归拟合直线

目录 直线拟合,算出离群点 岭回归拟合直线&#xff1a; 直线拟合,算出离群点 import cv2 import numpy as np# 输入的点 points np.array([[51, 149],[122, 374],[225, 376],[340, 382],[463, 391],[535, 298],[596, 400],[689, 406],[821, 407] ], dtypenp.float32)# 使用…

ansible自动化运维实战--script、unarchive和shell模块(6)

文章目录 一、script模块1.1、功能1.2、常用参数1.3、举例 二、unarchive模块2.1、功能2.2、常用参数2.3、举例 三、shell模块3.1、功能3.2、常用参数3.3、举例 一、script模块 1.1、功能 Ansible 的 script 模块允许你在远程主机上运行本地的脚本文件&#xff0c;其提供了一…

【落羽的落羽 数据结构篇】算法复杂度

文章目录 一、数据结构和算法简介二、算法复杂度1. 时间复杂度2. 空间复杂度 一、数据结构和算法简介 数据结构是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的数据元素的集合。没有一种单一的数据结构对所有用途都有用&#xff0c;所以我们要学…

ubuntu16.04 VSCode下cmake+clang+lldb调试c++

VSCode下cmakeclanglldb调试c Ubuntu16.04 安装OpenCV4.5.4 文章目录 VSCode下cmakeclanglldb调试c1.安装clangclangdcmake2、打开VSCode&#xff0c;安装扩展插件3、编译4、Debug4.1 创建launch.json。4.2 配置setting.json 5. vscode安装配置clang-format插件5.1 Linux系统安…

第十五届蓝桥杯大赛软件赛省赛Java 大学 B 组(1、2题)

1.报数游戏 问题描述 小蓝和朋友们在玩一个报数游戏。由于今年是 2024 年&#xff0c;他们决定要从小到大轮流报出是 20或 24 倍数的正整数。前 10 个被报出的数是&#xff1a;20,24,40,48,60,72,80,96,100,120。请问第 202420242024个被报出的数是多少? 答案提交 这是一道结果…