JavaSE--基礎語法(第一期)

Java是一種優秀的程序設計語言,它具有令人賞心悅目的語法和易于理解的語義。不僅如此,Java還是一個有一系列計算機軟件和規范形成的技術體系,這個技術體系提供了完整的用于軟件開發和 跨平臺部署的支持環境,并廣泛應用于嵌入式系統、移動終端、企業服務器、大型機等各種場合。

(一).數據結構與變量

首先Java的數據結構與變量中的知識主要包括字面常量,數據類型和變量三部分,接下來我們來一一了解。

1.1.字面常量

字面常量其實就和我們c語言中的字面常量相同,指的是,System.out.println("hello world");這段輸出語句中的hello world,即是常量即程序運行期間,固定不變的量稱為常量。

例如:

這里面的20,3.14,hello world,A,true,false都是字面常量,根據上面這些例子我們就可以給字面常量分類,有:

?1. 字符串常量:由""括起來的,比如“12345”、“hello”、“你好”。

2. 整形常量:程序中直接寫的數字(注意沒有小數點),比如:100、1000

3. 浮點數常量:程序中直接寫的小數,比如:3.14、0.49

4. 字符常量:由 單引號 括起來的當個字符,比如:‘A’、‘1’

5. 布爾常量:只有兩種true和false

6. 空常量:null

以上就是關于字面常量的內容,下面我們來了解數據類型的知識。

1.2.數據類型

Java中數據類型分為基本數據類型引用數據類型兩種。

基本數據類型:整型,字符型,浮點型,布爾型

種類:八種

注意:?

1.不論是在16位系統還是32位系統,int都占用4個字節,long都占8個字節

2.整形和浮點型都是帶有符號的

3.整型默認為int型,浮點型默認為double

4.字符串屬于引用類型,該中類型后序介紹。

以上就是關于數據結構的知識下面我們來了解關于變量的知識。

1.3.變量

在Java中我們除了有一些不變的字面常量,當然還有可變的量,這些在Java中稱之為變量,數據類型就是用來定義不同種類變量的。

語法結構:

數據類型? ?變量名=初始值;

例如:

這些等等都是數據結構變量。介紹完變量的概念之后我們來了解關于具體的幾種變量。

1.3.1.整型變量

1.3.1.1整型變量

整型變量是int類型定義的變量,具體代碼形式如下:

總結注意:

1. int不論在何種系統下都是4個字節

2. 推薦使用方式一定義,如果沒有合適的初始值,可以設置為0

3. 在給變量設置初始值時,值不能超過int的表示范圍,否則會導致溢出

4. 變量在使用之前必須要賦初值,否則編譯報錯

5. int的包裝類型為 Integer?

1.3.1.2.長整型變量

長整形變量指的是用long類型來定義的變量,具體代碼形式如下:

?注意事項:

1. 長整型變量的初始值后加L或者l,推薦加L

2. 長整型不論在那個系統下都占8個字節

3. 長整型的表示范圍為: 見上圖

4. long的包裝類型為Long

1.3.1.3.短整型變量

短整型就是指的是short類型定義的變量,具體代碼如下:

下面箭頭指向的時short類型的范圍。

注意事項:

1. short在任何系統下都占2個字節

2. short的表示范圍為:-32768 ~ 32767

3. 使用時注意不要超過范圍(一般使用比較少)

4. short的包裝類型為Short?

1.3.1.4字節型變量

字節型變量指的是被byte定義的變量,具體代碼如下:

注意事項:

1. byte在任何系統下都占1個字節

2. byte的范圍是:-128 ~ 127

3. 字節的包裝類型為Byte

?思考我們為什么要定義四種不同的整型變量?

我們可以聯想到我們買衣服時要挑選不同尺寸的衣服才能讓衣服和人的尺寸剛好合適,同樣整型變量也是如此,我們定義不同的整型變量這樣我們就可以不浪費資源和空間。

