主頁 >  其他 > 資料結構與演算法之時間復雜度與空間復雜度

資料結構與演算法之時間復雜度與空間復雜度

2021-11-08 10:09:02 其他

??前面的話??

本篇文章帶大家認識資料結構與演算法基礎,時間復雜度與空間復雜度,演算法效率分析分為兩種:第一種是時間效率,第二種是空間效率,時間效率被稱為時間復雜度,而空間效率被稱作空間復雜度, 時間復雜度主要衡量的是一個演算法的運行速度,而空間復雜度主要衡量個演算法所需要的額外空間,在計算機發展的早期,計算機的存盤容量很小,所以對空間復雜度很是在乎,但是經過計算機行業的迅速發展,計算機的存盤容量已經達到了很高的程度,所以我們如今已經不需要再特別關注一個演算法的空間復雜度,描述代碼:Java,

📒博客主頁:未見花聞的博客主頁
🎉歡迎關注🔎點贊👍收藏??留言📝
📌本文由未見花聞原創,CSDN首發!
📆首發時間:🌴2021年11月6日🌴
??堅持和努力一定能換來詩與遠方!
💭參考書籍:📚《趣學資料結構》,📚《資料結構(C語言版)》,📚《趣學演算法》
💬參考在線編程網站:🌐牛客網🌐力扣
博主的碼云gitee,平常博主寫的程式代碼都在里面,
博主的碼云github,平常博主寫的程式代碼都在里面,
🙏作者水平很有限,如果發現錯誤,一定要及時告知作者哦!感謝感謝!


📌導航小助手📌

  • 🍎1.問題匯入
    • 🍏1.1引入復雜度
    • 🍏1.2棋盤麥子問題
  • 🍎2.時間復雜度
    • 🍏2.1概念
    • 🍏2.2時間復雜度的計算
  • 🍎3.空間復雜度
    • 🍏2.1概念
    • 🍏2.2空間復雜度的計算


00


🍎1.問題匯入

🍏1.1引入復雜度

🍊求下面序列之和∶
? 1 , 1 , ? 1 , 1 , . . . , ( ? 1 ) n -1,1,-1,1,...,(-1)^n ?1,1,?1,1,...,(?1)n

第一種做法:

    public static int sumAdd(int n) {
        int sum = 0;
        for (int i = 1; i <= n; i++) {
            sum += (int)Math.pow(-1, i);
        }
        return sum;
    }

該程式執行了n次,
第二種做法:
1

    public static int sumAddPlus(int n) {
        int sum = 0;

        if (n % 2 == 1) {
            sum = -1;
        }

        return sum;
    }

該程式執行了1次,
可見不同的演算法,可能會有著不同的執行次數,執行的次數越少,則程式所費時間越少,說明演算法越優,
所以我們使用程式的執行次數作為判斷一個程式運行速度快慢的標準,這個執行次數就稱為一種演算法的時間復雜度,

🍏1.2棋盤麥子問題

我來帶大家認識一種恐怖的爆炸增量,相信大家都聽說過棋盤麥子的故事:
有一個古老的傳說,有一位國王的女兒不幸落水,水中有很多鱷魚,國王情急之下下令∶"誰能把公主救上來,就把女兒嫁給他,"很多人紛紛退讓,一個勇敢的小伙子挺身而出,冒著生命危險把公主救了上來,國王一看是個窮小子,想要反悔,說∶"除了女兒,你要什么都可以,"小伙子說∶"好吧,我只要一棋盤的麥子,您在第1個格子里放1粒麥子,在第2 個格子里放2粒,在第3個格子里放4粒,在第4個格子里放8粒,以此類推,每一格子里的麥子粒數都是前一格的兩倍,把這64個格子都放好了就行,我就要這么多,"國王聽后哈哈大笑,覺得小伙子的要求很容易滿足,滿口答應,結果發現,把全國的麥子都拿來,也填不完這64格……國王無奈,只好把女兒嫁給了這個小伙子,
棋盤上的64個格子究竟要放多少粒麥子?把每一個放的麥子數加起來,總和為S,則∶
S = 1 + 2 1 + 2 2 + 2 3 + . . . + 2 63 S=1+2^1+2^2+2^3+...+2^{63} S=1+21+22+23+...+263
等式兩邊同乘以2,得:
2 S = 2 1 + 2 2 + 2 3 + 2 4 + . . . + 2 64 2S=2^1+2^2+2^3+2^4+...+2^{64} 2S=21+22+23+24+...+264
兩式做差,得:
S = 2 64 ? 1 = 18446744073709551615 S=2^{64}-1 = 18446744073709 551615 S=264?1=18446744073709551615

