Java 筆記(全)

来源:https://www.cnblogs.com/xiqingbo/archive/2022/04/11/java-28.html
-Advertisement-
Play Games

Java是一門面向對象的編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程式員以優雅的思維方式進行複雜的編程。 Java具有簡單性、面向對... ...


1. Java 程式的語法

1.1 標識符的命名規範

​ 標識符:給類或者變數類的方法屬性命名都是標識符

​ 組成必須是:字母、數組、_、$、#、- 首字母不能是數字

1.2 約定

  1. 類:首字母大寫
  2. 變數、方法名、屬性首字母小寫
  3. 包全部小寫(包 Package: 相對於操作系統文件夾)
  4. 駝峰式命名
  5. 見名知意

2. Java 的輸入輸出

System.in(輸入)

System.out(輸出)

3. 基本類型(8大)

3.1 整數:

數據類型 占用位元組 數據範圍
byte 占一個位元組(8bit) -2^7(-10111 1111=127) - 2^7 (1111 1111=-128)
short 占兩個位元組(16bit) -2^15 - 2^15-1
int 占四個位元組(32bit) -2^31 - 2^31-1
long 占八個位元組(64bit) -2^63 - 2^63-1

3.2 小數:

數據類型 占用位元組 數據範圍
float 占四個位元組(32bit) -3.410^38 - 3.410^38
double 占八個位元組(64bit) -1.710^308 - 1.710^308

3.3 字元:

數據類型 占用位元組 數據描述
char 占兩個位元組(16bit) 採取 Unicode 編碼,可以存放中文 char c = '中';

3.4 布爾:

數據類型 占用位元組 數據值
boolean 占1個位元組(8bit) true false

4. 數據類型的轉換

4.1 自動類型轉換

  • 數據類型相容
  • 低的數據類型賦值給高的數據類型

4.2 強制類型轉換

高的數據類型賦值低的數據類型

  • 溢出
  • 精度的丟失

5. 操作符

  • 算術運算:+ - * / % ++ --(不建議 byte,short,char 進行操作,如果一定要操作,都預設轉換成 int 操作)
  • 比較運算符:== != > < >= <=
  • 邏輯運算符:&& || ! & |(返回 Boolean)
  • 位運算:& | 《 》
  • 三目運算:條件 ? 值1 : 值2 (條件成立,返回值1,否則返回值2)

6. Java 流程式控制制語句

6.1 順序結構

forEach:(加強型 for 迴圈)

for(String string : array):for(數據類型 變數名 : 數組)

6.2 分支結構

/**
if else 主要用在區間段判斷
switch 主要用在定值判斷,switch 一般是與 break 配合使用
*/

if(條件) {
	條件true要執行的代碼
} else if(表達式語句) {
    
} else {
	條件false要執行的代碼
}

switch(變數) {
    // 變數的數據類型:只能是byte short int 或者 enum
	case 值1: 操作1;
	......
    // String 只能是僅代表1.7與以後的版本才可以放在switch中
	case 值n:  操作n;
	default:其他情況的操作;
}

6.3 迴圈結構

/**
while 與 do while 的區別:
一般 while 能做的操作do while 也能夠實現
while 可能執行0次或者多次,但是 do while 至少執行一次
*/

while(條件) {
    迴圈語句
}

do{
}while(條件);

/**
中斷迴圈:
break 中段本層迴圈,不能中斷外一層
continue 中斷本次迴圈
this 代表當前對象
*/

7. Java 面向對象

7.1 電腦語言發展

  1. 機器語言:0 1
  2. 彙編語言
  3. 初級編程語言:passic,vb,vc,dephi,PHP,ASP
  4. 高級語言:C#,C++,Java,Object-C

7.2 語言又分為兩種

  • 面向過程:vc

  • 面向對象:Java,C++

面向過程是面向對象的基礎,面向對象依賴於面向過程,他們之間不存在衝突

面向對象(OO),面向對象的編程(OOP),面向對象的分析(OOS),面向對象的設計(OOD)

面向過程 → 側重於業務流程的實現,演算法的本身

面向對象 → 側重於實現業務的事物,調用著程式的指揮官

面向對象:編程最小單位

8. Java 定義

8.1 Class(類)

​ 把具有相同屬性與行為的一系列事物統稱為一個類。例如:動物,魚 <・)))><<

