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

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

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

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

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

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

文章目录

    • 🔮01.扑克牌消消乐
      • 题目描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • ⚗️02.公司部门风险评估
      • 题目描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 🎀 03.城市应急疏散
      • 题目描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 写在最后
    • 📧 KK这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下 KK领取,会在飞书进行同步的跟新。

本次华为的笔试不算难哦,虽然考试的时候题目长了点,但总体代码和思维量都不大

🔮01.扑克牌消消乐

题目描述

K小姐最近沉迷于一款扑克牌消除游戏。游戏规则如下:从一副扑克牌中随机抽取 n n n 张牌组成一个序列,如果有连续的 3 3 3 张相同牌号的卡牌,则这 3 3 3 张卡牌可以消除。消除后,剩余卡牌按照当前顺序重新合并成新的序列,继续寻找可以消除的卡牌组合,直到无法再消除为止。

需要注意的是,如果存在连续的 4 4 4 张相同牌号的卡牌,在消除后会剩余 1 1 1 张该牌号的卡牌。

现在,K小姐想知道最后剩余的卡牌序列是什么样的,你能帮助她吗?

输入格式

第一行包含一个正整数 n n n 1 ≤ n ≤ 52 1 \leq n \leq 52 1n52),表示抽取的卡牌数量。

第二行包含 n n n 个以空格分隔的字符串,表示抽取的卡牌序列,卡牌号仅包含 2 2 2- 10 10 10 A A A J J J Q Q Q K K K

输出格式

输出一个字符串,表示最终剩余的卡牌号序列,卡牌号之间以空格分隔。如果最终没有卡牌剩余,则输出 0 0 0

样例输入

10
3 A 2 2 2 A A 7 7 7

样例输出

3

数据范围

  • 1 ≤ n ≤ 52 1 \leq n \leq 52 1n52
  • 卡牌号仅包含 2 2 2- 10 10 10 A A A J J J Q Q Q K K K

题解

这是一道模拟题,可以使用栈来模拟卡牌的消除过程。具体步骤如下:

  1. 将输入的卡牌序列依次放入栈中。
  2. 在放入每张卡牌时,检查栈顶是否存在与当前卡牌相同的牌号。
    • 如果存在,则统计相同牌号的数量,直到栈顶的卡牌牌号不同或栈为空为止。
    • 如果相同牌号的数量等于 3 3 3,则将这 3 3 3 张卡牌从栈中弹出。
  3. 重复步骤 2 2 2,直到所有卡牌都放入栈中。
  4. 最后,将栈中剩余的卡牌依次输出,如果栈为空,则输出 0 0 0

时间复杂度为 O ( n ) O(n) O(n),空间复杂度为 O ( n ) O(n) O(n)

参考代码

  • Python
n = int(input())
cards = input().split()
stack = []

for card in cards:
    stack.append(card)
    while len(stack) >= 3 and stack[-1] == stack[-2] == stack[-3]:
        for _ in range(3):
            stack.pop()

if not stack:
    print(0)
else:
    print(' '.join(stack))
  • Java
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        String[] cards = new String[n];
        for (int i = 0; i < n; i++) {
            cards[i] = sc.next();
        }
        
        List<String> stack = new ArrayList<>();
        for (String card : cards) {
            stack.add(card);
            int size = stack.size();
            while (size >= 3 && stack.get(size - 1).equals(stack.get(size - 2)) && stack.get(size - 2).equals(stack.get(size - 3))) {
                for (int i = 0; i < 3; i++) {
                    stack.remove(size - 1);
                    size--;
                }
            }
        }
        
        if (stack.isEmpty()) {
            System.out.println(0);
        } else {
            System.out.println(String.join(" ", stack));
        }
    }
}
  • Cpp
