国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

一篇博客學會系列(2)—— C語言中的自定義類型 :結(jié)構體、位段、枚舉、聯(lián)合體

這篇具有很好參考價值的文章主要介紹了一篇博客學會系列(2)—— C語言中的自定義類型 :結(jié)構體、位段、枚舉、聯(lián)合體。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

?前言

1、結(jié)構體

1.1、結(jié)構體類型的聲明

1.2、特殊的結(jié)構體類型聲明

1.3、結(jié)構體的自引用

1.4、結(jié)構體的定義和初始化

1.5、結(jié)構體成員變量的調(diào)用

1.6、結(jié)構體內(nèi)存對齊?

1.6.1、offsetof

1.6.2、結(jié)構體大小的計算

1.6.3、為什么存在內(nèi)存對齊??

1.7、?修改默認對齊數(shù)

1.8、結(jié)構體傳參

2、位段?

2.1、什么是位段

2.2、位段的內(nèi)存分配

2.3、位段的跨平臺問題

2.4、位段的應用?

3、枚舉

3.1、枚舉類型的定義

3.2、枚舉的優(yōu)點?

4、聯(lián)合體(共用體)

4.1、聯(lián)合類型的定義

4.2、聯(lián)合體的特點

4.3、聯(lián)合大小的計算

一篇博客學會系列(2)—— C語言中的自定義類型 :結(jié)構體、位段、枚舉、聯(lián)合體,一篇博客學會系列,c語言,開發(fā)語言,c++,visualstudio,算法

?前言

C語言的內(nèi)置類型有:char、short、int、long、long long、float、double。

而這些內(nèi)置類型不能夠解決所有問題,生活中會存在一些復雜對象。

比如描述一個人,名字、性別、年齡、身高、體重.......

描述一本書,書名、作者、出版社.......

由于會存在復雜對象,因此C語言就支持了自定義類型,這就是這篇博客即將講到的結(jié)構體、位段、枚舉、聯(lián)合體(共用體)。

1、結(jié)構體

????????結(jié)構體是一種用戶自定義的數(shù)據(jù)類型,用來將多個關聯(lián)的數(shù)據(jù)項組合到一起,形成一個完整的數(shù)據(jù)集合。

????????數(shù)組是一組相同類型元素的集合,而結(jié)構體可以包含不同類型的數(shù)據(jù),例如整型、字符型、浮點型、數(shù)組、指針等等。結(jié)構體中的每個數(shù)據(jù)被稱為成員變量

1.1、結(jié)構體類型的聲明

  • 結(jié)構體關鍵字struct
  • 自定義類型名tag
  • 成員列表member-list
  • 結(jié)構體變量名variable-list
struct tag
{
	member-list;
}variable-list;

例如描述一個學生:?

struct Stu
{
	char name[20];//名字
	int age;//年齡
	char sex[5];//性別
	char id[20];//學號
}s1, s2, s3;//分號不能丟 s1,s2,s3是三個結(jié)構體變量,為全局變量

int main()
{
	struct Stu s4, s5, s6; //s4,s5,s6是三個結(jié)構體變量,為局部變量
	return 0;
}

1.2、特殊的結(jié)構體類型聲明

匿名結(jié)構體類型在定義時沒有自定義類型名,并且在定義時就創(chuàng)建了結(jié)構體變量(s1)。

特點:因為沒有自定義類型名,無法在以后通過自定義類型名進行創(chuàng)建,所以只能在定義時創(chuàng)建結(jié)構體變量。

struct 
{
	char name[20];//名字
	int age;//年齡
	char sex[5];//性別
	char id[20];//學號
}s1;//分號不能丟

【易錯提醒】?

?下面代碼是否可行?

struct 
{
	char name[20];
	int age;
	char sex[5];
	char id[20];
}s1;

struct
{
	char name[20];
	int age;
	char sex[5];
	char id[20];
}* p;

int main()
{
	p = &s1;  //是否可行?
	return 0;
}

【答案 】

不可行, 在編譯器看來,雖然兩個結(jié)構體的成員變量是一樣的,但是仍然會認為是兩個結(jié)構體類型,因此編譯器會報警告的。

一篇博客學會系列(2)—— C語言中的自定義類型 :結(jié)構體、位段、枚舉、聯(lián)合體,一篇博客學會系列,c語言,開發(fā)語言,c++,visualstudio,算法

