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

news2024/11/18 5:43:41

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员

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

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

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

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

文章目录

    • 🧷 01.获取公共链表片段
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 🔗 02.矿车运输成本
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 📎 03.最优索引选择
      • 题目描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 写在最后
    • 📧 清隆这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下 清隆领取,会在飞书进行同步的跟新。

🧷 01.获取公共链表片段

问题描述

给定两个链表,找出它们中相同节点值的最大连续片段。如果没有公共片段,返回 -1。

输入格式

第一行表示链表 1,第二行表示链表 2。每条链表长度不超过 20 个元素,链表不会为空。

输出格式

输出两个链表中相同节点值的最大连续片段。如果没有公共片段,返回 -1。

样例输入

1 2 2 3 9 1 5
9 2 2 3 6 8

样例输出

2 2 3

数据范围

链表长度不超过 20 个元素。

题解

本题数据范围比较小,怎么做都可以,使用双重循环遍历两个链表,并在找到相同节点时,继续向后比较,直到不相同为止。记录最长的公共片段并输出。

参考代码

  • Python
a, b = list(map(int, input().split())), list(map(int, input().split()))
n, m = len(a), len(b)
max_len = 0
res = []
for i in range(n):
    for j in range(m):
        if a[i] == b[j]:
            z = i
            for k in range(j, m):
                if b[k] != a[z]:
                    break
                z += 1
            if z - i > max_len:
                max_len = z - i
                res = a[i:z]
print(*res if res else -1)
  • Java
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        List<Integer> a = new ArrayList<>();
        List<Integer> b = new ArrayList<>();
        
        while (sc.hasNextInt()) {
            a.add(sc.nextInt());
        }
        sc.nextLine();
        while (sc.hasNextInt()) {
            b.add(sc.nextInt());
        }
        
        int n = a.size();
        int m = b.size();
        int maxLen = 0;
        List<Integer> res = new ArrayList<>();
        
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (a.get(i).equals(b.get(j))) {
                    int z = i;
                    int k = j;
                    while (k < m && z < n && a.get(z).equals(b.get(k))) {
                        z++;
                        k++;
                    }
                    if (z - i > maxLen) {
                        maxLen = z - i;
                        res = a.subList(i, z);
                    }
                }
            }
        }
        
        if (res.isEmpty()) {
            System.out.println(-1);
        } else {
            for (int num : res) {
                System.out.print(num + " ");
            }
        }
    }
}
  • Cpp
#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> a, b;
    int num;
    while (cin >> num) {
        a.push_back(num);
        if (cin.get() == '\n') break;
    }
    while (cin >> num) {
        b.push_back(num);
        if (cin.get() == '\n') break;
    }
    
    int n = a.size(), m = b.size();
    int max_len = 0;
    vector<int> res;
    
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < m; ++j) {
            if (a[i] == b[j]) {
                int z = i;
                int k = j;
                while (k < m && z < n && a[z] == b[k]) {
                    ++z;
                    ++k;
                }
                if (z - i > max_len) {
                    max_len = z - i;
                    res.assign(a.begin() + i, a.begin() + z);
                }
            }
        }
    }
    
    if (res.empty()) {
        cout << -1 << endl;
    } else {
        for (int num : res) {
            cout << num << " ";
        }
    }
    
    return 0;
}

🔗 02.矿车运输成本

问题描述

露天矿采矿作业的特点是规模大,矿石和废料的移动量达到百万吨,运输成本开销较大,需要寻求一种最优的运输路径节省成本。

已知矿场可以划分成 N × M N \times M N×M 的网格图,每个网格存在地形的差异,因此通过不同网格时,成本开销存在差异。

网格有以下 5 种类型:

  1. 标志为 ‘S’ 的网格为运输起点;
  2. 标志为 ‘E’ 的网格为运输终点;
  3. 标志为 ‘B’ 的网格为阻塞点,不允许通行;
  4. 标志为 ‘C’ 的网格为检查点,矿车在运输路径中,至少需要进入一次检查点;
  5. 标志为数字的网格,其数字表示经过该网格的成本开销。

