【华为笔试题汇总】2024-04-10-华为春招笔试题-三语言题解(Python/Java/Cpp)

🍭 大家好这里是KK爱Coding ,一枚热爱算法的程序员

✨ 本系列打算持续跟新华为近期的春秋招笔试题汇总~

💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导

👏 感谢大家的订阅➕ 和 喜欢💗

📧 KK这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下 KK领取,会在飞书进行同步的跟新。

文章目录

    • 🍍01.LYA 的云服务计费系统
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 🍎 02.LYA 的图片分类算法
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 🍌 03.网络入侵检测
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 写在最后
    • 📧 KK这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下 KK领取,会在飞书进行同步的跟新。

🍍01.LYA 的云服务计费系统

问题描述

LYA 是一家云服务提供商,她需要为客户提供云服务计费功能。现在,她有一份包含多条计费日志的文件,每条日志包含时间戳、客户标识、计费因子和计费时长四个字段。此外,她还有一份计费因子的单价列表。

LYA 需要编写一个程序,根据计费日志和计费因子单价列表,计算每个客户的话单总费用。需要注意的是,如果同一客户在相同时间戳上报了多条相同计费因子的日志,只能计费一次,并且选择先上报的日志进行计费。

输入格式

第一行包含一个正整数 n n n,表示计费日志的条数, 1 ≤ n ≤ 1000 1 \leq n \leq 1000 1n1000

接下来的 n n n 行,每行包含四个字段,分别表示时间戳(长度为 10 10 10 的数字字符串)、客户标识(长度为 1 ∼ 16 1 \sim 16 116 的字符串)、计费因子(长度为 1 ∼ 16 1 \sim 16 116 的字符串)和计费时长(范围为 0 ∼ 100 0 \sim 100 0100 的整数),字段之间用逗号分隔。如果计费因子在单价列表中查不到,则认为其单价为 0 0 0;如果计费时长不在 0 ∼ 100 0 \sim 100 0100 的范围内,则认为计费时长为 0 0 0

接下来一行包含一个正整数 m m m,表示计费因子的数量, 1 ≤ m ≤ 100 1 \leq m \leq 100 1m100

最后的 m m m 行,每行包含两个字段,分别表示计费因子(长度为 1 ∼ 16 1 \sim 16 116 的字符串)和单价(范围为 1 ∼ 100 1 \sim 100 1100 的整数),字段之间用逗号分隔。

输出格式

输出每个客户的话单总费用,每行包含两个字段,分别表示客户标识和话单费用,字段之间用逗号分隔。输出按照客户标识的字典序升序排列。

样例输入

5
1627845600,client1,factorA,10
1627845605,client2,factorB,15
1627845610,client1,factorA,5
1627845615,client1,factorB,10
1627845620,client2,factorB,20
2
factorA,5
factorB,7

样例输出

client1,131
client2,245

数据范围

  • 1 ≤ n ≤ 1000 1 \leq n \leq 1000 1n1000
  • 1 ≤ m ≤ 100 1 \leq m \leq 100 1m100
  • 时间戳是长度为 10 10 10 的数字字符串
  • 客户标识和计费因子是长度为 1 ∼ 16 1 \sim 16 116 的字符串
  • 计费时长的范围为 0 ∼ 100 0 \sim 100 0100
  • 计费因子的单价范围为 1 ∼ 100 1 \sim 100 1100

题解

本题可以使用哈希表来解决。

首先,可以使用一个哈希表 fac 来存储计费因子和对应的单价。

然后,遍历计费日志,对于每条日志,可以提取出时间戳、客户标识、计费因子和计费时长。如果同一客户在相同时间戳上报了多条相同计费因子的日志,只计费一次,并且选择先上报的日志进行计费。为了实现这个功能,可以使用一个哈希集合 ss 来记录已经处理过的日志。

接下来,可以使用另一个哈希表 val 来存储每个客户的话单费用。对于每条有效的日志,可以根据计费因子在 fac 中查找对应的单价,然后将单价乘以计费时长,累加到对应客户的话单费用中。

最后,将 val 中的数据转换为列表,按照客户标识进行字典序排序,然后输出每个客户的话单费用即可。

时间复杂度为 O ( n log ⁡ n ) O(n \log n) O(nlogn),空间复杂度为 O ( n ) O(n) O(n)

参考代码

  • Python
