JAVA基礎知識(一)——Java語言描述、變量和運算符

@TOC(Java語言描述、變量和運算符)

一、JAVA語言描述

1.1 java語言描述

  • JDK、JRE、jVM三者之間的關系,以及JDK、JRE包含的主要結構有哪些?

    • JDK=Jre +java的開發工具(javac.exe java.exe javadoc.exe)
    • jre = jvm+java的核心類庫
  • 為什么要配置path環境變量?如何配置?

    • 希望在任何目錄下都可以執行java命令
    • cmd命令輸入sysdm.cpl 在path中配置
      • JAVA_HOME:存儲bin的上一層目錄
      • PATH = %JAVA_HOME%\bin
  • 常用的幾個命令行操作有哪些

    • cd md rd del cd .. cd /
  • java語言結構示意圖
    在這里插入圖片描述
    應用程序=算法 + 數據結構

  • java語言特點

    • 面向對象性:

      • 兩個要素:類、對象
      • 三個特征:封裝、繼承、多態
    • 健壯性 :

      • 去除了c語言中的指針
      • 自動的垃圾回收機制(仍然會出現內存溢出、內存泄漏)
    • 跨平臺性

      • write once, run anywhere: 一次編譯,到處運行
        功勞歸功于:JVM
  • 編譯過程
    在這里插入圖片描述

  • 注釋方式

    • java的三種注釋方式

      • 單行注釋
      • 多行注釋
      • 文檔注釋(java特有)
    • 單行注釋和多行注釋的作用

      • 對所寫的程序進行解釋說明,增強可讀性。方便自己,方便別人。
      • 調試所寫的代碼
    • 特點

      • 單行注釋和多行注釋,注釋了的內容不參與編譯。換幾句話說,編譯以后生成的.class結尾的字節碼文件中不包含注釋掉的信息。
    • 文檔注釋的使用

      • 注釋內容可以被JDK提供的工具javadoc所解析,生成一套以網頁文件形式體現的該程序的說明文檔。
    • 多行注釋不可以嵌套使用

二、變量和運算符

1.1 關鍵字與保留字

  • 關鍵字(keyword)的定義與特點
    • 定義:被java語言賦予了特殊含義,用做專門用途的字符串(單詞)
    • 特點:關鍵字中所有字母都為小寫
    • 官方地址:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
用于定義數據類型的關鍵字
classinterface enumbyteshort
intlongfloatdoublechar
booleanvoid
用于定義流程控制的關鍵字
ifelseswitchcasedefault
whiledoforbreakcontinue
return
用于定義訪問權限修飾符的關鍵字
privateprotectedpublic
用于定義類、函數、變量修飾符的關鍵字
abstractfinalstaticsynchronized
用于定義類與類之間關系的關鍵字
extendsimplementsstatic
用于定義建立實例及引用實例,判斷實例的關鍵字
newthissuperinstanceof
用于異常處理的關鍵字
trycatchfinallythrowthrows
用于包的關鍵字
packageimport
其他修飾符的關鍵字
nativestrictfptransientvolatileassert
用于定義數據類型值的字面值
truefalsenull

true、false、null 嚴格意義上并不算是關鍵字、但是定義變量上還要避免使用它

  • Java保留字:現有Java版本尚未使用,但以后版本可能會作為關鍵字使用。自己命名標識符時要避免使用這些保留字 goto、const

1.2 標識符(Identifier)

  • 標識符:
    • Java對各種變量、方法和類等要素命名時使用的字符序列稱為標識符。
    • 技巧: 凡是自己可以起名字的地方都叫標識符
  • 定義合法標識符規則:
    • 由26個英文字母大小寫,0-9,_或$組成
    • 數字不可以開頭
    • 不可以使用關鍵字和保留字,但能包含關鍵字和保留字
    • Java中嚴格區分大小寫,長度無限制
    • 標識符不能包含空格

**不遵守規則編譯不通過**

1.3 Java中的名稱命名規范(建議)

包名:多單詞組成時所有字母都小寫:xxxyyyzzz
類名、接口名:多單詞組成時,所有單詞的首字母大寫:XxxYyyZzz
變量名、方法名:多單詞組成時,第一個單詞首字母小寫,第二個單詞開發每個單詞首字母大寫:xxxYyyZzz
常量名:所有字母都大寫。多單詞時每個單詞用下劃線連接:XXX_YYY_ZZZ