运输矿车只能上下左右 4 个方向运行,不允许斜对角进入其他网格。必要时可重复进入网格。请根据输入的网格图,寻求一条从 ‘S’ 网格到 ‘E’ 网格,并且至少经过一次检查点的最低成本运输路径,并输出其成本开销。

输入格式

第一行包含两个正整数 N N N M M M,表示网格图的行数和列数,使用空格隔开。

接下来的 N N N 行,每行包含 M M M 个元素,元素可以为 ‘S’,‘E’,‘B’,‘C’ 或者数字 [0, 100],并且有且仅有一个 ‘S’ 和一个 ‘E’,同时存在一个或者多个 ‘C’,并依次使用空格隔开。

输出格式

输出运输最低成本开销。如果不存在可达通路,请输出 -1。

样例输入

3 3
S 4 5
7 B 3
C 9 E

样例输出

16

数据范围

  • 3 ≤ N ≤ 200 3 \leq N \leq 200 3N200
  • 3 ≤ M ≤ 200 3 \leq M \leq 200 3M200

题解

为了找到从起点 ‘S’ 到终点 ‘E’ 并且至少经过一次检查点 ‘C’ 的最低成本路径,可以跑两次 dijkstra。首先从起点 ‘S’ 到每个检查点 ‘C’ 计算最短路径,然后从每个检查点 ‘C’ 到终点 ‘E’ 计算最短路径,最后取所有路径中成本最小的路径即可。

参考代码

  • Python
import heapq

def bfs(grid, start, end, n, m):
    dx = [-1, 0, 1, 0]
    dy = [0, 1, 0, -1]
    pq = [(0, start[0], start[1])]
    dist = [[float('inf')] * m for _ in range(n)]
    dist[start[0]][start[1]] = 0
    
    while pq:
        d, x, y = heapq.heappop(pq)
        if (x, y) == end:
            return d
        if d > dist[x][y]:
            continue
        for i in range(4):
            nx, ny = x + dx[i], y + dy[i]
            if 0 <= nx < n and 0 <= ny < m and grid[nx][ny] != 'B':
                cost = 0 if grid[nx][ny] in 'SEC' else int(grid[nx][ny])
                if dist[nx][ny] > dist[x][y] + cost:
                    dist[nx][ny] = dist[x][y] + cost
                    heapq.heappush(pq, (dist[nx][ny], nx, ny))
    return float('inf')

def main():
    n, m = map(int, input().split())
    grid = [input().split() for _ in range(n)]
    start, end, checkpoints = None, None, []
    
    for i in range(n):
        for j in range(m):
            if grid[i][j] == 'S':
                start = (i, j)
            elif grid[i][j] == 'E':
                end = (i, j)
            elif grid[i][j] == 'C':
                checkpoints.append((i, j))
    
    min_cost = float('inf')
    for checkpoint in checkpoints:
        cost = bfs(grid, start, checkpoint, n, m) + bfs(grid, checkpoint, end, n, m)
        min_cost = min(min_cost, cost)
    
    print(min_cost if min_cost != float('inf') else -1)

if __name__ == "__main__":
    main()
  • Java
import java.util.*;

public class Main {
    static int[] dx = {-1, 0, 1, 0};
    static int[] dy = {0, 1, 0, -1};

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        sc.nextLine();
        String[][] grid = new String[n][m];
        int[] start = new int[2];
        int[] end = new int[2];
        List<int[]> checkpoints = new ArrayList<>();

        for (int i = 0; i < n; i++) {
            grid[i] = sc.nextLine().split(" ");
            for (int j = 0; j < m; j++) {
                if (grid[i][j].equals("S")) {
                    start[0] = i;
                    start[1] = j;
                } else if (grid[i][j].equals("E")) {
                    end[0] = i;
                    end[1] = j;
                } else if (grid[i][j].equals("C")) {
                    checkpoints.add(new int[]{i, j});
                }
            }
        }

        int minCost = Integer.MAX_VALUE;
        for (int[] checkpoint : checkpoints) {
            int cost = bfs(grid, start, checkpoint, n, m) + bfs(grid, checkpoint, end, n, m);
            minCost = Math.min(minCost, cost);
        }