#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main() {
    int n;
    cin >> n;
    vector<string> cards(n);
    for (int i = 0; i < n; i++) {
        cin >> cards[i];
    }
    
    vector<string> stack;
    for (string card : cards) {
        stack.push_back(card);
        int size = stack.size();
        while (size >= 3 && stack[size - 1] == stack[size - 2] && stack[size - 2] == stack[size - 3]) {
            for (int i = 0; i < 3; i++) {
                stack.pop_back();
                size--;
            }
        }
    }
    
    if (stack.empty()) {
        cout << 0 << endl;
    } else {
        for (int i = 0; i < stack.size(); i++) {
            cout << stack[i] << " \n"[i == stack.size() - 1];
        }
    }
    
    return 0;
}

⚗️02.公司部门风险评估

题目描述

LYA 是一家大型科技公司的风险评估师。公司的部门结构可以看作一棵树,每个部门在评估前都有一些尚未解决的问题。部门的风险值可以用来评估该部门是否存在风险,风险值的计算公式为: 风险值 = 5 × 严重问题数 + 2 × 一般问题数 风险值 = 5 \times 严重问题数 + 2 \times 一般问题数 风险值=5×严重问题数+2×一般问题数

其中,每个部门的不同级别问题数量需要将该部门及其下属部门的相应级别问题数量求和。当部门的风险值小于等于给定的阈值时,该部门被认为是安全的;否则,该部门被视为风险部门,需要进一步整改。

现在给出公司的部门结构以及各部门的问题数量,请你帮助 LYA 计算出风险部门的数量。

输入格式

第一行包含两个正整数 M M M N N N 1 ≤ M ≤ 100000 1 \leq M \leq 100000 1M100000 1 ≤ N ≤ 1000 1 \leq N \leq 1000 1N1000),分别表示风险阈值和部门的数量。

接下来 N N N 行,每行包含四个字段,用空格分隔:

  • 第一个字段为部门名称 A i A_i Ai
  • 第二个字段为 A i A_i Ai 的上级部门名称 B i B_i Bi,如果 A i A_i Ai 为公司的最高层部门,则 B i B_i Bi* 表示;
  • 第三个字段为问题级别 C i C_i Ci C i ∈ { 0 , 1 } C_i \in \{0, 1\} Ci{0,1},其中 0 0 0 表示严重问题, 1 1 1 表示一般问题);
  • 第四个字段为该部门该级别的问题数量 D i D_i Di 1 ≤ D i ≤ 1000 1 \leq D_i \leq 1000 1Di1000)。

其中, A i A_i Ai B i B_i Bi 为由小写英文字母组成的字符串,长度不超过 5 5 5

输入保证部门结构为一棵树,不会出现环的情况。

输出格式

输出一个整数,表示风险部门的数量。

样例输入

40 12
a * 0 2
a * 1 2
b a 0 3
b a 1 5
c a 1 3
d a 0 1
d a 1 3
e b 0 2
f * 0 8
f * 1 10
g f 1 2
h * 0 4

样例输出

2

数据范围

  • 1 ≤ M ≤ 100000 1 \leq M \leq 100000 1M100000
  • 1 ≤ N ≤ 1000 1 \leq N \leq 1000 1N1000
  • 1 ≤ D i ≤ 1000 1 \leq D_i \leq 1000 1Di1000
  • A i A_i Ai B i B_i Bi 为由小写英文字母组成的字符串,长度不超过 5 5 5

题解

本题可以使用树形 DP 的思想来解决。可以从叶子节点开始,自底向上计算每个部门的严重问题数和一般问题数,然后根据风险值的计算公式判断该部门是否为风险部门。

具体步骤如下:

  1. 建立部门之间的父子关系,使用邻接表或者邻接矩阵来存储。
  2. 对于每个部门,初始化其严重问题数和一般问题数。
  3. 从叶子节点开始,通过 DFS 或 BFS 遍历整棵树,对于每个部门:
    • 将其子部门的严重问题数和一般问题数累加到当前部门上。
    • 计算当前部门的风险值,并判断是否超过阈值,如果超过则将风险部门数量加 1 1 1
  4. 输出风险部门的数量。