注意1:在起名字時,為了提高閱讀性,要盡量有意義,“見名知意”。

2.1 變量

  • 變量的概念:
    • 內存中的一個存儲區域
    • 該區域的數據可以在同一類型范圍內不斷變化
    • 變量是程序中最基本的存儲單元。包含變量類型、變量名和存儲的值
  • 變量的作用:
    • 用于在內存中保存數據
  • 使用變量注意
    • Java中每個變量必須先聲明,后使用
    • 使用變量名來訪問這塊區域的數據
    • 變量的作用域:其定義所在的一對{}內
    • 變量只有在其作用域內才有效
    • 同一個作用域內,不能定義重名的變量
  • 變量的分類
    • 定義:對于每一種數據都定義了明確的具體數據類型(強類型語言),在內存中分配了不同大小的內存空間。

在這里插入圖片描述
補充:變量的分類-按聲明的位置的不同

  • 在方法體外,類體內聲明的變量稱為成員變量
  • 在方法體內部聲明的變量稱為局部變量
    在這里插入圖片描述
  • 注意:二者在初始化值方面的異同
  • 同:都有生命期 異:局部變量除形參外,需顯示初始化。

2.2 變量整數類型

  • 整數類型: byte、short、int、long
  • Java各整數類型有固定的表數范圍和字段長度,不受具體OS的影響,以保證java程序的可移植性。
  • java的整型變量默認為int型,聲明long型常量須后加‘I’或‘L’
  • java程序中變量通常聲明為int型,除非不足以表示較大的數,才使用long
類型占用存儲空間表數范圍
byte1字節=8bit位-128~127
short2字節-2^15 ~ 2^15-1
int4字節-2^31 ~ 2^31-1(約21億)
long8字節-2^63 ~ 2^63-1

500MB 1MB = 1024KB 1KB=1024B B=byte bit
bit:計算機中的最小存儲單位。 byte:計算機中基本存儲單位。

  • 變量在類中聲明的位置
/**
* 成員變量vs局部變量
*/
class VariableTest1 {public static void main(String[] args) {//1.byte范圍 -128~127byte b1= 12;byte b2 = -128;//b2= 128;//編譯失敗  從int轉換到byte可能會有損失System.out.println(b1);System.out.println(b2);}
}

2.3 浮點類型:float、double

  • 與整數類型類似,Java浮點類型也有固定的表數范圍和字段長度,不受具體操作系統的影響。
  • 浮點型常量有兩種表示形式:
    • 十進制數形式:如:5.12 512.0f .512(必須有小數點)
    • 科學計數法形式:如5.12e2 512E2 100E-2
  • float:單精度,尾數可以精確到7位有效數字。很多情況下,精度很難滿足需求。
  • double: 雙精度,精度是float的兩倍。通常采用此類型。
  • Java的浮點型常量默認為double型,聲明float型常量,須后加‘f’或‘F’。
類型占用存儲空間表數范圍
單精度float4字節-3.403E38~3.403E38
雙精度double8字節-1.798E308~1.798E308
//2.聲明long型變量,必須以"l"或"L"結尾//3.通常,定義整型變量時,使用int型。short s1 =128;int i1 = 1234;long l1 = 3114234324L;System.out.println(l1);//2. 浮點型:float(4字節) \double(8字節)//1) 浮點型,表示帶小數點的數值//2) float表示數值的范圍比long還大double d1 = 123.3;System.out.println(d1 + 1);//3. 定義float類型變量時,變量要以"f"或"F"結尾float f1 = 123.4F;System.out.println(f1);

注意:通常,定義浮點型變量時,默認使用double型

2.4 字符類型:char

  • char型數據用來表示通常意義上“字符”(2字節)

  • java中的所有字符都是用Unicode編碼,故一個字符可以存儲一個字母,一個漢字,或其他書面語的一個字符。

  • 字符型變量的三種表現形式

    • 字符常量是用單引號(‘’)括起來的單個字符。例如:char c1 = ‘a’; char c2 = ‘中’;char c3 = ‘9’;
    • Java中還允許使用轉義字符’'來將其后的字符轉變為特殊字符型常量。例如:char c3= ‘\n’; //‘\n’ 表示換行符
    • 直接使用Unicode值表示字符型常量:‘\uXXXX’。其中,XXXX代表一個十六進制整數。如:\u000a表示\n。
    • char類型是可以進行運算的。因為它都對應有Unicode碼。
轉義字符說明
\b退格符
\n換行符
\r回車符
\t制表符
\"雙引號
\’單引號
\\反斜線
	    //char c1= 'a';//c1 = 'AB';//編譯失敗 錯誤: 未結束的字符文字System.out.println(c1);char c2 = '1';char c3 = '中';char c4 = '@';System.out.println(c2);System.out.println(c3);System.out.println(c4);char c5 = '\n';System.out.println(c5);char c6 = '\t';System.out.println(c6);char c7 = '\u0043';System.out.println(c7);

在這里插入圖片描述

2.5 了解ASCII碼

