主頁 > 軟體設計 > C語言處理批量資料的好伙伴!陣列!C語言陣列的介紹與應用

C語言處理批量資料的好伙伴!陣列!C語言陣列的介紹與應用

2021-08-03 08:03:02 軟體設計

內容導讀

  • 1.陣列
    • 1.1陣列概述
    • 1.2為什么要用陣列?
  • 2.一維陣列
    • 2.1定義與初始化
      • 2.1.1一維陣列的定義
      • 2.1.2一維陣列初始化
      • 2.1.3如何使用一維陣列中的元素呢?
    • 2.2簡單程式舉例
    • 2.3冒泡排序
  • 3.二維陣列
    • 3.1定義與初始化
      • 3.1.1二維陣列的定義
      • 3.1.2二維陣列的初始化
    • 3.2簡單程式舉例
    • 3.2三子棋
    • 3.3掃雷
  • 4.字符陣列
    • 4.1定義與初始化
      • 4.1.1字符陣列的定義
      • 4.1.2字符陣列初始化
    • 4.2簡單程式舉例
    • 4.3簡要介紹與字符相關的庫函式
      • 4.3.1輸出輸入字串的函式
      • 4.3.2字串連接函式
      • 4.3.3字串復制函式
      • 4.3.4字串比較函式
      • 4.3.5測字串長度的函式
      • 4.3.6轉換為大小寫的函式

前面的話:

作者水平很有限,如果發現錯誤,一定要及時告知作者哦!感謝感謝!
博主的碼云gitee,平常博主寫的程式代碼都在里面,

1.陣列

1.1陣列概述

陣列(Array)是有序的元素序列, 若將有限個型別相同的變數的集合命名,那么這個名稱為陣列名,組成陣列的各個變數稱為陣列的分量,也稱為陣列的元素,有時也稱為下標變數,用于區分陣列的各個元素的數字編號稱為下標,陣列是在程式設計中,為了處理方便, 把具有相同型別的若干元素按有序的形式組織起來的一種形式, 這些有序排列的同類資料元素的集合稱為陣列,
陣列是用于儲存多個相同型別資料的集合,
(摘自360百科)

在這里插入圖片描述

1.2為什么要用陣列?

假如你要向計算機輸入并儲存50個學生的C語言期末考試的成績,如果不使用陣列,意味著你要創建50個變數,非常的繁瑣,如果你并不覺得繁瑣,當你需要向計算機輸入全校學生C語言成績時,你還會覺得不繁瑣嗎?
當遇到這個問題時,仔細思考,你會發現這些資料是具有一定的聯系的,比如它們都是同一學校,同一科目的成績,
所以,為了解決這個問題C語言提供了能夠一次性儲存這些資料的資料型別——陣列
因為陣列有以下幾個特點:

  • 陣列是一組有序資料的集合,陣列中各資料的排列是有一定規律的,下標代表資料在陣列中的序號,
  • 用陣列名和下標即可唯一地確定陣列中的元素,
  • 陣列中的每一個元素都屬于同一個資料型別,

2.一維陣列

2.1定義與初始化

2.1.1一維陣列的定義

(1) 陣列名的命名規則和變數名相同,遵循識別符號命名規則,
(2) 在定義陣列時,需要指定陣列中元素的個數,方括號中的常量運算式用來表示元素的個數,即陣列長度,
(3) 常量運算式中可以包括常量和符號常量,不能包含變數,

型別說明符  陣列名[常量運算式]
//例如
int a[10];

在這里插入圖片描述
陣列元素的下標從0開始,用“int a[10];”定義陣列,則最大下標值為9,不存在陣列元素a[10],定義的陣列元素分別為:
在這里插入圖片描述
一維陣列儲存地址是連續的,

#include <stdio.h>

int main()
{
	int a[10] = { 0,1,2,3,4,5,6,7,8,9 };
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		printf("%p \n", &a[i]);//列印陣列各元素的地址
	}
	return 0;
}

輸出結果