        System.out.println(minCost == Integer.MAX_VALUE ? -1 : minCost);
    }

    private static int bfs(String[][] grid, int[] start, int[] end, int n, int m) {
        PriorityQueue<int[]> pq = new PriorityQueue<>(Comparator.comparingInt(a -> a[0]));
        pq.add(new int[]{0, start[0], start[1]});
        int[][] dist = new int[n][m];
        for (int[] row : dist) Arrays.fill(row, Integer.MAX_VALUE);
        dist[start[0]][start[1]] = 0;

        while (!pq.isEmpty()) {
            int[] curr = pq.poll();
            int d = curr[0], x = curr[1], y = curr[2];
            if (x == end[0] && y == end[1]) return d;
            if (d > dist[x][y]) continue;

            for (int i = 0; i < 4; i++) {
                int nx = x + dx[i], ny = y + dy[i];
                if (nx >= 0 && nx < n && ny >= 0 && ny < m && !grid[nx][ny].equals("B")) {
                    int cost = grid[nx][ny].matches("\\d") ? Integer.parseInt(grid[nx][ny]) : 0;
                    if (dist[nx][ny] > dist[x][y] + cost) {
                        dist[nx][ny] = dist[x][y] + cost;
                        pq.add(new int[]{dist[nx][ny], nx, ny});
                    }
                }
            }
        }
        return Integer.MAX_VALUE;
    }
}
  • Cpp
#include <iostream>
#include <vector>
#include <queue>
#include <array>
#include <string>
#include <limits>

using namespace std;

int dx[] = {-1, 0, 1, 0};
int dy[] = {0, 1, 0, -1};

int bfs(const vector<vector<string>>& grid, pair<int, int> start, pair<int, int> end, int n, int m) {
    priority_queue<array<int, 3>, vector<array<int, 3>>, greater<array<int, 3>>> pq;
    pq.push({0, start.first, start.second});
    vector<vector<int>> dist(n, vector<int>(m, numeric_limits<int>::max()));
    dist[start.first][start.second] = 0;

    while (!pq.empty()) {
        auto [d, x, y] = pq.top();
        pq.pop();
        if (make_pair(x, y) == end) return d;
        if (d > dist[x][y]) continue;

        for (int i = 0; i < 4; ++i) {
            int nx = x + dx[i], ny = y + dy[i];
            if (nx >= 0 && nx < n && ny >= 0 && ny < m && grid[nx][ny] != "B") {
                int cost = (grid[nx][ny] != "S" && grid[nx][ny] != "E" && grid[nx][ny] != "C") ? stoi(grid[nx][ny]) : 0;
                if (dist[nx][ny] > dist[x][y] + cost) {
                    dist[nx][ny] = dist[x][y] + cost;
                    pq.push({dist[nx][ny], nx, ny});
                }
            }
        }
    }
    return numeric_limits<int>::max();
}

int main() {
    int n, m;
    cin >> n >> m;
    vector<vector<string>> grid(n, vector<string>(m));
    pair<int, int> start, end;
    vector<pair<int, int>> checkpoints;

    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < m; ++j) {
            cin >> grid[i][j];
            if (grid[i][j] == "S") start = {i, j};
            else if (grid[i][j] == "E") end = {i, j};
            else if (grid[i][j] == "C") checkpoints.push_back({i, j});
        }
    }

    int minCost = numeric_limits<int>::max();
    for (const auto& checkpoint : checkpoints) {
        int cost = bfs(grid, start, checkpoint, n, m) + bfs(grid, checkpoint, end, n, m);
        minCost = min(minCost, cost);
    }

    cout << (minCost == numeric_limits<int>::max() ? -1 : minCost) << endl;
    return 0;
}

📎 03.最优索引选择

题目描述

K小姐是一名数据库管理员,最近她接到了一个新的任务。公司的数据库系统有 N N N 个表,每个表都可以建立索引以提高查询效率,但建立索引也会占用一定的存储空间。通过对业务查询的分析,K小姐得到了每个表建立索引的查询效率提升值和存储空间开销。