  • 在計算機內部,所有數據都使用二進制表示。每一個二進制位(bit)有0和1兩種狀態,因此8個二進制位就可以組合出256種狀態,這就稱為一個字節(byte)。一個字節一共可以用來表示256種不同的狀態,每一個狀態一應一個符號,就是256個符號,從0000000到1111111。

  • ASCII碼:上個世紀60年代,美國制定了一套字符編碼,對英語字符與二進制位之間的關系,做了統一規定。這被稱為ASCII碼。ASCII碼一共規定了128個字符的編碼,比如空格“SPACE”是32(二進制00100000),大寫的字母A是65(二進制01000001)。這128個符號(包括32個不能打印出來的控制符號),只占用了一個字節的后面7位,最前面的1位統一規定為0。

  • 缺點

    • 不能表示所有字符。
    • 相同的編碼表示的字符不一樣:比如 130在法語編碼中代表了ě,在希伯來語編碼中卻代表了字母Gimel(λ)

2.6 Unicode編碼

  • 亂碼:世界上存在著多種編碼方式,同一個二進制數字可以被解釋成不同的符號。因此,要想打開一個文本文件,就必須知道它的編碼方式,否則用錯誤方式解讀,就會出現亂碼。
  • Unicode:一種編碼,將世界上所有的符號都納入其中。每一個符號都給予一個獨一無二的編碼,使用Unicode沒有亂碼的問題。
  • Unicode的缺點:Unicode只規定了符號的二進制代碼,卻沒有規定這個二進制代碼應該如何存儲:無法區別Unicode和ASCII;計算機無法區分三個字節表示一個符號還是分別表示三個符號。另外,我們知道,英文字母只用一個字節表示就夠了,如果unicode統一規定,每個符號用三個或四個字節表示,那么每個英文字母前都必然有二到三個字節是0,這對于存儲空間來說是極大地浪費。

2.7 UTF-8

  • UTF-8是在互聯網上使用最廣的一種Unicode的實現方式。

  • UTF-8是一種變長的編碼方式。它可以使用1-6個字節表示一個符號,根據不同的符號而變化字節長度。

  • UTF-8的編碼規則:

    • 對于單字節的UTF-8編碼,該字節的最高位為0,其余7位用來對字符進行編碼(等同于ASCII碼)。
    • 對于多字節的UTF-8編碼,如果編碼包含n個字節,那么第一個字節的前n位為1,第一個字節的第n+1位為0,該字節剩余各位用來對字符進行編碼。在第一個字節之后的所有的字節,都是最高兩位為“10”,其余6位用來對字符進行編碼。

2.8 boolean布爾型

 //布爾型//1、只能取兩個值之一:true false//2、常常在條件判斷、循環結構中使用boolean bb1 = true;System.out.println(bb1);boolean isMarried = true;if (isMarried) {System.out.println("你就不能參加\"單身\"party了!\\n很遺憾");} else {System.out.println("你可以多談談女朋友!");}

2.9 類型裝換

2.9.1 自動類型提升
       byte b1 = 2;int i1 = 129;//byte b2 = b1 + i1; //編譯不通過 錯誤: 不兼容的類型: 從int轉換到byte可能會有損失int i2 = b1 + i1;long l1 = b1 + i1;System.out.println(i2);//131float f= b1 + i1;//float的精度大于long 131.0System.out.println(f); //131.0

結論:當容量小的數據類型的變量與容量大的數據類型的變量做運算時,結果自動提升為容量大的數據類型。
byte、char、short --> int --> long --> float --> double
特別的:當byte、char、short三種類型的變量做運算時,結果為int型。(原因可能他們之間做運算可能會超過其精度)

2.9.2 強制類型轉換
  • 需要使用強轉符:()
  • 注意點:強制類型轉換,可能導致精度損失
 double d1 = 12.9;int i1 = (int)d1;//截斷操作System.out.println(i1);//沒有精度損失long l1 = 123;short s2 = (short)l1;//精度損失舉例2int i2 = 128;//1000 0000byte b = (byte)i2;System.out.println(b); //-128 (1000 0000 byte字節-128的補碼)

在這里插入圖片描述

2.10 字符串類型

