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

华为OD机试真题---服务器广播

华为OD机试中的“服务器广播”题目是一个经典的算法问题,通常涉及图论和连通分量的概念。以下是对该题目的详细解析:

一、题目描述

服务器之间可以通过网络进行连接,连接方式包括直接相连和间接连接。给出一个N×N的数组(矩阵),代表N个服务器,matrix[i][j] == 1表示服务器i和服务器j直接连接,matrix[i][j] != 1表示服务器i和服务器j不直接连接。matrix[i][i] == 1,即服务器自己和自己直接连接。matrix[i][j] == matrix[j][i],即连接关系是对称的。

现在要求计算,最少需要向几台服务器发送广播,才能确保所有服务器都能接收到广播。广播可以在直接连接或间接连接的服务器之间传播。

二、输入描述

输入为N行,每行有N个数字,为0或1,由空格分隔,构成N*N的数组,N的范围为 1<=N<=50。

三、输出描述

输出一个数字,为需要广播的服务器数量。

示例 1
输入:
3
1 1 0
1 1 1
0 1 1
输出:
1

解释:在这个例子中,服务器0和服务器1直接连接,服务器1和服务器2直接连接,因此服务器0和服务器2间接连接。只需要向其中任意一台服务器发送广播,其他服务器都能接收到。

示例 2
输入
3
1 0 0
0 1 0
0 0 1
输出
3

说明:3台服务器互不连接,所以需要分别广播这3台服务器。

示例 3
输入
2
1 1
1 1
输出
1

说明: 2台服务器相互连接,所以只需要广播其中一台服务器。

四、解题思路

  1. 图论建模:将服务器之间的连接关系看作一个图,服务器是图的节点,连接关系是图的边。问题转化为求图中的连通分量个数。
  2. 遍历连通分量:使用深度优先搜索(DFS)或广度优先搜索(BFS)遍历图,找到所有的连通分量。
  3. 计算广播服务器数量:连通分量的个数即为需要广播的服务器数量。因为每个连通分量中的服务器都可以通过广播相互传播信息,所以只需要在每个连通分量中选择一个服务器进行广播即可。
  4. 并查集:可以使用并查集实现,并查集(Union-Find)是一种用于处理一些不交集的合并及查询问题的数据结构,它可以高效地解决连通性问题。在“服务器广播”问题中,我们可以使用并查集来找出所有的连通分量,从而确定需要广播的最少服务器数量。

五、代码实现(DFS)