1.3、結(jié)構體的自引用

在結(jié)構體中包含一個類型為該結(jié)構體本身的成員可以嗎?

struct Node
{
	int data;
	struct Node next;
};

其實可以換一種思路:如果可以直接在結(jié)構體內(nèi)包含本身,那么該結(jié)構體大小一定是可以用sizeof()計算的,因為如果可行的話就必然會存儲在內(nèi)存中,而存儲在內(nèi)存中的話又必然會有大小。相反如果無法計算大小,就證明該自引用方式不行。

那么當我們運行sizeof計算該結(jié)構體大小時候會發(fā)現(xiàn)編譯器報錯了,即證明該自引用方式是錯誤的。

一篇博客學會系列(2)—— C語言中的自定義類型 :結(jié)構體、位段、枚舉、聯(lián)合體,一篇博客學會系列,c語言,開發(fā)語言,c++,visualstudio,算法

【正確的結(jié)構體自引用】?

因為地址(指針)的大小是確定的,所以可以傳遞指針來實現(xiàn)結(jié)構體的自引用。

struct Node
{
	int data;
	struct Node* next; //結(jié)構體指針
};

int main()
{
	printf("%d\n", sizeof(struct Node));
	return 0;
}

1.4、結(jié)構體的定義和初始化

struct Point
{
	int x;
	int y;
}p1;
//聲明類型的同時定義變量p1
struct Point p2;
//定義結(jié)構體變量p2
//初始化:定義變量的同時賦初值。
struct Point p3 = { 1, 2 };

struct Stu    //類型聲明
{
	char name[15];//名字
	int age;  //年齡
};
struct Stu s = { "zhangsan", 20 };//初始化

struct Node
{
	int data;
	struct Point p;
	struct Node* next;
}n1 = { 10, {4,5}, NULL };
//結(jié)構體嵌套初始化
struct Node n2 = { 20, {5, 6}, NULL };//結(jié)構體嵌套初始化

1.5、結(jié)構體成員變量的調(diào)用

  • 結(jié)構體變量名.成員變量名
  • 結(jié)構體指針->成員變量名

1.6、結(jié)構體內(nèi)存對齊?

  • 我們已經(jīng)掌握了結(jié)構體的基本使用了。
  • 現(xiàn)在我們深入討論一個問題:計算結(jié)構體的大小。
  • 這也是一個特別熱門的考點: 結(jié)構體內(nèi)存對齊

如果兩個結(jié)構體的成員變量都一致,那么他們的大小會一樣嗎?

struct S1
{
	char c1;
	int i;
	char c2;
};

struct S2
{
	char c1;
	char c2;
	int i;
};

int main()
{
	printf("%d\n", sizeof(struct S1));   //結(jié)構體大小為多少?
	printf("%d\n", sizeof(struct S2));   //結(jié)構體大小為多少?
	return 0;
}

【運行結(jié)果】?

出乎意料的是,S1的大小是12,而S2的大小是8,它們的大小啊是不一致的,這是為什么呢?下面我們介紹一個宏offsetof,用這個宏來探究什么導致了S1和S2大小不一。

一篇博客學會系列(2)—— C語言中的自定義類型 :結(jié)構體、位段、枚舉、聯(lián)合體,一篇博客學會系列,c語言,開發(fā)語言,c++,visualstudio,算法

1.6.1、offsetof

宏offsetof用于計算結(jié)構體成員相較于起始位置的偏移量,返回的就是偏移量。

【計算S1】

首先c1、c2占一個字節(jié),i占四個字節(jié)。然后用offsetof計算出偏移量為0、4、8。

而S1總大小又為12,那么將c1、i、c2按照偏移量存入內(nèi)存中后可以觀察到,如果S1為12,那么將有6個字節(jié)的空間被浪費(紅色區(qū)域),這是為什么呢?

一篇博客學會系列(2)—— C語言中的自定義類型 :結(jié)構體、位段、枚舉、聯(lián)合體,一篇博客學會系列,c語言,開發(fā)語言,c++,visualstudio,算法

【計算S2】

?S2計算的大小是8,那么將成員變量按照偏移量存入內(nèi)存中后,可以觀察到被浪費了2個字節(jié)的空間(紅色區(qū)域),為什么會出現(xiàn)浪費的空間,而且浪費的空間還不一樣呢?下面將為大家講解結(jié)構體內(nèi)存對齊。