  • String不是基本數據類型,屬于引用數據類型
  • 使用方式與基本數據類型一致。例如:String str = “abcd”;
  • 一個字符串可以串接另一個字符串,也可以直接串接其他類型的數據。例如:str = str + “xyz”; int n =100; str = str + n;
  • 基本數據類型與String之間的轉換
	  char c = 'a'; //a 97int num =10;String str= "hello";System.out.println(c + num + str);//107helloSystem.out.println(c + str + num);//ahello10System.out.println(c + (num + str));//a10helloSystem.out.println((c + num) + str);//107helloSystem.out.println(str + num + c);//hello10a

2.11 關于進制

  • 所有數字在計算機底層都以二進制形式存在

  • 對于整數,有四種表示方式

    • 二進制(binary):0,1 滿2進1,以0b或0B開頭。
    • 十進制(decimal):0-9 滿10進1。
    • 八進制(octal): 0-7 滿8進1 以數字0開頭表示。
    • 十六進制(hex):0-9及A-F,滿16進1。以0x或0X開頭表示。此處的A-F不區分大小寫。 如:0x21AF+1=0X21B0
  • 進制圖表

十進制十六進制八進制二進制
0000
1111
22210
33311
444100
555101
666110
777111
88101000
99111001
10A121010
11B131011
12C141100
13D151101
14E161110
15F171111
16102010000
17112110001
  • 進制運算
    在這里插入圖片描述

  • 變量之進制

    • Java整數常量默認是int類型,當用二進制定義整數時,其第32位是符號位;當是long類型時,二進制默認為占64位,第64位是符號位。

    • 二進制的整數有如下三種形式:

      • 原碼:直接將一個數值換成二進制數。最高位是符號位
      • 負數的反碼:是對原碼按位取反,只是最高位(符號位)確定為1
      • 負數的補碼:其反碼加1.
    • 計算機以二進制補碼的形式保存所有的整數

      • 正數的原碼、反碼、補碼都相同
      • 負數的補碼是其反碼+1

在這里插入圖片描述

3.1 運算符

  • 運算符是一種特殊的符號,用以表示數據的運算、賦值和比較等。

    • 算數運算符
    • 賦值運算符
    • 比較運算符(關系運算符)
    • 邏輯運算符
    • 位運算符
    • 三元運算符
3.1.1 運算符:算數運算符
運算符運算范例結果
+正號+33
-負號b=4;-b-4
+5+510
-6-42
*3*412
/5/51
%取模(取余)7%52
++自增(前);先運算后取值a=2;b=++a;a=3;b=3
++自增(后);先取值后運算a=2;b=a++;a=3;b=2
自減(前);先運算后取值a=2;b=–a;a=1;b=1
自減(后);先取值后運算a=2;b=a–;a=1;b=2
+字符串連接“He” + “llo”“Hello”
  • 注意點
short s1 = 10;
//s1 = s1 + 1;編譯失敗 (自動向上轉型為int)
s1 = (short)(s1+1);//正確的
s1++;//自增1不會改變本身變量的數據類型byte bb1 = 127;
bb1++;
System.out.println("bb1=  " + bb1);//127 二進制對應為01111111 增加1 為10000000 最高位為符號位所以 該二進制為-128
3.1.2 運算符:賦值運算符
  • 符號:=

