29道Java簡答題

来源:https://www.cnblogs.com/marshwinter/archive/2019/02/11/winterfish.html
-Advertisement-
Play Games

答案經過網路整理,難免有重覆的內容,感謝各位博主的無私奉獻 1.  TCP和UDP的區別,哪個是三次握手? TCP(Transmission Control Protocol 傳輸控制協議) UDP(User Datagram Protocol 用戶數據包協議) OSI(Open Syst ...


--答案經過網路整理,難免有重覆的內容,感謝各位博主的無私奉獻

1.  TCP和UDP的區別,哪個是三次握手?

TCP(Transmission Control Protocol 傳輸控制協議)

UDP(User Datagram Protocol 用戶數據包協議)

OSI(Open System Interconnection 開放系統互聯)七層參考模型:應用層(表現層,會話層),傳輸層,網路層,數據鏈路層,物理層

二者都是OSI(Open System Interconnection 開放系統互聯)參考模型中傳輸層的 協議,其中TCP是三次握手的協議。

二者區別如下:

1)TCP是面向連接的(即建立通信之前需要通過三次握手建立連接);UDP是無連接的(即不負責確認通信對象是否存在)

2)TCP通過一系列的機制提供可靠的服務,保證通過TCP傳輸的數據無差錯,不丟失,不重覆,且按序到達;而UDP則只盡最大努力交付數據,不保證可靠性,可能丟包

3)TCP面向位元組流,把數據看做一連串無結構的位元組流;UDP是面向報文的,應用程式發送多長的報文,UDP就傳輸多長

4)TCP有擁塞控制機制(流量控制),防止向網路中註入過多的數據,使網路中的路由器和鏈路不至於過載,保證接收方能夠來得及接收數據,而UDP則沒有

5)TCP連接只能是一對一的;UDP支持一對一,一對多,多對一和多對的通信

6)TCP要求的系統資源較多,UDP較少

7)TCP首部開銷20位元組;UDP的首部開銷小,只有8個位元組

8)應用場景不同,當應用程式要求通訊質量要好,數據要準確無誤是,應當使用TCP協議進行傳輸,如HTTP,FTP等文件傳輸協議;當應用程式要求通訊速度儘量快,但是對網路質量沒有太高要求時,可以使用UDP進行傳輸,如QQ語音,QQ視頻,QQ消息等

 

2. JDBC操作資料庫的步驟。

A.載入資料庫驅動

B.建立到資料庫的連接

C.定義sql,獲取sql執行環境,設置相應的參數

D.執行sql,處理sql執行結果——DML語句返回int, DQL語句返回結果集對象 ResultSet

E.釋放資源

3. 位元組流,字元流的區別。

1)Java中位元組流

a. 所有位元組輸入流的最大抽象父類是InputStream

b. 所有位元組輸出流的最大抽象父類是OutputStream

2)Java中字元流

a. 所有字元輸入流的最大抽象父類是Reader

b. 所有字元輸出流的最大抽象父類是Writer

二者區別:

1)位元組流操作的單元為一個位元組;字元流操作的單元為兩個位元組的Unicode碼

2) 位元組流可以處理任意類型的數據;字元流只能處理文本類型的數據

3)位元組流在操作過程中沒有用到緩衝區(記憶體),直接對文件本身進行操作;字元流使用到了緩衝區

4)位元組流在寫的時候不需要close,也能輸出內容;字元流只有在close之後,或者使用flush強制刷新緩衝區之後,才能輸出內容(與緩衝區的使用有關)

5)由於字元流有緩衝區,所以字元流的一次操作效率比位元組流高

4. 線程的幾種狀態分別是什麼?

wpsC088.tmp

1)新建狀態(new):將一個繼承了Thread或者實現了Runnable介面的線程類,通過new的方式創建一個實例,則此線程就進入了新建狀態

2)就緒狀態(Runnable):調用線程類的start方法之後,準備了線程所需的系統資源,線程等待CPU的使用權的狀態稱為就緒狀態。