n = int(input())
logs = []
seen = set()
for _ in range(n):
    ts, cid, fac, dur = input().split(',')
    key = ts + cid + fac
    if key not in seen:
        logs.append((ts, cid, fac, int(dur)))
        seen.add(key)

prices = {}
m = int(input())
for _ in range(m):
    fac, price = input().split(',')
    prices[fac] = int(price)

bills = {}
for ts, cid, fac, dur in logs:
    if cid not in bills:
        bills[cid] = 0
    if dur < 0 or dur > 100:
        dur = 0
    bills[cid] += prices.get(fac, 0) * dur

ans = sorted(bills.items())
for cid, bill in ans:
    print(f'{cid},{bill}')
  • Java
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.nextLine();
        
        List<String[]> logs = new ArrayList<>();
        Set<String> seen = new HashSet<>();
        for (int i = 0; i < n; i++) {
            String[] log = sc.nextLine().split(",");
            String key = log[0] + log[1] + log[2];
            if (!seen.contains(key)) {
                logs.add(log);
                seen.add(key);
            }
        }
        
        int m = sc.nextInt();
        sc.nextLine();
        Map<String, Integer> prices = new HashMap<>();
        for (int i = 0; i < m; i++) {
            String[] price = sc.nextLine().split(",");
            prices.put(price[0], Integer.parseInt(price[1]));
        }
        
        Map<String, Integer> bills = new HashMap<>();
        for (String[] log : logs) {
            String cid = log[1];
            String fac = log[2];
            int dur = Integer.parseInt(log[3]);
            if (dur < 0 || dur > 100) {
                dur = 0;
            }
            bills.put(cid, bills.getOrDefault(cid, 0) + prices.getOrDefault(fac, 0) * dur);
        }
        
        List<String> ans = new ArrayList<>(bills.keySet());
        Collections.sort(ans);
        for (String cid : ans) {
            System.out.println(cid + "," + bills.get(cid));
        }
    }
}
  • Cpp
#include <iostream>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    int n;
    cin >> n;
    cin.ignore();
    
    vector<vector<string>> logs;
    unordered_set<string> seen;
    for (int i = 0; i < n; i++) {
        string line;
        getline(cin, line);
        vector<string> log;
        size_t pos = 0;
        while ((pos = line.find(',')) != string::npos) {
            log.push_back(line.substr(0, pos));
            line.erase(0, pos + 1);
        }
        log.push_back(line);
        string key = log[0] + log[1] + log[2];
        if (!seen.count(key)) {
            logs.push_back(log);
            seen.insert(key);
        }
    }
    
    int m;
    cin >> m;
    cin.ignore();
    unordered_map<string, int> prices;
    for (int i = 0; i < m; i++) {
        string line;
        getline(cin, line);
        size_t pos = line.find(',');
        string fac = line.substr(0, pos);
        int price = stoi(line.substr(pos + 1));
        prices[fac] = price;
    }
    
    unordered_map<string, int> bills;
    for (auto& log : logs) {
        string cid = log[1];
        string fac = log[2];
        int dur = stoi(log[3]);
        if (dur < 0 || dur > 100) {
            dur = 0;
        }
        bills[cid] += prices[fac] * dur;
    }
    
    vector<pair<string, int>> ans(bills.begin(), bills.end());
    sort(ans.begin(), ans.end());
    for (auto& [cid, bill] : ans) {
        cout << cid << "," << bill << endl;
    }
    
    return 0;
}

🍎 02.LYA 的图片分类算法

问题描述

LYA 是一位图像处理工程师,她需要设计一个算法来对一批图片进行分类。首先,她对每张图片提取特征,并计算任意两张图片之间的相似度。然后,根据以下规则将图片归类:

  1. 如果两张图片的相似度大于 0 0 0,则认为它们是相似的;
  2. 如果图片 A A A B B B 相似, B B B C C C 相似,但 A A A C C C 不相似,则认为 A A A C C C 是间接相似的,可以将 A A A B B B C C C 归为一类,但不计算 A A A C C C 的相似度;
  3. 如果一张图片与所有其他图片都不相似,则它自成一类,相似度为 0 0 0

给定一个大小为 N × N N \times N N×N 的矩阵 M M M,其中 M [ i ] [ j ] M[i][j] M[i][j] 表示第 i i i 张图片和第 j j j 张图片的相似度,请按照从大到小的顺序返回每个相似类中所有图片的相似度之和。

输入格式