为了方便管理,K小姐将所有的索引分成了 M M M 组,并且这些索引组之间存在一定的依赖关系和互斥关系:

  1. 依赖关系:如果要选择一个索引组中的索引,必须先选择它的父索引组中的至少一个索引。
  2. 互斥关系:每条从根节点到叶子节点的路径都代表一个互斥关系,即不能同时选择两个不同路径上的索引。
  3. 组内限制:对于每个索引组,必须至少选择其中的一个索引。

K小姐希望在总存储空间开销不超过 B B B 的情况下,选择一些索引使得总的查询效率提升值最大。你能帮助K小姐完成这个任务吗?

输入格式

第一行包含三个正整数 B B B, N N N, M M M,分别表示总存储空间开销上限、表的数量和索引组的数量。

接下来 N N N 行,每行包含三个正整数 G i G_i Gi, V i V_i Vi, C i C_i Ci,分别表示第 i i i 个表的索引所属的组号、查询效率提升值和存储空间开销。

最后一行包含 M M M 个整数,第 i i i 个整数 F i F_i Fi 表示第 i i i 个索引组的父索引组编号。如果 F i = − 1 F_i=-1 Fi=1,则表示第 i i i 个索引组没有父索引组,即它是根索引组。

输出格式

输出一个整数,表示在满足总存储空间开销上限的情况下,可以获得的最大查询效率提升值。

样例输入

40 4 2
0 10 10
1 30 10
0 5 20
1 60 40
-1 0

样例输出

45

数据范围

  • 1 ≤ B ≤ 5000 1 \le B \le 5000 1B5000
  • 1 ≤ N ≤ 10000 1 \le N \le 10000 1N10000
  • 1 ≤ M ≤ 100 1 \le M \le 100 1M100
  • 0 ≤ G i < M 0 \le G_i < M 0Gi<M
  • 1 ≤ V i , C i ≤ 100 1 \le V_i,C_i \le 100 1Vi,Ci100

题解

本题可以使用树形DP来解决。设 d p [ i ] [ j ] dp[i][j] dp[i][j] 表示以第 i i i 个索引组为根,总存储空间开销不超过 j j j 的情况下,可以获得的最大查询效率提升值。

对于每个索引组,我们首先需要在组内至少选择一个索引。我们可以使用01背包的方法,计算出在组内选择任意个索引的最优解,存储在数组 f [ j ] f[j] f[j] 中。