3)運行狀態(Running):就緒狀態的線程獲取到了CPU的使用權之後的狀態,即此線程run方法中的代碼開始被執行

4)阻塞狀態(Blocked):因為某種原因,線程放棄CPU的執行權,直到重新進入就緒狀態,阻塞的情況分為以下三種:

A.等待阻塞:線程執行wait方法,釋放所有資源(包括同步鎖),JVM將其放入“等待池”中,即等待隊列。只有在超出等待時間後,或者其他線程調用同一個對象的notify或者notifyAll方法時,才能重新進入就緒狀態(Runnable)

說明:等待阻塞由於需要釋放所占有的所有資源,包括對象鎖,所以必須在同步方法塊中調用相應的鎖對象的wait方法,否則拋出異常java.lang.IllegalMonitorStateException

B.同步阻塞:線程運行同步的代碼時,需要先獲取同步鎖,則JVM把此線程放入“鎖池”中,即進入同步隊列

C.其他阻塞:運行的線程執行sleep或join方法,或者發出了I/O請求時,JVM會把該線程置為阻塞狀態。當sleep狀態超時、join等待線程終止或者超時、或者I/O處理完畢時,線程重新轉入就緒狀態。

說明:與wait造成的阻塞不同的是,這種阻塞不會釋放所占用的資源,即不會釋放同步鎖

5)死亡狀態(Dead):

-當線程出現異常,或者run方法執行完畢,則該線程死亡

-調用一個已經死亡的線程對象的start方法,會產生java.lang.IllegaleThreadStateException異常

5. String,StringBuilder,StringBuffer的區別。

1) String是定長字元串;StringBuilder,StringBuffer是變長字元串

2) StringBuilder是線程非安全,一般用於單線程中,執行效率較StringBuffer高

StringBuffer是線程安全的,如果在多個線程中需要同步則採用此類

6. final, finally, finalize 的區別

1) final是java中的一個關鍵字,表示最終之意

-修飾類:表示此類不能被繼承

-修飾變數:表示此變數必需被初始化,且不能修改值。通常與public static連用表示常量之意

-修飾成員方法:表示此方法不能被重寫

說明:final關鍵字不能和abstract關鍵字同用

2) finally是在異常捕獲中使用到的一個關鍵字,使用在try/catch塊之後,不管最後是否出現異常,必定執行finally中的方法塊,可用於釋放一些資源,如資料庫的連接

3) finalize是java.lang.Object類的成員方法,因此java中所有的類都擁有該方法。該方法是由JVM的GC(GarbageCollector, 垃圾回收器)在判定對象已經不可能再被調用的情況下進行回收是所執行,因此可以通過重寫該方法釋放一些資源。如果在執行此方法的過程中,拋出了無法捕獲的異常,則GC終止回收此對象,但JVM忽略此異常,並不會導致JVM終止

7. 抽象類和介面有什麼區別

 

抽象類

介面

類修飾關鍵字

abstract

interface

繼承/實現方式

單繼承/extends

多實現/implements

設計思想

Is-a

Like-a

成員變數

和普通類一樣

只能是全局的靜態常量

成員方法

和普通類一樣,也可以定義一個抽象方法

全都是抽象方法

(public abstract)

構造方法

有構造方法

沒有構造方法

對子類的影響

新增方法不一定影響子類

新增方法一定影響子類

註:在jdk1.8中,可以通過default關鍵字在介面實現預設的方法

8. Statement和PreparedStatement有什麼區別?哪個性能更好?

二者區別主要體現在執行效率和安全方面(sql註入問題)

-Statement:每執行一條sql語句就需要生成一條執行計劃,不適合批量處理,效率較低

-PreparedStatement:支持帶參的sql語句,在執行之前會進行預編譯並緩存下來,下次執行相同的sql語句的時候只需要傳入相應的參數即可,不需要重新編譯,適合批量處理相同的sql語句。