时间复杂度为 O ( N ) O(N) O(N),空间复杂度为 O ( N ) O(N) O(N),其中 N N N 为部门的数量。

参考代码

  • Python
from collections import defaultdict

def dfs(dept):
    risk1, risk2 = risks1[dept], risks2[dept]
    for sub in graph[dept]:
        sub_risk1, sub_risk2 = dfs(sub)
        risk1 += sub_risk1
        risk2 += sub_risk2
    return risk1, risk2

m, n = map(int, input().split())
graph = defaultdict(list)
risks1 = defaultdict(int)
risks2 = defaultdict(int)

roots = set()
for _ in range(n):
    dept, parent, level, num = input().split()
    num = int(num)
    if parent == '*':
        roots.add(dept)
    else:
        graph[parent].append(dept)
    if level == '0':
        risks1[dept] = num
    else:
        risks2[dept] = num

cnt = 0
for root in roots:
    risk1, risk2 = dfs(root)
    if 5 * risk1 + 2 * risk2 > m:
        cnt += 1

print(cnt)
  • Java
import java.util.*;

public class Main {
    static Map<String, List<String>> graph = new HashMap<>();
    static Map<String, Integer> risks1 = new HashMap<>();
    static Map<String, Integer> risks2 = new HashMap<>();

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int n = sc.nextInt();
        sc.nextLine();

        Set<String> roots = new HashSet<>();
        for (int i = 0; i < n; i++) {
            String[] input = sc.nextLine().split(" ");
            String dept = input[0];
            String parent = input[1];
            int level = Integer.parseInt(input[2]);
            int num = Integer.parseInt(input[3]);

            if (parent.equals("*")) {
                roots.add(dept);
            } else {
                graph.computeIfAbsent(parent, k -> new ArrayList<>()).add(dept);
            }

            if (level == 0) {
                risks1.put(dept, num);
            } else {
                risks2.put(dept, num);
            }
        }

        int cnt = 0;
        for (String root : roots) {
            int[] risks = dfs(root);
            if (5 * risks[0] + 2 * risks[1] > m) {
                cnt++;
            }
        }

        System.out.println(cnt);
    }

    private static int[] dfs(String dept) {
        int risk1 = risks1.getOrDefault(dept, 0);
        int risk2 = risks2.getOrDefault(dept, 0);

        for (String sub : graph.getOrDefault(dept, new ArrayList<>())) {
            int[] subRisks = dfs(sub);
            risk1 += subRisks[0];
            risk2 += subRisks[1];
        }

        return new int[]{risk1, risk2};
    }
}
  • Cpp
#include <iostream>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <string>

using namespace std;

unordered_map<string, vector<string>> graph;
unordered_map<string, int> risks1;
unordered_map<string, int> risks2;

pair<int, int> dfs(const string& dept) {
    int risk1 = risks1[dept];
    int risk2 = risks2[dept];

    for (const string& sub : graph[dept]) {
        auto subRisks = dfs(sub);
        risk1 += subRisks.first;
        risk2 += subRisks.second;
    }

    return {risk1, risk2};
}

int main() {
    int m, n;
    cin >> m >> n;

    unordered_set<string> roots;
    for (int i = 0; i < n; i++) {
        string dept, parent;
        int level, num;
        cin >> dept >> parent >> level >> num;

        if (parent == "*") {
            roots.insert(dept);
        } else {
            graph[parent].push_back(dept);
        }

        if (level == 0) {
            risks1[dept] = num;
        } else {
            risks2[dept] = num;
        }
    }

    int cnt = 0;
    for (const string& root : roots) {
        auto risks = dfs(root);
        if (5 * risks.first + 2 * risks.second > m) {
            cnt++;
        }
    }

    cout << cnt << endl;

    return 0;
}

🎀 03.城市应急疏散

题目描述