據專家統計,每個麥粒的平均重量約41.9毫克,那么這些麥粒的總重量是∶
18446744073709551615 × 41.9 = 772918576688430212668.5 ( 毫 克 ) ≈ 7729 ( 億 噸 ) 18446744073709551615×41.9=772918576688430212668.5(毫克)≈7729(億噸) 18446744073709551615×41.9=772918576688430212668.57729
全世界人口按60億計算,每人可以分得128噸!

我們稱這樣的函式為爆炸增量函式,想一想,如果演算法時間復雜度是 O ( 2 n ) O(2^n) O(2n)會怎樣?隨著n的增長,這個演算法會不會"爆掉"?經常見到有些演算法除錯沒問題,運行一段也沒問題,但關鍵的時候宕機(shutdown),例如,在線考試系統,50 個人考試沒問題,100 人考試也沒問題,如果全校1萬人考試就可能出現宕機,

注意∶宕機就是死機,指電腦不能正常作業了,包括一切原因導致的死機,計算機主機出現意外故障而死機,一些服務器(如資料庫)死鎖,服務器的某些服務停止運行都可以稱為宕機,

7
常見的演算法時間復雜度有以下幾類:

  1. 常數階,如 O ( 1 ) O(1) O(1)
  2. 多項式階,如 O ( n 2 ) , O ( n 3 ) , O ( n 4 ) O(n^2),O(n^3),O(n^4) O(n2),O(n3),O(n4)等,
  3. 指數階,如棋盤麥子,遞回實作斐波拉契數列 O ( 2 n ) O(2^n) O(2n)
  4. 對數階,如二分查找 O ( l o g 2 n ) O(log_2n) O(log2?n)

根據對應函式的趨勢圖:
O ( 1 ) < O ( l o g n ) < O ( n ) < O ( n l o g n ) < O ( n 2 ) < O ( n 3 ) < O ( 2 n ) < O ( n ! ) < O ( n n ) O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n) O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)

一般我們設計演算法時,時間復雜度最好小于 O ( n 2 ) O(n^2) O(n2)

🍎2.時間復雜度

🍏2.1概念

時間復雜度的定義:在計算機科學中,演算法的時間復雜度是一個函式,它定量描述了該演算法的運行時間,一個演算法執行所耗費的時間,從理論上說,是不能算出來的,只有你把你的程式放在機器上跑起來,才能知道,但是我們需要每個演算法都上機測驗嗎?是可以都上機測驗,但是這很麻煩,所以才有了時間復雜度這個分析方式,一個演算法所花費的時間與其中陳述句的執行次數成正比例,演算法中的基本操作的執行次數,為演算法的時間復雜度,

🍏2.2時間復雜度的計算

// 請計算一下func1基本操作執行了多少次?
void func1(int N){
   int count = 0;
   for (int i = 0; i < N ; i++) {
       for (int j = 0; j < N ; j++) {
           count++;
       }
   }
   for (int k = 0; k < 2 * N ; k++) {
       count++;
   }
   int M = 10;
   while ((M--) > 0) {
       count++;
   }
   System.out.println(count);
}

對于這個程式,首先兩層嵌套的for回圈每層都執行了n次,所以它執行的次數為n*n,即n2,然后執行單層的for回圈,執行次數為2n,最后執行了單層的while回圈,執行次數為m = 10,所以該程式一共執行的次數為 T ( n ) T(n) T(n)
T ( n ) = n 2 + 2 n + 10 T(n) = n^2 +2n + 10 T(n)=n2+2n+10

n = 10 , T ( n ) = 130 n = 10, T(n) = 130 n=10,T(n)=130
n = 100 , T ( n ) = 10210 n = 100, T(n) = 10210 n=100,T(n)=10210
n = 1000 , T ( n ) = 1002010 n = 1000, T(n) = 1002010 n=1000,T(n)=1002010