同時避免了用字元串拼接sql語句的sql註入問題,更安全

9. equals與==的區別

==:比較的是存放在棧中對象的堆地址,比較兩個變數中存儲的對象地址是否相同, 即是否是同一個對象

1)比較操作符兩端是否是同一對象

2)兩邊的操作數必須是同一類型才能編譯通過

3)比較的是地址,如果是基本數據類型,則比較值

equals:用來比較兩個對象的內容是否相等,是java.lang.Object類的成員方法,由 於所有的類都繼承自Object,所以該方法適用於所有對象,但是如果沒有重寫的話, 則返回的是==的判斷結果

另外==的比較效率比equals高

10. hashCode和equals方法的區別與聯繫

A.區別:

1)hashCode:

- 用來返回對象的哈希碼值,用來提高哈希表的性能

- 預設返回對象的記憶體地址經過計算後的哈希碼值

2)equals:

- 用來比較兩個對象是否“相等”

- 預設比較兩個對象的記憶體地址

B.聯繫:

二者都是用來判斷對象之間的相等關係的,根據實際業務都需要經過重寫。

為保證equals比較的是兩個對象的內容是否相同,equals方法的重寫需要滿足如下幾個原則:自反性、對稱性、傳遞性、一致性、非空性。

而hashCode則根據常規協定跟equals方法聯繫起來:

-同一對象的equals比較的內容沒有被改變的前提下,多次調用該對象的hashCode方法返回的整數值應該是一致的

-兩個對象通過調用equals方法判斷為相等,則二者返回的hashCode應該相等

-兩個對象的hashCode值相等,但是調用equals方法並不一定返回true

在設計哈希表相關的set或者map時,需要根據業務需求重寫equals方法,同時根據常規協定需要重寫hashCode方法,因為這些散列結構都是先判斷hashCode值是否相等來判斷兩個對象是否相等,若hashCode相等,再繼續比較equals方法是否相等

註意:在數據已經存儲在哈希結構中時,不能修改跟hashCode相關的信息,否則導致記憶體泄漏的隱患

11. ArrayList和LinkedList的區別。

A. ArrayList

-ArrayList內部採用動態數組的方式實現了List的數據結構

-更適合於查詢操作

B. LinkedList

-LinkedList內部採用了迴圈雙向鏈表數據結構實現List的數據結構

-更適合於增刪改操作

12. 轉發(forward)和重定向(redirect)的區別?

-轉發:

①轉發本質上是伺服器的一個行為,只有一次請求,一次響應

②瀏覽器的地址欄地址不會發生改變

③轉發過程中共用request和response對象

④轉發只在一個web應用程式中進行

-重定向:302+location

當瀏覽器第一次請求web伺服器時,web伺服器給瀏覽器返回了一個302狀態碼,和一個url地址,當瀏覽器接收到時,會立即重新對url地址發出請求,伺服器再次做出相應的過程叫重定向

①重定向本質上是瀏覽器上的一個行為,對應兩次請求,兩次響應

②瀏覽器的地址欄地址會發生改變

③重定向過程中不共用request和response對象

④重定向不僅可以定位項目內請求,還可以定位到項目外請求

13. get和post請求的區別?

- get請求的請求參數直接放在url中;post請求的請求參數放在請求體中

- get請求攜帶的數據量一般不超過4k;post請求的數據量一般不受限制

- get請求相對不安全;post請求相對安全

- get請求會連同請求參數被瀏覽器保存在歷史記錄里;post則不會

- get請求會有緩存問題;post請求則沒有

- get產生一個TCP數據包;post產生兩個TCP數據包

14. List和Map的區別

List:是存儲單列數據的集合,存儲的數據有序且可重覆

Map: 是存儲雙列數據的集合,採用鍵值對的形式進行存儲,存儲的數據是無序的,且key不能重覆,但是value值可以重覆

15. JDK中哪些實現了單例模式?