LYA 是一名城市应急管理专家,她负责制定城市在发生重大事故时的疏散计划。城市由 n n n 个区域组成,每个区域之间都有道路相连。当某个区域发生事故需要疏散时,LYA 需要选择一个或多个安全区域作为疏散目的地,并确保疏散路径的总长度最短。

给定一个 n × n n \times n n×n 的矩阵 d i s t dist dist,其中 d i s t [ i ] [ j ] dist[i][j] dist[i][j] 表示区域 i i i 到区域 j j j 的道路长度,如果 d i s t [ i ] [ j ] = − 1 dist[i][j] = -1 dist[i][j]=1,则表示区域 i i i 和区域 j j j 之间没有直接相连的道路。另外,每个区域还有一个剩余容量 c a p [ i ] cap[i] cap[i],表示该区域最多可以容纳的人数。

当某个区域 x x x 发生事故需要疏散人数为 p p p 时,请你帮助 LYA 选择疏散区域,使得疏散路径的总长度最短,并且疏散区域的剩余容量之和不小于 p p p。如果有多个疏散区域到事故区域的最短路径长度相同,则优先选择编号较小的区域。

输入格式

第一行包含一个正整数 n n n,表示区域的数量。

接下来 n n n 行,每行包含 n n n 个整数,表示矩阵 d i s t dist dist

接下来一行包含 n n n 个整数,表示每个区域的剩余容量 c a p [ i ] cap[i] cap[i]

最后一行包含两个整数 x x x p p p,分别表示发生事故的区域编号和需要疏散的人数。

输出格式

输出一行,包含若干个整数,表示选择的疏散区域编号。如果有多个疏散区域到事故区域的最短路径长度相同,则按照编号从小到大的顺序输出。

样例输入

4
-1 5 -1 8
5 -1 1 3
-1 1 -1 4
8 3 4 -1
10 20 15 25
2 12

样例输出

1

数据范围

  • 2 ≤ n ≤ 1 0 4 2 \leq n \leq 10^4 2n104
  • − 1 ≤ d i s t [ i ] [ j ] ≤ 1000 -1 \leq dist[i][j] \leq 1000 1dist[i][j]1000
  • 1 ≤ c a p [ i ] ≤ 100 1 \leq cap[i] \leq 100 1cap[i]100
  • 0 ≤ x < n 0 \leq x < n 0x<n
  • 0 < p ≤ 1000 0 < p \leq 1000 0<p1000

题解

本题可以使用 Dijkstra 算法求出事故区域到其他所有区域的最短路径长度,然后将区域按照最短路径长度从小到大排序,依次选择区域作为疏散目的地,直到选择的区域剩余容量之和不小于需要疏散的人数为止。

具体步骤如下:

  1. 使用 Dijkstra 算法求出事故区域到其他所有区域的最短路径长度,记为 d [ i ] d[i] d[i]
  2. 将区域按照 ( d [ i ] , c a p [ i ] , i ) (d[i], cap[i], i) (d[i],cap[i],i) 的顺序从小到大排序,其中 d [ i ] d[i] d[i] 为最短路径长度, c a p [ i ] cap[i] cap[i] 为剩余容量, i i i 为区域编号。
  3. 依次选择排序后的区域作为疏散目的地,直到选择的区域剩余容量之和不小于需要疏散的人数为止。
  4. 输出选择的疏散区域编号。

时间复杂度 O ( n 2 + n log ⁡ n ) O(n^2 + n \log n) O(n2+nlogn),空间复杂度 O ( n 2 ) O(n^2) O(n2)。其中 n n n 为区域的数量。

参考代码

  • Python
import heapq

n = int(input())
dist = [list(map(int, input().split())) for _ in range(n)]
cap = list(map(int, input().split()))
x, p = map(int, input().split())

for i in range(n):
    for j in range(n):
        if dist[i][j] == -1:
            dist[i][j] = float('inf')