第一行包含一个正整数 N N N 1 ≤ N ≤ 900 1 \leq N \leq 900 1N900),表示矩阵 M M M 中图片的数量。

接下来的 N N N 行,每行包含 N N N 个用空格分隔的非负整数,表示矩阵 M M M。其中, 0 ≤ M [ i ] [ j ] ≤ 100 0 \leq M[i][j] \leq 100 0M[i][j]100,并且保证 M [ i ] [ j ] = M [ j ] [ i ] M[i][j] = M[j][i] M[i][j]=M[j][i]

注意:输入的矩阵元素之间的分隔符可能是一个或多个连续的空格。

输出格式

输出每个相似类的相似度之和,按照从大到小的顺序输出。每个数占一行,相邻两个数之间用一个空格分隔。

样例输入

5
0 0 50 0 0
0 0 0 25 0
50 0 0 0 15
0 25 0 0 0
0 0 15 0 0

样例输出

65 25

数据范围

  • 1 ≤ N ≤ 900 1 \leq N \leq 900 1N900
  • 0 ≤ M [ i ] [ j ] ≤ 100 0 \leq M[i][j] \leq 100 0M[i][j]100

题解

本题可以使用并查集来解决。

首先,为每张图片创建一个集合,初始时每个集合只包含一张图片。然后,我们遍历矩阵 M M M,对于任意两张图片 i i i j j j,如果它们的相似度大于 0 0 0,则将它们所在的集合合并。

在合并集合时,需要将相似度累加到集合的根节点上。这样,在合并完成后,每个集合的根节点上的相似度之和就是该相似类的相似度之和。

最后,遍历所有图片,找出每个集合的根节点,将根节点上的相似度之和加入答案数组中。将答案数组按照从大到小的顺序排序后输出即可。

时间复杂度 O ( N 2 log ⁡ N ) O(N^2 \log N) O(N2logN),空间复杂度 O ( N ) O(N) O(N)

参考代码

  • Python
def find(x):
    if p[x] != x:
        root = find(p[x])
        p[x] = root
        return root
    return x

n = int(input())
g = [list(map(int, input().split())) for _ in range(n)]

p = list(range(n))
s = [0] * n

for i in range(n):
    for j in range(i + 1, n):
        if g[i][j] > 0:
            a, b = find(i), find(j)
            if a != b:
                s[a] += s[b]
                p[b] = a
            s[a] += g[i][j]

ans = [s[i] for i in range(n) if p[i] == i]
ans.sort(reverse=True)

print(*ans)
  • Java
import java.io.*;
import java.util.*;

public class Main {
    static int[] p;
    static int[] s;

    static int find(int x) {
        if (p[x] != x) {
            int root = find(p[x]);
            p[x] = root;
            return root;
        }
        return x;
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        int[][] g = new int[n][n];
        for (int i = 0; i < n; i++) {
            String[] row = br.readLine().split("\\s+");
            for (int j = 0; j < n; j++) {
                g[i][j] = Integer.parseInt(row[j]);
            }
        }

        p = new int[n];
        s = new int[n];
        for (int i = 0; i < n; i++) {
            p[i] = i;
        }

        for (int i = 0; i < n; i++) {
            for (int j = i + 1; j < n; j++) {
                if (g[i][j] > 0) {
                    int a = find(i), b = find(j);
                    if (a != b) {
                        s[a] += s[b];
                        p[b] = a;
                    }
                    s[a] += g[i][j];
                }
            }
        }

        List<Integer> ans = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            if (p[i] == i) {
                ans.add(s[i]);
            }
        }
        Collections.sort(ans, Collections.reverseOrder());

        for (int i = 0; i < ans.size(); i++) {
            System.out.print(ans.get(i));
            if (i < ans.size() - 1) {
                System.out.print(" ");
            }
        }
    }
}
  • Cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

const int N = 910;
int p[N], s[N];

int find(int x) {
    if (p[x] != x) {
        int root = find(p[x]);
        p[x] = root;
        return root;
    }
    return x;
}

int main() {
    int n;
    cin >> n;
    vector<vector<int>> g(n, vector<int>(n));
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> g[i][j];
        }
    }

    for (int i = 0; i < n; i++) {
        p[i] = i;
    }

    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            if (g[i][j] > 0) {
                int a = find(i), b = find(j);
                if (a != b) {
                    s[a] += s[b];
                    p[b] = a;
                }
                s[a] += g[i][j];
            }
        }
    }

    vector<int> ans;
    for (int i = 0; i < n; i++) {
        if (p[i] == i) {
            ans.push_back(s[i]);
        }
    }
    sort(ans.rbegin(), ans.rend());

    for (int i = 0; i < ans.size(); i++) {
        cout << ans[i];
        if (i < ans.size() - 1) {
            cout << " ";
        }
    }

    return 0;
}