餓漢式單例模式(在JVM啟動時就需要載入的對象採用這種模式):

- Java.lang.Runtime:封裝了java的運行時環境信息,由於java是單進程的,每個JVM只對應一個Runtime實例

懶漢式單例模式(需要考慮到線程安全問題,獲取單例的方法需要同步):

- java.awt.Toolkit

- java.awt.GraphicsEnvironment

- java.awt.Desktop

16. JSP 和Servlet 有什麼關係?

JSP:Java Server Page 同Servlet一樣也是運行在伺服器端,用來產生動態html響應的。不過與Servlet不同的是,JSP以html內容為主,內嵌少量java代碼,JSP為案件的尾碼為 .jsp

當瀏覽器請求伺服器上的jsp資源時,jsp先經過轉譯,形成對應的java文件,java文件經過編譯會生成對應的class文件。Web伺服器根據class文件生成對應的servlet提供服務

17. jsp的九大內置對象。

內置對象名稱

類型

作用

page

Object

代表jsp頁面本身

pageContext

PageContext

封裝頁面上下文信息

request

HttpServletRequest

封裝http請求信息

response

HttpServletResponse

封裝http響應信息

session

HttpSession

代表http會話對象

application

ServletContext

封裝應用程式信息的對象

out

JspWriter

用來向jsp輸出內容

config

ServletConfig

用來封裝servlet配置信息的對象

exception

Throwable

封裝異常信息的對象

18. 怎麼認為一個類是線程安全?Java有多少個關鍵字進行同步?

類是否線程安全的判斷

1) 當多個線程訪問這個類,如果需要對該類的成員方法進行寫操作,則需要考慮線程安全問題

2) 線程安全的對象在不同線程中被調用的時候,在不同的線程看來,其中的操作是以固定且一致的順序執行的。類似於資料庫操作中事務的概念。

Java中進行同步的關鍵字:

- synchronized:用來修飾成員方法或者代碼塊,實現加鎖,多線程排隊執行,重量級同步機制

- volatile:用來修飾成員變數,實現線程之間該成員變數可見,輕量級同步機制

19. JSP中的四種作用域?

pageContext, request, session, application

20. 實現會話跟蹤的技術有哪些?

(1) Cookie :基於客戶端的狀態管理技術

當瀏覽器請求伺服器上的一個服務時,伺服器會創建一個Cookie對象,然後以Set-Cookie消息頭的方式傳遞給瀏覽器。當瀏覽器再次請求伺服器上服務時,會攜帶這個Cookie對象到服務端,服務端就可以獲知上一次的數據狀態

(2) Session :基於伺服器端的狀態管理技術

當瀏覽器請求伺服器某個功能時,伺服器可以為這個瀏覽器分配一塊記憶體,並且在這個記憶體中創建一個回話對象。同時為這個會話對象分配唯一一個id號,然後將這個id號以cookie的形式傳遞給瀏覽器。瀏覽器再次請求伺服器時,會攜帶這個id到伺服器,伺服器根據id找到對應的會話對象,進行相應的服務,會話對象可以解決多個請求之間信息共用和狀態傳遞的管理

(3) Url重寫:可以解決瀏覽器禁止cookie的情形

21. 在Java中定義一個不做事且沒有參數的構造方法的作用

Java在初始化子類的時候,會用super()調用特定的父類的構造方法,若沒有,則會調用父類的無參空構造方法。若父類只定義了有參的構造,且子類又沒有調用相應的構造方法,則編譯會報錯,只能通過在父類加一個無參空構造方法,讓編譯通過。

22. jsp的常用指令有哪些?

Jsp中指令使用的語法:<%@指令名 屬性名1=”值1” 屬性名2=”值2”%>

(1) page指令:用來導包 和 做一些頁面屬性設置

① pageEncoding:用來指定頁面以何種編碼方式保存

② contentType:用來指定頁面以什麼格式和編碼進行翻譯