8.1.1 定義類的語法:
class 類名{
​	屬性
​	數據類型 屬性名;
​	......
​	數據類型 屬性名;
    
​	// 行為也叫方法
	返回值類型 方法名(參數列表){
​		方法體
	}
}

/**
類體:抽象的概念,具體相同屬性與行為的一系列事物的總稱;
類體 → 屬性與行為
*/

8.2 引用類型

​ 類,介面,數組

8.3 屬性的定義

​ 類的屬性也可以稱為類的成員變數,類的成員屬性,域;Java 的數據類型 屬性名

​ 類的屬性如果不賦值,會有預設值,基本類型預設值都與0相關,引用類型預設值都是 null

8.4 方法(函數)

​ 是具有特定功能的封裝

8.4.1 方法的定義:
返回值的類型 方法名(參數列表 形式參數){
	方法體
}

8.5 返回值類型

​ 可以是 Java 的數據類型:基本類型,引用類型,void

8.6 對象

​ 是客觀存在的,是類的實例;類是對象的模版(萬物皆對象)

​ 創建對象:類名 對象名 = new 類名();

​ 調用對象的屬性或者行為: .代表引用

​ 對象名.屬性,對象名.行為(參數列表);

8.7 類的屬性

​ 成為類的成員屬性,全局變數會有預設值

​ 預設值規則:byte,short,int,long 預設值:0

8.8 package(包)

​ 相當於操作系統裡面的文件夾

​ 包主要是為瞭解決開發過程中類的命名衝突問題

​ 一般把完成特定功能的代碼放在同一個包里

Java.lang :Java 核心類包,預設都已經導入,不需要手工導入

Java.util:Java 的工具類包

9. Java 面向對象

面向過程:註重程式的流程,數據結構與演算法,參與者就是它本身

面向對象:註重的事物的屬性與行為,參與者更多是一個指揮者

9.1 extends(繼承)

​ 繼承是單繼承:一個類只能有一個直接父類,但一個父類可以有多個子類

​ Java 中沒有多繼承,但是有多重繼承,所有類的頂級父類是 Object 類

9.2 繼承關係中,類的初始化順序

  1. 父類的靜態 static
  2. 子類的靜態
  3. 父類的普通(屬性與方法) 代碼
  4. 父類的構造
  5. 子類的普通
  6. 子類的構造

9.3 overload(方法的重載)

  • 發生在同一個類中
  • 方法名相同
  • 參數列表不同(個數不同,參數數據類型不同,個數與數據類型都不相同)
  • 與返回值類型無關,與訪問修飾符無關

9.4 override(繼承方法的覆蓋 / 重寫)

​ 在繼承關係中,子類對父類的方法的重新實現

  • 方法名與父類相同
  • 參數列表也相同
  • 返回值類型也相同,或者可以隱式轉換成父類的返回值類型

9.5 繼承轉型

  • 向上轉型:把子類對象轉換成父類對象(是安全的,但子類對象的自身屬性會被隱藏)
  • 向下轉型:把父類對象轉換成子類對象
    • 不允許直接 new 父類賦值給子類的向下轉型
    • 可以向上轉型,再向下轉型

9.6 混合類型轉型

​ 只能騙過編譯器,運行會發生轉換異常

9.7 訪問修飾符

修飾符:控制別的類對本類的屬性與方法的訪問許可權

面向對象的封裝,就是通過訪問修飾符來控制訪問許可權

  • 修飾符 數據類型 屬性名;
  • 修飾符 返回值類型 方法名(參數列表){方法體}
  • 修飾符 class 類名{}
修飾符 本類 同包下的類(子類與非子類) 不同包的子類 不同包的其他類
public T T T T
protected T T T F
default T T F F
private T F F F
  1. public:公共許可權
  2. protected:受保護的
  3. default / 不寫:預設
  4. private:私有的

9.8 instanceof(判斷對象類型)

對象名 instanceof 類名:用來判斷對象是否是類的實例

10. Java 中的常用方法

10.1 構造方法

Object() {}

  • toString():返回類的類路徑 + @+hascode對應的16進位數
  • equals(Object obj):對象(Object)的比較 equals與==相同
  • hascode() : 返回記憶體地址的整數

10.2 字元串序列(String)

​ 構造:String() String(String s) String(byte s[]) String(char s[])

10.3 構造字元串對象

​ String s = "hello";

10.4 字面量值賦值

String s = new String("hello");

10.5 常用方法