    • 當“=”兩側數據類型不一致時,可以使用自動類型轉換或使用強制類型轉換原則進行處理。
    • 支持連續賦值。
  • 擴展賦值運算符: +=,-=, *=,/=, %=

int i2, j2;
i2 = j2 = 10;
int i3 = 10, j3 = 10;
//思考1:short s =3;//s = s+2;//編譯失敗s +=2;//不會進行類型的變化
//思考2int i =1;i*=0.1;System.out.println("i = " + i);//因為1*=0.1 沒有進行自動類型提升所以 i取整為0i++;System.out.println("i = " + i);//結果
//        i = 0
//        i = 1
//思考3int m = 2;int n =3;n*=m++;System.out.println("m = " + m);//3System.out.println("n = " + n);//6//結果
//        m = 3
//        n = 6//思考4:int n =10;n += (n++) + (++n);// n = n + (n++) + (++n) ===> n = 10 + 10 + 12System.out.println("n = " + n);//32
3.1.3 運算符:比較運算符
運算符運算范例結果
==相等于4 == 3false
!=不等于4 != 3true
<小于4<3false
>大于4>3true
<=小于等于4<=3false
>=大于等于4>=3true
instancof檢查是否是類的對象“Hello" instanceof Stringtrue
  • 比較運算符的結果都是boolean型,也就是要么是true,要么是false。
  • 比較運算符“==” 不能語寫成“=”
int i = 10;
int j = 20;
System.out.println(i == j);//false
System.out.println(i = j);//20
3.1.4 運算符:邏輯運算符
  • &——邏輯與 |——邏輯或 !—— 邏輯非
  • &&——短語與 ||——短路或 ^——邏輯異或
aba&ba&&ba|ba||b!aa^b
truetruetruetruetruetruefalsefalse
truefalsefalsefalsetruetruefalsetrue
falsetruefalsefalsetruetruetruetrue
falsefalsefalsefalsefalsefalsetruefalse
  • 練習題
   //題目一int x =1;int y = 1;if (x++==2 & ++y ==2) {x = 7;}System.out.println("x = " + x + ",y="+ y);//x = 2,y=2
//題目二int x =1, y = 1;if (x++==2 && ++y ==2) {x = 7;}System.out.println("x = " + x + ",y="+ y);//x=2,y=1//題目三int x =1;int y = 1;if (x++==1 | ++y ==1) {x = 7;}System.out.println("x = " + x + ",y="+ y);//x=7 y=2
//題目四int x =1, y = 1;if (x++==1 || ++y ==1) {x = 7;}System.out.println("x = " + x + ",y="+ y);//x=7,y=1
 boolean x = true;boolean y = false;short z = 42;//if (y==true)if ((z++==42) && (y=true))z++; //42 43 44if ((x=false)||(++z==45))z++;//46System.out.println("z = " + z);//46}
3.1.5 運算符:位運算符

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

與運算 有0則0 或運算 有1 則1

/*** 結論:* 1、位運算符操作的都是整形的數據。* 2、 <<:在一定范圍內,每向左移動一位,相當于 *2*     >>:在一定范圍內,每向右移動一位,相當于 /2*/
public class OperatorTest {public static void main(String[] args) {int i = 21;System.out.println("i << 1 : " + (i << 1));//42System.out.println("i << 1 : " + (i << 2));//84System.out.println("i << 27 : " + (i << 27));//-1476395008int j = -21;System.out.println("j << 1 : " + (j << 1));//-42System.out.println("j << 2 : " + (j << 2));//-84//面試題:最高效方式的計算 2 * 8?// 2 << 3 或者 8 << 2}
}
3.1.6 運算符:三元運算符
  • 格式:

    • (條件表達式)?表達式1:表達式2;
    • 為true,運算后的結果是表達式1;
    • 為false,運算后的結果是表達式2;
    • 表達式1和表達式2為同種類型
  • 三元運算符與if-else的聯系與區別:

    • 1)三元運算符可簡化if-else語句
    • 2)三元運算符要求必須返回一個結果。
    • 3)if后的代碼塊可有多個語句
  • 三元運算符的使用

/*** 運算符之六:三元運算符* 1、結構:(條件表達式) ? 表達式一 : 表達式二。* 2、說明:* (1)條件表達式的結果為boolean類型。* (2)根據條件表達式真或假,決定執行表達式1,還是表達式2。*      如果表達式結果為true,則執行表達式1。*      如果表達式結果為false,則執行表達式2。*  (3)表達式1和表達式2要求是一致的。*  (4)三元運算符可以嵌套使用。** 3、凡是可以使用三元運算符的地方,都可以改寫為if-else。*    反之,不成立。** 4、如果程序既可以使用三元運算符,又可以使用if-else結構,那么優先選擇三元運算符。原因:簡潔、執行效率高。**/
public class OperatorTest {public static void main(String[] args) {//獲取兩個整數的較大值int a = 1;int b = 2;int max = (a > b) ? a : b;System.out.println("a: " + a);System.out.println("b: " + b);System.out.println("較大值為: " + max);//        (a > b) ? 1 : "hello"; 編譯不通過String maxStr = (a > b) ? "a大" : ((a == b) ? "a和b相等" : "b大");System.out.println(maxStr);//獲取三個數的較大值int i = 1;int j = 2;int k = 3;int temp = (i > j) ? i : j;temp = (temp > k) ? temp : k;System.out.println("最大的數為:" + temp);}
}
3.1.7 運算符:運算符優先級

在這里插入圖片描述