一篇博客學會系列(2)—— C語言中的自定義類型 :結(jié)構體、位段、枚舉、聯(lián)合體,一篇博客學會系列,c語言,開發(fā)語言,c++,visualstudio,算法

1.6.2、結(jié)構體大小的計算

首先得掌握結(jié)構體的對齊規(guī)則:

  1. 第一個成員在與結(jié)構體變量偏移量為0的地址處。
  2. 其他成員變量要對齊到某個數(shù)字(對齊數(shù))的整數(shù)倍的地址處。
  • 對齊數(shù) = 編譯器默認的一個對齊數(shù) 與 該成員大小的較小值
  • VS中默認的值為8
  • Linux中沒有默認對齊數(shù),對齊數(shù)就是成員自身的大小。

?????3. 結(jié)構體總大小為最大對齊數(shù)(每個成員變量都有一個對齊數(shù))的整數(shù)倍。

?????4. 如果嵌套了結(jié)構體的情況,嵌套的結(jié)構體對齊到自己的最大對齊數(shù)的整數(shù)倍處,結(jié)構體的整體大小就是所有最大對齊數(shù)(含嵌套結(jié)構體的對齊數(shù))的整數(shù)倍。

那么當我們知道了對齊數(shù)這個東西之后,我們就來試著自己計算一下s1和s2的大小。?

?【手動計算S1】

  • 第一個成員c1直接放在0偏移處。
  • i的自身大小為4,vs默認對齊數(shù)為8,較小值就為4,因此要放到4的整數(shù)倍的位置上,即跳過(浪費)3個字節(jié)放在4偏移處,占4個字節(jié)。
  • c2自身大小為1,vs默認對齊數(shù)為8,較小值就為1,因此要放到1的整數(shù)倍的位置上,任何數(shù)都是1的整數(shù)倍,因此直接放在i后面就可以了。
  • 此時還沒結(jié)束,結(jié)構體總大小為最大對齊數(shù)(每個成員變量都有一個對齊數(shù))的整數(shù)倍。c1對齊數(shù)1,i對齊數(shù)4,c2對齊數(shù)1,因此最大對齊數(shù)為4,此時大小為9,需要再浪費3個空間,使結(jié)構體總大小到達12成為4的倍數(shù),這就完成了一次結(jié)構體的計算。

一篇博客學會系列(2)—— C語言中的自定義類型 :結(jié)構體、位段、枚舉、聯(lián)合體,一篇博客學會系列,c語言,開發(fā)語言,c++,visualstudio,算法

【手動計算S2】?

  • 第一個成員c1直接放在0偏移處。
  • c2自身大小為1,vs默認對齊數(shù)為8,較小值就為1,因此要放到1的整數(shù)倍的位置上,任何數(shù)都是1的整數(shù)倍,因此直接放在c1后面就可以了。
  • i的自身大小為4,vs默認對齊數(shù)為8,較小值就為4,因此要放到4的整數(shù)倍的位置上,即跳過(浪費)2個字節(jié)放在4偏移處,占4個字節(jié)。
  • 此時還沒結(jié)束,結(jié)構體總大小為最大對齊數(shù)(每個成員變量都有一個對齊數(shù))的整數(shù)倍。c1對齊數(shù)1,i對齊數(shù)4,c2對齊數(shù)1,因此最大對齊數(shù)為4。但是此時的大小剛好就為4的倍數(shù),因此不需要在浪費其他空間了,結(jié)構體大小就為8。

一篇博客學會系列(2)—— C語言中的自定義類型 :結(jié)構體、位段、枚舉、聯(lián)合體,一篇博客學會系列,c語言,開發(fā)語言,c++,visualstudio,算法

1.6.3、為什么存在內(nèi)存對齊??

????????當我們了解完結(jié)構體內(nèi)存對齊之后,我們還有一個問題:什么會存在內(nèi)存對齊呢 ?

大部分的參考資料中都涉及到兩種原因

1. 平臺原因(移植原因):
????????不是所有的硬件平臺都能訪問任意地址上的任意數(shù)據(jù)的;某些硬件平臺只能在某些地址處取某些特定類型的數(shù)據(jù),否則拋出硬件異常

2. 性能原因:
????????數(shù)據(jù)結(jié)構(尤其是棧)應該盡可能地在自然邊界上對齊。原因在于,為了訪問未對齊的內(nèi)存,處理器需要作兩次內(nèi)存訪問;而對齊的內(nèi)存訪問僅需要一次訪問。