方法 描述
boolean equals(Object anObject) 重寫了Object equals 比較字元串內容
boolean equalsIgnoreCase(Object anObject) 忽略大小寫比較字元串內容
int length() 獲取字元串長度
char charAt(int index) index → 0-length()-1 獲取字元串中 index 位置的字元
indexOf("要查找的字元串") 返回第一次出現要查找的字元串的位置,如果查找不到返回-1
indexOf("要查找的字元串",int index) 跳過 index 位置,開始查找第一次出現要查找的字元串的位置
lastIndexOf("要查找的字元串") 返回最後一次出現要查找的字元串的位置
lastIndexOf("要查找的字元串",int index) 跳過 index 位置,返回最後一次出現要查找的字元串的位置
substring(int begin) 截取字元串從 begin 開始到末尾
substring(int begin,int end) 截取字串,從 begin 開始到 end 不包含 end
replaceAll("原串","新串") 把字元串中的所有原字元串替換成新串
split("分隔符") 分割符把字元串分割成若幹個字元,返回分割後的字元串數組
concat("xxx") 相對於 "原串" + "xxxxx",字元串追加

10.6 Object 類

​ Object 是 Java 的祖先類,基類,金字塔最頂端的類,最小的細胞類

  • 如果是基本類型(byte short int long char float double boolean)
    == 比較的內容(值)

  • 如果比較是引用類型(類 介面 數組)

    == 比較的是記憶體地址

  • equals 只能用於引用類型的比較

    比較的時候看當前對象的類裡面有沒有重寫 equals 方法,如果沒有重寫 equals 方法,預設調用 Object 裡面的 equal 方法

    如果重寫 equals 方法,那麼按照當前類中 equals 方法的邏輯進行比較

  • 如果兩個對象 equals() 返回true,那麼 hashCode() 值會相同,但是兩個對象 hashCode() 相同,兩個對象未必能 equals() 相等

10.7 Java 重寫

  1. 繼承關係中,子類對父類的方法重寫實現
  2. 方法名相同
  3. 參數列表也相同
  4. 返回值類型也相同或者可以隱式轉換成父類的返回值類型
  5. 訪問修飾符的許可權不能低於父類

10.8 final 關鍵字

​ final 修飾變數:就變成常量,不可以變

​ final 修飾方法:就變成最終方法,不可以被重寫 override

​ final 修飾類:類就不可以被繼承 (太監類)

10.9 StringBuffer 可變的字元串序列

append() :往字元串追加內容

insert(位置,"內容") :往字元串指定位置追加內容

delete(int start,int end):刪除字元串從 start 開始到 end - 1 位置上的字元串

reverse() :讓裡面的內容反轉

10.10 System

System.in:輸入流

System.out :輸出流

10.11 獲取控制台的輸入對象

Scanner in = new Scanner(System.in);
// 遇到空格就不往後取內容
in.next(); 
// 遇到換行符才不往後取內容
in.nextLine();

10.12 GC(garbage Collect) 垃圾回收器

​ Java 程式垃圾是不需要程式員去手工回收,系統(JVM)在後臺啟動一個線程(守護線程) 每隔一定的時間,自動調用System.gc()方法,掃描系統中長時間

​ 未使用對象,或者對象指向null,自動回收這些對象。

​ 調用該對象的finalize()方法來釋放占用的內容空間,當然程式員也可以手工調用System.gc()

10.13 java.util.Date 時間類

​ SimpleDateFormat 是一個以與語言環境有關的方式來格式化和解析日期的具體類

10.13.1 Date 時間格式

​ yyyy:四位年

​ MM:月

​ dd:日

​ hh:12進位時

​ HH:24進位時

​ mm:分

​ ss:秒

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") 
new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss")
new SimpleDateFormat("yy年MM月dd日 HH時:mm分:ss秒 ") 

10.14 Math 數學工具類

10.15 基本類型的包裝類

​ 基本類型的包裝類裡面都提供了操作該基本類型的屬性與方法

基本類型 包裝類
byte java.lang.Byte
short java.lang.Short
int java.lang.Integer
long java.lang.Long
float java.lang.Float
double java.lang.Double
char java.lang.Character
boolean java.lang.Boolean

10.16 數組

​ Java 數組用來存儲具有相同數據類型的若幹個數據的集合,數組長度不可變

10. 16.1 一維數組的定義