0079FCA8
0079FCAC
0079FCB0
0079FCB4
0079FCB8
0079FCBC
0079FCC0
0079FCC4
0079FCC8
0079FCCC

D:\gtee\C-learning-code-and-project\test_731\Debug\test_731.exe (行程 27748)已退出,代碼為 0,
按任意鍵關閉此視窗. . .

每個元素儲存地址都是相鄰的,

2.1.2一維陣列初始化

為了使程式簡潔,常在定義陣列的同時給各陣列元素賦值,這稱為陣列的初始化,
初始化陣列時有以下幾種方法:
(1) 在定義陣列時對全部陣列元素賦予初值,

int a[10]={0,1,2,3,4,5,6,7,8,9};

將陣列中各元素的初值順序放在一對花括號內,資料間用逗號分隔,花括號內的資料就稱為“初始化串列”,
(2) 可以只給陣列中的一部分元素賦值,

int a[10]={0,1,2,3,4};

定義a陣列有10個元素,但花括號內只提供5個初值,這表示只給前面5個元素賦初值,系統自動給后5個元素賦初值為0,
(3) 給陣列中全部元素賦初值為0,

int a[10]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
//或
int a[10]={0};	//未賦值的部分元素自動設定為0

(4) 在對全部陣列元素賦初值時,由于資料的個數已經確定,因此可以不指定陣列長度,

int a[5]={1,2,3,4,5};
//或
int a[ ]={1,2,3,4,5};

但是,如果陣列長度與提供初值的個數不相同,則方括號中的陣列長度不能省略,

2.1.3如何使用一維陣列中的元素呢?

陣列名[下標]
//例如
int i = a[2];
//訪問第三個元素

只能參考陣列元素而不能一次整體呼叫整個陣列全部元素的值,
陣列元素與一個簡單變數的地位和作用相似,
“下標”可以是整型常量或整型運算式,而陣列定義時C99之前只支持常量運算式,要注意區分,
陣列的大小可以通過sizeof得到陣列總大小除以陣列第一個元素大小得到

a[]={1,2,3,4,5,6,7,8,9,0};
size = sizeof(a) / sizeof(a[0]);//size = 10

2.2簡單程式舉例

對10個陣列元素依次賦值為0,1,2,3,4,5,6,7,8,9,要求按逆序輸出,

#include<stdio.h>
//對10個陣列元素依次賦值為0,1,2,3,4,5,6,7,8,9,要求按逆序輸出,

int main()
{
	int i, a[10];
	for (i = 0; i <= 9; i++)	//對陣列元素a[0]~a[9]賦值
		a[i] = i;
	for (i = 9; i >= 0; i--)	//輸出a[9]~a[0]共10個陣列元素
		printf("%d ", a[i]);
	printf("\n");
	return 0;
}

在這里插入圖片描述

用陣列來處理求Fibonacci數列問題,用陣列求斐波拉契數列前20個元素

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//用陣列來處理求Fibonacci數列問題

int main()
{
	int i;
	int f[20] = { 1,1 };				//對最前面兩個元素f[0]和f[1]賦初值1
	for (i = 2; i < 20; i++)
		f[i] = f[i - 2] + f[i - 1];		//先后求出f[2]~f[19]的值
	for (i = 0; i < 20; i++)
	{
		if (i % 5 == 0) 
			printf("\n"); 			//控制每輸出5個數后換行
		printf("%d \t", f[i]);		//輸出一個數
	}
	printf("\n");
	return 0;
}

在這里插入圖片描述

2.3冒泡排序