1.3.2.浮點型變量

1.3.2.1.雙精度浮點型

雙精度浮點型指的是被double修飾的變量。具體代碼形式如下:

這里左下角大家知道為什么是這個?以下注意事項會告訴大家答案

注意事項:

1. double在任何系統下都占8個字節

2. 浮點數與整數在內存中的存儲方式不同,不能單純使用 的形式來計算

3. double的包裝類型為Double

4. double 類型的內存布局遵守 IEEE 754 標準(和C語言一樣), 嘗試使用有限的內存空間表示可能無限的小數, 勢 必會存在一定的精度誤差,因此浮點數是個近似值,并不是精確值。

1.3.2.2.單精度浮點型

float 類型在 Java 中占四個字節, 同樣遵守 IEEE 754 標準. 由于表示的數據精度范圍較小, 一般在工程上用到浮點數 都優先考慮 double, 不太推薦使用 float. float的包裝類型為Float。

1.3.3.字符型變量

?注意事項:

1. Java 中使用 單引號 + 單個字母 的形式表示字符字面值.

2. 計算機中的字符本質上是一個整數. 在 C 語言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符. 因此 一個字符占用兩個字節, 表示的字符種類更多, 包括中文.

3. char的包裝類型為Character。

1.3.4.布爾型變量

布爾變量可能大家聽起來很陌生,但是它真的無時無刻都與我們息息相關,比如當聽到有人彩票中了幾百萬,我們可能會想真的假的?比爾變量就是表示真假的一個條件語句變量。例如:

注意事項:?

1. boolean 類型的變量只有兩種取值, true 表示真, false 表示假.

2. Java 的 boolean 類型和 int 不能相互轉換, 不存在 1 表示 true, 0 表示 false 這樣的用法.

3. Java虛擬機規范中,并沒有明確規定boolean占幾個字節,也沒有專門用來處理boolean的字節碼指令,在 Oracle公司的虛擬機實現中,boolean占1個字節。

4. boolean的包裝類型為Boolean。

1.4.類型轉換

Java 作為一個強類型編程語言, 當不同類型之間的變量相互賦值的時候, 會有教嚴格的校驗.

例如:

?這里面就體現了Java語言的嚴格性,int類型的可以給long類型的變量賦值,而long類型的變量不可以給int類型的變量賦值,這是為什么呢?我們可以通過以下的學習來了解。

在Java中,當參與運算數據類型不一致時,就會進行類型轉換。Java中類型轉換主要分為兩類:自動類型轉換(隱 式) 和 強制類型轉換(顯式)。

自動類型轉換:代碼不需要經過任何處理,在代碼編譯時,編譯器會自動進行處理。特點:數據范圍小的轉為數 據范圍大的時會自動進行。

例如:

類型相同時范圍小的變量會自動轉化為范圍大的值在進行賦值等操作,但范圍大的變量不能直接向范圍小的變量進行賦值等操作。

強制類型轉換當進行操作時,代碼需要經過一定的格式處理,不能自動完成。特點:數據范圍大的到數據范圍小的。

例如:

?注意事項:

1. 不同數字類型的變量之間賦值, 表示范圍更小的類型能隱式轉換成范圍較大的類型

2. 如果需要把范圍大的類型賦值給范圍小的, 需要強制類型轉換, 但是可能精度丟失

3. 將一個字面值常量進行賦值的時候, Java 會自動針對數字范圍進行檢查

4. 強制類型轉換不一定能成功,不相干的類型不能互相轉換

1.5.類型提升

不同類型的數據之間相互運算時,數據類型小的會被提升到數據類型大的。

int與long之間:int會被提升為long類型

byte與byte之間:

正確寫法:?

?

int 轉成 String:

?

String 轉成 int:

?

以上就是關于數據類型與變量的全部內容。?

(二).運算符

運算符想必大家應該都十分熟悉了吧,但這篇文章中我們要來了解在Java中運算符是怎么用的。