③ Import:用來導包

④ isErrorPage:該頁面是否是一個錯誤頁面,如果是true,則可以使用exception內置對象

⑤ errorPage:用來指定要跳轉到的錯誤頁面(在頁面報錯時)

(2) taglib指令:用來引入對應的標簽庫

① prefix:用來指定對應標簽庫的首碼或者簡稱

② uri:用來指定標簽庫的位置,或者標識

(3) include指令:用來包含對應的頁面

① file:指定包含文件的位置

23. spring中的常見註解有哪些?

(1) 組件掃描相關標註

① 創建相關組件:@Component, @Repository, @Controller, @Service

② 組件掃描相關的其他標註:@Scope(“singleton|prototype”), @PostConstruct, @PreDestroy

③ DI相關標註

1) @Value : 可以用在成員變數和set方法上,基本值直接在標註寫值,如果是複雜值,則需要用到spring的EL表達式#{}

2) @Autowired : 可以用在成員變數,set方法和構造方法上,優先使用類型進行匹配,如果類型有衝突,則啟用名字進行匹配(參數名,成員變數名)

@Qualifier(“容器中的對象名”):配合@Autowired 指定名字進行查找,但是只能用在成員變數和set方法上

3) @Resource:用在成員變數和set方法上,優先使用名字進行匹配,如果匹配不上,則使用類型進行匹配,屬於jdk中的標註

④ @Transactional屬性 : 控制事務管理

(2) Spring MVC相關標註

① @RequestMapping(“/路徑”) :匹配請求路徑(載入控制器方法上)

② @RequestParam(“name”) :指定形參要接收的參數

③ @ExceptionHandler :定義局部異常處理的方法

④ @RequestBody : 告知spring框架,返回的是一個json格式的數據

⑤ @PathVariable(“路徑變數名”) :搭建Restful應用時,指定路徑變數用

⑥ @RequestBody :把瀏覽器上傳的json數據轉換成java對象

(3) Spring AOP相關標註

① @Aspect :在標註形式aop中指明該類為切麵類

② @Before :前置通知

③ @After :最終通知

④ @AfterReturnning :後置通知

⑤ @Around :環繞通知

⑥ @AfterThrowing :異常通知

24. i++和+ +i的區別

i++:後加加,在表達式中,變數i先參與運算,再完成自增加1

++i:前加加,在表達式中,變數i先完成自增1,再參與運算

25. springmvc的運行原理

(1) DispatcherServlet作為請求的入口,客戶端所有的請求都要經過它

(2) DispatcherServlet控制器通過查詢HandlerMapping找到請求對應的Controller

(3) DispatcherServlet將請求提交到Controller,

(4) Controller調用業務邏輯處理之後,返回ModelAndView(其中封裝了數據信息和視圖信息)

(5) DispatcherServlet查詢ViewResolver根據ModelAndView找到對應的視圖展示數據

wpsC098.tmp

26. Servlet的生命周期

1)創建

-預設在第一次請求到來時創建

-也可以通過在web.xml配置文件中,通過

<load-on-startup>一個大於等於0的值</load-on-startup>標記,實現伺服器啟動時創建

2)初始化

-對象創建完成後,調用void init();方法完成初始化

3)不斷地提供服務

通過

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException

這三個方法不斷地向外提供服務

4)即將消亡

調用void destroy();方法

5)消亡

27. 什麼是IoC和DI?DI是如何實現的?

(1) IoC:Inversion of Control , 控制反轉,程式中需要某個對象時,由原來new方式,變成了由容器來進行創建、管理和維護組件關係。這樣做的好處是可以大大降低組件之間的耦合度

(2) DI:Dependency Injection ,依賴註入, 用以解決組件的裝配問題

(3) DI的實現方式:DI是通過反射來實現動態註入的,主要有以下幾種註入方式

① Setter註入

② 構造器註入

③ 自動化註入