然后,我们再考虑当前索引组的子索引组。对于每个子索引组,我们可以枚举当前索引组选择的存储空间开销 j ′ j' j,然后将子索引组的最优解 d p [ s o n ] [ j − j ′ ] dp[son][j-j'] dp[son][jj] 加到 f [ j ′ ] f[j'] f[j] 上。这样,我们就可以得到以当前索引组为根,考虑了子索引组的最优解。

最后,根索引组的 d p [ r o o t ] [ B ] dp[root][B] dp[root][B] 就是整个问题的最优解。

时间复杂度 O ( B × N ) O(B \times N) O(B×N),空间复杂度 O ( B × M ) O(B \times M) O(B×M)

参考代码

  • Python
B, N, M = map(int, input().split())
indexes = [[] for _ in range(M)]
for _ in range(N):
    g, v, c = map(int, input().split())
    indexes[g].append((v, c))

father = list(map(int, input().split()))
graph = [[] for _ in range(M)]
root = 0
for i in range(M):
    if father[i] == -1:
        root = i
    else:
        graph[father[i]].append(i)

dp = [[0] * (B + 1) for _ in range(M)]

def dfs(u, limit):
    f = [0] * (limit + 1)
    for v, c in indexes[u]:
        for j in range(limit, c - 1, -1):
            f[j] = max(f[j], f[j - c] + v)
    
    dp[u][limit] = f[limit]
    for son in graph[u]:
        cur = 0
        for j in range(limit):
            dfs(son, limit - j)
            if f[j] != 0:
                cur = max(cur, f[j] + dp[son][limit - j])
        dp[u][limit] = max(dp[u][limit], cur)

dfs(root, B)
print(dp[root][B])
  • Java
import java.io.*;
import java.util.*;

public class Main {
    int B, N, M;
    int[][] indexes;
    int[] father;
    List<Integer>[] graph;
    int[][] dp;

    public static void main(String[] args) throws IOException {
        new Main().run();
    }

    void run() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] ss = br.readLine().split(" ");
        B = Integer.parseInt(ss[0]);
        N = Integer.parseInt(ss[1]);
        M = Integer.parseInt(ss[2]);

        indexes = new int[M][];
        for (int i = 0; i < M; i++) {
            indexes[i] = new int[0];
        }
        for (int i = 0; i < N; i++) {
            ss = br.readLine().split(" ");
            int g = Integer.parseInt(ss[0]);
            int v = Integer.parseInt(ss[1]);
            int c = Integer.parseInt(ss[2]);
            indexes[g] = Arrays.copyOf(indexes[g], indexes[g].length + 2);
            indexes[g][indexes[g].length - 2] = v;
            indexes[g][indexes[g].length - 1] = c;
        }

        father = new int[M];
        ss = br.readLine().split(" ");
        for (int i = 0; i < M; i++) {
            father[i] = Integer.parseInt(ss[i]);
        }

        graph = new List[M];
        for (int i = 0; i < M; i++) {
            graph[i] = new ArrayList<>();
        }
        int root = 0;
        for (int i = 0; i < M; i++) {
            if (father[i] == -1) {
                root = i;
            } else {
                graph[father[i]].add(i);
            }
        }

        dp = new int[M][B + 1];
        dfs(root, B);
        System.out.println(dp[root][B]);
    }

    void dfs(int u, int limit) {
        int[] f = new int[limit + 1];
        for (int i = 0; i < indexes[u].length; i += 2) {
            int v = indexes[u][i];
            int c = indexes[u][i + 1];
            for (int j = limit; j >= c; j--) {
                f[j] = Math.max(f[j], f[j - c] + v);
            }
        }

        dp[u][limit] = f[limit];
        for (int son : graph[u]) {
            int cur = 0;
            for (int j = 0; j < limit; j++) {
                dfs(son, limit - j);
                if (f[j] != 0) {
                    cur = Math.max(cur, f[j] + dp[son][limit - j]);
                }
            }
            dp[u][limit] = Math.max(dp[u][limit], cur);
        }
    }
}
  • Cpp
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

const int MAXB = 5000;
const int MAXM = 100;

int B, N, M;
vector<pair<int, int>> indexes[MAXM];
vector<int> graph[MAXM];
int father[MAXM];
int dp[MAXM][MAXB + 1];

void dfs(int u, int limit) {
    vector<int> f(limit + 1);
    for (auto& p : indexes[u]) {
        int v = p.first, c = p.second;
        for (int j = limit; j >= c; j--) {
            f[j] = max(f[j], f[j - c] + v);
        }
    }

    dp[u][limit] = f[limit];
    for (int son : graph[u]) {
        int cur = 0;
        for (int j = 0; j < limit; j++) {
            dfs(son, limit - j);
            if (f[j] != 0) {
                cur = max(cur, f[j] + dp[son][limit - j]);
            }
        }
        dp[u][limit] = max(dp[u][limit], cur);
    }
}

int main() {
    cin >> B >> N >> M;
    for (int i = 0; i < N; i++) {
        int g, v, c;
        cin >> g >> v >> c;
        indexes[g].emplace_back(v, c);
    }

    int root = 0;
    for (int i = 0; i < M; i++) {
        cin >> father[i];
        if (father[i] == -1) {
            root = i;
        } else {
            graph[father[i]].push_back(i);
        }
    }

    dfs(root, B);
    cout << dp[root][B] << endl;

    return 0;
}

写在最后

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

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

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

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

相关文章

vue三级联动组件

背景 项目中经常出现三级下拉框组件的要求&#xff0c;这种组件其中一级发生变化&#xff0c;子级的组件就会发生变化如果这一个组件&#xff0c;单独作为搜索条件使用&#xff0c;很好写&#xff0c;同时作为搜索条件和form回写组件&#xff0c;回显就比较困难 子组件代码 将与…

