2024年4月17日华为春招实习试题【三题】-题目+题解+在线评测,2024.4.17,华为机试

news2024/11/27 22:32:24

2024年4月17日华为春招实习试题【三题】-题目+题解+在线评测

  • 🔮题目一描述:扑克牌消消乐
    • 输入描述
    • 输出描述
    • 样例一
    • 样例二
    • Limitation
    • 解题思路一:模拟,遇到连续3张相同牌号的卡牌,直接删除
    • 解题思路二:栈
    • 解题思路三:c++, java
  • ⚗️题目二描述:公司部门风险评估
    • 输入描述
    • 输出描述
    • 样例一
    • 样例二
    • 数据范围
    • Limitation
    • 解题思路一:dfs
    • 解题思路二:bfs
    • 解题思路三:java, c++
  • 🎀题目三描述:城市应急疏散
    • 输入格式
    • 输出描述
    • 样例
    • 数据范围
    • 解题思路一:Dijkstra
    • 解题思路二:0
    • 解题思路三:java, c++

🔮题目一描述:扑克牌消消乐

塔子哥最新沉迷某三消游戏,现在的他已经是这方面的大神。你太想进步了,找到了塔子哥并求他传授秘籍。他决定用一个游戏测试一下你的功底。

塔子哥从一副扑克牌中随机抽取n张牌组成一个序列,规定:连续3张相同牌号的卡牌可以消除,剩余卡牌按照当前顺序重新合并成新的序列后继续消除,例如序列 01112 在消除 111 之后,余下 02,重复以上步骤直到无法消除,请你完成这个游戏,输出结束后剩余的卡牌序列。

注:存在连续4张相同牌号的情况,消除后剩余一张。

输入描述

第一行输入一个整数n,表示抽出扑克牌的数量。其中 1 ≤ n ≤ 52 1 \le n \le 52 1n52

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

输出描述

输出一个字符串,表示最终的卡牌序列,卡牌号以空格分隔。

当所有扑克牌都被消除,输出0

样例一

输入

10
6 2 3 3 3 2 2 2 7 7 7

输出

6 2

样例二

输入

6 
5 A A A 5 5

输出

0

Limitation

1s, 1024KiB for each test case.

OJ链接:
https://codefun2000.com/p/P1827

解题思路一:模拟,遇到连续3张相同牌号的卡牌,直接删除

n = int(input())
strs = list(map(str, input().split()))

i = 0
while i < len(strs):
    if i + 2 < len(strs):
        if strs[i] == strs[i + 1] and strs[i + 1] == strs[i + 2]:
            strs = strs[:i] + strs[i+3:]
            if i > 0:
            	i -= 1
            continue
        i += 1
    else:
        break
if len(strs) == 0:
    print(0)
else:
    for s in strs:
        print(s, end = ' ')

时间复杂度:O(n) 一次遍历
空间复杂度:O(1) 输出答案不算

解题思路二:栈

n = int(input())
stack = []
a = input().split()
for i in a:
    if len(stack) < 2:
        stack.append(i)
    else:
        if stack[-1] == i and stack[-2] == i:
            stack.pop(-1)
            stack.pop(-1)
        else:
            stack.append(i)

print(' '.join(stack))

时间复杂度:O(n)
空间复杂度:O(1)

解题思路三:c++, java

#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
vector<char>a;
for(int i=0;i<n;i++){
    char c;
    cin>>c;
    a.push_back(c);
}
while(a.size()>=3){
    int flag=-1;
    for(int i=0;i<a.size()-2;i++){
        if(a[i]==a[i+1]&&a[i]==a[i+2]){
            flag=i;
            break;
        }
    }
    if(flag==-1)break;
    a.erase(a.begin()+flag,a.begin()+flag+3);
}
for(int i=0;i<a.size();i++){
    cout<<a[i];
    if(i!=a.size()-1)cout<<" ";
}


    return 0;
}