d = [float('inf')] * n
d[x] = 0
q = [(0, x)]

while q:
    _, u = heapq.heappop(q)
    for v in range(n):
        if d[u] + dist[u][v] < d[v]:
            d[v] = d[u] + dist[u][v]
            heapq.heappush(q, (d[v], v))

regions = sorted([(d[i], cap[i], i) for i in range(n) if i != x])

ans = []
total_cap = 0
for _, c, i in regions:
    if total_cap >= p:
        break
    ans.append(i)
    total_cap += c

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

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[][] dist = new int[n][n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                dist[i][j] = sc.nextInt();
                if (dist[i][j] == -1) {
                    dist[i][j] = Integer.MAX_VALUE;
                }
            }
        }
        int[] cap = new int[n];
        for (int i = 0; i < n; i++) {
            cap[i] = sc.nextInt();
        }
        int x = sc.nextInt();
        int p = sc.nextInt();

        int[] d = new int[n];
        Arrays.fill(d, Integer.MAX_VALUE);
        d[x] = 0;
        PriorityQueue<int[]> q = new PriorityQueue<>((a, b) -> a[0] - b[0]);
        q.offer(new int[]{0, x});

        while (!q.isEmpty()) {
            int[] curr = q.poll();
            int u = curr[1];
            for (int v = 0; v < n; v++) {
                if (d[u] + dist[u][v] < d[v]) {
                    d[v] = d[u] + dist[u][v];
                    q.offer(new int[]{d[v], v});
                }
            }
        }

        List<int[]> regions = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            if (i != x) {
                regions.add(new int[]{d[i], cap[i], i});
            }
        }
        regions.sort((a, b) -> {
            if (a[0] != b[0]) {
                return a[0] - b[0];
            }
            if (a[1] != b[1]) {
                return b[1] - a[1];
            }
            return a[2] - b[2];
        });

        List<Integer> ans = new ArrayList<>();
        int totalCap = 0;
        for (int[] region : regions) {
            if (totalCap >= p) {
                break;
            }
            ans.add(region[2]);
            totalCap += region[1];
        }

        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 <queue>
#include <algorithm>
using namespace std;

const int INF = 0x3f3f3f3f;

int main() {
    int n;
    cin >> n;
    vector<vector<int>> dist(n, vector<int>(n));
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> dist[i][j];
            if (dist[i][j] == -1) {
                dist[i][j] = INF;
            }
        }
    }
    vector<int> cap(n);
    for (int i = 0; i < n; i++) {
        cin >> cap[i];
    }
    int x, p;
    cin >> x >> p;

    vector<int> d(n, INF);
    d[x] = 0;
    priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q;
    q.emplace(0, x);

    while (!q.empty()) {
        auto [du, u] = q.top();
        q.pop();
        if (du > d[u]) {
            continue;
        }
        for (int v = 0; v < n; v++) {
            if (d[u] + dist[u][v] < d[v]) {
                d[v] = d[u] + dist[u][v];
                q.emplace(d[v], v);
            }
        }
    }

    vector<tuple<int, int, int>> regions;
    for (int i = 0; i < n; i++) {
        if (i != x) {
            regions.emplace_back(d[i], cap[i], i);
        }
    }
    sort(regions.begin(), regions.end());

    vector<int> ans;
    int total_cap = 0;
    for (auto [di, ci, i] : regions) {
        if (total_cap >= p) {
            break;
        }
        ans.push_back(i);
        total_cap += ci;
    }

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

    return 0;
}

写在最后

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

在这里插入图片描述

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

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

相关文章

【计算机考研】考408,还是不考408,性价比高❓

最近刷了很多帖子都偏向408太难了不要报考 但我的看法是408是计算机的考研趋势&#xff0c;并且择校的选择更多&#xff0c;408只是科目更广泛&#xff0c;与自命题相比其实各有各的难度 如果觉得自己数学基础不太好&#xff0c;时间不太够的同学可以了解一下自命题&#xff…