2.搜索游戏中不可见的数据坐标

内容参考于&#xff1a; 易道云信息技术研究院VIP课 首先一般游戏在设计时会把人物相关的属性放到一起&#xff0c;在 1.搜索游戏中的数据与环境搭建 里也能证实&#xff0c;角色的等级、攻击力、生命值、经验等它们的内存地址都是相差4字节也就是用int类型存储的&#xff0c;…

简单的TCP网络程序:英译汉服务器

一、服务器的初始化 下面介绍程序中用到的socket API,这些函数都在sys/socket.h中。 1.创建套接字 socket()&#xff1a; ⭐参数介绍&#xff1a; socket()打开一个网络通讯端口,如果成功的话,就像open()一样返回一个文件描述符;应用程序可以像读写文件一样用read/write在网…

AIGC实践|探索用AI实现小游戏开发全流程

前言&#xff1a; 在上一篇中&#xff0c;我们已经深入探讨了AI工具在动态绘本创作中的应用&#xff0c;体验了AI在创意内容生成上的魅力。本篇文章将带领大家进入一个全新的探索领域——游戏开发。 本文将详细介绍如何利用AI工具探索实现游戏开发的全过程&#xff0c;从概念…

提升代码简洁,MVEL 表达式和责任链设计模式应用实践

导读 本文主要讲解了MVEL表达式和责任链设计模式相结合一起的消息处理解决方案设计、解耦消息处理节点以及方便代码维护扩展。通过“订单拆单消息”的接入作为具体实践案例&#xff0c;简要阐述了MVEL表达式和Apache Chain职责链设计模式应用场景。希望通过本文&#xff0c;读…

【C/C++笔试练习】TCP、IP广播、ARP协议、IP路由器、MAC协议、三次握手、TCP/IP、子网划分年、会抽奖、抄送列表

文章目录 C/C笔试练习选择部分&#xff08;1&#xff09;TCP&#xff08;2&#xff09;IP广播&#xff08;3&#xff09;ARP协议&#xff08;4&#xff09;IP路由器&#xff08;5&#xff09;MAC协议&#xff08;6&#xff09;三次握手&#xff08;7&#xff09;TCP/IP&#xf…

Vue 3入门指南

title: Vue 3入门指南 date: 2024/5/23 19:37:34 updated: 2024/5/23 19:37:34 categories: 前端开发 tags: 框架对比环境搭建基础语法组件开发响应式系统状态管理路由配置 第1章&#xff1a;Vue 3简介 1.1 Vue.js的历史与发展 Vue.js由前谷歌工程师尤雨溪&#xff08;Eva…

JVM学习-垃圾回收(三)

System.gc 通过System.gc()或Runtime.getRuntime().gc()的调用&#xff0c;会显示触发Full GC&#xff0c;同时对老年代和方法区进行回收&#xff0c;尝试释放被丢弃对象占用的内存然后System.gc()调用附带一个免责声明&#xff0c;无法保证对垃圾收集器的调用JVM实现者可以通…

第3天 Web源码拓展_小迪网络安全笔记

1.关于web源码目录结构 #数据库配置文件 后台目录 模板目录 数据库目录 1.1数据库配置文件: 1.1就拿wordpress来说,先到官网下载源码:Download – WordPress.org,解压源码之后: 2.2找到目录下名为 wp-config-sample.php的文件,这就是数据库配置文件: 设想: 我们在渗透…

K8S集群再搭建

前述&#xff1a;总体是非常简单的&#xff0c;就是过程繁琐&#xff0c;不过都是些重复的操作 master成员: [controller-manager, scheduler, api-server, etcd, proxy,kubelet] node成员: [kubelet, proxy] master要修改的配置文件有 1. vi /etc/etcd/etcd.conf # 数…

【Linux取经路】一个简单的日志模块