設計一個程式,將一個整型陣列內的十個數按從小到大的規則排列
思路:從陣列首位元素開始將陣列的相鄰兩個元素進行比較,如果前面的元素比后面大,則進行交換否則不交換,每進行一趟排序就能將一個最大的數放在最后,如果需要把所有元素都排好序,需要進行陣列元素個數減一趟排序,因為每一趟排序都會排出一個最大的數放在后面,也就是說每排序一趟就有一個數排序完成,所以每完成一趟排序,排序比較次數就減一,假設陣列元素個數為size,則一共要進行size-1趟排序,第n趟排序比較次數為size-n,比如10個元素進行冒泡排序,一共要進行9趟排序,第一趟需排序比較9次,第二趟8次,第三趟7次,以此類推,

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//冒泡排序(int) 從小到大
void bubble_sort(int* arr, int size)
{
	int i = 0;
	for (i = 0; i < size - 1; i++)
	{
		int j = 0;
		int flag = 1;//判斷資料是否發生交換,默認沒有發生交換
		for (j = 0; j < size - 1 - i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				int tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
				flag = 0;
			}
		}
		if (flag)
			break;
	}
}
int main()
{
	int arr[] = { 9,7,5,2,0,1,8,3,6,4 };
	int i = 0;
	int size = sizeof(arr) / sizeof(arr[0]);

	for (i = 0; i < size; i++)
	{
		//scanf("%d", &arr[i]);
		printf("%d ", arr[i]);
	}
	printf("\n");
	bubble_sort(arr, size);//排序

	for (i = 0; i < size; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

在這里插入圖片描述

3.二維陣列

3.1定義與初始化

3.1.1二維陣列的定義

二維陣列常稱為矩陣(matrix),把二維陣列寫成行(row)列(column)的排列形式,可以有助于形象化地理解二維陣列的邏輯結構,

//二維陣列定義格式
型別說明符  陣列名[常量運算式][常量運算式]

在這里插入圖片描述

	float a[3][4], b[5][10];
	//定義a為3×4(3行4列)的浮點數陣列,b為5×10(5行10列)的浮點數陣列
	int a[2][5] = { {1,2,3,4,5},{6,7,8,9,10} };
	int b[][5] = { {1,2,3,4,5},{6,7,8,9,10} };
	//定義2行5列的整型陣列
	//其中行可以省略,但是列不能省

二維陣列可被看作一種特殊的一維陣列: 它的元素又是一個一維陣列,
例如,float a[3][4];可以把a看作一個一維陣列,它有3個元素:a[0], a[1], a[2],每個元素又是一個包含4個元素的一維陣列:

a[0] —— a[0][0] a[0][1] a[0][2] a[0][3] 
a[1] —— a[1][0] a[1][1] a[1][2] a[1][3] 
a[2] —— a[2][0] a[2][1] a[2][2] a[2][3]

既然說二維陣列是一個特殊的一維陣列,所以二維陣列的儲存地址也是連續的,只是我們將二維陣列理解為矩陣中行與列的形式,
矩陣形式(如3行4列形式)表示二維陣列,是邏輯上的概念,能形象地表示出行列關系,而在記憶體中,各元素是連續存放的,不是二維的,是線性的,

#include <stdio.h>
int main()
{
	int a[2][5] = { {1,2,3,4,5},{6,7,8,9,10} };
	int b[][5] = { {1,2,3,4,5},{6,7,8,9,10} };
	int i = 0;
	for (i = 0; i < 2; i++)
	{
		int j = 0;
		for (j = 0; j < 5; j++)
		{
			printf("%p \n", &a[i][j]);
		}
	}
	return 0;
}

輸出結果

00F7F728
00F7F72C
00F7F730
00F7F734
00F7F738
00F7F73C
00F7F740
00F7F744
00F7F748
00F7F74C

D:\gtee\C-learning-code-and-project\test_731\Debug\test_731.exe (行程 31064)已退出,代碼為 0,
按任意鍵關閉此視窗. . .

3.1.2二維陣列的初始化

//二維陣列參考
陣列名[下標] [下標]

(1)分行給二維陣列賦初值,(最清楚直觀)

int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

(2)可以將所有資料寫在一個花括號內,按陣列元素在記憶體中的排列順序對各元素賦初值,

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

(3)可以對部分元素賦初值,

int a[3][4]={{1},{5},{9}};//①
int a[3][4]={{1},{0,6},{0,0,11}};	//②
int a[3][4]={{1},{5,6}};	//③
int a[3][4]={{1},{},{9}};	//④

erweishuzhu

(4)如果對全部元素都賦初值(即提供全部初始資料),則定義陣列時對第1維的長度(行)可以不指定,但第2維的長度(列)不能省,

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};

在定義時也可以只對部分元素賦初值而省略第1維(行)的長度,但應分行賦初值,

int a[][4]={{0,0,3},{},{0,10}};

3.2簡單程式舉例

逆置矩陣:BC107 矩陣轉置

描述
KiKi有一個矩陣,他想知道轉置后的矩陣(將矩陣的行列互換得到的新矩陣稱為轉置矩陣),請編程幫他解答,
輸入描述
第一行包含兩個整數n和m,表示一個矩陣包含n行m列,用空格分隔, (1≤n≤10,1≤m≤10)
從2到n+1行,每行輸入m個整數(范圍-231~231-1),用空格分隔,共輸入n*m個數,表示第一個矩陣中的元素,
輸出描述
輸出m行n列,為矩陣轉置后的結果,每個數后面有一個空格,

輸入:
2 3
1 2 3
4 5 6
輸出:
1 4 
2 5 
3 6 

#include <stdio.h>

int main()
{
    int n = 0;
    int m = 0;
    int arr1[15][15] = {0};
    int arr2[15][15] = {0};
    scanf("%d%d",&n,&m);
    int i = 0;
    int j = 0;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
        {
            scanf("%d",&arr1[i][j]);
            arr2[j][i] = arr1[i][j];//將矩陣1的元素儲存在矩陣2,其中它們的行列數相反
        }
    }
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            printf("%d ",arr2[i][j]);//列印
        }
        printf("\n");
    }
    return 0;
}