nodejs模块机制

模块机制 CommonJs规范 模块引用 上下文提供require()方法来引人外部模块var math require(math) 模块定义 exports 对象用于到处当前模块中的方法和变量module代表模块自身 exports.add function() {...}在另一个模块中使用require()方法进行导入。就可以使用 区别和联系 …

电力系统卫星授时信号安全隔离装置防护方案

电力系统是国家关键基础设施&#xff0c; 电力安全关系国计民生&#xff0c; 是国家安全的重要保障&#xff0c; 与政治安全、经济安全、 网络安全、社会安全等诸多领域密切关联。电网运行情况瞬息万变&#xff0c;为了在其发生事故时能够及时得到处理&#xff0c;需要统一的时…

Redis中的事务(二)

事务 一个完整的WATCH事务执行过程 假设当前服务端为c10086&#xff0c;而数据库watched_keys字典的当前状态如图所示&#xff0c;那么当c10086执行以下WATCH命令之后 c10086> WATCH "name" OKwatched_keys字典将更新如图所示的状态。接下来客户端c10086继续向…

[2021最新]Java时间戳和日期时间互转换

代码&#xff1a; import java.text.ParseException; import java.text.SimpleDateFormat;public class MainProcess {public static void main(String[] args) throws ParseException {// 1.set formatSimpleDateFormat timeSmat new SimpleDateFormat("yyyy-MM-dd HH:…

Kubernetes中安装部署ActiveMQ集群(手把手式记录)

目录 1、创建命名空间 nacos-cluster 2、配置文件准备 2.1 activemq0.xml 2.2 activemq1.xml 2.3 activemq2.xml 3、创建configMap cm-activemq 4、创建activemq-cluster.yaml 5、执行命令部署 6、部署成功&#xff0c;查看结果 这里以3个borker的集群为例&#xff0…

Facade 外观

意图 为子系统中的一组接口提供一个一致的界面&#xff0c;Facade模式定义了一个高层接口&#xff0c;这个接口使得这一字系统更加容易使用。 结构 其中&#xff1a; Facade知道哪些子系统负责处理请求&#xff1b;将客户的请求代理给适当的子系统对象。 Subsystem classes…

QGIS插件Geo-SAM使用(基于SAM半自动标注遥感图像)

0.Geo-SAM介绍 Geo-SAM是一个QGIS插件&#xff0c;旨在帮助人们在使用大尺寸地理空间栅格图像时有效地分割、描绘或标记地貌。Segment Anything Model &#xff08;SAM&#xff09; 是一个具有超能力的基础 AI 模型&#xff0c;但模型大小巨大&#xff0c;即使使用现代 GPU&am…

C++学习进阶版(一):用C++写简单的状态机实现

目录 一、基础知识 1、状态机 2、四大要素 3、描述方式 4、设计步骤 5、实现过程中需注意 &#xff08;1&#xff09; 状态定义 &#xff08;2&#xff09; 状态转换规则 &#xff08;3&#xff09; 输入处理 &#xff08;4&#xff09; 状态机的封装 &#xff08;5…

Nginx第2篇-HTTPS配置教程

背景 我最近做个项目要上线&#xff0c;接口部署到服务器&#xff0c;总不能给别人个ip地址加端口吧&#xff0c;而且小程序上线要有接口不能是ip和http协议&#xff0c;必须是https协议。这里记录下使用Nginx配置HTTPS的过程&#xff0c;主要包含以下三部分。 申请域名SSL证…

远程预付费集抄管理系统

远程预付费集抄管理系统是一种用于能源(如水、电等)预付费管理的智能化系统&#xff0c;其核心在于提供远程集中抄表和费用管理服务。这种系统通过集成先进的远程监控技术和预付费管理功能&#xff0c;为用户提供了便捷的能源管理解决方案。下文将从核心功能、工作流程、优势特…