文章目录 一、可变参数的使用二、Log2.1 日志打印2.1.1 时间获取2.1.2 日志分块打印 2.2 打印模式选择2.3 Log 使用样例2.4 Log 完整源码 三、结语 一、可变参数的使用 int sum(int n, ...) {va_list s; // va_list 本质上就是一个指针va_start(s, n); int sum 0;while(n){su…

vue3 + antd-vue@4 a-table单元格合并,rowSpan(行合并),colSpan(列合并)详解, 表头合并详解, 表头自定义详解

一、解释 1、rowSpan 1&#xff09;、行合并 2&#xff09;、当为0时&#xff1a;去掉边框 3&#xff09;、当为1时&#xff1a;不合并 4&#xff09;、大于1的x时&#xff1a;包含当前单元格行合并x个单元格 2、colSpan 1&#xff09;、列合并 2&#xff09;、当为0时&#xf…

反序列化漏洞(JBoss、apache log4、apache Shiro、JWT)Weblogic未授权访问、代码执行、任意上传

1.1什么是反序列化 就是把一个对象变成可以传输的字符串&#xff0c;目的就是为了方便传输。假设&#xff0c;我们写了一个class&#xff0c;这个class里面存有一些变量。当这个class被实例化了之后&#xff0c;在使用过程中里面的一些变量值发生了改变。以后在某些时候还会用到…

CTF网络安全大赛简单web题目:eval

题目来源于&#xff1a;bugku 题目难度&#xff1a;简单 一道简单web的题目 题目源代码&#xff1a; <?phpinclude "flag.php";$a $_REQUEST[hello];eval( "var_dump($a);");show_source(__FILE__); ?> 这个PHP脚本有几个关键部分&#xff0c;但…

Salesforce ADFS SSO 配置

1.set up 中 Certificate and Key Management创建认证 2.setup中Single Sign-On Settings新建SSO&#xff0c;输入必填 3.setup中My Domain Settings设置登录跳转&#xff1a; 最后将Single Sign-On Settings中metadata.xml下载下来给ADFS端使用&#xff1a; 最后效果&#xff…

快手二面准备【面试准备】

快手二面准备【面试准备】 前言版权快手二面准备秋招一面中的问题实习一面中的问题计算机网络和操作系统论坛项目登录注册ThreadLocal代替session存储用户秒杀项目登录注册->阿里验证码->rpcsession为什么改为token实现&#xff0c;redis存储用户信息由binlog的用法->…

新火种AI|净利润上升628%,英伟达财报说明AI热潮还将持续

作者&#xff1a;一号 编辑&#xff1a;美美 AI大潮仍未放缓&#xff0c;英伟达再次超越预期。 今天凌晨&#xff0c;全球AI算力芯片龙头&#xff0c;被称为“AI时代卖铲人”的英伟达&#xff0c;正式公布了截至2024年4月28日的2025财年第一财季财报&#xff0c;其中第一财季…

【九十三】【算法分析与设计】719. 找出第 K 小的数对距离,N 台电脑的最长时间,二分答案法

719. 找出第 K 小的数对距离 - 力扣&#xff08;LeetCode&#xff09; 数对 (a,b) 由整数 a 和 b 组成&#xff0c;其数对距离定义为 a 和 b 的绝对差值。 给你一个整数数组 nums 和一个整数 k &#xff0c;数对由 nums[i] 和 nums[j] 组成且满足 0 < i < j < nums.le…

uniapp星空效果

uniapp星空效果 背景实现思路代码实现尾巴 背景 之前在网上看到过一个视频&#xff0c;使用纯css实现过一个星空效果。具体出处找不到了&#xff0c;我们按照他那个思路来实现一个类似的效果&#xff0c;还是先上一张图镇楼&#xff1a; 实现思路 首先我们这个效果使用的是…

es数据备份和迁移Elasticsearch

Elasticsearch数据备份与恢复 前提 # 注意&#xff1a; 1.在进行本地备份时使用--type需要备份索引和数据&#xff08;mapping,data&#xff09; 2.在将数据备份到另外一台ES节点时需要比本地备份多备份一种数据类型&#xff08;analyzer,mapping,data,template&#xff09; …