n n n趨近于無窮大時,我們發現除最高階外其他的低階項或常數項可以忽略,
我們實際要計算時間復雜度時,只計算它的大概的執行次數,所以對于復雜度我們取對程式執行次數起主要因素的一項,也就是最高階項,并且最高階的系數一律置為1,因為當 n n n趨近于無窮大時多乘一個系數少乘一個系數都對復雜度沒有很大的影響,這種方法也稱“大O的漸進表示法”,

大O符號(Big O notation):是用于描述函式漸進行為的數學符號,
推導大O階方法:

  1. 用常數1取代運行時間中的所有加法常數,
  2. 在修改后的運行次數函式中,只保留最高階項,
  3. 如果最高階項存在且不是1,則去除與這個最高階項相乘的常數,得到的結果就是大O階,

另外,演算法的時間復雜度存在最好,平均,最差情況,我們所計算的時間復雜度一般為最壞情況下的復雜度,因為計算最好情況與平均情況的復雜度意義不大,最壞情況下的時間復雜度才能體現一個程式的性能好壞,

最壞情況:任意輸入規模的最大運行次數(上界)
平均情況:任意輸入規模的期望運行次數
最好情況:任意輸入規模的最小運行次數(下界)

所以該程式的時間復雜度為 O ( n 2 ) O(n^2) O(n2)

下面我們就開始來小試牛刀一下:
🍊題1

// 計算func2的時間復雜度?
void func2(int N) {
int count = 0;
for (int k = 0; k < 2 * N ; k++) {
   count++; 
}
int M = 10;
while ((M--) > 0) {
   count++; 
}
System.out.println(count);
}

該程式執行次數為 T ( n ) T(n) T(n)
T ( n ) = 2 n + 10 T(n) = 2n + 10 T(n)=2n+10
時間復雜度為 O ( n ) O(n) O(n)

🍊題2

// 計算func3的時間復雜度?
void func3(int N, int M) {
int count = 0;
for (int k = 0; k < M; k++) {
   count++; 
}
for (int k = 0; k < N ; k++) {
   count++; 
}
System.out.println(count);
}

該程式執行次數為 T ( n , m ) T(n,m) T(n,m)
T ( n , m ) = m + n T(n,m) = m + n T(n,m)=m+n
時間復雜度為 O ( m + n ) O(m + n) O(m+n)

🍊題3

// 計算func4的時間復雜度?
void func4(int N) {
int count = 0;
for (int k = 0; k < 100; k++) {
   count++; 
}
System.out.println(count);
}

該程式執行次數為 T ( n ) T(n) T(n)
T ( n ) = 100 T(n) = 100 T(n)=100
T ( n ) T(n) T(n)為一個常數,所以時間復雜度為 O ( 1 ) O(1) O(1)

🍊題4

// 計算bubbleSort的時間復雜度?
void bubbleSort(int[] array) {
   for (int end = array.length; end > 0; end--) {
       boolean sorted = true;
       for (int i = 1; i < end; i++) {
           if (array[i - 1] > array[i]) {
               Swap(array, i - 1, i);
               sorted = false;
           }
       }
       if (sorted == true) {
           break;
       }
   }
}

該程式最壞情況下執行次數為 T ( n ) T(n) T(n)
T ( n ) = n ? 1 + n ? 2 + . . . + 1 + 0 = n ? ( n ? 1 ) / 2 T(n) = n - 1 + n - 2 + ... + 1 +0 =n*(n-1)/2 T(n)=n?1+n?2+...+1+0=n?(n?1)/2
時間復雜度為 O ( n 2 ) O(n^2) O(n2)

🍊題5

// 計算binarySearch的時間復雜度?
int binarySearch(int[] array, int value) {
   int begin = 0;
   int end = array.length - 1;
   while (begin <= end) {
       int mid = begin + ((end-begin) / 2);
       if (array[mid] < value)
           begin = mid + 1;
       else if (array[mid] > value)
           end = mid - 1;
       else
           return mid;
   }
   return -1; 
}