2.1.算術運算符

2.1.1基本四則運算符:加減乘除模(+ - * / %)

?注意:

1.都是二元運算符,使用時必須要有左右兩個操作數

2.int / int 結果還是int類型,而且會向下取整,例如:

3.做除法和取模時,右操作數不能為0。

4.?% 不僅可以對整型取模,也可以對double類型取模,但是沒有意義,一般都是對整型取模的

5.兩側操作數類型不一致時,向類型大的提升

2.1.2.增量運算符 += -= *= %=

增量運算符其實就是一個式子的簡寫例如:a+=b;其實實際上就是a=a+b;故增量運算符我們可以總結為以下代碼,

public static void main(String[] args) {int a = 1;a += 2; // 相當于 a = a + 2System.out.println(a); // 輸出3a -= 1; // 相當于 a = a - 1System.out.println(a); // 輸出2a *= 3; // 相當于 a = a * 3System.out.println(a); // 輸出6a /= 3; // 相當于 a = a / 3System.out.println(a); // 輸出2a %= 3; // 相當于 a = a % 2System.out.println(a); // 輸出2}

?注意:只有變量才能使用該運算符,常量不能使用。

2.1.3.3. 自增/自減運算符 ++ --

++是給變量的值+1,--是給變量的值-1。

int a = 1;
a++; // 后置++ 表示給a的值加1,此時a的值為2
System.out.println(a++); // 注意:后置++是先使用變量原來值,表示式結束時給變量+1,因此輸出2
System.out.println(a); // 輸出3
++a; // 前置++ 表示給a的值加1
System.out.println(++a); // 注意:前置++是先給變量+1,然后使用變量中的值,因此輸出5
System.out.println(a); // 輸出5
// --操作符給操作-1,與++含義類似

注意:

1.如果單獨使用,【前置++】和【后置++】沒有任何區別

2.如果混合使用,【前置++】先+1,然后使用變量+1之后的值,【后置++】先使用變量原來的值,表達式 結束時給變量+1

3.只有變量才能使用自增/自減運算符,常量不能使用,因為常量不允許被修改?

2.2.關系運算符

關系運算符主要有六個: == != < > = ,其計算結果是 true 或者 false 。代碼總結如下:

int a = 10;
int b = 20;
// 注意:在Java中 = 表示賦值,要與數學中的含義區分
// 在Java中 == 表示相等
System.out.println(a == b); // false
System.out.println(a != b); // true
System.out.println(a < b); // true
System.out.println(a > b); // false
System.out.println(a <= b); // true
System.out.println(a >= b); // false

?注意:當需要多次判斷時,不能連著寫,比如:3 < a < 5,Java程序與數學中是有區別的

2.3.邏輯運算符

邏輯運算符主要有三個: && || ! ,運算結果都是 boolean類型。

1.邏輯與 &&

邏輯與運算我們可以總結為一句話來概括就是左右兩個表達式同時為真時結果為真,當兩個表達式有一個為假或者同時為假的三種情況時,結果為假。

例如:

int a = 1;
int b = 2;
System.out.println(a == 1 && b == 2); // 左為真 且 右為真 則結果為真
System.out.println(a == 1 && b > 100); // 左為真 但 右為假 則結果為假
System.out.println(a > 100 && b == 2); // 左為假 但 右為真 則結果為假
System.out.println(a > 100 && b > 100); // 左為假 且 右為假 則結果為假

?2.邏輯 ||

邏輯或運算我們也可以用一句話來概括就是符號左右兩個表達式當有一個為真或兩個都為真的三種情況時結果為真,當左右兩個表達式都為假的時候結果為假。

例如:

int a = 1;
int b = 2;
System.out.println(a == 1 || b == 2); // 左為真 且 右為真 則結果為真
System.out.println(a == 1 || b > 100); // 左為真 但 右為假 則結果也為真
System.out.println(a > 100 || b == 2); // 左為假 但 右為真 則結果也為真
System.out.println(a > 100 || b > 100); // 左為假 且 右為假 則結果為假

?3. 邏輯非 !

邏輯非其實就是假的非就是真,真的非就是假。

int a = 1;
System.out.println(!(a == 1)); // a == 1 為true,取個非就是false
System.out.println(!(a != 1)); // a != 1 為false,取個非就是true

2.4.位運算符

Java 中數據存儲的最小單位是字節,而數據操作的最小單位是比特位. 字節是最小的存儲單位,每個字節是由8個二 進制比特位組成的,多個字節組合在一起可以表示各種不同的數據。

位運算符主要有四個: & | ~ ^ ,除 ~ 是一元運算符外,其余都是二元運算符。

位操作表示 按二進制位運算. 計算機中都是使用二進制來表示數據的(01構成的序列), 按位運算就是在按照二進制位 的每一位依次進行計算.

1. 按位與 &: 如果兩個二進制位都是 1, 則結果為 1, 否則結果為 0.

int a = 10;
int b = 20;
System.out.println(a & b)

?

?2. 按位或 |: 如果兩個二進制位都是 0, 則結果為 0, 否則結果為 1.

3.按位取反 ~: 如果該位為 0 則轉為 1, 如果該位為 1 則轉為 0

4. 按位異或 ^: 如果兩個數字的二進制位相同, 則結果為 0, 相異則結果為 1.

2.5.移位運算

這里的移位為算符是<< >> >>>,這三個分別是左移,右移,無符號右移,

例如:左移

?這里我們有一個訣竅就是怎樣計算發生移位之后的值,就是結果=原本值*2^移動的位數。

右移:

?右移的結果值就是n/2^x,就是結果=原本值/2^移動的位數

這里還有一個特殊的無符號右移,

和右移最大的區別就是無符號右移右移之后最高位添零,而右移是右移后最高位添加符號位。?

2.6.條件運算符

這里的條件運算符實際上用我們的話來說就是三目運算符,形式如下:

表達式1 ? 表達式2 : 表達式3

當 表達式1 的值為 true 時, 整個表達式的值為 表達式2 的值;

當 表達式1 的值為 false 時, 整個表達式的值為 表達式3 的值.

注意:

1.表達式2和表達式3的結果要是同類型的,除非能發生類型隱式類型轉換

2.表達式不能單獨存在,其產生的結果必須要被使用。

2.7.運算符的優先級

在一條表達式中,各個運算符可以混合起來進行運算,但是運算符的優先級不同,比如:* 和 / 的優先級要高于 + 和 - ,有些情況下稍不注意,可能就會造成很大的麻煩。

例如:

// 求a和b的平均值
int a = 10;
int b = 20;
int c = a + (b - a) >> 1;
System.out.println(c);

?上述表達式中,由于 + 的優先級要高于 >> , 因此a先和b-a的結果做加法,整體為20,最后再進行右移,因此結果 為10。

注意:運算符之間是有優先級的. 具體的規則我們不必記憶. 在可能存在歧義的代碼中加上括號即可.

(三).程序邏輯控制??

3.1.順序結構

順序結構簡而言之就是按照順序一行一行的寫代碼,

System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");
// 運行結果
aaa
bbb
ccc

代碼的順序改變,運行結果也隨之而改變。?

3.2.分支結構

3.2.1.if語句

語法格式1:

語法格式2:?

語法格式3:?

3.2.2. switch 語句

基本語法:

switch(表達式){
case 常量值1:{
語句1;
[break;]
}
case 常量值2:{
語句2;
[break;]
...
default:{
內容都不滿足時執行語句;
[break;]
}
}

執行流程:?

1. 先計算表達式的值

2. 和case依次比較,一旦有響應的匹配就執行該項下的語句,直到遇到break時結束

3. 當表達式的值沒有與所列項匹配時,執行default

注意以下一個例子:

注意事項:?

1.多個case后的常量值不可以重復

2.switch的括號內只能是以下類型的表達式:

基本類型:byte、char、short、int,注意不能是long類型

引用類型:String常量串、枚舉類型

3.break 不要遺漏, 否則會失去 "多分支選擇" 的效果

4.switch 不能表達復雜的條件

3.3.循環結構

3.3.1 while 循環

基本語法格式:

?循環條件為 true, 則執行循環語句; 否則結束循環.

例如:打印1-10的數字

int num = 1;
while (num <= 10) {
System.out.println(num);
num++;
}

打印數字5的階乘

 public static void main(String[] args) {int num=1;int n=1;while(n<=5){num*=n;n++;}System.out.println(num);}

等等很多的這種例子。?

?注意事項:

1. 和 if 類似, while 下面的語句可以不寫 { } , 但是不寫的時候只能支持一條語句. 建議還是加上 { } 2. 和 if 類似, while 后面的 { 建議和 while 寫在同一行.

3. 和 if 類似, while 后面不要多寫 分號, 否則可能導致循環不能正確執行.

3.3.2break

break的功能是讓循環提前結束。

例如:

這里當出現了圖中要求的數字的時候程序遇到break就會跳出循環。

3.3.3.?continue

continue 的功能是跳過這次循環, 立即進入下次循環.

例如:找到 100 - 200 中所有 3 的倍數

3.3.4for循環

基本語法:

?表達式1: 用于初始化循環變量初始值設置,在循環最開始時執行,且只執行一次

表達式2: 循環條件,滿則循環繼續,否則循環結束

表達式3: 循環變量更新方式

執行過程:

①②③④--->②③④--->②③④--->②③④--->②③④--->②③④--->...--->②為false,循環結束。

例如:打印1-100的和

public static void main(String[] args) {int sum=0;for(int i=1;i<=100;i++){sum+=i;}System.out.println(sum);}

等等很多地方都會用到for循環的。

注意事項:??

1. 和 if 類似, for 下面的語句可以不寫 { } , 但是不寫的時候只能支持一條語句. 建議還是加上 { }

2. 和 if 類似, for 后面的 { 建議和 while 寫在同一行.

3. 和 if 類似, for 后面不要多寫 分號, 否則可能導致循環不能正確執行.

4. 和while循環一樣,結束單趟循環用continue,結束整個循環用break

3.4輸入輸出

Java中的輸入和輸出和其他語言的輸入輸出不一樣,接下來讓我們看看具體是怎么樣的。

3.4.1輸出到控制臺

基本語法:

System.out.println(msg); // 輸出一個字符串, 帶換行
System.out.print(msg); // 輸出一個字符串, 不帶換行
System.out.printf(format, msg); // 格式化輸出

1.println 輸出的內容自帶 \n, print 不帶 \n

2.printf 的格式化輸出方式和 C 語言的 printf 是基本一致的.

3.4.2從鍵盤輸入

使用 Scanner 讀取字符串/整數/浮點數

例如:

好了以上就是我與大家分享的內容,望各位指出小編的不足之處我一定會積極改正的。

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

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

相關文章

基于Docker的ElasticSearch、Kibana服務搭建并開啟用戶鑒權

&#x1f3f7;?個人主頁&#xff1a;牽著貓散步的鼠鼠 &#x1f3f7;?系列專欄&#xff1a;云原生與服務部署專欄 &#x1f3f7;?個人學習筆記&#xff0c;若有缺誤&#xff0c;歡迎評論區指正 目錄 1. 前言 2. 服務搭建 2.1. 部署ElasticSearch 2.2. 部署Kibana 3. …

安全態勢管理的六大挑戰:態勢感知

德迅云安全鑒于如今的安全威脅不斷變幻&#xff0c;企業對實施態勢管理策略至關重要&#xff0c;可以讓安全團隊根據需要進行安全策略的動態調整。如果企業在研究構建態勢感知管理&#xff0c;需要特別關注以下六個方面的挑戰。 如果企業正在使用一個或多個平臺&#xff0c;那么…

java為什么main方法是主程序入口?已回答

答&#xff1a; 其實是C語言程序員規定的main&#xff0c;java程序才能通過main來進入程序&#xff0c;java程序是通過jvm虛擬機來運行的&#xff0c;其實main方法是可以修改的&#xff0c;C程序員來規定是main方法來進入主程序&#xff0c;還是其他方法進入主程序&#xff0c;…

IS-IS鏈路狀態數據庫

原理概述 一個OSPF鏈路狀態數據庫是若干條LSA的集合。與此相似&#xff0c;一個IS-IS鏈路狀態數據庫是由若干條LSP的集合。與OSPF鏈路狀態數據庫不同&#xff0c;IS-IS鏈路狀態數據庫有Level-1和Level-2之分。 在IS-IS協議中&#xff0c;每一條LSA都有一條剩余生存時間、一個…

[力扣題解] 417. 太平洋大西洋水流問題

題目&#xff1a;417. 太平洋大西洋水流問題 思路 代碼 (1) MyMothed // 符合條件的點 : 既可以到達左或上邊界&#xff0c;也可以到達右或下邊界&#xff1b; class Solution { private:int dir[4][2] {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};vector<vector<int>&g…

safetensors介紹

1 介紹 safetensors 是 Huggingface 推出的一種可靠、易移植的機器學習模型存儲格式&#xff0c;用于安全地存儲 Tensor&#xff0c;而且速度很快&#xff08;零拷貝&#xff09;。 safetensors 格式結構&#xff1a; 8 bytes&#xff1a;一個無符號的整數&#xff0c;表示…

Dubbo源碼及總結

Springboot整合Dubbo啟動解析Bean定義 根據springboot啟動原理&#xff0c;會先把啟動類下的所有類先進行解析bean定義&#xff0c;所以要先EnableDubbo這個注解&#xff0c;再根據這個注解里面的注解&#xff0c;可以知道import的兩個類DubboComponentScanRegistrar和DubboCo…

輸入一串字符,輸入想要字符串前*的個數n,判斷字符串前*的個數是大于n還是小于n,如果大于n則刪除多余的*其它保持不變,如果小于n,則字符串也保持不變

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void fun(char* a, int n) {int i 0, j 0, m 0,b0,c0;char* p;p a;//第一步&#xff0c;判斷字母前面有多少個*while (p[i] *){j;}printf("字母前*的個數%d\n",j);//求總的字符串長度while (a[m] !…

【全開源】沃德商協會管理系統源碼(FastAdmin+ThinkPHP+Uniapp)

一款基于FastAdminThinkPHPUniapp開發的商協會系統&#xff0c;新一代數字化商協會運營管理系統&#xff0c;以“智慧化會員體系、智敏化內容運營、智能化活動構建”三大板塊為基點&#xff0c;實施功能全場景覆蓋&#xff0c;一站式解決商協會需求壁壘&#xff0c;有效快速建立…

護眼小貼士:學生如何正確使用臺燈?

隨著電子設備的普及和長時間的用眼&#xff0c;長時間盯著屏幕或學習&#xff0c;眼睛需要不斷調節焦距&#xff0c;導致眼睛肌肉疲勞&#xff0c;進而引發視力下降。這種現象在年輕一代甚至青少年中尤為普遍&#xff0c;這種疲勞狀態不僅影響眼睛的舒適度&#xff0c;還會導致…

linux配置防火墻端口

配置防火墻&#xff0c;添加或刪除端口&#xff0c;需要有root權限。 防火墻常用命令如下&#xff1a; 1.查看防火墻狀態&#xff1a; systemctl status firewalld active(running)&#xff1a;開啟狀態&#xff0c;正在運行中 inactive(dead)&#xff1a;關閉狀態&#xff…

十、OpenAI之視覺

視覺 學習怎樣使用視覺能力理解圖片 1. 介紹 GPT-4o和GPT-4 Turbo兩個模型都擁有視覺能力&#xff0c;這意味著模型可以接收圖片并回答關于圖片的問題。從歷史上看&#xff0c;語言模型系統被限制采用單一的文本輸入方式。 2. 快速開始 模型使用圖片主要有2種方式&#xff…

qml下拉條實現

qml下拉條實現 代碼結構 代碼結構 Rectangle里面嵌套一個Flickable&#xff0c;然后下面是一個Rectangle&#xff0c;作為滑動的區域&#xff0c;給最外層的Rectangle的y加一個屬性動畫。滑動區域寫好onPressed和Onrelease即可。 import QtQuick 2.15 import QtQuick.Control…

從《紅樓夢》的視角看大模型知識庫 RAG 服務的 Rerank 調優

背景介紹 在之前的文章 有道 QAnything 源碼解讀 中介紹了有道 RAG 的一個主要亮點在于對 Rerank 機制的重視。 從目前來看&#xff0c;Rerank 確實逐漸成為 RAG 的一個重要模塊&#xff0c;在這篇文章中就希望能講清楚為什么 RAG 服務需要 Rerank 機制&#xff0c;以及如何選…

Redisson-分布式鎖單Redis節點模式

Redisson-分布式鎖單Redis節點模式 為什么要用分布式鎖&#xff1f; 使用分布式鎖的主要目的是為了解決多線程或多進程并發訪問共享資源時可能出現的競爭條件和數據一致性問題。舉一些實際場?&#xff1a; 數據庫并發控制&#xff1a;在分布式系統中&#xff0c;多個節點同…

虛擬機上部署java微服務

在Windows服務器上安裝Ubuntu系統&#xff0c;先安裝虛擬機&#xff0c;然后再虛擬機上安裝Ubuntu系統 啟動虛擬機上的Ubuntu系統&#xff0c;然后安裝jdk。安裝好的Ubuntu系統是帶桌面版的&#xff0c;需要打開 “終端” 控制臺&#xff0c;通過命令行交互的方式部署程序&…

git 合并多個commit 使分支保持一次提交

1.控制臺輸入 git log 查看commit歷史 找到歷史提交sha 2.控制臺輸入 git rebase -i d0c5de8f7ca8e58fef347b36dd6b0f42f551cdb4 進入變基 3.輸入英文i進入VM輸入模式 4.保留第一行的pick 后面的pick改為s 5.esc退出輸入模式 6.輸入:wq保存退出 7.輸入英文i進入VM輸入模式…

從0開始實現一個博客系統 (SSM 實現)

相關技術 Spring Spring Boot Spring MVC MyBatis Html Css JS 實現功能 用戶注冊 - 密碼加鹽加密 (md5 加密)前后端用戶信息存儲 - 令牌技術用戶登錄 - (使用 攔截器 做登錄校驗)博客的增刪改查后端數據返回前端, 采用 SpringBoot 做統一功能處理和統一異常處理 數據…

軟考-程序員 知識點與部分真題梳理

軟考-程序員 知識點與部分真題梳理 參照《程序員教程》第五版劃分類別&#xff1b; 持續更新中… 計算機系統基礎知識 如何理解和處理浮點數的加減法運算 在計算機科學中&#xff0c;處理浮點數的表示和運算是基礎且關鍵的&#xff0c;尤其是在進行科學計算、圖形處理和數據分…

V2I(車與基礎設施)介紹

V2I&#xff08;車與基礎設施&#xff09;介紹 一、V2I技術概述 V2I&#xff08;Vehicle-to-Infrastructure&#xff09;技術&#xff0c;全稱汽車與基礎設施通訊&#xff0c;也被稱為信號燈系統。它通過無線通信技術&#xff0c;為車載智能交通運輸系統設立了專門的通信頻段…