總體來說:?

結(jié)構體的內(nèi)存對齊是拿空間來換取時間的做法。

?文章來源地址http://www.zghlxwxcb.cn/news/detail-716057.html

?那在設計結(jié)構體的時候,我們既要滿足對齊,又要節(jié)省空間,如何做到:

讓占用空間小的成員盡量集中在一起。例如上面作為例子使用的S1和S2,它們的成員一模一樣,但是S1和S2所占空間的大小有了一些區(qū)別,就是因為S2將小的成員放在了一起。

struct S1
{
	char c1;
	int i;
	char c2;
};                      //結(jié)構體大小12

struct S2
{
	char c1;
	char c2;
	int i;
};                      //結(jié)構體大小8

1.7、?修改默認對齊數(shù)

之前我們見過了 #pragma 這個預處理指令,這里我們再次使用,可以改變我們的默認對齊數(shù)。

#include <stdio.h>
#pragma pack(8)//設置默認對齊數(shù)為8

struct S1
{
	char c1;
	int i;
	char c2;
};
#pragma pack()//取消設置的默認對齊數(shù),還原為默認


#pragma pack(1)//設置默認對齊數(shù)為1
struct S2
{
	char c1;
	int i;
	char c2;
};
#pragma pack()//取消設置的默認對齊數(shù),還原為默認

int main()
{	//輸出的結(jié)果是什么?
	printf("%d\n", sizeof(struct S1));
	printf("%d\n", sizeof(struct S2));
	return 0;
}

?【運行結(jié)果】

這里非常好理解,對齊數(shù)設置為8的情況我們在上面已經(jīng)計算過了,那么設置為1的時候就等于沒有對齊了,因為任何數(shù)都是1的整數(shù)倍,所以直接就等于1+4+1 = 6。

一篇博客學會系列(2)—— C語言中的自定義類型 :結(jié)構體、位段、枚舉、聯(lián)合體,一篇博客學會系列,c語言,開發(fā)語言,c++,visualstudio,算法

1.8、結(jié)構體傳參

?下面的 print1 和 print2 函數(shù)哪個好些?

struct S
{
	int data[1000];
	int num;
};
struct S s = { {1,2,3,4}, 1000 };
//結(jié)構體傳參
void print1(struct S s)
{
	printf("%d\n", s.num);
}
//結(jié)構體地址傳參
void print2(struct S* ps)
{
	printf("%d\n", ps->num);
}
int main()
{
	print1(s);  //傳結(jié)構體
	print2(&s); //傳地址
	return 0;
}

【答案】

首選?print2?函數(shù),因為函數(shù)傳參的時候,參數(shù)是需要壓棧,會有時間和空間上的系統(tǒng)開銷。
如果傳遞一個結(jié)構體對象的時候,結(jié)構體過大,參數(shù)壓棧的的系統(tǒng)開銷比較大,所以會導致性能的下降。

2、位段?

?位段的出現(xiàn)是為了節(jié)省空間的。

2.1、什么是位段

位段的“位”,就是二進制位的“位”。位段的聲明和結(jié)構是類似的,有兩個不同:

  1. 位段的成員必須是 int、unsigned int 或signed int 。在 C99之后,也可以是其他類型,但基本上也都是int、char這些整型家族的類型。
  2. 位段的成員名后邊有一個冒號和一個數(shù)字
struct A
{
	int _a : 2;  //_a占用2個bit位的空間
	int _b : 5;  //_b占用5個bit位的空間
	int _c : 10; //_c占用10個bit位的空間
	int _d : 30; //_d占用30個bit位的空間
};

int main()
{
	printf("%d\n", sizeof(struct A));
	return 0;
}


//提示:1個字節(jié)等于8個bit位

?一篇博客學會系列(2)—— C語言中的自定義類型 :結(jié)構體、位段、枚舉、聯(lián)合體,一篇博客學會系列,c語言,開發(fā)語言,c++,visualstudio,算法

正常情況下四個int類型開辟出來的大小為16個字節(jié),但是如果使用上面的代碼實現(xiàn)的話只用了8個字節(jié),下面就來講解一下位段的內(nèi)存分配。