3.2三子棋

小時候玩過的三子棋(井字棋),你還記得嗎?C語言實作簡單的三子棋小游戲(點擊直達)

3.3掃雷

當心!前面有地雷!C語言實作簡單掃雷小游戲(點擊直達)

4.字符陣列

4.1定義與初始化

4.1.1字符陣列的定義

用來存放字符資料的陣列是字符陣列,在字符陣列中的一個元素記憶體放一個字符,

char c[10];
c[0]='I'; 
c[1]=' ';
c[2]='a';
c[3]='m';
c[4]=' ';
c[5]='h';
c[6]='a';
c[7]='p';
c[8]='p';
c[9]='y';

在這里插入圖片描述
由于字符型資料是以整數形式(ASCII代碼)存放的,因此也可以用整型陣列來存放字符資料,

int c[10];
c[0]='a'; 	//合法,但浪費存盤空間,因為char占1位元組,int占4位元組

4.1.2字符陣列初始化

char c[10]={'I',' ', 'a','m',' ','h','a','p','p','y'};		
//把10個字符依次賦給c[0]~c[9]這10個元素

如果在定義字符陣列時不進行初始化,則陣列中各元素的值是不可預料的,
如果花括號中提供的初值個數(即字符個數)大于陣列長度,則出現語法錯誤,

char c[10]={'c',' ','p', 'r','o','g','r','a','m'};

在這里插入圖片描述

如果初值個數小于陣列長度,則只將這些字符賦給陣列中前面那些元素,其余的元素自動定為空字符(即′\0′),

char c[]={'I',' ', 'a','m',' ','h','a','p','p','y'};
//陣列c的長度自動定為10

字符陣列可以用來初始字串,字串最后都會含有一個’\0’,是結束轉義符,當以陣列列印字串時,會以’\0’為標志,從陣列第一個元素輸出到陣列’\0’前一個元素,

	char ch1[20] = { 'F','B','I',' ','o','p','e','n',' ','t','h','e',' ','d','o','o','r','!','\0'};
	char ch2[20] = "FBI open the door!";
	//這兩個是子是等價的

字符陣列和一維陣列一樣,儲存地址是連續的,字符陣列只是型別為char的陣列,

4.2簡單程式舉例

使用陣列輸出FBI open the door!

#include <stdio.h>