一個一維數組裡面每個元素都是一個一維數組 int nums[] = {1,2,3,4,5,6,7,8,9};

  • 動態定義

    • 申明: 數據類型[] 變數名(數組名);

    • 初始化:數組名 = new 數據類型[length];

    • 數據類型[] 變數名(數組名) = new 數據類型[length];

  • 靜態定義

    • 數據類型[] 數組名 ={數據1,......數據n}
10.16.2 二維數組的定義

int nums = {{1,2,3},{4,5,6},{7,8}};

易出現異常

ArrayIndexOutOfBoundsException:數組下標越界異常

11. 排序演算法

11.1 冒泡排序

# 排序數字
8,7,6,3,5,2,4,1

# 首輪
7,8,6,3,5,2,4,1
7,6,8,3,5,2,4,1
7,6,3,8,5,2,4,1
7,6,3,5,8,2,4,1
7,6,3,5,2,8,4,1
7,6,3,5,2,4,8,1
7,6,3,5,2,4,1,8

# 第二輪
6,7,3,5,2,4,1,8
6,3,7,5,2,4,1,8
6,3,5,7,2,4,1,8
6,3,5,2,7,4,1,8
6,3,5,2,4,7,1,8
6,3,5,2,4,1,7,8

# 末輪
8,7,6,3,5,2,4,1

11.2 選擇排序

'''
首輪
max=8
index=0
'''
8,7,6,3,5,2,4,1

'''
第二輪
max=7
index=1
'''
8,7,6,3,5,2,4,1

'''
第三輪
max=6
index=2
'''
8,7,6,3,5,2,4,1

'''
末輪
max=1
index=7
'''
8,7,6,5,4,3,2,1   

11.3 查找演算法

  • 全部遍歷
  • 二分查找(折半查找):適合已經排好序的數組

12. abstract 抽象

12.1 抽象方法

一個方法沒有方法體{}

訪問修飾符 abstract

返回值類型 方法名(參數列表);

這個時候方法就必須申明為抽象方法(用關鍵字 abstract 修飾)

12.2 abstract 抽象類

訪問修飾符(default protected public) abstract class 類名{}

12.3 抽象類

  1. 可以有抽象方法,也可以沒有抽象方法
  2. 抽象類可以有構造方法,但是不能 new 操作
  3. 抽象類中可以有成員變數(屬性)成員方法
  4. 抽象類中可以有常量
  5. 抽象類可以繼承其他的類
  6. 如果一個類繼承一個抽象的類,要不繼續聲明為抽象類,要麼重寫抽象類中的所有抽象方法
  7. 抽象類用來被繼承的,只能單繼承,抽象類與子類存在 instanceof 關係

12.4 介面(interface)

  1. 介面是一種特殊的抽象,介面中的方法全部都是抽象的
  2. 介面中方法預設都是 public abstract 都是抽象的
  3. 介面中不能有成員變數方法
  4. 介面中可以有常量,預設都是public final
  5. 介面沒有構造,不能實例化
  6. 介面不能繼承類
  7. 介面可以繼承介面,介面與介面的繼承多繼承
  8. 介面是用來被實現的,一個類可以實現多個介面,一個類可以實現多個介面主要是為了彌補 Java 單繼承缺陷

12.5 抽象類與介面對比

比較點 抽象類 介面
定義 abstract class 類名{} interface 介面名{}
構造器
成員屬性方法
常量
抽象方法 可以有,可以沒有
繼承exends 抽象類可以繼承其他類,只能單繼承 介面只能繼承介面,可以多繼承
實現implements 抽象類可以實現介面,可以多實現 介面不能實現介面
關係 抽象類是用來被繼承的,與後代存在 instanceof 關係 介面是用來被實現的,與實現介面的類不存在任何關係

13. Java 的集合類框架

13.1 數組

​ 數組定長的定義後大小不可以變化的

13.2 Collection:集合類框架的頂端介面

13.2.1 常用方法
方法 描述
add(Object obj) 追加元素
addAll(Collection c) 追加另外一個集合
size() 集合裡面的元素個數
remove(Objecr obj) 刪除元素
removeAll(Collection c) 刪除外一個集合裡面存在的所有元素
clear() 清空集合
isEmpty() 判斷集合是否沒有元素
iterator() 迭代集合裡面的元素
13.2.2 Collection 子介面

​ List 介面:有序的,可以重覆的集合介面