🍌 03.网络入侵检测

问题描述

K小姐是一名网络安全工程师,她负责维护一个由 N N N 个节点组成的内部网络。这个网络的连通性可以用一个 N × N N\times N N×N 的矩阵 m a t r i x matrix matrix 来表示,其中 m a t r i x [ i ] [ j ] = p matrix[i][j]=p matrix[i][j]=p 表示从节点 i i i 到节点 j j j 需要的最低权限等级为 p p p p = 0 p=0 p=0 表示不连通)。如果成功访问了节点 j j j,则该节点的权限等级会被调整为 p p p

某天,K小姐发现有一些节点暴露在了公网上,存在被外部攻击的风险。暴露节点的编号保存在数组 e x p o s e d exposed exposed 中。如果攻击者从公网入侵了某个暴露节点,则该节点的权限等级会变为最高等级 10 10 10。同时,入侵可以在网络内部传播,只要满足权限等级的要求即可。

为了尽快控制损失,K小姐决定立即将某个暴露节点从公网断开。她希望你能帮忙计算,断开哪个节点能够使最终被入侵的节点数量最少。如果有多个答案,则输出编号最小的节点。

输入格式

第一行包含一个正整数 N N N,表示网络中节点的数量。

接下来 N N N 行,每行包含 N N N 个空格分隔的整数,表示矩阵 m a t r i x matrix matrix

最后一行包含若干个空格分隔的整数,表示数组 e x p o s e d exposed exposed

输出格式

输出一个整数,表示应该断开的节点编号。

样例输入

4
1 0 0 0
0 1 2 0
0 1 1 4
0 0 3 1
1 3

样例输出

3

数据范围

  • 2 ≤ N ≤ 24 2\le N\le 24 2N24
  • 0 ≤ m a t r i x [ i ] [ j ] ≤ 10 0\le matrix[i][j]\le 10 0matrix[i][j]10
  • 0 ≤ e x p o s e d [ i ] < N 0\le exposed[i]<N 0exposed[i]<N

题解

本题可以用DFS求解。基本思路如下:

  1. 枚举断开的节点 x x x,将其从 e x p o s e d exposed exposed 中移除。
  2. 对于 e x p o s e d exposed exposed 中的每个节点 u u u,从 u u u 开始DFS搜索所有可达的节点,并记录数量。权限等级初始为 10 10 10
  3. 如果当前节点 u u u 可以访问节点 v v v(即 m a t r i x [ u ] [ v ] matrix[u][v] matrix[u][v] 不为 0 0 0 且不超过当前权限等级),则将 v v v 加入DFS,并将权限等级更新为 m a t r i x [ u ] [ v ] matrix[u][v] matrix[u][v]
  4. 选择最终被入侵节点数量最少的 x x x 作为答案。如有多个,取编号最小的。

时间复杂度 O ( N 3 ) O(N^3) O(N3),空间复杂度 O ( N 2 ) O(N^2) O(N2)

参考代码

  • Cpp
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

int n;
const int N = 30;
int a[N][N];
bool st[N];

int dfs(int id, int ra) {
    int num = 0, sm = 0;
    for (int i = 0; i < n; i++) {
        if (id == i || !a[id][i]) continue;
        if (ra >= a[id][i]) {
            if (st[i]) continue;
            st[i] = true;
            num += dfs(i, a[id][i]);
            st[i] = false;
        }
    }
    return num + 1;
}

int main() {
    cin >> n;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            cin >> a[i][j];

    int x;
    int res = -1, ans = 0;
    while (cin >> x) {
        for (int i = 0; i < n; i++) {
            if (x == i) continue;
            st[x] = true;
            int t = dfs(x, 10);
            st[x] = false;
            if (t > ans) {
                ans = t;
                res = x;
            }
        }
    }
    cout << res;
    return 0;
}

  • Python
n = int(input())
N = 30
a = [[0] * N for _ in range(N)]
st = [False] * N