  • 運算符有不同的優先級,所謂優先級就是表達式運算中的運算順序。如上表,上一行運算符總優先于下一行。
  • 只有單目運算符、三元運算符、賦值運算符是從右向左運算的。

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

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

相關文章

C++策略模式

1 簡介&#xff1a; 策略模式是一種行為型設計模式&#xff0c;用于在運行時根據不同的情況選擇不同的算法或行為。它將算法封裝成一個個具體的策略類&#xff0c;并使這些策略類可以相互替換&#xff0c;以達到動態改變對象的行為的目的。 2 實現步驟&#xff1a; 以下是使用…

【JavaEE基礎學習打卡03】Java EE 平臺有哪些內容?

目錄 前言一、Java EE平臺說明二、Java EE平臺容器及組件1.平臺容器2.平臺組件 三、JavaEE平臺API服務1.API服務概覽2.平臺API 總結 前言 &#x1f4dc; 本系列教程適用于Java Web初學者、愛好者&#xff0c;小白白。我們的天賦并不高&#xff0c;可貴在努力&#xff0c;堅持不…

使用CLI添加磁盤到VM

登錄 https://portal.azure.com/#home&#xff0c;點擊右上角的控制臺圖標 &#xff0c;打開CLI 在控制臺中輸入如下指令&#xff0c;在NetworkWatcherRG創建一個名字為TEST的虛擬機&#xff0c;使用的鏡像是Win2019datacenter&#xff0c;username是aaa,password是1234567890A…

mysql的快速復習 和一些思考記錄

數據庫設計 第一范式&#xff1a;有主鍵&#xff0c;具有原子性&#xff0c;字段不可分割 數據庫表中不能出現重復記錄&#xff0c;每個字段是原子性的不能再分 關于第一范式&#xff0c;每一行必須唯一&#xff0c;也就是每個表必須有主鍵。 每一列不可再分&#xff01;&#…

Sui主網升級至V1.7.1版本

Sui主網現已升級至V1.7.1版本&#xff0c;此升級包含了多項修復和優化。升級要點如下所示&#xff1a; #12915 協議版本提升至20版本。 在Sui框架中新增Kiosk Extensions API和一個新的sui::kiosk_extension模塊。 您可以使用該API構建自定義的Kiosk應用程序&#xff0c;以…

okhttp源碼簡單流程分析

攔截器詳細解析可以看大佬簡書 "https://www.jianshu.com/p/6fac73f7570f"和 “https://www.jianshu.com/p/3c740829475c” okhttp請求流程 1&#xff1a;OkHttpClient okHttpClient new OkHttpClient.Builder() 構建一個okhttpClient對象&#xff0c;傳入你想傳入的…

vector使用以及模擬實現

vector使用以及模擬實現 vector介紹vector常用接口1.構造2.迭代器3.容量4.增刪查改5.練習 vector模擬實現1.迭代器失效2.反向迭代器3.完整代碼 vector介紹 和我們原來講的string不同&#xff0c;vector并不是類&#xff0c;是一個類模板&#xff0c;加<類型>實例化以后才…

主機防護的重要性和方式

01 主機防護的重要性 主機防護是網絡安全的重要組成部分。在互聯網時代&#xff0c;網絡攻擊成為了一種常見的威脅&#xff0c;而主機防護則是保護計算機系統免受網絡攻擊的重要手段。 主機防護可以防范各種網絡攻擊&#xff0c;如病毒、木馬、黑客攻擊等&#xff0c;從而保…

氣象監測站:用科技感知氣象變化

氣象監測站是利用科學技術感知當地小氣候變化情況的氣象觀測儀器&#xff0c;可用于農業、林業、養殖業、畜牧業、環境保護、工業等多個領域&#xff0c;提高對環境數據的利用率&#xff0c;促進產業效能不斷提升。 氣象監測站主要由氣象傳感器、數據傳輸系統、電源系統、支架…

Linux debian12解壓和壓縮.rar文件教程

一、Debian12安裝rar命令 sudo apt install rar二、使用rar軟件 1.解壓文件 命令格式&#xff1a; rar x 文件名.rar實力測試&#xff1a; [rootdoudou tmp]# rar x test.rar2.壓縮文件 test是一個文件夾 命令格式&#xff1a; rar a 文件名.rar 文件夾名實例測試&#x…

centos7 yum獲取軟件所有依賴包 創建本地yum源 yum離線安裝軟件

centos7 yum獲取軟件所有依賴包 創建本地yum源 離線安裝軟件 1、以安裝docker 20.10為例2、centos7 yum獲取docker 20.10 所有依賴包3、創建本地docker yum源4、yum使用本地docker源 離線安裝docker 1、以安裝docker 20.10為例 參考鏈接&#xff1a; 添加docker 清華軟件源 y…

git環境超詳細配置說明

一&#xff0c;簡介 在git工具安裝完成之后&#xff0c;需要設置一下常用的配置&#xff0c;如郵箱&#xff0c;縮寫&#xff0c;以及git commit模板等等。本文就來詳細介紹些各個配置如何操作&#xff0c;供參考。 二&#xff0c;配置步驟 2.1 查看當前git的配置 git conf…

使用 Apache Kafka 和 Go 將數據引入 OpenSearch

需要編寫自定義集成層來滿足數據管道中的特定要求&#xff1f;了解如何使用 Go 通過 Kafka 和 OpenSearch 實現此目的。 可擴展的數據攝取是OpenSearch等大規模分布式搜索和分析引擎的一個關鍵方面。構建實時數據攝取管道的方法之一是使用Apache Kafka。它是一個開源事件流平臺…

單詞倒排(C語言詳解)

題目&#xff1a;單詞倒排 描述&#xff1a;對字符串中的所有單詞進行倒排。 說明&#xff1a; 1、構成單詞的字符只有26個大寫或小寫英文字母&#xff1b; 2、非構成單詞的字符均視為單詞間隔符&#xff1b; 3、要求倒排后的單詞間隔符以一個空格表示&#xff1b;如果原字…

米爾瑞薩RZ/G2L開發板-02 ffmpeg的使用和RTMP直播

最近不知道是不是熬夜太多&#xff0c;然后記憶力減退了&#xff1f; 因為板子回來以后我就迫不及待的試了一下板子&#xff0c;然后發現板子有SSH&#xff0c;但是并沒有ffmpeg&#xff0c;最近總是在玩&#xff0c;然后今天說是把板子還原一下哇&#xff0c;然后把官方的固件…

前端單點登錄SSO面試回答

JWT鑒權機制 1.JWT用于登錄身份驗證 2.用戶登錄成功后&#xff0c;后端通過JWT機制生成一個token&#xff0c;返回給客戶端 3.客戶端后續的每次請求都需要攜帶token&#xff0c;放在header的authorization中 4.后端從authorization中拿到token后&#xff0c;通過secretKey進…

Spring Boot中使用validator如何實現接口入參自動檢驗

文章目錄 一、背景二、使用三、舉例 一、背景 在項目開發過程中&#xff0c;經常會對一些字段進行校驗&#xff0c;比如字段的非空校驗、字段的長度校驗等&#xff0c;如果在每個需要的地方寫一堆if else 會讓你的代碼變的冗余笨重且相對不好維護&#xff0c;如何更加規范和優…

微服務-GateWay(網關)

所謂網關是什么意思&#xff1f; 相當于就是你們小區家的保安&#xff0c;進出小區都得獲得保安的同意&#xff0c;守護你們小區的生命財產健康&#xff0c;網關也是如此&#xff0c;對每個請求都嚴格把關&#xff0c;將合法的或者是獲得權限的請求進入服務器 網關的功能&…

設計模式之解釋器模式詳解及實例

1、解釋器設計模式概述&#xff1a; 解釋器模式&#xff08;Interpreter Pattern&#xff09;是一種設計模式&#xff0c;它主要用于描述如何構建一個解釋器以解釋特定的語言或表達式。該模式定義了一個文法表示和解釋器的類結構&#xff0c;用于解釋符合該文法規則的語句。解…

擴散模型實戰(四):從零構建擴散模型

推薦閱讀列表&#xff1a; 擴散模型實戰&#xff08;一&#xff09;&#xff1a;基本原理介紹 擴散模型實戰&#xff08;二&#xff09;&#xff1a;擴散模型的發展 擴散模型實戰&#xff08;三&#xff09;&#xff1a;擴散模型的應用 本文以MNIST數據集為例&#xff0c;從…