【03】廈門立林科技——立林科技 嵌入式 校招筆試,題目記錄及解析

廈門立林科技——立林科技 嵌入式 校招筆試,題目記錄及解析

  • 1.下面的程序的輸出是()。
  • 2.在頭文件中#ifndef/#define/#endif的作用是
  • 4.執行下面程序中的輸出語句后,輸出的結果是()
  • 6.在32位處理器上,運行如下程序后p的值為()。
  • 10.設有兩字符串“Beijing".“China"分別存放在字符串數組str1[15], str2[15]中,下面語句中能把“China”連接到Beijing”之后的為()。
  • 12.若已定義char s[10];測則在下面表達式中表示s[1]的地址有誤的是
  • 14.執行下面程序,運行結果是()。
  • 15.設有程序段:char s[] =“china";char *p; p = s;則下面敘述正確的是()。
  • 重要問題 無論什么時候都不要在main外面初始化,除非聲明并初始化
  • 16.已有函數max(a, b),為了使函數指針變量p指向函數max,正確的賦值方法是()。
  • 17.在32位處理器下執行以下程序,以下選項正確的是()。
  • 18.定義一個函數實現交換x和y的誼,并將結果正確返回。能夠實現此功能的是
  • 19.對以下代碼理解正確的是()。
  • 21.執行下面程序,運行結果是
  • 23.執行下面程序運行結果是
  • 25.在32位的處理器上,定義以下結構體,則語句printf("%d",sizdof(struct s);的輸出結果是) 。
  • 26.在32位ARM處理器上,執行如下程度,輸出結果為()。
  • 27.有以下說明,則值為210的表達式是()
  • 31.域名服務DNS的正向解析是().
  • 32.TCP和UDP協議的相似之處是。
  • 33.以下用于文件傳輸的協議是()。
  • 34.對于下列說法,錯誤的是。
  • 35.在以太網中實現IP地址到MAC地址的解析,主要通過()協議實現。
  • 36.linux所有服務的啟動腳本都存放在()目錄中。
  • 38.以下對信號的理解不正確的是()。
  • 43.以下關于UART描術正確的
  • 44.執行以下程序段,*c的結果是()
  • 45.在stm32單片機中,以下對中斷理解正確的是()。
  • 46.使用DMA技術的目的是()。
  • 47.指令周期是指()。
  • 48.主存貯器和CPU之間增加cache的目的是()。
  • 49.沒有外存貯器的計算機監控程序可以存放在()。
  • 50.用2條8位的數據總線傳輸64位二進制代碼,需要傳輸幾次()。

廈門立林科技——立林科技 嵌入式 校招筆試,題目記錄及解析

1.下面的程序的輸出是()。

#include <stdio.h
#define ADD(X) X+X
void main()
{int m = 1, n = 2, k = 3, sum;sum = ADD(m + n) * k; printf(" %d\n", sum);
}
A: 19
B:9
C:12
D:10
D

對比宏定義加括號 和 不加括號
ADD(X) X+X 和 ADD(X) (X)+(X)

#define ADD(X) X+X
ADD(m + n) * k = X + X * k =  1 + 2 + 1 + 2 * 3 = 4 + 6 = 10
#define ADD(X) (X)+(X)
ADD(m + n) *  k = X + X * k =1+2+1+2* 3 = 3+3*3 = 12

在這里插入圖片描述

在這里插入圖片描述

2.在頭文件中#ifndef/#define/#endif的作用是

A:讓編譯器認為該文件為頭文什
B:避免頭文件重復包含
C:C語言強制規定并無實際意乂
D:以上都不對
B 

1. 作用
防止頭文件被重復引用,防止被重復編譯。

2. 簡介
#ifndef 它是if not define的簡寫,是宏定義的一種,確切的說是預處理功能(宏定義、文件包含、條件編譯)三種中的一種——條件編譯。

使用#ifndef可以避免以下錯誤:如果在.h文件中定義了全局變量,一個C文件包含了.h文件多次,如果不加#ifndef宏定義,會出現變量重復定義的錯誤;如果加了#ifndef則不會出現這種錯誤.

4.執行下面程序中的輸出語句后,輸出的結果是()