def dfs(id, ra):
    num = 0
    for i in range(n):
        if id == i or a[id][i] == 0:
            continue
        if ra >= a[id][i]:
            if st[i]:
                continue
            st[i] = True
            num += dfs(i, a[id][i])
            st[i] = False
    return num + 1

for i in range(n):
    a[i] = list(map(int, input().split()))

x = int(input())
res, ans = -1, 0
while True:
    if x == -1:
        break
    for i in range(n):
        if x == i:
            continue
        st[x] = True
        t = dfs(x, 10)
        st[x] = False
        if t > ans:
            ans = t
            res = x
    x = int(input())

print(res)

  • Java
import java.util.Scanner;

public class Main {
    static int n;
    static final int N = 30;
    static int[][] a = new int[N][N];
    static boolean[] st = new boolean[N];

    public static int dfs(int id, int ra) {
        int num = 0;
        for (int i = 0; i < n; i++) {
            if (id == i || a[id][i] == 0) continue;
            if (ra >= a[id][i]) {
                if (st[i]) continue;
                st[i] = true;
                num += dfs(i, a[id][i]);
                st[i] = false;
            }
        }
        return num + 1;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        n = scanner.nextInt();
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                a[i][j] = scanner.nextInt();
            }
        }
        int x;
        int res = -1, ans = 0;
        while (scanner.hasNextInt()) {
            x = scanner.nextInt();
            for (int i = 0; i < n; i++) {
                if (x == i) continue;
                st[x] = true;
                int t = dfs(x, 10);
                st[x] = false;
                if (t > ans) {
                    ans = t;
                    res = x;
                }
            }
        }
        System.out.println(res);
    }
}

写在最后

📧 KK这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下 KK领取,会在飞书进行同步的跟新。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uniapp 轮播列表一排展示3个,左右滑动,滑动到中间放大

一、效果展示 二、代码实现 1.html代码&#xff1a; <!-- 轮播 --><view class"heade"><swiper class"swiper" display-multiple-items3 circulartrue previous-margin1rpx next-margin1rpxcurrent0 change"swiperChange">&l…

第 6 章 Gazebo仿真环境搭建(自学二刷笔记)

6.6.4 Gazebo仿真环境搭建 到目前为止&#xff0c;我们已经可以将机器人模型显示在 Gazebo 之中了&#xff0c;但是当前默认情况下&#xff0c;在 Gazebo 中机器人模型是在 empty world 中&#xff0c;并没有类似于房间、家具、道路、树木... 之类的仿真物&#xff0c;如何在 …

SQL注入sqli_labs靶场第三题

?id1and 11 and 11和?id1and 11 and 11进行测试如果11页面显示正常和原页面一样&#xff0c;并且12页面报错或者页面部分数据显示不正常&#xff0c;那么可以确定此处为字符型注入。 根据报错信息判断为单引号带括号注入 联合查询&#xff1a; 猜解列名 ?id1) order by 3-…

微服务项目sc2024第一个子项目

1. 第一个子项目 2.pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apa…

【测试开发学习历程】python迭代、可迭代对象、迭代器、生成器

1 迭代Iteration 迭代Iteration&#xff1a;所谓迭代就是重复运行一段代码语句块的能力&#xff0c;就好比在一个容器中进行一层一层遍历数据&#xff0c;在应用过程中for循环最为突出。迭代就是从某个容器对象中逐个地读取元素&#xff0c;直到容器中没有元素为止。迭代迭代&…

linux服务使用./xxx.sh执行脚本命令

设置脚本文件为全权限 chmod 777 xxx.sh直接使用./xxxx.sh即可

用dbms_shared_pool.purge清除执行计划

1.Oracle 11g如何清除share pool中某条SQL的执行计划 以前在Oracle 10g数据库上,如果遇到绑定窥探导致执行计划慢的情况,想要清除某条SQL的执行计划,让它硬解析,找了很久都没有找到直接操作share pool的方法&#xff08;总不能alter system flush shared_pool&#xff09;,只能…

HTML+CSS+JS实现京东首页[web课设代码+模块说明+效果图]

系列文章目录 文章目录 系列文章目录前言一、HTML结构图二、CSS部分代码图三、每部分效果图展示3.1 导航栏、头部搜索栏效果图3.2 中心区域商品展示效果图3.3 秒杀区和特惠区域效果图3.4 页脚&#xff08;底部导航、版权信息、技术支持等内容&#xff09;效果图 总结 前言 用时…

【算法刷题 | 二叉树 06】4.10( 路径总和、路径总和 || )

