JAVA基礎-第五部分

1、進程與線程關係

   1)一個線程只屬於一個進程,一個進程至少擁有一個或多個線程;

   2)進程作爲資源調度的基本單位,所有線程共享該進程資源;

   3)線程作爲調度的基本單位,真正實現在處理機上執行;

   4)線程執行過程需要協作同步,不同進程的線程利用消息通信同步。

2、進程與程序的區別

  1)程序是一組有序的靜態指令,進程是一次程序的執行過程

  2)程序可以長期保存,進程是暫時的

  3)程序沒有狀態,而進程是有狀態的

注:一個程序至少一個進程,一個進程至少一個線程。

3、多線程的優缺點

   優點:內部無須跨進程邊界;程序邏輯和控制方式簡單;線程直接共享內存和變量;線程方式消耗的總資源比進程方式少。

   缺點:每個線程和主程序共用地址空間,受限於2GB地址空間;線程之間的同步和加鎖較爲麻煩;一個線程崩潰可能影響整個程序穩定性;線程數到一定程度難以通過增加CPU進行擴展,且難以調度。

4、多進程的優缺點

   優點:進程間獨立,不贏天下主程序的穩定性;增加CPU,實現性能擴充;減少加鎖/解鎖操作,提升性能;每個進程獨享2GB地址空間和相關資源。

   缺點:邏輯控制複雜;需要跨進程邊界。

5、數據庫中常用鎖的類型

    1)共享鎖:用於所有的只讀數據操作,屬於非獨佔的,允許多個併發事務讀取其鎖定的資源。

    2)排他鎖:用於對數據進行寫操作,只允許單個事務寫操作。

    3)更新鎖:在修改操作初始化階段用來鎖定可能被修改資源,避免共享鎖產生死鎖現象。

6、TCP與UDP區別

    1)TCP面向連接,UDP是無連接的;

    2)TCP通過校驗和、重傳機制、序號標識、確認應答等機制實現可靠服務,UDP盡最大努力交互,不保證可靠服務;

    3)TCP傳輸效率較低,UDP傳輸效率較高,適用於高速傳輸和實時性較高的通信;

    4)TCP只支持一對一,點對點,UDP支持一對一,多對一,一對多和多對多的交互通信。

7、TCP三次握手與四次揮手

TCP在建立連接時需要三次握手,在斷開連接時需要四次揮手。如圖所示:

三次握手階段:客戶端向服務器發送連接請求的SYN包,包含自己的同步序列號;服務端收到請求後,對客戶端進行應答發送ACK以及自己的同步序列號;客戶端收到ACK後,再對服務端ACK應答進行應答,完成三次握手。

四次揮手階段:客戶端發送釋放請求,FIN並攜帶同步序列號,客戶端進入FIN-WAIT-1狀態;服務端收到釋放請求後,進行應答ACK,然後進入CLOEST-WAIT狀態;然後服務端進入收尾階段,將最後數據發送完成後,發送FIN,連接釋放後,進入LAST-ACK狀態;客戶端收到服務端發送的FIN釋放報文後,發送應答ACK,並進入TIME-WAIT狀態,經過2倍最長報文壽命後進入CLOEST狀態;服務端收到客戶端的ACK應答後就進入CLOEST狀態。

8、進程的狀態劃分

進程的狀態有兩種劃分方式:三態模型與五態模型。

     1)三態模型:運行態、就緒態、阻塞(等待)態。

     2)五態模型:新建態、就緒態、運行態、阻塞態、終止態。

9、數據庫設計的幾種範式

     1)第一範式(1NF):強調數據表的原子性,每個屬性都不可再分;

     2)第二範式(2NF):關係模式R滿足第一範式,並且R中每個非主屬性完全依賴於R的某個候選鍵,即所有非主屬性都和主鍵完全依賴;

     3)第三範式(3NF):關係模式R滿足第二範式,並且每個非主屬性不傳遞依賴於R的候選鍵,即所有元素唯一地被主鍵標識,並相互獨立;

     4)BCNF:構建於第三範式,如果關係模式R是第一範式,且每個屬性都不傳遞依賴於R的候選鍵;

     5)第四範式4NF:存在多值依賴(一對多)的關係。(詳情可見關係數據設計-5大範式。

10、suspend()和resume()方法,notify()和wait()方法區別

    suspend()和resume()方法配套使用,屬於Thread類,suspend()使得線程進入阻塞狀態,並且不會自動恢復,必須其對應的 resume() 被調用,才能使得線程重新進入可執行狀態,該方法阻塞時不會釋放已佔用的鎖,並且可以在任意位置調用。

    notify()和wait()方法配套使用,屬於Object類,區別在於該方法阻塞時會釋放已佔用的鎖,並且必須在synchronized 方法或塊中調用,理由也很簡單,只有在 synchronized 方法或塊中當前線程才佔有鎖,纔有鎖可以釋放。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章