#include <stdio.h>
void main()
{int i, j;i = 0x10; //hex(10) = Dec(16);j = 17;printf("“%d,%d\n", i - j, i + j);
}
A  1,32
B -1,32
C 1,33
D -1,33
i = 0x10; //hex(10) = Dec(16);
D

6.在32位處理器上,運行如下程序后p的值為()。

unsigned long *p =(unsigned long *)0x80001000;
*p = 0x10001234;p += 5;
A:Ox10001248
B:0x80001005
C:0x80001014

運行出錯,p地址沖突;
應該是 A或 C,或者 D 選項,報錯
在這里插入圖片描述

如果
unsigned long *p =(unsigned long *)0x80001000;p += 5;結果:0x80001000 + 4*5 = 0x80001014  //注意 4*5 = 20 十六進制是14 

在這里插入圖片描述

如果
unsigned long *p = 0x10001234;p += 5;結果:0x10001234+ 4*5 = 0x10001234 +14 = 0x10001248 //注意 4*5 = 20 十六進制是14 

在這里插入圖片描述

10.設有兩字符串“Beijing".“China"分別存放在字符串數組str1[15], str2[15]中,下面語句中能把“China”連接到Beijing”之后的為()。

A: strcpy(str1, str2);
B: strcpy(str1, “China");
C: strcat(str1, "China");
D: strcat("Beijing". str2);
C

strcat(str1, “China”);// strcat(str1,str2);
在這里插入圖片描述

12.若已定義char s[10];測則在下面表達式中表示s[1]的地址有誤的是

A: &s[1]
B: &s[0] + 1
C: s +1
D: S++
D

測試

void main()
{char s[5] = {1,2,3,4,5};char* p = &s[1];char* q = &s[0] + 1;char* k = s + 1;char* j = s++;printf(" %p\n", p);printf(" %p\n", q);printf(" %p\n", k);//printf(" %p\n", j);
}

在這里插入圖片描述
在這里插入圖片描述

14.執行下面程序,運行結果是()。

char* s = "abcde";
s += 2;
printf("%s",s);
A:字符’c的地址
B:不確定
C: cde
D:字符c'
C

15.設有程序段:char s[] =“china";char *p; p = s;則下面敘述正確的是()。

A: *p與s[0]相等
B: 數組s中的內容和指針變量p中的內容相等O
C: s數組長度和p所指向的字符串長度相等
D: s和p完全相同
A B C
void main()
{char s[10] = "china";char* p;p = s;printf("  *p = %c\n", *p);printf("s[0] = %c\n", s[0]);printf("p = %s\n", p);printf("s = %s\n", s);printf("\nstrlen(s) = %d\n", strlen(s));//s數組長度printf("strlen(p) = %d\n", strlen(p));//p所指向的字符串長度printf("sizeof(s) = %d\n", sizeof(s));//s數組占用空間大小,包含結束符,若定長是容量printf("sizeof(p) = %d\n", sizeof(p));//指針占用空間大小
}

在這里插入圖片描述
strlen,求字符串長度,即字符個數;
sizeof,求字符串空間大小= 個數 * 單位字節數;

	int a[] = {1,2,3};int b[10] = {1,2,3};printf("\nsizeof(a) = %d\n", sizeof(a));//s數組占用空間大小(可理解數組容量)printf("sizeof(b) = %d\n", sizeof(b));s數組占用空間大小,若定長是容量

在這里插入圖片描述

重要問題 無論什么時候都不要在main外面初始化,除非聲明并初始化

變量定義到外面 p =s就報錯;
變量定義到 main里面就可以運行;
為什么?
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

無論什么時候都不要在main外面初始化,除非聲明并初始化;

驗證發現,確實如此;
在這里插入圖片描述
如果要在main外面初始化,那么在聲明的時候就初始化,聲明和賦值不能寫成兩行;

char s[10] = "china";
char* p = s;
int a = 120;
void main(){}

“我覺得應該和代碼的執行順序有關,函數外,只負責分配內存,不負責執行任何東西,你的p = s;壓根就沒執行,因為main才是程序執行的入口”

“跟全局變量和局部變量 存儲位置有吧? ”

C語言中局部變量存在棧里,全局變量存靜態存儲區。

局部變量空間上分配,這個局部變量所在的函數被多次調用時,每次調用這個局部變量在棧上的位置都不一定相同。局部變量也可以在堆上動態分配,但是記得使用完這個堆空間后要釋放之。

全局變量全部存放在靜態存儲區,在程序開始執行時給全局變量分配存儲區,程序行完畢就釋放。在程序執行過程中它們占據固定的存儲單元,而不動態地進行分配和釋放;

16.已有函數max(a, b),為了使函數指針變量p指向函數max,正確的賦值方法是()。

A: *p = max(a, b);
B: *p = max;
C:p = max;
D:p = max(a, b);
C

函數指針示例

int max(int a, int b) {return  a > b ? a : b;
}void main()
{//定義函數指針int (*p)(int a, int b);//賦值,函數指針變量p指向函數maxp = max;//調用printf("(*p)(5,8) = %d\n",(*p)(5,8));	
}

在這里插入圖片描述

17.在32位處理器下執行以下程序,以下選項正確的是()。

char code[]="Hello world!";
char *p = code;
long a = 1000;
int n = 10;
A : sizeof(code) == 11
B : sizeof( p ) == 12
C : sizeof(a) == sizeof(n)
D : 以上都不對
C

在這里插入圖片描述
long是長整型 long int的縮寫形式,int是整型。
后者包含前者,前者是后者的一種類型。所以說他倆沒區別,但又有點小不一樣。
寫代碼的時候用int,是默認,用long是專門標注強調,另外,long還分有無符號。
就好比去吃早點,不強調不吃芫荽,店家可能就會默認給你放上。

long和int在不同環境的編譯器下需要的存儲大小不同。
在這里插入圖片描述

32位機中,
char1個字節
short2個字節
int4個字節
long4個字節64位機中,
char1個字節
short2個字節
int4個字節
long8個字節 //但是,我在64位系統,x86,x64編譯都是4
void main()
{char a = 10;short b = 10;int c = 10;long d = 1000;float e = 12;double f = 5;printf("  char %d\n", sizeof(a));printf(" short %d\n", sizeof(b));printf("   int %d\n", sizeof(c));printf("  long %d\n", sizeof(d));printf(" float %d\n", sizeof(e));printf("double %d\n", sizeof(f));
}

64位系統,x86編譯
在這里插入圖片描述
64位系統,x64編譯
在這里插入圖片描述

18.定義一個函數實現交換x和y的誼,并將結果正確返回。能夠實現此功能的是

//A
swapa(int x, int y) {int temp;temp = x;x = y;y = temp;
}//B
swapb(int* x, int* y)
{int temp;temp = x;x = y;y = temp;
}//C
swapc(int* x, int* y) {int temp;temp = *x;*x = *y;*y = temp;
}//D
swapd(int *x, int *y){int* temp;temp = x;x = y;y = temp;
}
C
void main()
{int a = 5, b = 9;swapa(a, b);printf("%d,%d\n", a, b);int c = 5, d = 9;swapb(&c, &d);printf("%d,%d\n", c, d);int e = 5, f = 9;swapc(&e, &f);printf("%d,%d\n", e, f);int g = 5, h = 9;swapd(&g, &h);printf("%d,%d\n", g,h);
}

在這里插入圖片描述

(1)將指針作為實參,可以對該指針指向的對象,也就是實參進行修改

void swap2(int *n1, int *n2)
{int tmp;tmp = *n1;*n1 = *n2;*n2 = tmp;    
} 
swap(&a,&b);

使用引用形參達到目的

void swap(int &x, int &y)
{int t;t=x;x=y;y=t;
}
swap(&a,&b);

引用方式出錯
在這里插入圖片描述

19.對以下代碼理解正確的是()。

(1) char *p = malloc(5);
(2) memcpy(p, "123456", 5);
(3) strcpy(p, "123456");
(4) free(p);*p=1;

A:(2)會導敵指針越界
B:(3)會導致指針計越界
C:(4)必然會使系統死機
D:以上都確

D 

21.執行下面程序,運行結果是

#include <stdio.h>
long fib(int n){if (n > 2) {return (fib(n - 1) + fib(n - 2));}else {return 2;}
}
void main(){printf("%din", fib(3));
}
A: 2
B: 4
C: 6
D: 8

在這里插入圖片描述

23.執行下面程序運行結果是

#include<stdio.h>
int w =3;
int fun(int k){if (k ==0)return w; return (fun(k-1)* k); //階乘
}
void main()
{
int w=10;
printf("%dIn", fun(5)*w);
}
A 360
B 3600
C 1080
D 1200

在這里插入圖片描述

n*(n-1),
直到 n=1時,f(n-1) = f(0), return w; w=3;
即,fun(5) = 5*4*3*2*1*3 = 120*3;
fun(5)*w = 360 *10 = 3600;

25.在32位的處理器上,定義以下結構體,則語句printf(“%d”,sizdof(struct s);的輸出結果是) 。

struct s{int a;char b;float f;
};

四字節對齊

12

26.在32位ARM處理器上,執行如下程度,輸出結果為()。

typedef struct {char a;int b;char c;int d;
}_str_1_t;typedef struct {char a;char c;int b;int d;
}_str_2_t;printf("%d,%d", sizeof(_str_1_t), sizeof(_str_2_t));
16,12

在這里插入圖片描述
64位也是16,12
在這里插入圖片描述

27.有以下說明,則值為210的表達式是()

int x0[] = { 110, 120 }, x1[] = { 210, 220 };struct s x[] = { {100}, {200} }, *p= x;x[0].b = x0;
x[1].b = x1;A: *p->b
B: (++p)->a
C: *(p++)->b
D: *(++p)->b
D

31.域名服務DNS的正向解析是().

A將域名轉換為物理地址.
B將域名轉換為為IP地址
CIP地址轉換為物理地址
D:將IP也轉專換為域名
B 

1、DNS的作用
正向解析:根據域名查找對應的IP地址
反向解析:根據IP地址查找對應的域名

DNS系統的分布式數據結構
在這里插入圖片描述

2、DNS概述
在日常生活中人們習慣使用域名訪問服務器,但機器間互相只認IP地址,域名與IP地址之間是多對一的關系,一個Ip地址不一定只對應一個域名,且一個域名只可以對應一個Ip地址,它們之間的轉換工作稱為域名解析,域名解析需要由專門的域名解析服務器來完成,整個過程是自動進行的。

32.TCP和UDP協議的相似之處是。

A:都是面向連接的協議
B:鄒是面向上連接的協議
C傳輸層協議
D以均不對
D 

33.以下用于文件傳輸的協議是()。

A: HTML
B: SMTP
C: FTP
D: POP
C 

FTP協議用于文件傳輸。

FTP是File Transfer Protoco文件傳輸協議的縮寫,FTP用于在網絡上進行文件傳輸的一套標準協議,使用客戶/服務器模式。它屬于網絡傳輸協議的應用層。文件傳送和文件訪問之間的區別在于:前者由FTP提供,后者由如NFS等應用系統提供。

FTP協議能操作任何類型的文件而不需要進一步處理,就像MIME或Unicode一樣。但是,FTP有著極高的延時,這意味著,從開始請求到第一次接收需求數據之間的時間,會非常長;并且不時的必須執行一些冗長的登錄進程。

34.對于下列說法,錯誤的是。

A: TCP協議可以提供可靠的數據流傳輸服務
B:TCP協議可以提供面向連接的數據流傳輸服務
C:TCP協議可以提供全雙工的數據流傳輸服務
D:TCP協議可以提供面向非連接的數據流傳輸服務
D

35.在以太網中實現IP地址到MAC地址的解析,主要通過()協議實現。

A: RTP
B: ARP
C: IGMP
D: ICMP
B

ARP協議 Address Resolution Protocol 地址解析協議

36.linux所有服務的啟動腳本都存放在()目錄中。

A: /boot
B: /etc/init.d
C:/opt
D: /proc/sys
B

38.以下對信號的理解不正確的是()。

A:信號是一種異步通信方式
B:信號只用在用戶空間進程通信,不能和內核空間交互
C:信號是可以被屏蔽的
D:信號是通過軟中斷實現的
B 

43.以下關于UART描術正確的

A:全雙工、異步通信方式
B:半雙工、同步通信方式
C:全雙工、同步通信方式
D:半雙工、異步通信方式
A
全雙工、異步;
TX發送端、RX接收端;
UART空閑狀態通常保持在高電平,起始位給一個低電平,然后讀取數據,停止位給一個高電平。

44.執行以下程序段,*c的結果是()

char test[10] ={0,1,2,3,4,5,6,7,8, 9};
short *a = test;
a++;//short加2字節
int *b =a;
b++;//int加4字節
unsigned char *c=b;
c++;//char加1字節
A:7
B:6
C:2
D: 8

共,加加7字節,c= a+7

A
	64位系統,x64,x86運行結果一樣printf("%d\n",*c);	printf("%p\n", test);printf("%p\n", a);//short加2字節printf("%p\n", b);//int加4字節printf("%p\n", c);//char加1字節

在這里插入圖片描述
在這里插入圖片描述

45.在stm32單片機中,以下對中斷理解正確的是()。

A:GPIO無法產生中斷
B:多個中斷同時產生采取隨機進入中斷函數的方式
C:在main函數的while中執行某個函數時產生中斷,需等到該函數執行完中斷函數中執行
D:在中斷處理函數中盡量不要處理比較復雜的邏輯
D 

46.使用DMA技術的目的是()。

A:解決CPU和主存之間的速度匹配問題
B:I/O設備相互之間可實現并行工作
C:解放CPU,提高資源利用率
D:可實現低速IO設備與主存直接交換信息
A

簡單地說是:控制是硬盤內部的控制讀寫,這樣有利于減輕CPU負擔,加快讀取速度。

復雜點,專業點:
Direct Memory Access(存儲器直接訪問)。這是指一種高速的數據傳輸操作,允許在外部設備和存儲器之間直接讀寫數據,既不通過CPU,也不需要CPU干預。整個數據傳輸操作在一個稱為"DMA控制器"的控制下進行的。CPU除了在數據傳輸開始和結束時做一點處理外,在傳輸過程中CPU可以進行其他的工作。這樣,在大部分時間里,CPU和輸入輸出都處于并行操作。因此,使整個計算機系統的效率大大提高。

47.指令周期是指()。

A: CPU從主存取出一條指令的時間
B: CPU執行一條指令的時間
C:CPU從主存取一條指令加CPU執行這條指令的時間
D: 時鐘周期時間
C

指令周期是取出一條指令并執行這條指令的時間。一般由若干個機器周期組成,是從取指令、分析指令到執行完所需的全部時間。
CPU周期 :又稱機器周期,CPU訪問一次內存所花的時間較長,因此用從內存讀取一條指令字的最短時間來定義。
時鐘周期: 通常稱為節拍脈沖或T周期。一個CPU周期包含若干個時鐘周期。

48.主存貯器和CPU之間增加cache的目的是()。

A:解決CPU和主存之間的速度匹配問題
B:擴大CPU中通用寄存器的數量
C:擴大主存貯器容量
D:既擴大主存貯器容量,又擴大CPU中通用寄存器的數量
A

高速緩沖存儲器(Cache)是位于CPU與主存間的一種容量較小但速度很快的存儲器。由于CPU的速度遠高于主存,CPU直接從主存中存取數據要等待一定的時間周期,Cache中保存著CPU剛用過或循環使用的一部分數據,當CPU再次使用該部分數據時可從Cache中直接調用,這樣就減少了CPU的等待時間,提高了CPU對主存的訪問效率.

49.沒有外存貯器的計算機監控程序可以存放在()。

A:RAM
B:ROM
C:RAM和ROM
D:CPU
B 

50.用2條8位的數據總線傳輸64位二進制代碼,需要傳輸幾次()。

A:8次
B:4次
C:1次
D:2

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

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

相關文章

C++算法(數據結構)版

C算法&#xff08;數據結構&#xff09;版 有些題目不是完整的題目&#xff0c;如需查看完整的題目請移步到acwing的算法基礎課中 文章目錄C算法&#xff08;數據結構&#xff09;版單鏈表思路&#xff1a;雙鏈表思路&#xff1a;棧思路&#xff1a;隊列思路&#xff1a;單調棧…

算法訓練營DAY57 第十一章:圖論part07

prim算法精講 53. 尋寶&#xff08;第七期模擬筆試&#xff09; 題目描述&#xff1a; 在世界的某個區域&#xff0c;有一些分散的神秘島嶼&#xff0c;每個島嶼上都有一種珍稀的資源或者寶藏。國王打算在這些島嶼上建公路&#xff0c;方便運輸。 不同島嶼之間&#xff0c;…

最短路問題從入門到負權最短路

一&#xff0c;BFS層次最短路/*題目描述 題目描述 給出一個 N 個頂點 M 條邊的無向無權圖&#xff0c;頂點編號為 1~N。 問從頂點 1 開始&#xff0c;到其他每個點的最短路有幾條。 輸入格式 第一行包含 2 個正整數 N,M&#xff0c;為圖的頂點數與邊數。 接下來 M 行&#xff…

AI智能體小白入門指南

AI智能體小白入門指南 ——什么是AI智能體&#xff1f;它們如何工作&#xff1f; 一、AI智能體是什么&#xff1f; AI智能體&#xff08;AI Agent&#xff09;是能感知環境、自主決策并執行動作的人工智能系統。 類比理解&#xff1a;像一個“虛擬機器人”或“數字助手”&#…

《設計模式》策略模式

1.策略模式定義 策略模式&#xff08;Strategy Pattern&#xff09;是一種行為型設計模式&#xff0c;它定義了一組算法&#xff0c;將每個算法封裝起來&#xff0c;并使它們可以相互替換&#xff0c;從而讓算法的變化獨立于使用它的客戶&#xff08;Client&#xff09;。 換…

AWS DMS 深度解析:從遷移任務到復制任務 - 全流程指南與最佳實踐

AWS Database Migration Service (DMS) 是一項強大的云服務,用于在源數據庫和目標數據庫之間安全地遷移數據。其核心優勢在于支持幾乎零停機時間的遷移,這主要歸功于其“變更數據捕獲 (CDC)”功能。理解遷移任務 (Migration Task) 和復制任務 (Replication Task) 的關系與操作…

國企社招 | 中國郵政2025年社會招聘開啟

添加圖片注釋&#xff0c;不超過 140 字&#xff08;可選&#xff09; 添加圖片注釋&#xff0c;不超過 140 字&#xff08;可選&#xff09; 添加圖片注釋&#xff0c;不超過 140 字&#xff08;可選&#xff09; 原文鏈接&#xff1a;“郵”你“政”好 | 廣東郵政2025年社會…

linux添加自啟動

linux添加自啟動 配置步驟&#xff1a; 創建systemd服務文件 sudo nano /etc/systemd/system/tme-vod.service將下面artifact中的內容復制到該文件中。 [Unit] DescriptionTME VOD Service Afternetwork.target[Service] Typesimple Userroot Grouproot WorkingDirectory/data/…

輕量級解決方案:如何高效處理Word轉PDF?

文檔格式轉換時&#xff0c;手動逐個處理總顯得效率低下。它的體積小巧&#xff0c;不到1MB&#xff0c;且無界面設計&#xff0c;運行極簡&#xff1a;將其與Word文件放入同一目錄&#xff0c;雙擊啟動&#xff0c;程序便會自動完成所有文檔的PDF轉換。操作零復雜度&#xff0…

Redis 數據傾斜

Redis 數據傾斜指的是在 Redis 集群模式下&#xff0c;數據&#xff08;以及相應的訪問請求和負載&#xff09;在各個分片&#xff08;Shard&#xff09;之間分布嚴重不均勻的現象。這會導致部分節點成為熱點或超載&#xff0c;而其他節點資源閑置&#xff0c;最終引發性能瓶頸…

Java基礎-TCP通信(多發多收和一發一收)

目錄 案例要求&#xff1a; 實現思路&#xff1a; 代碼&#xff1a; User:客戶端 Client:服務端 總結&#xff1a; 案例要求&#xff1a; 實現TCP通信的多發多收和一發一收,多發多收去掉各自的while循環就是一發一收,本文只模擬一發一收 實現思路&#xff1a; 客戶端(U…

WinForm 對話框的 Show 與 ShowDialog:阻塞與非阻塞的抉擇

目錄 核心概念&#xff1a;阻塞與非阻塞 Show 與 ShowDialog 的詳細對比 代碼示例&#xff1a;兩種方式的實現差異 使用 Show () 顯示非模態對話框 使用 ShowDialog () 顯示模態對話框 適用場景分析 適合使用 Show () 的場景 適合使用 ShowDialog () 的場景 最佳實踐與…

曉知識: 動態代理與靜態代理的區別

動態代理與靜態代理的區別 代理模式是一種常見的設計模式&#xff0c;用于在不修改原始類的情況下擴展其功能。代理分為靜態代理和動態代理兩種&#xff0c;它們在實現方式、適用場景和靈活性上有顯著差異。 靜態代理 靜態代理在編譯時就已經確定代理類和被代理類的關系。代理類…

Linux系統編程Day9 -- gdb (linux)和lldb(macOS)調試工具

往期內容回顧 Git 教程&#xff08;初階&#xff09; 基于Linux系統知識的第一個程序 自動化構建工具-make/Makefile gcc/g編譯及鏈接 Vim工具的使用 Linux常用工具&#xff08;yum與vim&#xff09; 一、 Linux 下的調試工具 GDB 一、為什么要學習 GDB&#xff1f; 調試是開發…

數據結構(17)排序(下)

一、計數排序計數排序又稱為鴿巢原理&#xff0c;是對哈希直接定址法的變形應用。操作步驟如下&#xff1a;①統計相同元素出現的次數 ②根據統計的結果將序列回收到原來的序列中比如&#xff0c;現在有一個數組{6,1,2,9,4,2,4,1,4}。該數組中&#xff0c;元素1出現兩次&#…

深度解析 Spring Boot 循環依賴:原理、源碼與解決方案

在 Spring Boot 開發中,循環依賴是一個常見且容易被忽視的技術點。當兩個或多個 Bean 相互引用時,就會形成循環依賴(如 A 依賴 B,B 依賴 A)。初學者往往會困惑:Spring 為什么能自動處理這種看似矛盾的依賴關系?本文將從原理、源碼實現到解決方案,全方位剖析 Spring Boo…

數據庫的基本操作(約束與DQL查詢)

一、約束約束是在表上強制執行的數據規則&#xff0c;用于確保數據的完整性和一致性&#xff08;1&#xff09;約束類型MySQL中支持多種約束類型&#xff1a;①主鍵約束&#xff08;PRIMARY KEY&#xff09; ②自增約束&#xff08;AUTO_INCREMENT&#xff09;③非空約束…

HP Pavilion G6 筆記本安裝Ubuntu開機后自動進入飛行模式的問題解決

問題一臺HP Pavilion G6 筆記本 &#xff0c;安裝了Ubuntu24.04版本&#xff0c;開機后&#xff0c;直接進入飛行模式&#xff0c;導致無法使用Wifi,且使用fnf10的組合鍵&#xff0c;也無法關閉飛行模式。使用fnf10鍵&#xff0c;可以看到提示顯示飛行模式&#xff0c;但無法關…

LLM:MoE原理與實現探索

文章目錄前言一、Deepseek Moe二. Moe架構1. Expert2. Gate3. MoE Module三、Auxiliary Loss總結前言 MoE&#xff08;Mixture of Experts) 已經逐漸在LLM中廣泛應用&#xff0c;其工程部署相關目前也有了越來越多的支持&#xff0c;本文主要記錄一下MoE的基本模塊構造與原理。…

基于領域事件驅動的微服務架構設計與實踐

引言&#xff1a;為什么你的微服務總是"牽一發而動全身"&#xff1f; 在復雜的業務系統中&#xff0c;你是否遇到過這樣的困境&#xff1a;修改一個訂單服務&#xff0c;卻導致支付服務異常&#xff1b;調整庫存邏輯&#xff0c;用戶服務開始報錯。這種"蝴蝶效應…