文章目录 13.路径总和13.1问题13.2解法一&#xff1a;递归13.2.1递归思路&#xff08;1&#xff09;确定递归函数参数以及返回值&#xff08;2&#xff09;确定终止条件&#xff08;3&#xff09;确定递归逻辑 13.2.2代码实现 14.路径总和 ||14.1问题14.2解法一&#xff1a;递归…

CRM集成:解锁业务增长与客户关系管理的关键

预计从2021年至2028年&#xff0c;CRM领域的市场规模将大幅跃升&#xff0c;从约580亿美元增长至1290亿美元。这一显著的增长并非偶然&#xff0c;而是源于CRM平台为企业带来的巨大价值。客户关系管理平台助力销售高效开发潜在客户&#xff0c;客户成功经理有效支持客户&#x…

VRRP+MSTP+BFD

一、组网 二、要求 PC6&#xff08;vlan 10内PC&#xff09;访问1.1.1.1走JR-1——CORE1——MSR到1.1.1.1 PC7&#xff08;vlan 20内PC&#xff09;访问1.1.1.1走JR-2——CORE2——MSR到1.1.1.1 链路故障时切换路线&#xff0c;来回路径一致 三、配置步骤 SR bfd echo-sou…

30.WEB渗透测试-数据传输与加解密(4)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;29.WEB渗透测试-数据传输与加解密&#xff08;3&#xff09;-CSDN博客 加解密需要用到的源…

磁盘管理与文件管理

文章目录 一、磁盘结构二、MBR与磁盘分区分区的优势与缺点分区的方式文件系统分区工具挂载与解挂载 一、磁盘结构 1.硬盘结构 硬盘分类&#xff1a; 1.机械硬盘&#xff1a;靠磁头转动找数据 慢 便宜 2.固态硬盘&#xff1a;靠芯片去找数据 快 贵 硬盘的数据结构&#xff1a;…

InternVideo2重塑视频理解新标杆,多模态学习引领行业风向

引言&#xff1a;视频理解的新篇章——InternVideo2的介绍 随着视频内容在日常生活中的普及&#xff0c;视频理解技术的重要性日益凸显。视频不仅包含丰富的视觉信息&#xff0c;还蕴含着动态变化和多模态元素&#xff0c;如音频和文本。这些特性使得视频成为一个复杂的数据类型…

蓝桥杯-求阶乘

问题描述 满足 N!的末尾恰好有 区 个o的最小的 N 是多少? 如果这样的 N 不存在输出 -1。 输入格式 一个整数 区。 输出格式 一个整数代表答案。 样例输入 样例输出 10 评测用例规模与约定 对于 30% 的数据,1<K<106 对于 100% 的数据,1<K<1018 运行限制 最大运行时…

Leetcode算法训练日记 | day14

一、二叉树的前序遍历 1.题目 Leetcode&#xff1a;第 144 题 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3]示例 2&#xff1a; 输入&#xff1a;root [] 输出&#…

wps可以打钩的框框

方法一&#xff1a; 输入2611&#xff0c;按下altx 方法二&#xff1a; R 选中后->开始->字体wingdings字体

MATLAB 点云体素滤波 (58)

MATLAB 体素滤波 (58) 一、基本原理二、算法实现1.代码数据的海量性始终是点云处理时需要面临的一个大问题,严重的时间消耗和内存占用影响了点云处理的发展,当然了,点云数量主要应该看项目的实际需求,若是对细节要求较高,那么点云数量不可过少,但是要求过低时,我们就可…

番外篇 | YOLOv8改进之引入YOLOv9的ADown模块 | 替换YOLOv8卷积

前言:Hello大家好,我是小哥谈。YOLOv9是一种目标检测算法,而ADown模块是YOLOv9中的一个重要组成部分。ADown模块主要用于特征提取和下采样操作,以便在后续的检测任务中更好地捕捉目标的特征。具体来说,ADown模块是YOLOv9中的一个卷积块,由一系列卷积层和池化层组成。它的…

Linux网卡:连接虚拟与现实的桥梁

在介绍Linux网卡之前&#xff0c;让我们先迈入时光机&#x1f570;️&#xff0c;回到1980年代末期&#xff0c;互联网正在逐步从一个科研网络向公众网络转变&#xff0c;Linux——一个自由和开源的操作系统诞生了&#x1f427;。Linux的出现&#xff0c;对于计算机科学领域来说…