華為OD機試真題——荒島求生(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳實現

在這里插入圖片描述

2025 A卷 200分 題型

本專欄內全部題目均提供Java、python、JavaScript、C、C++、GO六種語言的最佳實現方式;
并且每種語言均涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、3個測試用例以及綜合分析;
本文收錄于專欄:《2025華為OD真題目錄+全流程解析+備考攻略+經驗分享》

華為OD機試真題《荒島求生》:


文章快捷目錄

題目描述及說明

Java

python

JavaScript

C

GO

更多內容


題目名稱:荒島求生


  • 知識點:棧操作(貪心算法)、邏輯處理
  • 時間限制:1秒
  • 空間限制:256MB
  • 限定語言:不限

題目描述

一個荒島上有若干人,島上只有一條路通往島嶼兩端的港口(左港口和右港口)。所有人以相同速度逃生,方向分為向左(負數)或向右(正數),其絕對值表示體力值。若兩人相遇(即一個向右的人與一個向左的人路徑重疊),則進行決斗:

  • 體力值大的一方存活,但體力值減少對方體力值的絕對值;
  • 若體力值相同,則同歸于盡(雙方均淘汰)。
    最終存活的人可從兩端港口逃生,求逃生總人數。

輸入描述
一行非零整數,用空格分隔,正數表示向右逃生,負數表示向左逃生。數組長度不超過30000。

輸出描述
一個整數,表示最終逃生人數。

示例
輸入:5 10 8 -8 -5
輸出:2
說明:

  • 8-8同歸于盡;
  • 10擊敗-5后剩余體力5
  • 最終存活[5, 5],均從右港口逃生,輸出2

Java

問題分析

人們在一個荒島逃生,方向分為左右(正負),體力值由絕對值表示。當兩人相遇(向右遇到向左)時,體力大者存活但減少對方體力值,相等則同歸于盡。最終存活的人從兩端港口逃生,求總人數。


解題思路

  1. 棧處理向右的人:向右的人壓入棧,向左的人與棧頂決斗。
  2. 決斗規則
    • 棧頂體力大:棧頂減少對方體力,存活。
    • 相等:棧頂彈出,同歸于盡。
    • 棧頂體力小:彈出棧頂,繼續與下一個棧頂決斗。
  3. 存活統計:棧內剩余為右港口逃生人數,未擊敗的向左人數為左港口逃生人數。

代碼實現

import java.util.ArrayDeque;
import java.util.Deque;public class Main {public static void main(String[] args) {// 示例測試int[] example1 = {5, 10, 8, -8, -5};System.out.println(escapeCount(example1)); // 輸出2int[] example2 = {3, -5};System.out.println(escapeCount(example2)); // 輸出1int[] example3 = {-3, -4, 2};System.out.println(escapeCount(example3)); // 輸出2}public static int escapeCount(int[] people) {Deque<Integer> stack = new ArrayDeque<>(); // 保存向右逃生的人int leftSurvivors = 0; // 左港口逃生人數for (int num : people) {if (num > 0) {stack.push(num); // 向右的人直接入棧} else {int k = -num; // 當前向左逃生者的體力while (k > 0) {if (stack.isEmpty()) {leftSurvivors++; // 棧空則左港口存活+1break;}int t = stack.pop(); // 取出棧頂向右的人if (t > k) {stack.push(t - k); // 棧頂體力減少k,存活k = 0; // 當前向左者被擊敗} else if (t == k) {k = 0; // 同歸于盡} else {k -= t; // 繼續與下一個棧頂決斗}}}}return stack.size() + leftSurvivors;}
}

代碼詳解

  1. 棧初始化Deque<Integer> stack保存向右逃生的人。
  2. 遍歷處理每個人
    • 向右的人:直接壓入棧。
    • 向左的人
      • k為體力絕對值,循環處理棧頂元素。
      • 棧空則左港口存活+1。
      • 棧頂大于k:棧頂存活,體力減少k
      • 棧頂等于k:同歸于盡。
      • 棧頂小于k:繼續處理下一個棧頂。
  3. 返回結果:棧的大小(右港口)加左港口存活人數。

示例測試

  1. 示例1[5,10,8,-8,-5]

    • 8-8同歸于盡,10擊敗-5變為5
    • 右港口存活[5,5],輸出2
  2. 示例2[3,-5]

    • 3-5擊敗,左港口存活1,輸出1
  3. 示例3[-3,-4,2]

    • -3-4左港口存活,2右港口存活,輸出3

綜合分析

  1. 時間復雜度:O(N),每個元素最多入棧和出棧一次。
  2. 空間復雜度:O(N),棧空間最壞保存所有向右的人。
  3. 正確性
    • 棧處理保證所有相遇的向右和向左的人正確決斗。
    • 左港口存活人數統計未被擊敗的向左者。
  4. 適用性:高效處理大規模數據(3萬元素)。

python

問題分析

人們在荒島上逃生,方向分為左右(正數為右,負數為左),體力值為絕對值。相遇時決斗規則:體力大者存活并減少對方體力值,相等則同歸于盡。求最終存活人數。


解題思路

  1. 棧處理向右的人:向右的人存入棧中。
  2. 處理向左的人:向左的人依次與棧頂元素決斗,直到擊敗對方或棧空。
  3. 存活統計:棧內剩余為右港口逃生者,未被擊敗的向左人數為左港口逃生者。

代碼實現

def escape_count(people):stack = []  # 保存向右逃生的人left_survivors = 0  # 左港口逃生人數for num in people:if num > 0:stack.append(num)  # 向右的人直接入棧else:k = -num  # 當前向左者的體力值while k > 0:if not stack:  # 棧空則左港口存活+1left_survivors += 1breakt = stack.pop()  # 取出棧頂向右的人if t > k:stack.append(t - k)  # 棧頂體力減少k,存活k = 0  # 當前向左者被擊敗elif t == k:k = 0  # 同歸于盡else:k -= t  # 繼續與下一個棧頂決斗return len(stack) + left_survivors# 示例測試
example1 = [5, 10, 8, -8, -5]
print(escape_count(example1))  # 輸出2example2 = [3, -5]
print(escape_count(example2))  # 輸出1example3 = [-3, -4, 2]
print(escape_count(example3))  # 輸出2

代碼詳解

  1. 棧初始化stack保存所有向右逃生的人。
  2. 遍歷處理每個人
    • 向右的人:直接加入棧中(stack.append(num))。
    • 向左的人
      • 取絕對值k表示體力值。
      • 循環處理棧頂元素:
        • 棧空:左港口存活+1,退出循環。
        • 棧頂體力更大:棧頂存活,體力減少k,當前向左者被擊敗(k=0)。
        • 體力相等:同歸于盡(k=0)。
        • 棧頂體力更小:繼續處理下一個棧頂(k -= t)。
  3. 返回結果:棧長度(右港口存活) + 左港口存活人數。

示例測試

  1. 示例1[5, 10, 8, -8, -5]

    • 8-8同歸于盡。
    • 10擊敗-5后變為5
    • 右港口存活[5,5],總人數2。
  2. 示例2[3, -5]

    • 3-5擊敗,左港口存活1。
  3. 示例3[-3, -4, 2]

    • -3-4左港口存活,2右港口存活,總人數2。

綜合分析

  1. 時間復雜度:O(N),每個元素最多入棧和出棧一次。
  2. 空間復雜度:O(N),棧空間最壞保存所有向右的人。
  3. 正確性:嚴格處理決斗規則,確保棧和左港口人數正確統計。
  4. 適用性:高效處理大規模數據(如3萬元素)。

JavaScript

問題分析

人們在荒島上逃生,方向分為左右(正數右,負數左),體力值為絕對值。相遇時決斗規則:體力大者存活并減少對方體力值,相等則同歸于盡。求最終存活人數。


解題思路

  1. 棧處理向右的人:向右的人存入棧中。
  2. 處理向左的人:向左的人依次與棧頂元素決斗,直到擊敗對方或棧空。
  3. 存活統計:棧內剩余為右港口逃生者,未被擊敗的向左人數為左港口逃生者。

代碼實現

function escapeCount(people) {let stack = [];       // 保存向右逃生的人let leftSurvivors = 0; // 左港口逃生人數for (const num of people) {if (num > 0) {stack.push(num); // 向右的人直接入棧} else {let k = -num;   // 當前向左者的體力值while (k > 0) {if (stack.length === 0) { // 棧空則左港口存活+1leftSurvivors++;break;}const t = stack.pop(); // 取出棧頂向右的人if (t > k) {stack.push(t - k); // 棧頂體力減少k,存活k = 0;            // 當前向左者被擊敗} else if (t === k) {k = 0;            // 同歸于盡} else {k -= t;           // 繼續與下一個棧頂決斗}}}}return stack.length + leftSurvivors;
}// 示例測試
const example1 = [5, 10, 8, -8, -5];
console.log(escapeCount(example1)); // 輸出2const example2 = [3, -5];
console.log(escapeCount(example2)); // 輸出1const example3 = [-3, -4, 2];
console.log(escapeCount(example3)); // 輸出2

代碼詳解

  1. 棧初始化stack數組保存向右逃生的人。
  2. 遍歷處理每個人
    • 向右的人:直接壓入棧(stack.push(num))。
    • 向左的人
      • 取絕對值k表示體力值。
      • 循環處理棧頂元素:
        • 棧空:左港口存活+1。
        • 棧頂體力更大:棧頂存活,體力減少k
        • 體力相等:同歸于盡。
        • 棧頂體力更小:繼續處理下一個棧頂(k -= t)。
  3. 返回結果:棧長度(右港口存活人數) + 左港口存活人數。

示例測試

  1. 示例1[5, 10, 8, -8, -5]

    • 8-8同歸于盡。
    • 10擊敗-5后變為5
    • 右港口存活[5,5],總人數2。
  2. 示例2[3, -5]

    • 3-5擊敗,左港口存活1。
  3. 示例3[-3, -4, 2]

    • -3-4左港口存活,2右港口存活,總人數3。

綜合分析

  1. 時間復雜度:O(N),每個元素最多入棧和出棧一次。
  2. 空間復雜度:O(N),棧空間最壞保存所有向右的人。
  3. 正確性:嚴格處理決斗規則,確保棧和左港口人數正確統計。
  4. 適用性:高效處理大規模數據(如3萬元素)。

C++

問題分析

人們在荒島上逃生,方向分為左右(正數右,負數左),體力值為絕對值。相遇時決斗規則:體力大者存活并減少對方體力值,相等則同歸于盡。求最終存活人數。


解題思路

  1. 棧處理向右的人:向右的人存入棧中。
  2. 處理向左的人:向左的人依次與棧頂元素決斗,直到擊敗對方或棧空。
  3. 存活統計:棧內剩余為右港口逃生者,未被擊敗的向左人數為左港口逃生者。

代碼實現

#include <iostream>
#include <vector>
using namespace std;int escapeCount(vector<int>& people) {vector<int> stack;       // 保存向右逃生的人(用vector模擬棧)int leftSurvivors = 0;   // 左港口逃生人數for (int num : people) {if (num > 0) {stack.push_back(num); // 向右的人直接入棧} else {int k = -num;        // 當前向左者的體力值(取絕對值)while (k > 0) {if (stack.empty()) { // 棧空則左港口存活+1leftSurvivors++;break;}int t = stack.back(); // 取棧頂元素stack.pop_back();     // 彈出棧頂if (t > k) {stack.push_back(t - k); // 棧頂體力減少k,存活k = 0;            // 當前向左者被擊敗} else if (t == k) {k = 0;            // 同歸于盡} else {k -= t;           // 繼續與下一個棧頂決斗}}}}return stack.size() + leftSurvivors;
}int main() {// 示例測試vector<int> example1 = {5, 10, 8, -8, -5};cout << escapeCount(example1) << endl; // 輸出2vector<int> example2 = {3, -5};cout << escapeCount(example2) << endl; // 輸出1vector<int> example3 = {-3, -4, 2};cout << escapeCount(example3) << endl; // 輸出2return 0;
}

代碼詳解

  1. 棧初始化

    vector<int> stack; // 使用vector模擬棧,便于動態操作
    
    • 使用vectorpush_backpop_back實現棧的壓入和彈出。
  2. 遍歷處理每個人

    • 向右的人
      stack.push_back(num); // 直接存入棧尾
      
    • 向左的人
      int k = -num; // 取絕對值作為體力值
      while (k > 0) {if (stack.empty()) {leftSurvivors++; // 棧空則左港口存活+1break;}int t = stack.back(); // 取棧頂元素stack.pop_back();     // 彈出棧頂
      
      • 循環處理棧頂元素,直到擊敗所有向左者或棧空。
      • 決斗規則
        if (t > k) {        // 棧頂體力更大stack.push_back(t - k);k = 0;
        } else if (t == k) { // 同歸于盡k = 0;
        } else {             // 棧頂體力更小k -= t;
        }
        
        • 棧頂存活時重新壓入剩余體力,否則繼續處理。
  3. 返回結果

    return stack.size() + leftSurvivors; // 右港口存活數 + 左港口存活數
    

示例測試

  1. 示例1[5, 10, 8, -8, -5]

    • 8-8同歸于盡,10擊敗-5后剩余5
    • 右港口存活[5,5],總人數2。
  2. 示例2[3, -5]

    • 3-5擊敗,左港口存活1。
  3. 示例3[-3, -4, 2]

    • -3-4左港口存活,2右港口存活,總人數2。

綜合分析

  1. 時間復雜度O(N)

    • 每個元素最多入棧和出棧一次,總操作次數與輸入規模成線性關系。
  2. 空間復雜度O(N)

    • 棧空間最壞保存所有向右逃生者(例如輸入全為正數)。
  3. 正確性

    • 嚴格模擬決斗規則,確保棧頂元素與向左者正確抵消。
    • 左港口存活數統計未被擊敗的向左者。
  4. 適用性

    • 高效處理大規模數據:3萬元素可在1秒內處理完畢。
    • 代碼簡潔性:使用vector模擬棧,避免復雜數據結構。
  5. 為什么這是最佳實現?

    • 貪心策略:每次優先處理最近的向右者,保證局部最優。
    • 無需回溯:棧操作直接覆蓋所有可能的相遇情況。
    • 低常數開銷:直接操作內存,無遞歸或復雜計算。

C

問題分析

人們在荒島上逃生,方向分為左右(正數右,負數左),體力值為絕對值。相遇時決斗規則:體力大者存活并減少對方體力值,相等則同歸于盡。求最終存活人數。


解題思路

  1. 棧處理向右的人:向右的人存入棧中。
  2. 處理向左的人:向左的人依次與棧頂元素決斗,直到擊敗對方或棧空。
  3. 存活統計:棧內剩余為右港口逃生者,未被擊敗的向左人數為左港口逃生者。

代碼實現

#include <stdio.h>
#include <stdlib.h>#define MAX_SIZE 30000  // 題目規定輸入數組長度不超過30000int escapeCount(int people[], int size) {int stack[MAX_SIZE]; // 模擬棧,存儲向右逃生的人int top = 0;          // 棧頂指針(指向下一個可插入的位置)int left_survivors = 0; // 左港口逃生人數for (int i = 0; i < size; i++) {int num = people[i];if (num > 0) {stack[top++] = num; // 向右的人入棧} else {int k = -num;       // 當前向左者的體力值(取絕對值)while (k > 0) {if (top == 0) { // 棧空則左港口存活+1left_survivors++;break;}int t = stack[--top]; // 取出棧頂元素if (t > k) {stack[top++] = t - k; // 棧頂體力減少k,存活k = 0;            // 當前向左者被擊敗} else if (t == k) {k = 0;            // 同歸于盡} else {k -= t;           // 繼續與下一個棧頂決斗}}}}return top + left_survivors; // 棧中剩余人數 + 左港口存活人數
}int main() {// 示例測試int example1[] = {5, 10, 8, -8, -5};printf("%d\n", escapeCount(example1, 5)); // 輸出2int example2[] = {3, -5};printf("%d\n", escapeCount(example2, 2)); // 輸出1int example3[] = {-3, -4, 2};printf("%d\n", escapeCount(example3, 3)); // 輸出2return 0;
}

代碼詳解

  1. 棧初始化

    int stack[MAX_SIZE]; // 用數組模擬棧
    int top = 0;         // 棧頂指針(指向下一個空位)
    
    • 數組stack存儲向右逃生的人,top表示棧頂位置。
  2. 遍歷處理每個人

    • 向右的人
      stack[top++] = num; // 直接存入棧頂
      
    • 向左的人
      int k = -num;       // 取絕對值
      while (k > 0) {if (top == 0) { // 棧空則左港口存活+1left_survivors++;break;}int t = stack[--top]; // 取出棧頂元素
      
      • 循環處理棧頂元素,直到擊敗所有向左者或棧空。
      • 決斗規則
        if (t > k) {          // 棧頂體力更大stack[top++] = t - k; // 棧頂存活,減少k體力k = 0;
        } else if (t == k) {  // 同歸于盡k = 0;
        } else {              // 棧頂體力更小k -= t;
        }
        
  3. 返回結果

    return top + left_survivors; // 棧剩余人數 + 左港口存活人數
    

示例測試

  1. 示例1{5, 10, 8, -8, -5}

    • 8-8同歸于盡,10擊敗-5后剩余5
    • 右港口存活[5,5],總人數2。
  2. 示例2{3, -5}

    • 3-5擊敗,左港口存活1。
  3. 示例3{-3, -4, 2}

    • -3-4左港口存活,2右港口存活,總人數2。

綜合分析

  1. 時間復雜度O(N)

    • 每個元素最多入棧和出棧一次,總操作次數與輸入規模成線性關系。
  2. 空間復雜度O(MAX_SIZE)

    • 棧空間固定為MAX_SIZE,滿足題目約束(數組長度≤30000)。
  3. 正確性

    • 嚴格模擬決斗規則,確保棧頂元素與向左者正確抵消。
    • 左港口存活數統計未被擊敗的向左者。
  4. 適用性

    • 高效處理大規模數據:3萬元素可在1秒內處理完畢。
    • 低內存消耗:使用固定大小的數組避免動態內存分配。
  5. 為什么這是最佳實現?

    • 貪心策略:每次優先處理最近的向右者,保證局部最優。
    • 無需動態內存:預先分配棧數組,減少內存管理開銷。
    • 代碼簡潔:直接操作數組,避免復雜數據結構。

GO

問題分析

人們在荒島上逃生,方向分為左右(正數右,負數左),體力值為絕對值。相遇時決斗規則:體力大者存活并減少對方體力值,相等則同歸于盡。求最終存活人數。


解題思路

  1. 棧處理向右的人:向右的人存入棧中。
  2. 處理向左的人:向左的人依次與棧頂元素決斗,直到擊敗對方或棧空。
  3. 存活統計:棧內剩余為右港口逃生者,未被擊敗的向左人數為左港口逃生者。

代碼實現

package mainimport "fmt"func escapeCount(people []int) int {stack := make([]int, 0)     // 保存向右逃生的人(用切片模擬棧)leftSurvivors := 0          // 左港口逃生人數for _, num := range people {if num > 0 {stack = append(stack, num) // 向右的人直接入棧} else {k := -num                   // 當前向左者的體力值(取絕對值)for k > 0 {if len(stack) == 0 {     // 棧空則左港口存活+1leftSurvivors++break}// 取出棧頂元素t := stack[len(stack)-1]stack = stack[:len(stack)-1] // 彈出棧頂if t > k {stack = append(stack, t-k) // 棧頂體力減少k,存活k = 0                      // 當前向左者被擊敗} else if t == k {k = 0                      // 同歸于盡} else {k -= t                     // 繼續與下一個棧頂決斗}}}}return len(stack) + leftSurvivors // 右港口存活數 + 左港口存活數
}func main() {// 示例測試example1 := []int{5, 10, 8, -8, -5}fmt.Println(escapeCount(example1)) // 輸出2example2 := []int{3, -5}fmt.Println(escapeCount(example2)) // 輸出1example3 := []int{-3, -4, 2}fmt.Println(escapeCount(example3)) // 輸出2
}

代碼詳解

  1. 棧初始化

    stack := make([]int, 0) // 使用切片模擬棧
    
    • Go 的切片(slice)動態擴展,非常適合模擬棧的 pushpop 操作。
  2. 遍歷處理每個人

    • 向右的人
      stack = append(stack, num) // 追加到切片末尾(入棧)
      
    • 向左的人
      k := -num // 取絕對值
      for k > 0 {if len(stack) == 0 {leftSurvivors++ // 棧空則左港口存活+1break}t := stack[len(stack)-1]     // 取棧頂元素stack = stack[:len(stack)-1]  // 彈出棧頂
      
      • 循環處理棧頂元素,直到擊敗所有向左者或棧空。
      • 決斗規則
        if t > k {stack = append(stack, t-k) // 棧頂存活,減少k體力k = 0
        } else if t == k {k = 0                     // 同歸于盡
        } else {k -= t                    // 繼續與下一個棧頂決斗
        }
        
  3. 返回結果

    return len(stack) + leftSurvivors
    
    • 棧的長度即為右港口存活人數,加上左港口存活人數。

示例測試

  1. 示例1[5, 10, 8, -8, -5]

    • 8-8同歸于盡,10擊敗-5后剩余5
    • 右港口存活[5,5],總人數2。
  2. 示例2[3, -5]

    • 3-5擊敗,左港口存活1。
  3. 示例3[-3, -4, 2]

    • -3-4左港口存活,2右港口存活,總人數3。

綜合分析

  1. 時間復雜度O(N)

    • 每個元素最多入棧和出棧一次,總操作次數與輸入規模成線性關系。
  2. 空間復雜度O(N)

    • 棧空間最壞保存所有向右逃生者(例如輸入全為正數)。
  3. 正確性

    • 嚴格模擬決斗規則,確保棧頂元素與向左者正確抵消。
    • 左港口存活數統計未被擊敗的向左者。
  4. 適用性

    • 高效處理大規模數據:3萬元素可在1秒內處理完畢。
    • 動態內存管理:Go 的切片自動擴容,避免手動內存分配。
  5. 為什么這是最佳實現?

    • 貪心策略:每次優先處理最近的向右者,保證局部最優。
    • 代碼簡潔:利用切片的動態特性,簡化棧操作。
    • 低內存開銷:切片按需分配內存,避免固定數組的空間浪費。

更多內容:

https://www.kdocs.cn/l/cvk0eoGYucWA

本文發表于【紀元A夢】,關注我,獲取更多實用教程/資源!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/diannao/82444.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82444.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/82444.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IOC和Bean

IOC IOC將對象的創建&#xff0c;依賴關系的管理和生命周期的控制從應用程序代碼中解耦出來了 IOC容器的依賴注入(DI) 在程序運行過程中動態的向某個對象中注入他所需要的其他對象 依賴注入是基于反射實現的 Spring IOC 容器使用的是Map&#xff08;concorrentMap&#xff…

vue3: pdf.js 2.16.105 using typescript

npm create vite vuepdfpreview //創建項目npm install vue-pdf-embed npm install vue3-pdfjs npm install pdfjs-dist2.16.105 <!--* |~~~~~~~|* | |* | |…

Java面試全棧解析:Spring Boot、Kafka與Redis實戰揭秘

《Java面試全棧解析&#xff1a;Spring Boot、Kafka與Redis實戰揭秘》 【面試現場】 面試官&#xff1a;&#xff08;推了推眼鏡&#xff09;小張&#xff0c;你簡歷里提到用Spring Boot開發過微服務系統&#xff0c;能說說自動配置的實現原理嗎&#xff1f; 程序員&#xff1…

常見的提示詞攻擊方法 和防御手段——提示詞注入(Prompt Injection)攻擊解析

提示詞注入&#xff08;Prompt Injection&#xff09;攻擊解析 提示詞注入是一種針對大型語言模型&#xff08;LLM&#xff09;的新型攻擊手段&#xff0c;攻擊者通過精心設計的輸入文本&#xff08;提示詞&#xff09;操控AI模型的輸出&#xff0c;使其執行非預期行為或泄露敏…

基于NI-PXI的HIL系統開發

基于NI-PXI平臺的汽車電控單元HIL系統開發全解析 引言&#xff1a;HIL系統如何成為汽車電控開發的“效率倍增器”&#xff1f; 某車企通過基于NI-PXI的HIL系統&#xff0c;將懸架控制器的測試周期從3個月壓縮至2周&#xff0c;故障檢出率提升65%。這背后是硬件在環技術對汽車電…

復合機器人案例啟示:富唯智能如何以模塊化創新引領工業自動化新標桿

在國產工業機器人加速突圍的浪潮中&#xff0c;富唯智能復合機器人案例憑借其高精度焊接與智能控制技術&#xff0c;成為行業標桿。然而&#xff0c;隨著制造業對柔性化、全場景協作需求的升級&#xff0c;復合機器人正從單一功能向多模態協同進化。作為這一領域的創新者&#…

如何使用極狐GitLab 軟件包倉庫功能托管 python?

極狐GitLab 是 GitLab 在中國的發行版&#xff0c;關于中文參考文檔和資料有&#xff1a; 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 軟件包庫中的 PyPI 包 (BASIC ALL) 在項目的軟件包庫中發布 PyPI 包。然后在需要將它們用作依賴項時安裝它們。 軟件包庫適用…

K8s中的containerPort與port、targetPort、nodePort的關系:

pod中的containerPort與service中的port、targetPort、nodePort的關系&#xff1a; 1、containerPort為pod的配置&#xff0c;對應pod內部服務監聽的具體端口&#xff0c;例如nginx服務默認監聽80端口&#xff0c;那么nginx的pod的containerPort應該配置為80&#xff0c;例如m…

面試題:QTableView和QTableWidget的異同

目錄 1.QTableView簡介 2.QTableWidget簡介 3.QTableView和QTableWidget不同 4.總結 1.QTableView簡介 QTableView是一個基于模型-視圖架構的表格控件&#xff0c;用于展示表格形式的數據。同樣需要關聯一個QAbstractTableModel或其子類&#xff08;如QStandardItemModel&a…

smbd:快速拉取服務端SMB共享文件腳本工具

地址:https://github.com/MartinxMax/smbd smbd 是一款簡單的 Bash 腳本&#xff0c;用於自動化從共享目錄透過 SMB/CIFS 協議下載檔案的過程。此工具設計用來與遠端 SMB 分享進行互動&#xff0c;並將其內容下載到本地目錄中。 環境需求 $ apt install smbclient 使用方式 …

MiInsertVad函數分析之nt!MMVAD結構

MiInsertVad函數分析之nt!MMVAD結構 1: kd> dt nt!MMVAD 89520270 0x000 u1 : __unnamed 0x004 LeftChild : (null) 0x008 RightChild : (null) 0x00c StartingVpn : 0x2b0 0x010 EndingVpn : 0x2c5 0x014 u …

OSPF不規則區域劃分

1、建立一條虛鏈路 vlink 可以被視為是??區域的?段延伸。 這?條虛擬的鏈路&#xff0c;只能夠跨域?個???區域。 [r2-ospf-1-area-0.0.0.1]vlink-peer 3.3.3.3 [r3-ospf-1-area-0.0.0.1]vlink-peer 2.2.2.2 在沒有建立虛鏈路之前,r1是不能ping r4的。vlink建?的鄰居關…

Webug4.0靶場通關筆記-靶場搭建方法(3種方法)

目錄 一、虛擬機綠色版本 1. 開啟phpstudy 2. 訪問靶場 二、Docker版本 1.拉取鏡像 2.啟動鏡像 三、源碼安裝版本 1. 搭建環境 &#xff08;1&#xff09;安裝PHPStudy &#xff08;2&#xff09;WeBug4.0靶場源碼 &#xff08;3&#xff09;安裝Navicat &#xff…

Linux:進程間通信---消息隊列信號量

文章目錄 1.消息隊列1.1 消息隊列的原理1.2 消息隊列的系統接口 2. 信號量2.1 信號量的系統調用接口 3. 淺談進程間通信3.1 IPC在內核中數據結構設計3.2 共享內存的缺點3.3 理解信號量 序&#xff1a;在上一章中&#xff0c;我們引出了命名管道和共享內存的概念&#xff0c;了解…

電子電器架構 --- 車載網關的設計

我是穿拖鞋的漢子&#xff0c;魔都中堅持長期主義的汽車電子工程師。 老規矩&#xff0c;分享一段喜歡的文字&#xff0c;避免自己成為高知識低文化的工程師&#xff1a; 鈍感力的“鈍”&#xff0c;不是木訥、遲鈍&#xff0c;而是直面困境的韌勁和耐力&#xff0c;是面對外界…

華為云Git使用與GitCode操作指南

案例介紹 本文檔帶領開發者學習如何在云主機上基于GitCode來使用Git來管理自己的項目代碼,并使用一些常用的Git命令來進行Git環境的設置。 案例內容 1 概述 1.1 背景介紹 Git 是一個快速、可擴展的分布式版本控制系統,它擁有異常豐富的命令集,可以提供高級操作和對內部…

ESP32開發入門(七):HTTP開發實踐

一、HTTP協議基礎 1.1 什么是HTTP&#xff1f; HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本傳輸協議&#xff09;是互聯網上應用最為廣泛的一種網絡協議&#xff0c;用于從服務器傳輸超文本到本地瀏覽器。它是一種無狀態的請求/響應協議&#xff0c;工作…

Python 對象引用、可變性和垃圾 回收(變量不是盒子)

變量不是盒子 1997 年夏天&#xff0c;我在 MIT 學了一門 Java 課程。Lynn Andrea Stein 教授 &#xff08;一位獲獎的計算機科學教育工作者&#xff0c;目前在歐林工程學院教書&#xff09;指 出&#xff0c;人們經常使用“變量是盒子”這樣的比喻&#xff0c;但是這有礙于理…

局域網常用的測速工具,Iperf3使用教程

目錄 下載方式 Windows Linux 使用方法&#xff1a;測試局域網帶寬 步驟一&#xff1a;服務端準備 步驟二&#xff1a;客戶端發起連接 步驟三&#xff1a;查看結果 參數說明 1. Iperf常用參數&#xff08;測試夠用&#xff09; 2. 通用參數&#xff08;Server端和Cli…

《深入理解分布式系統》之認識分布式系統

本文是閱讀深入理解分布式系統第一章認識分布式系統時的筆記。 分布式系統的特點 多進程不共享操作系統不共享時鐘 分布式系統 由多個可獨立運行的子系統組成。每個子系統可以獨立選擇運行平臺。不同的運行平臺存在差異&#xff0c;比如操作系統&#xff0c;硬件規格等。由…