# java
import java.util.Scanner;
import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        String a = s.nextLine();
        int n = Integer.parseInt(a);
        String b = s.nextLine();
        String[] xulie = b.split(" ");
        Stack<String> stack = new Stack<>();
        Stack<Integer> count = new Stack<>();

        for (int i = 0; i < xulie.length; i++) {
            if (stack.isEmpty()) {
                stack.push(xulie[i]);
                count.push(1);
                continue;
            }
            if (stack.peek().equals(xulie[i])) {
                stack.push(xulie[i]);
                count.push(count.peek() + 1);
                if (count.peek() == 3){
                    stack.pop();
                    stack.pop();
                    stack.pop();
                    count.pop();
                    count.pop();
                    count.pop();
                }
                continue;
            }
            if (!stack.peek().equals(xulie[i])) {
                stack.push(xulie[i]);
                count.push(1);
            }
        }
        if (stack.isEmpty()) {
            System.out.print("0");
            return;
        }
        String[] result = new String[stack.size()];
        int i = 0;
        while (!stack.isEmpty()) {
            result[i] = stack.pop();
            i++;
        }
        for (int i1 = result.length - 1; i1 >= 0; i1--) {
            System.out.print(result[i1]);
            if (i1 != 0){
                System.out.print(" ");
            }
        }
    }
}

时间复杂度:O(n)
空间复杂度:O(1)

⚗️题目二描述:公司部门风险评估

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

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

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

输入描述

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

接下来 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表示严重问题,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。

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

输出描述

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

样例一

输入

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

解释

(a * 0 2)表示节点a有2个严重问题,*表示无父节点,即a为云服务。(b a 1 5)表示节点b有5个一般问题,b的父节点是a。可以看出,该样例有3个云服务a、f、h。云服务a的子节点有b、c、d、e,严重问题个数为2+3+0+1+2=82+3+0+1+2=8,一般问题个数为2+5+3+3+0=132+5+3+3+0=13,DI值=8∗5+13∗2=66>阈值40,故云服务a是风险云服务;云服务f严重问题个数为8+0=88+0=8,一般问题个数为10+2=1210+2=12,DI值=8∗5+12∗2=64>阈值40,故云服务f也是风险云服务;云服务h严重问题个数为44,一般问题个数为00,DI值=4∗5+0∗2=20<=阈值40,故云服务h不是风险云服务;因此该样例有2个风险云服务。

样例二

输入

50 10 
b a 1 5 
a * 0 2 
b a 0 3 
c a 1 3 
d a 0 1 
a * 1 2 
d a 1 3 
e b 0 2 
f b 1 1 
g c 1 2

输出

1

数据范围

  • 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。

Limitation

1s, 1024KiB for each test case.

OJ链接:
https://codefun2000.com/p/P1828

解题思路一:dfs

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

具体步骤如下:

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

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

def dfs(node):
    risk0, risk1 = risks0[node], risks1[node]
    for ch in graph[node]:
        ch_risk0, ch_risk1 = dfs(ch)
        risk0 += ch_risk0
        risk1 += ch_risk1
    return risk0, risk1

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

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

解题思路二:bfs

from collections import defaultdict, deque
M, N = map(int, input().split())
graph = defaultdict(list) # 邻接表,记录子节点
risks0 = defaultdict(int) # 严重问题
risks1 = defaultdict(int) # 一般问题

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

def bfs(node):
    risk0, risk1 = risks0[node], risks1[node]
    queue = deque([node])
    while queue:
        node = queue.pop()
        for ch in graph[node]:
            queue.append(ch)
            ch_risk0, ch_risk1 = risks0[ch], risks1[ch]
            risk0 += ch_risk0
            risk1 += ch_risk1
    return risk0, risk1

cnt = 0
for root in roots:
    risk0, risk1 = bfs(root)
    if 5 * risk0 + 2 * risk1 > M:
        cnt += 1
print(cnt)

时间复杂度:O(n)
空间复杂度:O(n)

解题思路三:java, c++

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};
    }
}

#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;
}


时间复杂度:O(n)
空间复杂度:O(n)

🎀题目三描述:城市应急疏散

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

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

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

输入格式

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

接下来 n行,每行包含 n个整数,表示矩阵 dist。

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

最后两行包含两个整数 x 和 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

OJ链接:
https://codefun2000.com/p/P1829

解题思路一:Dijkstra

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

具体步骤如下:

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

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

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], i, cap[i]) for i in range(n) if i != x])

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

时间复杂度:O(n2)其中 n 为区域的数量。
空间复杂度:O(n2)

解题思路二:0


时间复杂度:O(n2)其中 n 为区域的数量。
空间复杂度:O(n2)

解题思路三:java, c++

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], i, cap[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[1]);
            totalCap += region[2];
        }

        for (int i = 0; i < ans.size(); i++) {
            System.out.print(ans.get(i));
            if (i < ans.size() - 1) {
                System.out.print(" ");
            }
        }
    }
}