28. 解釋一下什麼叫AOP(面向切麵編程)[spring中]?

AOP(Aspect Oriented Programming 面向切麵編程)是基於OOP的,可以在不修改原有代碼的情況下增加功能,通過spring的配置,可以將共通的處理代碼添加到切麵位置,實現了組件的重覆利用,將共通組件與目標對象解耦,提高了程式靈活性。

AOP相關概念;

(1) Aspect :切麵,封裝了共通的業務邏輯的類

(2) Join Point :連接點,切麵作用的位置

(3) Pointcut :切點,連接點的集合,通過切點表達式確定作用的位置

(4) Advice :通知,共通業務邏輯調用的時機,有前置通知,後置通知,最終通知,環繞通知,異常通知

(5) Target :目標對象,要加入切麵的對象

(6) Proxy :代理對象,加入切麵之後的對象,有jdk的代理和CGLIB兩種代理

29. mybatis框架構成和原理。

1) Mybatis框架主要由以下幾個方面構成

A.實體類——根據表設計的實體類

B.主配置文件——定義了連接資料庫的信息(mybatis自帶連接池),和載入sql定義  文件

C.sql定義文件——定義sql語句

D.mybatis框架api——主要是通過SqlSession來體現

2)mybatis原理

Mybatis應用程式根據主配置文件創建SqlSessionFactory對象,裡面載入了連接池和sql定義文件的信息,根據SqlSessionFactory創建SqlSession對象,利用SqlSession的api完成相應的持久層操作


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

-Advertisement-
Play Games
更多相關文章
  • 單行文本超出,代碼如下: css代碼: <style> .one{ width:200px; overflow: hidden; text-overflow:ellipsis; white-space: nowrap; }</style> 效果如下: 多行文本超出部分顯示省略號 代碼如下: <sty ...
  • HTML複習 2019-2-11 ...
  • 1、選用模板simplememory 2、寫css放在 這些會覆蓋掉原來的css樣式 我是在網上找的css代碼二次加工的 : ) 3、更改背景 1)選好圖片 2)上傳到博客園相冊:別的地方需要引用線上圖片文檔什麼的,都可以放在這裡 ^ ^(可惜不能太大) 3)點擊相冊里上傳好的圖片,在好看的博客頁面 ...
  • [toc] 變數定義 代碼示例 變數定義 1. 使用 var 關鍵字定義 2. 變數類型寫在變數名後,如: var a int 3. 可以同時定義多個變數,如: var s1, s2 string = "hello", "world" 4. 可以使用 var() 集中定義變數 5. 編譯器可以自動識 ...
  • 異常處理器處理邏輯深入解析,本文對異常處理器進行了深入的剖析,本文能夠讓你對異常處理邏輯有一個清晰的認知 ...
  • 一. 功能需求分析: 在很多時候我們需要做這樣一個事情:我們想把我們QQ空間上的相冊高清圖像下載下來,怎麼做?到網上找軟體?答案是否定的,理由之一:網上很多軟體不知有沒有病毒,第二它有可能捆了很多不必要的軟體,對我們不友好,而且有些需要費用,那該怎麼辦?難道就無計可施了嗎?答案又是否定的,我們可以通 ...
  • 一、集合的概念 1.概述: 在學習集合前,先回憶一下數組的一個特征 數組有固定的長度,定義一個數組: int[] array = new int[]; 而針對數據長度可變的情況,產生了集合, java集合就是為了應對動態增長數據,在編譯時無法知道具體的數據量而產生的。 集合類又叫容器類。 2.集合和 ...
  • 響應式流是一個倡議,用來為具有非阻塞後壓的非同步流處理提供一個標準。大家努力的目標集中在運行時環境(JVM和JavaScript)和網路協議上。 註:響應式流其實就是一個規範,本文講解的正是這個規範,且這個規範已經被引入到JDK9里了。 後壓:就是下游出現了問題,得不到解決時,這個問題就會逆流而上,繼 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...