2.2、位段的內(nèi)存分配

  1. 位段的成員可以是 int unsigned int signed int 或者是 char (屬于整形家族)類型
  2. 位段的空間上是按照需要以4個字節(jié)( int )或者1個字節(jié)( char )的方式來開辟的。
  3. 位段涉及很多不確定因素,位段是不跨平臺的,注重可移植的程序應該避免使用位段
struct S
{
	char a : 3;
	char b : 4;
	char c : 5;
	char d : 4;
};


int main()
{
	struct S s = { 0 };

	s.a = 10;
	s.b = 12;
	s.c = 3;
	s.d = 4;

	int ret = sizeof(struct S);
	printf("%d\n", ret);
	return 0;
}

?【運行結(jié)果】Visual Studio 2022環(huán)境下測試結(jié)果

結(jié)果為3個字節(jié)。

疑問3+4+5+4 = 16bit位,1個字節(jié)等于8個bit位,為什么不是開辟2個字節(jié)呢?

我們可以在內(nèi)存存放的值中找到答案。

一篇博客學會系列(2)—— C語言中的自定義類型 :結(jié)構體、位段、枚舉、聯(lián)合體,一篇博客學會系列,c語言,開發(fā)語言,c++,visualstudio,算法

圖解可以得出結(jié)論:當空間不夠存放下一個成員時,剩下的空間不會被使用,而是會開辟另外一個空間然后將內(nèi)容存放到新開辟的空間中去,因此上述代碼的結(jié)果才會是是3而不是2。

2.3、位段的跨平臺問題

  1. int 位段被當成有符號數(shù)還是無符號數(shù)是不確定的。
  2. 位段中最大位的數(shù)目不能確定。(16位機器最大16,32位機器最大32,寫成27,在16位機器會出問題。)
  3. 位段中的成員在內(nèi)存中從左向右分配,還是從右向左分配標準尚未定義。
  4. 當一個結(jié)構包含兩個位段,第二個位段成員比較大,無法容納于第一個位段剩余的位時,是舍棄剩余的位還是利用,這是不確定的。

總結(jié):

跟結(jié)構相比,位段可以達到同樣的效果,但是可以很好的節(jié)省空間,但是有跨平臺的問題存在。

2.4、位段的應用?

網(wǎng)絡協(xié)議棧,網(wǎng)絡底層傳輸數(shù)據(jù)。

在當今的互聯(lián)網(wǎng)時代下,通過網(wǎng)絡傳輸數(shù)據(jù)已經(jīng)非常普遍了,那么大家有沒有想過,當我們發(fā)送的一條短信,一條微信消息時,網(wǎng)絡傳輸部分是怎樣處理的,它是只傳輸了消息本身嗎?當然不是,一條最簡單的消息都要包含許多其他的數(shù)據(jù),比如這條消息的發(fā)出時間,發(fā)送者的ip地址,發(fā)送對象的ip地址等等等等。一條消息包含了那么多數(shù)據(jù),那么如果沒有位段的出現(xiàn),就會導致單條消息傳輸?shù)捏w積過大,會導致網(wǎng)絡負載過大,不利于我們的日常使用和服務器的數(shù)據(jù)存儲。使用位段就能很好的壓縮體積大小,使得消息更加小而輕便。

一篇博客學會系列(2)—— C語言中的自定義類型 :結(jié)構體、位段、枚舉、聯(lián)合體,一篇博客學會系列,c語言,開發(fā)語言,c++,visualstudio,算法

3、枚舉

枚舉,顧名思義就是一一列舉,把可能值都一一列舉。

比如我們現(xiàn)實生活中:

  • 一周的星期一到星期日是有限的7天,可以一一列舉。
  • 性別有:男、女、保密,也可以一一列舉。
  • 月份有12個月,也可以一一列舉

3.1、枚舉類型的定義

以下定義的 enum Day , enum Sex , enum Color 都是枚舉類型。
{}中的內(nèi)容是枚舉類型的可能取值,也叫枚舉常量 。

enum Day//星期
{
	Mon,   //枚舉的可能取值是默認從0開始的。
	Tues,
	Wed,
	Thur,
	Fri,
	Sat,
	Sun
};

enum Sex//性別
{
	MALE,
	FEMALE,
	SECRET
};

enum Color//顏色
{
	RED,
	GREEN,
	BLUE
};

這些可能取值都是有值的,默認從0開始,一次遞增1,當然在定義的時候也可以賦初值。