13.2.3 常用實現類
  • ArrayList,LinkedList,Stack,Vector

    • ArrayList 取數據塊,插入慢
    • LinkedList 取數據慢,插入快
    • ArrayList 與 Vector:Vector多線程安全的
  • Set:無序的,不可以重覆的集合

    • 常用實現類 HashSet,TreeSet,HashSet

    • 去重:先調用當前對象的 hashCode 去集合裡面找,如果沒有相同的就會放入集合,如果有相同的繼續調用 equals(),如果有 equals 就不放入,如果沒有相同的就放入

  • Map 介面: 鍵值對存儲

    • key(鍵)是一個 Set 集合,不可以重覆值;value(值) 是一個可重覆的集合
    • 常用實現類:HashMap,HashTable,TreeMap
13.2.4 List 常用的方法
  • get(index,Object obj):在指定位置上添加元素
  • toArray():把集合轉換成數組

14. Java 泛型

指定參數或者集合的數據類型

  • 用法

    List<數據類型> list = new ArrayList();

  • 泛型好處

    • 指定存放的數據類型,提升安全性
    • 指定存放的數據類型,取數據時候減少強制類型的轉換,減少出錯的概率,同時提升程式的運行效率

15. Java 的異常處理(Exception)

15.1 Throwable 類

​ 子類 Error 是程式錯誤,不可以運行或者記憶體溢出,斷電,程式是無法捕獲的

​ Exception 程式運行過程中輸入輸出計算結果不當發生

15.2 異常處理五大關鍵字

關鍵字 描述
try 嘗試運行某段代碼
catch 捕獲異常
finally 最終要執行的一段代碼,在程式中用來釋放資源,關閉打開的資源
特殊情況:finally 之前 try 或者 catch 中遇到System.
thorw 拋出異常
throws 聲明異常

15.3 自定義異常處理

  1. 聲明一個異常類(寫一個類 extends Exception{}
  2. 可能發生異常的方法都聲明可能拋出自定義類
  3. 再調用拋出的異常

本文來自博客園,作者:Schieber,轉載請註明原文鏈接:https://www.cnblogs.com/xiqingbo/p/java-28.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 準備工作 npm i wangeditor --save npm i caret-pos --save 組件: <!--富文本--> <div :id="editorEleId" @keydown="onKeyDownInput($event)" @click="onClickEditor" ></ ...
  • 表達式全集 字元 描述 \ 將下一個字元標記為一個特殊字元、或一個原義字元、或一個向後引用、或一個八進位轉義符。例如,“n”匹配字元“n”。“\n”匹配一個換行符。串列“\\”匹配“\”而“\(”則匹配“(”。 ^ 匹配輸入字元串的開始位置。如果設置了RegExp對象的Multiline屬性,^也匹 ...
  • 觀察者模式是什麼 觀察者模式是一種行為設計模式, 允許一個對象將其狀態的改變通知其他對象。觀察者模式允許你定義一種訂閱機制, 可在對象事件發生時通知多個觀察者。 為什麼用觀察者模式 當一個對象狀態改變時需要改變其他對象,可使用觀察者模式。它定義對象間的一對多的依賴關係,當一個對象的狀態發生改變時,所 ...
  • 博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ...
  • 責任鏈模式又稱職責鏈模式,屬於行為型模式;在責任鏈模式里,很多對象由每一個對象對其下家的引用而連接起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某一個對象決定處理此請求。發出這個請求的客戶端並不指導鏈上的哪一個對象最終處理這個請求,這使得系統可以在不影響客戶端的情況下動態地重新組織鏈和分配責任。 責 ...
  • 博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ...
  • 原文鏈接: Python 中的鴨子類型和猴子補丁 大家好,我是老王。 Python 開發者可能都聽說過鴨子類型和猴子補丁這兩個詞,即使沒聽過,也大概率寫過相關的代碼,只不過並不瞭解其背後的技術要點是這兩個詞而已。 我最近在面試候選人的時候,也會問這兩個概念,很多人答的也並不是很好。但是當我向他們解釋 ...
  • 《零基礎學Java》 操作線程的方法 操作線程有很多方法,這些方法可以使線程從某一種狀態過渡到另一種狀態。 線程的休眠 能控制線程行為的方法之一是調用sleep()方法,sleep()方法可以指定線程休眠的時間,線程休眠的時間以毫秒為單位。 線程的休眠 實例: public class Demo2 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...