#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], i, cap[i]);
        }
    }
    sort(regions.begin(), regions.end());

    vector<int> ans;
    int total_cap = 0;
    for (auto [di, i, ci] : 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;
}

时间复杂度:O(n2)其中 n 为区域的数量。
空间复杂度:O(n2)


创作不易,观众老爷们请留步… 动起可爱的小手,点个赞再走呗 (๑◕ܫ←๑)
欢迎大家关注笔者,你的关注是我持续更博的最大动力


原创文章,转载告知,盗版必究



在这里插入图片描述


在这里插入图片描述
♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠

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

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

相关文章

【备战软考(嵌入式系统设计师)】08 - 多媒体技术信息安全

多媒体技术 这内容比较杂&#xff0c;而且跟咱嵌入式的关系不大&#xff0c;但是软考里会考一些&#xff0c;下面我就结合我已经刷过的一千多道往年真题概括总结一下常考的知识点。 媒体分类 首先媒体分为五类&#xff1a; 感觉媒体&#xff0c;让人直接感觉得到的媒体&…

热敏电阻怎么进行性能测试?并以LabVIEW为例进行说明

过程也可用于执行热敏电阻测量。RTD和热敏电阻遵循非常相似的功能原理&#xff0c;测量步骤与下面提供的步骤相同。有关热敏电阻的更多信息&#xff0c;请参阅本文档。 查找设备引脚排列 在连接任何信号之前&#xff0c;请找到您的设备引脚排列。 打开NI MAX并展开设备和接口。…

【Java笔记】多线程:一些有关中断的理解

文章目录 线程中断的作用线程的等待状态WAITINGTIMED_WAITING 线程从等待中恢复 java.lang.Thread中断实现相关方法中断标识interrupted 一些小练习Thread.interrupt() 只唤醒线程并修改中断标识sleep() 清除中断状态标识 Reference 线程中断的作用 线程中断可以使一个线程从等…

关于2024年上半年软考考试批次安排的通告

按照《2024年计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试工作安排及有关事项的通知》&#xff08;计考办〔2024〕1号&#xff09;文件精神&#xff0c;结合各地机位实际&#xff0c;现将2024年上半年计算机软件资格考试有关安排通告如下&#xff1a; 一、考…

鸿蒙内核源码分析(中断管理篇) | 江湖从此不再怕中断

关于中断部分系列篇将用三篇详细说明整个过程. 中断概念篇 中断概念很多&#xff0c;比如中断控制器&#xff0c;中断源&#xff0c;中断向量&#xff0c;中断共享&#xff0c;中断处理程序等等.本篇做一次整理.先了解透概念才好理解中断过程.用海公公打比方说明白中断各个概念…

GORM 与 MySQL(一)

GORM 操作 Mysql 数据库&#xff08;一&#xff09; 温馨提示&#xff1a;以下关于 GORM 的使用&#xff0c;是基于 Gin 框架的基础上&#xff0c;如果之前没有了解过 Gin 可能略微困难。 GORM 介绍 GORM 是 Golang 的一个 orm 框架。简单说&#xff0c;ORM 就是通过实例对象…

京东工业优选商品详情API接口:解锁高效工业采购新体验

京东工业优选的商品详情API接口&#xff0c;允许开发者通过程序化的方式&#xff0c;快速获取平台上的商品详细信息。这些详细信息包括但不限于商品名称、价格、规格、库存、图片、评价等&#xff0c;为企业提供全方位的商品信息查询服务。 二、API接口的主要功能 实时查询&a…

如何查看慢查询

4.2 如何查看慢查询 知道了以上内容之后&#xff0c;那么咱们如何去查看慢查询日志列表呢&#xff1a; slowlog len&#xff1a;查询慢查询日志长度slowlog get [n]&#xff1a;读取n条慢查询日志slowlog reset&#xff1a;清空慢查询列表 5、服务器端优化-命令及安全配置 安…

DDR4 新功能介绍

DDR4(第四代双倍数据率同步动态随机存取内存)相较于其前代DDR3,引入了一些新的功能和改进,这些新功能有助于提高内存的性能、降低功耗以及增强系统的可靠性,包括VPP、DBI(Data Bus Inversion,数据总线翻转)和DMI(与LPDDR4相关)。以下是对这些功能的简要说明: 更高的…