例如:?

enum Color//顏色
{
    RED=1,
    GREEN=2,
    BLUE=4
};

3.2、枚舉的優(yōu)點?

我們可以使用 #define 定義常量,為什么非要使用枚舉?
枚舉的優(yōu)點

  1. 增加代碼的可讀性和可維護性
  2. 和#define定義的標識符比較枚舉有類型檢查,更加嚴謹。
  3. 防止了命名污染(封裝)
  4. 便于調(diào)試
  5. 使用方便,一次可以定義多個常量

4、聯(lián)合體(共用體)

4.1、聯(lián)合類型的定義

聯(lián)合也是一種特殊的自定義類型
這種類型定義的變量也包含一系列的成員,特征是這些成員公用同一塊空間(所以聯(lián)合也叫共用體)。
比如:

union Un
{
	char c;
	int i;
};

4.2、聯(lián)合體的特點

聯(lián)合的成員是共用同一塊內(nèi)存空間的,這樣一個聯(lián)合變量的大小,至少是最大成員的大?。ㄒ驗槁?lián)合至少得有能力保存最大的那個成員)。同時因為共用一塊內(nèi)存空間,所以同一時間只能使用一個。

union Un
{
	char c;
	int i;
};

int main()
{
	union Un un;
	printf("%d\n", sizeof(un));
	printf("%p\n", &(un));
	printf("%p\n", &(un.c));
	printf("%p\n", &(un.i));
	return 0;
}

?一篇博客學會系列(2)—— C語言中的自定義類型 :結(jié)構體、位段、枚舉、聯(lián)合體,一篇博客學會系列,c語言,開發(fā)語言,c++,visualstudio,算法

4.3、聯(lián)合大小的計算

  • 聯(lián)合的大小至少是最大成員的大小。
  • 當最大成員大小不是最大對齊數(shù)的整數(shù)倍的時候,就要對齊到最大對齊數(shù)的整數(shù)倍。
union Un
{
	char c[5];  //大小為5,對齊數(shù)為1
	int i;      //大小為4,對齊數(shù)為4
};

int main()
{
	printf("%zd\n", sizeof(union Un));
	return 0;
}

?【運行結(jié)果】

最大成員大小為5,但是最大對齊數(shù)是4,所以需要對齊到8。

一篇博客學會系列(2)—— C語言中的自定義類型 :結(jié)構體、位段、枚舉、聯(lián)合體,一篇博客學會系列,c語言,開發(fā)語言,c++,visualstudio,算法

一篇博客學會系列(2)—— C語言中的自定義類型 :結(jié)構體、位段、枚舉、聯(lián)合體,一篇博客學會系列,c語言,開發(fā)語言,c++,visualstudio,算法

如果覺得作者寫的不錯,求給博主一個大大的點贊支持一下,你們的支持是我更新的最大動力!

如果覺得作者寫的不錯,求給博主一個大大的點贊支持一下,你們的支持是我更新的最大動力!

如果覺得作者寫的不錯,求給博主一個大大的點贊支持一下,你們的支持是我更新的最大動力!

?