import java.util.Scanner;public class ServerBroadcast {/*** 使用深度优先搜索(DFS)遍历图中的节点* 该方法主要用于找出图中所有相互连通的节点* * @param matrix 代表图的邻接矩阵,matrix[i][j]为1表示节点i和节点j之间有直接连接,为0表示无直接连接* @param visited 一个布尔数组,用于记录图中各节点的访问状态,visited[i]为true表示节点i已被访问* @param node 当前访问的节点编号,从该节点开始进行深度优先搜索*/private static void dfs(int[][] matrix, boolean[] visited, int node) {// 标记当前节点为已访问visited[node] = true;// 遍历图中所有节点for (int i = 0; i < matrix.length; i++) {// 检查当前节点与节点i是否有连接,且节点i未被访问过if (matrix[node][i] == 1 && !visited[i]) {// 递归调用dfs方法,继续深度优先搜索节点idfs(matrix, visited, i);}}}/*** 该方法通过深度优先搜索(DFS)来计算在给定的矩阵中需要广播的服务器数量* 每个服务器可以与其直接相连的服务器共享广播,因此形成一个连通分量* 该方法旨在找出有多少个这样的连通分量,每个连通分量只需一个服务器进行广播** @param matrix 一个二维数组,表示服务器之间的连接关系矩阵*               matrix[i][j] == 1 表示服务器i和服务器j之间有直接连接,否则没有* @return 广播服务器的数量,即矩阵中连通分量的数量*/public static int countBroadcastServers(int[][] matrix) {// 矩阵的长度,即服务器的数量int n = matrix.length;// 一个布尔数组,用于标记服务器是否已经被访问过boolean[] visited = new boolean[n];// 初始化广播服务器的数量为0int broadcastCount = 0;// 遍历每个服务器for (int i = 0; i < n; i++) {// 如果当前服务器尚未被访问过if (!visited[i]) {// 从当前服务器开始进行深度优先搜索,并将搜索过程中访问到的所有服务器标记为已访问dfs(matrix, visited, i);// 每完成一次深度优先搜索,表示找到了一个新的连通分量,广播服务器数量加1broadcastCount++;}}// 返回广播服务器的数量return broadcastCount;}/*** 主函数入口* 该函数读取输入的服务器数量及它们之间的连接情况,计算并输出需要广播的服务器最小数量* @param args 命令行参数*/public static void main(String[] args) {// 创建Scanner对象以读取输入数据Scanner scanner = new Scanner(System.in);// 读取服务器数量int n = scanner.nextInt();// 消耗换行符scanner.nextLine();// 初始化矩阵int[][] matrix = new int[n][n];// 读取矩阵数据for (int i = 0; i < n; i++) {// 分割输入行以获取矩阵每一行的数据String[] line = scanner.nextLine().split(" ");for (int j = 0; j < n; j++) {// 将字符串数据转换为整数并填充到矩阵中matrix[i][j] = Integer.parseInt(line[j]);}}// 计算并输出需要广播的服务器数量int result = countBroadcastServers(matrix);System.out.println(result);// 关闭Scanner对象scanner.close();}
}
代码解释:
  1. DFS方法dfs方法接受一个二维数组(矩阵)matrix、一个布尔数组visited(用于记录节点是否被访问过)和一个当前节点node作为参数。它递归地访问所有与当前节点直接相连的未访问节点。

  2. 计算广播服务器数量的方法countBroadcastServers方法接受一个二维数组(矩阵)matrix作为参数,并返回需要广播的服务器数量。它使用一个布尔数组visited来跟踪哪些服务器已经被访问过,并初始化广播计数器broadcastCount为0。然后,它遍历所有服务器节点,对每个未访问的节点调用dfs方法,并将广播计数器增加1。

  3. 主方法main方法读取用户输入,包括服务器数量和矩阵数据,然后调用countBroadcastServers方法计算需要广播的服务器数量,并输出结果。

六、代码实现(并查集)

import java.util.Scanner;public class ServerBroadcastUnionFind {// 并查集类static class UnionFind {private int[] parent;// 初始化并查集public UnionFind(int n) {parent = new int[n];for (int i = 0; i < n; i++) {parent[i] = i; // 初始化时,每个节点都是独立的集合,父节点指向自己}}// 查找根节点(路径压缩)public int find(int x) {if (parent[x] != x) {parent[x] = find(parent[x]); // 路径压缩,直接连接到根节点}return parent[x];}// 合并两个集合public void union(int x, int y) {int rootX = find(x);int rootY = find(y);if (rootX != rootY) {parent[rootX] = rootY; // 将一个集合的根节点指向另一个集合的根节点,从而合并两个集合}}// 获取连通分量的数量public int countComponents() {int count = 0;for (int i = 0; i < parent.length; i++) {if (find(i) == i) { // 如果节点自己是根节点,说明是一个新的连通分量count++;}}return count;}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取服务器数量int n = scanner.nextInt();scanner.nextLine(); // 消耗换行符// 初始化并查集UnionFind uf = new UnionFind(n);// 读取矩阵数据并合并集合for (int i = 0; i < n; i++) {String[] line = scanner.nextLine().split(" ");for (int j = 0; j < n; j++) {if (i != j && Integer.parseInt(line[j]) == 1) { // 注意i != j,避免将节点与自己合并uf.union(i, j);}}}// 计算并输出需要广播的服务器数量(即连通分量的数量)int result = uf.countComponents();System.out.println(result);scanner.close();}
}
代码解释:
  1. 并查集类UnionFind类实现了并查集的基本功能,包括初始化、查找根节点、合并集合和计算连通分量的数量。

  2. 初始化并查集:在main方法中,我们首先读取服务器数量n,然后创建一个大小为n的并查集。

  3. 读取矩阵数据并合并集合:我们遍历矩阵,对于每个matrix[i][j] == 1i != j的情况,调用union方法将服务器i和服务器j所属的集合合并。

  4. 计算并输出需要广播的服务器数量:最后,我们调用countComponents方法计算连通分量的数量,并输出结果。这个数量就是需要广播的最少服务器数量。

七、运行示例解析

以下是对ServerBroadcast类及其main方法的详细运行示例解析步骤:

1. 初始化
  • 服务器数量:首先,程序通过Scanner读取服务器数量n,这里是3
  • 矩阵初始化:然后,程序初始化一个n x n的矩阵matrix,用于表示服务器之间的连接关系。
2. 输入矩阵数据
  • 用户输入矩阵的每一行数据,这里输入的是:
    1 0 0
    0 1 0
    0 0 1
    
  • 程序将这些数据解析为整数,并填充到matrix中。填充后的矩阵表示如下:
    matrix[0][0] = 1, matrix[0][1] = 0, matrix[0][2] = 0
    matrix[1][0] = 0, matrix[1][1] = 1, matrix[1][2] = 0
    matrix[2][0] = 0, matrix[2][1] = 0, matrix[2][2] = 1
    
3. 深度优先搜索(DFS)准备
  • 创建一个布尔数组visited,长度为n,用于记录每个服务器是否已被访问。初始时,所有服务器都未被访问,因此visited数组的所有元素都设置为false
4. 执行DFS并计算连通分量
  • 程序遍历每个服务器(即遍历matrix的每一行和每一列),并对每个未访问的服务器执行DFS。
  • 对于第一个服务器(索引为0),由于它未被访问,程序从它开始进行DFS:
    • 标记服务器0为已访问。
    • 检查服务器0与所有其他服务器的连接关系:
      • 服务器0与服务器1无连接(matrix[0][1] = 0),因此不继续搜索。
      • 服务器0与服务器2无连接(matrix[0][2] = 0),因此不继续搜索。
    • 由于没有进一步的连接,DFS结束,但找到了一个新的连通分量(只包含服务器0)。
  • 接下来,程序检查服务器1(索引为1),它也未被访问:
    • 标记服务器1为已访问。
    • 检查服务器1与所有其他服务器的连接关系:
      • 服务器1与服务器0无连接(因为0已被访问过,所以这里实际上不会继续搜索,但逻辑上它们无直接连接)。
      • 服务器1与服务器2无连接(matrix[1][2] = 0),因此不继续搜索。
    • 同样,DFS结束,找到了另一个新的连通分量(只包含服务器1)。
  • 最后,程序检查服务器2(索引为2),它同样未被访问:
    • 标记服务器2为已访问。
    • 检查服务器2与所有其他服务器的连接关系,但发现都没有直接连接(或者已经被访问过)。
    • DFS结束,找到了最后一个新的连通分量(只包含服务器2)。
5. 计算结果
  • 每次DFS完成后,连通分量的数量(即需要广播的服务器数量)增加1
  • 在这个例子中,有三个独立的连通分量(每个服务器各自为一个分量),因此broadcastCount最终为3
6. 输出结果
  • 程序输出需要广播的服务器数量,这里是3
总结

对于输入的矩阵:

1 0 0
0 1 0
0 0 1

每个服务器都各自独立,没有服务器之间是直接连通的。因此,需要三个服务器来进行广播,以确保所有服务器都能接收到信息。

八、注意事项

  1. 输入验证:在实际应用中,需要对输入进行验证,确保输入的矩阵是合法的N×N矩阵,且元素是0或1。
  2. 性能优化:对于大规模的输入,可以考虑使用更高效的数据结构和算法来优化性能。例如,可以使用邻接表来表示图,以减少空间复杂度。
  3. 边界情况:需要注意处理边界情况,例如当N为1时,只需要向唯一的一台服务器发送广播即可。

综上所述,华为OD机试中的“服务器广播”题目是一个典型的图论问题,可以通过遍历连通分量来解决。掌握深度优先搜索或广度优先搜索等图论算法是解决这类问题的关键。

相关文章:

华为OD机试真题---服务器广播

华为OD机试中的“服务器广播”题目是一个经典的算法问题&#xff0c;通常涉及图论和连通分量的概念。以下是对该题目的详细解析&#xff1a; 一、题目描述 服务器之间可以通过网络进行连接&#xff0c;连接方式包括直接相连和间接连接。给出一个NN的数组&#xff08;矩阵&…...

又一年。。。。。。

2024&#xff0c;浑浑噩噩的一年。 除了100以内的加减法&#xff08;数据&#xff0c;数据&#xff0c;还是数据。。。。。。&#xff09;&#xff0c;似乎没做些什么。 脸盲症越来越重的&#xff0c;怕是哪天连自己都不认得自己的了。 看到什么&#xff0c;听到什…...

【JAVA高级篇教学】第六篇:Springboot实现WebSocket

在 Spring Boot 中对接 WebSocket 是一个常见的场景&#xff0c;通常用于实现实时通信。以下是一个完整的 WebSocket 集成步骤&#xff0c;包括服务端和客户端的实现。本期做个简单的测试用例。 目录 一、WebSocket 简介 1. 什么是 WebSocket&#xff1f; 2. WebSocket 的特…...

Kotlin在医疗大健康域的应用实例探究与编程剖析(下)

四、Kotlin医疗编程实例分析 4.1 移动医疗应用实例 4.1.1 患者健康监测应用 在当今数字化医疗时代,患者健康监测应用为人们提供了便捷的健康管理方式。利用Kotlin开发的患者健康监测应用,能够实时采集患者的各类生理数据,如心率、血压、血氧饱和度等,并通过直观的可视化…...

Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(3):配置备用数据库

Oracle Dataguard&#xff08;主库为 Oracle 11g 单节点&#xff09;配置详解&#xff08;3&#xff09;&#xff1a;配置备用数据库 目录 Oracle Dataguard&#xff08;主库为 Oracle 11g 单节点&#xff09;配置详解&#xff08;3&#xff09;&#xff1a;配置备用数据库一、…...

LeetCode算法题——移除元素

题目描述 给你一个数组 nums 和一个值 val&#xff0c;你需要原地移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k&#xff0c;要通过此题&#xff0c;您需要执行以下操作&#xff1…...

七大设计原则之开闭原则

目录 一、什么是开闭原则&#xff1f; 二、如何做到开闭原则&#xff1f; 1、面向接口或抽象类编程 2、依赖注入 3、单一职责原则 三、是不是为了满足开闭原则就要一味的追求代码的扩展性&#xff1f; 一、什么是开闭原则&#xff1f; 相信很多人都听说过这个原则&#x…...

【stm32+K210项目】基于K210与STM32协同工作的智能垃圾分类系统设计与实现(完整工程资料源码)

视频效果演示&#xff1a; 基于K210与STM32协同工作的智能垃圾分类系统设计与实现 目录&#xff1a; 目录 视频效果演示&#xff1a; 目录&#xff1a; 项目简介&#xff1a; 一、设计目的&#xff1a; 1.1 项目背景 1.2 设计意义&#xff1a; 二、硬件部分&#xff1a; 2.1 st…...

Ps:创建数据驱动的图像

在设计实践中&#xff0c;常常需要处理大量内容变化但设计格式统一的任务&#xff0c;例如批量生成名片、工作证、学生证、胸牌、奖状或证书甚至图册。这些工作如果逐一手动制作&#xff0c;不仅耗时费力&#xff0c;还容易出错。 为解决这一问题&#xff0c;Photoshop 提供了强…...

git的全通路线介绍

一、关系 1.git是代码版本管理工具&#xff0c;即可将项目切换到任意版本。 2.github与gitee是基于git技术构建的远程仓库网站。github是国外建立的&#xff0c;资源更丰富&#xff1b;gitee是国内建立的&#xff0c;免费功能更多。 3.gitlab与github类似&#xff0c;只不过…...

R1-3学习打卡

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 RNN心脏病识别 导入数据数据预处理标准化模型训练模型评估个人总结 import tensorflow as tfgpus tf.config.list_physical_devices("GPU")…...

Vue.js组件开发-实现无感刷新Token

在Vue.js应用中&#xff0c;实现无感刷新Token涉及到在用户的会话Token即将过期或已经过期时自动获取新的Token&#xff0c;而不影响用户的操作体验。需要通过拦截器&#xff08;interceptors&#xff09;来处理API请求&#xff0c;并在检测到Token过期或无效时自动进行刷新。 …...

可编辑31页PPT | 大数据湖仓一体解决方案

荐言分享&#xff1a;在当今数字化时代&#xff0c;大数据已成为企业决策和业务优化的关键驱动力。然而&#xff0c;传统的数据处理架构&#xff0c;如数据仓库和数据湖&#xff0c;各自存在局限性&#xff0c;难以满足企业对数据高效存储、灵活处理及实时分析的综合需求。因此…...

如何实现一个充满科技感的官网(二)

背景 在上一篇文章 《如何实现一个充满科技感的官网&#xff08;一&#xff09;》 中&#xff0c;我们初步了解了该官网的整体设计&#xff0c;并与大家探讨了它的视觉呈现和用户体验。 我们前期的内部设计偏向简洁&#xff0c;所以开始思考如何提升网站的整体设计感。这些尝…...

深度学习算法:从基础到实践

简介 深度学习作为人工智能领域的一个重要分支&#xff0c;近年来在多个领域取得了显著的成就。本文将从基础概念出发&#xff0c;探讨深度学习算法的核心原理&#xff0c;并介绍一些实际应用案例。 深度学习算法的核心概念 深度学习算法基于人工神经网络&#xff0c;通过构…...

等价和划分

例子&#xff1a;学生分组 假设我们有一个班级&#xff0c;班级里有10名学生&#xff0c;我们想要根据他们的年龄来分组。我们可以定义一个关系 ( R ) 在学生集合 ( A ) 上&#xff0c;其中 ( A {s_1, s_2, …, s_{10}} )&#xff0c;并且 ( s_i ) 和 ( s_j ) 之间有关系 ( R…...

电商项目-数据同步解决方案(三)商品上架同步更新ES索引库

一、 需求分析和业务逻辑 主要应用技术有&#xff1a;Feign远程调用&#xff0c; 消息队列-RabbitMQ &#xff0c;分布式搜索引擎-ElasticSearch&#xff0c;Eureka&#xff0c;Canal 商品上架将商品的sku列表导入或者更新索引库。 数据监控微服务需要定义canal监听器&#x…...

MySQL数据库笔记——多版本并发控制MVCC

大家好&#xff0c;这里是Good Note&#xff0c;关注 公主号&#xff1a;Goodnote&#xff0c;本文详细介绍MySQL的并发控制&#xff1a;多版本并发控制MVCC。 文章目录 背景介绍数据库并发控制——锁机制悲观锁和乐观锁悲观锁乐观锁 数据库并发控制——MVCC 的引入MVCC 和锁机…...

【LLM综述】29种大模型Prompt Engineering技术

note 从零样本&#xff08;Zero-shot&#xff09;提示到最新进展的各种提示技术&#xff0c;包括推理和逻辑链&#xff08;Chain-of-Thought, CoT&#xff09;提示、自动链式思考&#xff08;Auto-CoT&#xff09;提示、自我一致性&#xff08;Self-Consistency&#xff09;提…...

MySQL高级关联查询与复杂关系的处理

在关系型数据库的操作中,复杂关联查询和多层次关系建模是非常重要的技能。无论是在数据分析、业务数据处理,还是在数据可视化等各个方面,处理多表数据关联都是不可或缺的部分。通过高效的关联查询,可以在不同表之间建立关系,查询并整合多张表的数据,避免数据冗余并提升查…...

URL Moniker API

1. urlmon 介绍 urlmon 是指 URL Moniker API&#xff0c;它是 Microsoft Windows 操作系统中的一部分&#xff0c;通常用于处理 URL 和相关的任务。urlmon.dll 是其动态链接库&#xff0c;提供了一系列函数和接口&#xff0c;主要用于以下目的&#xff1a; URL 分析和处理&a…...

单元测试3.0+ @RunWith(JMockit.class)+mock+Expectations

Jmockit使用笔记_基本功能使用Tested_Injectable_Mocked_Expectations_jmockit.class-CSDN博客 测试框架Jmockit集合junit使用 RunWith(JMockit.class) 写在测试案例类上的注解 Tested 在测试案例中,写在我们要测试的类上面, 一般用实现类 Injectable 在测试案例中声明…...

halcon中图像滤波分为空间域和频域两种方法

均值滤波是一种线性平滑滤波。基本思想是用某像素邻域几个像素的平均值代替此像素原来的灰度值。 高斯滤波是用某像素邻域几个像素的加权平均值代替此像素的原有灰度值。 总结&#xff1a;图像滤波分为空间域和频域两种方法。 空间域滤波主要是对像素的直接处理&#xff0c;它将…...

maxminddb地理信息库–C语言

原文地址&#xff1a;maxminddb地理信息库–C语言 – 无敌牛 欢迎参观我的个人博客&#xff1a;无敌牛 – 技术/著作/典籍/分享等 maxminddb 是一个 IP 的地理信息库&#xff0c;可以根据 IP 地址给出对应的地理位置信息。 下载离线库 maxminddb提供在线查询&#xff0c;也…...

Keil中的gcc

文章目录 一、IDE背后的命令1.1 IDE是什么1.2 IDE的背后是命令1.3 有两套主要的编译器 二、准备工作2.1 arm-linux-gcc和gcc是类似的2.2 Code::Blocks2.2.1 设置windows环境变量2.2.2 命令行示例 三、gcc编译过程详解3.1 程序编译4步骤3.2 gcc的使用方法3.2.1 gcc使用示例3.2.2…...

【Java数据结构】栈和队列相关算法

第一题&#xff1a;改变元素的序列 例1&#xff1a;若进栈序列为1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;进栈过程中可以出栈&#xff0c;则下列不可能一个出栈序列&#xff08;&#xff09;&#xff1b; A&#xff1a;1&#xff0c;4&#xff0c;3&#xff0c…...

LoRA微调系列笔记

系列文章目录 第一章&#xff1a;LoRA微调系列笔记 第二章&#xff1a;Llama系列关键知识总结 第三章&#xff1a;LLaVA模型讲解与总结 文章目录 系列文章目录LoRA&#xff1a;Low-Rank Adaptation of Large Language Models目的&#xff1a;依据&#xff1a;优势&#xff1a;…...

Linux(Ubuntu)下ESP-IDF下载与安装完整流程(3)

接前一篇文章:Linux(Ubuntu)下ESP-IDF下载与安装完整流程(2) 本文主要看参考官网说明,如下: 快速入门 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 Linux 和 macOS 平台工具链的标准设置 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 一、安装准备 1. Linux用...

【C++】22___STL常用算法

目录 一、常用遍历算法 二、常用查找算法 2.1 find 2.2 其它查找算法 三、常用排序算法 3.1 sort 3.2 其它排序算法 四、拷贝 & 替换 4.1 copy 4.2 其它算法 五、常用的算数生成算法 5.1 accumulate 5.2 fill 六、常用集合算法 6.1 set_intersection 6…...

linux 批量替换文件指定字符串

启发&#xff1a;数据库连接串的用户名需要从sa修改为sasa find . -type f -name mssql.json -exec sed -i s/IDsa;/IDsasa;/g {}...

List接口(源码阅读)

文章目录 1.List接口常用方法1.代码2.结果 2.ArrayList底层机制1.结论2.ArrayList底层源码1.代码2.debug添加第一个元素1.进入2.elementData数组存储ArrayList的数据3.初始化为空数组4.首先确保使用size1来计算最小容量5.如果elementData为空&#xff0c;最小容量就是106.modCo…...

股市学习 seekingalpha tradingview

EMA EMA&#xff08;Exponential Moving Average&#xff09;是一种技术分析中常用的指标&#xff0c;用于平滑股价或其他资产价格的波动&#xff0c;以帮助分析价格走势的趋势和方向。EMA与简单移动平均&#xff08;SMA&#xff09;类似&#xff0c;但对最新价格的权重更大&a…...

用再生龙备份和还原操作系统(三)

续上篇《用再生龙备份和还原操作系统&#xff08;二&#xff09;》 三&#xff0c;用再生龙将镜像文件还原到硬盘 将再生龙工具盘、待还原系统的硬盘&#xff08;与源盘一样大或更大&#xff09;、镜像文件所在磁盘&#xff08;如果是U盘&#xff0c;也可以后插&#xff09;安…...

FaceFusion 从0开始本地部署,RTX4060

FaceFusion 从0开始本地部署指南 一、环境准备 1. 基础工具安装 1.1 Git 安装 使用管理员权限打开 PowerShell执行安装命令&#xff1a; winget install -e --id Git.Git验证安装&#xff1a; git --version1.2 FFmpeg 安装 使用管理员权限打开 PowerShell执行安装命令&…...

Swift Combine 学习(六):自定义 Publisher 和 Subscriber

Swift Combine 学习&#xff08;一&#xff09;&#xff1a;Combine 初印象Swift Combine 学习&#xff08;二&#xff09;&#xff1a;发布者 PublisherSwift Combine 学习&#xff08;三&#xff09;&#xff1a;Subscription和 SubscriberSwift Combine 学习&#xff08;四&…...

服务器网卡绑定mode和交换机的对应关系

互联网各领域资料分享专区(不定期更新)&#xff1a; Sheet 模式类别 网卡绑定mode共有七种(0~6): bond0、bond1、bond2、bond3、bond4、bond5、bond6 mode详解 mode0 &#xff0c;即:(balance-rr) Round-robin policy(平衡轮循环策略&#xff0c;需要配置交换机静态聚合) mode…...

【动手学轨迹预测】2.4 考虑地图拓扑关系的表征方法

上一节我们介绍了VectorNet提出了矢量化场景表征方法, 大幅提高了预测网络编码性能. 但是VectorNet对地图数据的编码是基于无向无权图的, 并没有考虑到地图的拓扑关系. 显然在预测中, 地图的拓扑关系应该被考虑到. 于是在VectorNet的基础上, LaneGCN提出一种将地图车道作为节点…...

ChatGLM3模型搭建(踩坑记录版)

参考 魔搭社区 https://zhuanlan.zhihu.com/p/720148240 智谱AI通用大模型&#xff1a;本地部署ChatGLM3-6B开源大模型 - 编程库 说明 搭建方式多篇文章结合着看&#xff1b; 模型下载强烈推荐魔塔社区下载ZhipuAI/chatglm3-6b&#xff1b; 官方github指定清华的模型没有…...

基于 Python Django 的花卉商城系统的研究与实现

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

Spring Boot 3 文件下载、多文件下载以及大文件分片下载、文件流处理、批量操作 和 分片技术

在 Spring Boot 3 中&#xff0c;实现文件下载、多文件下载以及大文件分片下载需要结合以下功能&#xff1a;文件流处理、批量操作 和 分片技术。以下是详细实现方案&#xff1a; 1. 单文件下载 基础的单文件下载实现&#xff0c;可以参考以下代码&#xff1a; GetMapping(&…...

什么是事件循环(Event Loop)?请谈谈它在 JavaScript 中的作用?

事件循环&#xff08;Event Loop&#xff09;是什么&#xff1f; 事件循环&#xff08;Event Loop&#xff09;是JavaScript运行时环境&#xff08;如浏览器或Node.js&#xff09;中的一个核心机制&#xff0c;用于处理异步操作和事件。 它负责协调代码的执行、事件的处理、以…...

Lua : Coroutine(协程)

Lua 协程&#xff08;coroutines&#xff09;是一种强大的控制结构&#xff0c;允许函数在执行过程中暂停并在稍后恢复。与线程不同&#xff0c;协程是非抢占式的&#xff0c;这意味着它们不会被操作系统调度&#xff0c;而是由程序显式地切换。协程在 Lua 中非常有用&#xff…...

【2024华为OD-E卷-200分-跳格子2】(题目+思路+JavaC++Python解析)

题目描述 在一个二维平面上&#xff0c;有一个 n x m 的网格&#xff0c;每个格子有一个非负整数。你从左上角 (0, 0) 开始&#xff0c;每次只能向右或向下移动&#xff0c;目标是到达右下角 (n-1, m-1)。 在移动过程中&#xff0c;你需要记录经过的格子中&#xff0c;最大数…...

【仓颉语言基础】语言概念、环境配置与语法解析

华为仓颉语言是一门专为分布式系统设计的现代编程语言&#xff0c;以简洁的语法和强大的分布式能力为核心&#xff0c;提供高效的资源管理和任务调度方案。本篇文章将带您从概念入手&#xff0c;逐步掌握环境配置与语法基础&#xff0c;为分布式开发奠定坚实基础。 文章目录 一…...

LeetCode - 初级算法 数组(删除排序数组中的重复项)

免责声明:本文来源于个人知识与公开资料,仅用于学术交流。 删除排序数组中的重复项 这篇文章讨论如何从一个非严格递增的数组 nums 中删除重复的元素,使每个元素只出现一次,并返回新数组的长度。因为数组是排序的,只要是相同的肯定是挨着的,所以我们需要遍历所有数组,然…...

SpringMVC进阶(自定义拦截器以及异常处理)

文章目录 1.自定义拦截器 1.基本介绍 1.说明2.自定义拦截器的三个方法3.流程图 2.快速入门 1.Myinterceptor01.java2.FurnHandler.java3.springDispatcherServlet-servlet.xml配置拦截器4.单元测试 3.拦截特定路径 1.拦截指定路径2.通配符配置路径 4.细节说明5.多个拦截器 1.执…...

2 秒杀系统架构

第一步 思考面临的问题和业务场景 秒杀系统面临的问题: 短时间内并发非常高&#xff0c;如果按照秒杀的并发做相应的承载会造成大量资源的浪费。第二解决超卖的问题。 第二步 思考目前的处境和解决方案 因为秒杀系统属于短时间内的高并发问题&#xff0c;我们不可能使用那么…...

C++如何遍历数组vector

在C中&#xff0c;vector是一个可变数组。那么怎么遍历它呢&#xff1f;我们以for循环为例&#xff08;while循环&#xff0c;大家自己脑补&#xff09;。 方法一&#xff1a; 基于范围的for循环&#xff0c;这是C11新引入的。 std::vector<int> v {1, 2, 3, 4, 5, 6…...

ubuntu非root用户操作root权限问题-virbox挂在共享文件夹

首先讲一下&#xff0c;virtuallbox 挂在文件夹&#xff0c;操作的时候总是需要root权限&#xff0c;比较费劲。 这一操作其实也正对着我们在Ubuntu上的操作。 前段时间我想在ubuntu正常用户下去操作i2c&#xff0c;也出现了类似的问题。 后来把正常的操作加到组里面也解决了类…...

大模型推理:vllm多机多卡分布式本地部署

文章目录 1、vLLM分布式部署 docker镜像构建通信环境配置 2、其他大模型部署工具3、问题记录参考文献 单台机器GPU资源不足以执行推理任务时&#xff0c;一个方法是模型蒸馏量化&#xff0c;结果就是会牺牲些效果。另一种方式是采用多台机器多个GPU进行推理&#xff0c;资源不…...