int main()
{
	char ch1[20] = { 'F','B','I',' ','o','p','e','n',' ','t','h','e',' ','d','o','o','r','!','\0'};
	char ch2[20] = "FBI open the door!";
	printf("%s\n", ch1);
	printf("%s\n", ch2);
	return 0;
}

輸出結果

FBI open the door!
FBI open the door!

D:\gtee\C-learning-code-and-project\test_731\Debug\test_731.exe (行程 688)已退出,代碼為 0,
按任意鍵關閉此視窗. . .

4.3簡要介紹與字符相關的庫函式

4.3.1輸出輸入字串的函式

puts(字符陣列);//輸出
gets(字符陣列);//輸入

回傳的函式值是字串str的第一個元素的地址,
用puts和gets函式只能輸出或輸入一個字串,

puts作用:將一個字串(以′\0′結束的字符序列)輸出到終端,
用puts函式輸出的字串中可以包含轉義字符,
在用puts輸出時將字串結束標志′\0′轉換成′\n′,即輸出完字串后換行,
gets作用:從終端輸入一個字串到字符陣列,并且得到一個函式值,該函式值是字符陣列的起始地址,

4.3.2字串連接函式

strcat(字串1, 字串2);

作用:把兩個字符陣列中的字串連接起來,把字串2接到字串1的后面,結果放在字符陣列1中,函式呼叫后得到一個函式值——字符陣列1的地址,
字符陣列1必須足夠大,以便容納連接后的新字串,
連接前兩個字串的后面都有′\0′,連接時將字串1后面的′\0′取消,只在新串最后保留′\0′,

4.3.3字串復制函式

strcpy(字串1, 字串2);

作用:將字串2復制到字符陣列1中去,
字符陣列1必須定義得足夠大,以便容納被復制的字串2,字符陣列1的長度不應小于字串2的長度,
“字符陣列1”必須寫成陣列名形式,“字串2”可以是字符陣列名,也可以是一個字串常量,
若在復制前未對字符陣列1初始化或賦值,則其各位元組中的內容無法預知,復制時將字串2和其后的′\0′一起復制到字符陣列1中,取代字符陣列1中前面的字符,未被取代的字符保持原有內容,
不能用賦值陳述句將一個字串常量或字符陣列直接給一個字符陣列,字符陣列名是一個地址常量,它不能改變值,正如數值型陣列名不能被賦值一樣,
可以用strncpy函式將字串2中前面n個字符復制到字符陣列1中去,
將str2中最前面2個字符復制到str1中,取代str1中原有的最前面2個字符,但復制的字符個數n不應多于str1中原有的字符(不包括′\0′),

4.3.4字串比較函式

strcmp(字串1, 字串2);

對兩個字串比較不能直接用str1>str2進行比較,因為str1和str2代表地址而不代表陣列中全部元素,而只能用 (strcmp(str1,str2)>0)實作,系統分別找到兩個字符陣列的第一個元素,然后順序比較陣列中各個元素的值,

作用:比較字串1和字串2,
字串比較的規則是: 將兩個字串自左至右逐個字符相比(按ASCII碼值大小比較),直到出現不同的字符或遇到′\0′為止,
(1) 如全部字符相同,則認為兩個字串相等;
(2) 若出現不相同的字符,則以第1對不相同的字符的比較結果為準,
比較的結果由函式值帶回,
(1) 如果字串1與字串2相同,則函式值為0,
(2) 如果字串1>字串2,則函式值為一個正整數,
(3) 如果字串1<字串2,則函式值為一個負整數,

4.3.5測字串長度的函式

strlen(字串);

作用:測驗字串長度的函式,函式的值為字串中的實際長度(不包括′\0′在內),

4.3.6轉換為大小寫的函式

strlwr(字串);//大寫字母轉小寫字母
strupr(字串)//小寫字母轉大寫字母

作用:
srtlwr將字串中大寫字母換成小寫字母,
strupr將字串中小寫字母換成大寫字母,

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

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

標籤:其他

上一篇:剛畢業一個月,7 月正式入職深圳互聯網公司的前端月度作業匯報 |總結

下一篇:C語言詳解:運算子

標籤雲
其他(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)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more