到了這里,關于一篇博客學會系列(2)—— C語言中的自定義類型 :結(jié)構體、位段、枚舉、聯(lián)合體的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • java中的自定義異常處理機制

    在日常開發(fā)中我們難免會遇到各種各樣的異常問題的發(fā)生,但是任何異常如果都在異常可能會出現(xiàn)的地方直接去處理會讓業(yè)務邏輯顯得很臃腫,代碼看上去很冗余。在開發(fā)Web應用程序時,異常處理是一項非常重要的任務。異常處理可以提高程序的健壯性和穩(wěn)定性。Java后端開發(fā)

    2024年02月08日
    瀏覽(20)
  • 【Mysql】一篇學會SQL中的遞歸的用法

    【Mysql】一篇學會SQL中的遞歸的用法

    ?????????SQL遞歸查詢是一種用于處理具有層次結(jié)構的數(shù)據(jù)的技術。它使用遞歸函數(shù)來遍歷樹形結(jié)構,例如組織結(jié)構、分類結(jié)構等等。 ????????遞歸查詢通常使用 \\\"?WITH RECURSIVE \\\"? 語句實現(xiàn)。 ????????WITH RECURSIVE 語句包含兩部分: ? ? ? ? ? ? a.遞歸部分: 定義了如

    2024年02月13日
    瀏覽(25)
  • Flink中的自定義參數(shù)與模型配置

    Flink中的自定義參數(shù)與模型配置

    作者:禪與計算機程序設計藝術 https://nightlies.apache.org/flink/flink-docs-master/docs/concepts/flink-architecture/ Apache Flink 是一個框架和分布式處理引擎,用于在無邊界和有邊界數(shù)據(jù)流上進行有狀態(tài)的計算。Flink 能在所有常見集群環(huán)境中運行,并能以內(nèi)存速度和任意規(guī)模進行計算。 在企業(yè)

    2024年02月10日
    瀏覽(31)
  • 全網(wǎng)最細的自定義類型詳解(結(jié)構體,枚舉,聯(lián)合),友友們快來接收吧

    全網(wǎng)最細的自定義類型詳解(結(jié)構體,枚舉,聯(lián)合),友友們快來接收吧

    各位csdn的友友們肯定都掌握了c語言中 char,short, int, long, float, double的類型 ,這些都是我們c語言中的一些內(nèi)置類型,其實c語言是可以允許我們創(chuàng)造一些類型的,今天阿博就帶領友友們一起掌握這些新的自定義類型?????? 結(jié)構體類型的聲明 注意最后那個分號千萬不能丟哦!

    2023年04月17日
    瀏覽(24)
  • Webhook端口中的自定義簽名身份認證

    Webhook端口中的自定義簽名身份認證

    概述 如果需要通過 Webhook 端口從交易伙伴處接收數(shù)據(jù),但該交易伙伴可能對于安全性有著較高的要求,而不僅僅是用于驗證入站 Webhook 要求的基本身份驗證用戶名/密碼,或者用戶可能只想在入站 Webhook 消息上增加額外的安全層。 使用 Webhook 端口的自定義響應功能,用戶實際

    2024年01月20日
    瀏覽(19)
  • 微信小程序入門學習02-TDesign中的自定義組件

    微信小程序入門學習02-TDesign中的自定義組件

    我們上一篇講解了TDesign模板的基本用法,如何開始閱讀模板。本篇我們講解一下自定義組件的用法。 官方模板在頂部除了顯示圖片外,還顯示了一段文字介紹。文字是嵌套在容器組件里,先按照他的寫法復制代碼到我們自己創(chuàng)建的index.wxml文件里 因為我們的布局是從上到下,

    2024年02月10日
    瀏覽(22)
  • Python中的自定義密碼驗證,對密碼驗證功能進行單元測試(1)

    Python中的自定義密碼驗證,對密碼驗證功能進行單元測試(1)

    import unittest from app import is_valid_size class TestIsValidSize(unittest.TestCase): def test_empty_password(self): self.assertFalse(is_valid_size(“”)) def test_4_char_password(self): self.assertFalse(is_valid_size(“pass”)) def test_6_char_password(self): self.assertTrue(is_valid_size(“passwd”)) def test_16_char_password(self): self.assertTrue

    2024年04月23日
    瀏覽(24)
  • 【C語言】一篇博客帶你弄懂最大公約數(shù)和最小公倍數(shù)

    【C語言】一篇博客帶你弄懂最大公約數(shù)和最小公倍數(shù)

    我們在C語言的學習中,經(jīng)常會遇到這樣一些數(shù)學題目,良好掌握這些題目有利于我們理解和學習C語言,話不多說,直接進入主題 最大公約數(shù): 首先我們舉個例子,比如12 和16,12的約數(shù)有(1,2 ,3,4,6,12),16的約數(shù)有(1,2,4,8,16)公約數(shù)就是兩個數(shù)共同的約數(shù),(1,2,4)而公約數(shù)

    2024年02月04日
    瀏覽(17)
  • wangEditor5在Vue3中的自定義圖片+視頻+音頻菜單

    wangEditor5在Vue3中的自定義圖片+視頻+音頻菜單

    本文適用于wangEditor5用在Vue3中自定義擴展音頻、視頻、圖片菜單;并擴展音頻元素節(jié)點,保證音頻節(jié)點的插入、讀取、回寫功能正常;支持動態(tài)修改尺寸。適用于初學者。 ButtonMenu:自定義擴展新功能 | wangEditor ModalMenu:自定義擴展新功能 | wangEditor 注冊菜單到wangEditor:定義新

    2024年02月06日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包