這是一個二分查找的程式,每回圈一次,排除的元素就少一半,我們設該程式的執行次數為 T ( n ) T(n) T(n),元素個數為 n n n,當查找剩余元素個數為1個時,程式還需要查找一次,所以當執行 T ( n ) ? 1 T(n)-1 T(n)?1次時,剩余的元素個數為1,則有下面等式:
n / 2 ( T ( n ) ? 1 ) = 1 n/2^{(T(n)-1)} = 1 n/2(T(n)?1)=1
即: 2 ( T ( n ) ? 1 ) = n 2^{(T(n)-1)} = n 2(T(n)?1)=n
該程式執行次數為 T ( n ) T(n) T(n)
T ( n ) = l o g 2 n + 1 T(n) = log_2 n + 1 T(n)=log2?n+1
時間復雜度為 O ( l o g 2 n ) 或 O ( l o g n ) O(log_2n)\ 或\ O(logn) O(log2?n) O(logn)
🍊題6

// 計算階乘遞回factorial的時間復雜度?
long factorial(int N) {
    return N < 2 ? N : factorial(N-1) * N; 
}

該程式需要遞回的次數為 n n n次,所以它的時間復雜度為 O ( n ) O(n) O(n)
🍊題7

// 計算斐波那契遞回fibonacci的時間復雜度?
int fibonacci(int N) {
    return N < 2 ? N : fibonacci(N-1)+fibonacci(N-2);
}

2
不考慮右邊最后缺失的幾次遞回,大概的遞回次數為 T ( n ) T(n) T(n)
T ( n ) = 1 + 2 1 + 2 2 + . . . + 2 ( n ? 1 ) T(n)=1 + 2^1 + 2^2 + ...+ 2^{(n-1)} T(n)=1+21+22+...+2(n?1)
由等比數列求和公式:
T ( n ) = 2 n ? 1 T(n) = 2^n - 1 T(n)=2n?1

所以斐波拉契數列遞回實作的時間復雜度為 O ( 2 n ) O(2^n) O(2n),在前面的麥子棋盤已經可知該時間復雜度的恐怖性,

🍎3.空間復雜度

🍏2.1概念

空間復雜度是對一個演算法在運行程序中臨時占用存盤空間大小的量度 ,空間復雜度不是程式占用了多少bytes的空間,因為這個也沒太大意義,所以空間復雜度算的是變數的個數,空間復雜度計算規則基本跟時間復雜度類似,也使用大O漸進表示法,

🍏2.2空間復雜度的計算

// 計算bubbleSort的空間復雜度?
void bubbleSort(int[] array) {
	for (int end = array.length; end > 0; end--) {
     	boolean sorted = true;
    	 for (int i = 1; i < end; i++) {
        	 if (array[i - 1] > array[i]) {
         	    Swap(array, i - 1, i);
        	    sorted = false;
        	 }
    	 }
    	 if (sorted == true) {
    	     break;
    	 }
   }
}

該程式只開辟了常數級的記憶體空間,空間復雜度為 O ( 1 ) O(1) O(1)

// 計算fibonacci的空間復雜度?
int[] fibonacci(int n) {
	long[] fibArray = new long[n + 1];
	fibArray[0] = 0;
	fibArray[1] = 1;
	for (int i = 2; i <= n ; i++) {
  		fibArray[i] = fibArray[i - 1] + fibArray [i - 2];
 	}
	return fibArray; 
}

該程式申請了長度為 n + 1 n+1 n+1的長整型陣列記憶體空間,空間復雜度為 O ( n ) O(n) O(n)

// 計算階乘遞回Factorial的空間復雜度?
long factorial(int N) {
 	return N < 2 ? N : factorial(N-1)*N; 
}

遞回求階乘一共遞回了 n n n次,每次開辟的記憶體是常數級的,使用空間復雜度為 O ( n ) O(n) O(n)

留給讀者:遞回實作斐波拉契數列空間復雜度為多少?
答案是 O ( 2 n ) O(2^n) O(2n),知道為什么嗎?思考一下吧!

覺得文章寫得不錯的老鐵們,點贊評論關注走一波!謝謝啦

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/352223.html

標籤:其他

上一篇:【順序表和鏈表】實作增刪查改資料結構 OJ題編程

下一篇:手撕二叉樹遍歷(前序 + 中序 + 后序 遞回 + 非遞回 代碼實作 + 例題)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more