Stable Diffusion:AI绘画的新纪元

摘要&#xff1a; Stable Diffusion&#xff08;SD&#xff09;作为AI绘画领域的新星&#xff0c;以其开源免费、强大的生成能力和高度的自定义性&#xff0c;正在引领一场艺术与技术的革命。本文旨在为读者提供Stable Diffusion的全面介绍&#xff0c;包括其原理、核心组件、安…

嵌入式学习——C语言基础——day15

1. 段错误调试 1.1 打印法 在可能出现错误的位置加入打印,前一句能够打印出来,后一句打印不出来,问题就可以定位到两次打印中间的代码 1.2 gbd调试法 1. 编译代码时加入-g选项 gcc filename.c -g 2. 使用gdb调试生成的代码 gdb a.out 3. gdb调试命令 l 查看…

突然断电,瀚高数据库启动失败

服务器临时断电后&#xff0c;数据库启动不起来 ps -ef|grep postgres 进到数据库的data目录下看下ls 看下 查看临时文件&#xff1a; ls -la /tmp 把这两个5866的文件改个名字张老师 加个bak就行 改完了pg_ctl start起一下

六、文件查找

一、文件查找 1.查找文件内容 ​ 命令&#xff1a;grep keywords /dir_path/filename 2.查找系统命令 ​ 命令&#xff1a;which command 3.查找命令及配置文件位置 ​ 命令&#xff1a;whereis command 4.find查找 ​ find $find_path -name|-type|-perm|-size|-atime…

HarmonyOS实战开发教程-如何开发一个2048游戏

今天为大家分享的是2048小游戏&#xff0c;先看效果图&#xff1a; 这个项目对于新手友友来说可能有一点难度&#xff0c;但是只要坚持看完一定会有收获。因为小编想分享的并不局限于ArkTs语言&#xff0c;而是编程思想。 这个游戏的基本逻辑是初始化一个4乘4的数组&#xff…

跟TED演讲学英文:4 pillars of college success in science by Freeman Hrabowski

4 pillars of college success in science Link: https://www.ted.com/talks/freeman_hrabowski_4_pillars_of_college_success_in_science Speaker: Freeman Hrabowski Date: February 2013 文章目录 4 pillars of college success in scienceIntroductionVocabularyTranscr…

休斯《公共管理导论》第5版/考研真题解析/章节题库

第一部分 考研真题精选 一、概念题二、简答题三、论述题四、案例分析题第二部分 章节题库 第1章 一个变革的时代第2章 政府的角色第3章 传统的公共行政模式第4章 公共管理第5章 公共政策第6章 治 理第7章 问 责第8章 利害关系人和外部环境第9章 管制、外包和公共企…

有哪些软件可以使用云渲染?

随着技术的发展&#xff0c;云渲染已成为动画制作人员与设计师重要的渲染助手。它可结合云端强大的计算机能力&#xff0c;帮助渲染人员高速的完成渲染任务&#xff0c;大幅度节省时间和本地计算资源。它们以用户友好的界面、强大灵活的渲染能力&#xff0c;满足了各类专业渲染…

鸿蒙内核源码分析(进程通讯篇) | 九种进程间通讯方式速揽

进程间为何要通讯 ? 鸿蒙内核默认支持 64个进程和128个任务&#xff0c;由进程池和任务池统一管理.内核设计尽量不去打扰它们&#xff0c;让各自过好各自的日子&#xff0c; 但大家毕竟在一口锅里吃饭&#xff0c; 不可能不与外界联系&#xff0c; 联系就得有渠道&#xff0c…

【进程终止】退出信号 | 三种退出情况 | 如何进程终止returnexit_exit

目录 退出码 退出信号 进程终止情况3 如何进程终止 return退出 库函数exit 系统调用函数_exit ​exit和_exit的区别缓冲区 exit _exit 退出码 回顾上篇 代码跑完&#xff0c;结果正确&#xff08;退出码为0&#xff09;代码跑完&#xff0c;结果不正确&#xff08;退…

选择器、pxcook软件、盒子模型

结构伪类选择器 定义&#xff1a;根据结构的元素关系来查找元素。 <title>Document</title><style>li:first-child{color:aqua ;}li:last-child{color: aqua;}li:nth-child(3){color: aqua;}</style> </head> <body><ul><li>…