离世界模型更近一步!Meta开源OpenEQA,评估AI Agent情景理解能力

Yann LeCun 朝着 “世界模型” 又近了一步。 Meta最新的开源工作OpenEQA&#xff1a;从文字模型到世界模型&#xff0c;可以像人一样记忆、推理的新基准&#xff0c;AI理解物理空间又近了一步。 场景1: 假设你正准备离开家&#xff0c;但找不到你的工牌。 现在&#xff0c;…

5.2 iHRM人力资源 - 员工管理 - 使用文件导入导出员工

iHRM人力资源 - 员工管理 - 导入导出员工 文章目录 iHRM人力资源 - 员工管理 - 导入导出员工一、员工导出Excel二、员工导入Excel2.1 Excel导入组件封装2.2 下载导入模板2.3 Excel 导入功能 三、删除员工 一、员工导出Excel 这个地方涉及一个接口二进制流blob 就是下面这一大片…

使用嘉立创EDA打开JSON格式的PCB及原理图

一、将PCB和原理图放同一文件夹 并打包成.zip文件 二、打开嘉立创EDA并导入.zip文件 文件 -> 导入 -> 嘉立创EDA标准版/专业版 三、选择.zip文件并选择 “导入文件并提取库” 四、自定义工程路径 完成导入并转换为.eprj文件 五、视频教学 bilibili_使用立创EDA打开JSO…

香港科技大学广州|数据科学与分析学域硕博招生宣讲会—华东师范大学专场

时间&#xff1a;2024年4月25日&#xff08;星期四&#xff09;13:30 地点&#xff1a;华东师范大学普陀校区文附楼507 报名链接&#xff1a;https://www.wjx.top/vm/Q0cKTUI.aspx# 跨学科研究领域 *数据驱动的人工智能和机器学习 *统计学习和建模 工业和商业分析 *特定行业…

float实现文字环绕效果

实现效果如下&#xff1a; 一、问题分析 接到需求就是右侧显示图片&#xff0c;左侧显示一个标题和内容。第一时间没有想到其他的布局的好的实现方式&#xff0c;就想到了float布局。于是乎去查了下有关float的文档&#xff0c;float 是相当的好用。 float定义如下&#xf…

kibana源码编译

一、安装nodejs16.14.2及yarn &#xff08;一&#xff09;nodejs 1、下载 https://cdn.npmmirror.com/binaries/node/v16.14.2/node-v16.14.2-linux-x64.tar.gz2、解压 tar -zxf node-v16.14.2-linux-x64.tar.gz -C /app cd /app mv node-v16.14.2-linux-x64 node3、配置环…

在Linux系统中设定延迟任务

一、在系统中设定延迟任务要求如下&#xff1a; 要求&#xff1a; 在系统中建立easylee用户&#xff0c;设定其密码为easylee 延迟任务由root用户建立 要求在5小时后备份系统中的用户信息文件到/backup中 确保延迟任务是使用非交互模式建立 确保系统中只有root用户和easylee用户…

Matlab|基于改进遗传算法的配电网故障定位

目录 1 主要内容 2 部分代码 3 部分程序结果 4 下载链接 1 主要内容 该程序复现文章《基于改进遗传算法的配电网故障定位》&#xff0c;将改进的遗传算法应用于配电网故障定位中, 并引入分级处理思想, 利用配电网呈辐射状的特点, 首先把整个配电网划分为主干支路和若干独立…

2024年阿里云4核8G配置云服务器价格低性能高!

阿里云4核8G服务器租用优惠价格700元1年&#xff0c;配置为ECS通用算力型u1实例&#xff08;ecs.u1-c1m2.xlarge&#xff09;4核8G配置、1M到3M带宽可选、ESSD Entry系统盘20G到40G可选&#xff0c;CPU采用Intel(R) Xeon(R) Platinum处理器&#xff0c;阿里云优惠 aliyunfuwuqi…