作為Java程式設計師需要掌握哪些知識

2021-08-28 09:39:22 字數 1887 閱讀 1212

知識點一:

1、 資料庫的鎖有哪幾種?

鎖的型別有三種:

1)共享(s)鎖:多個事務可封鎖乙個共享頁;任何事務都不能修改該頁; 通常是該頁被讀取完畢,s鎖立即被釋放。

2)排它(x)鎖:僅允許乙個事務封鎖此頁;其他任何事務必須等到x鎖被釋放才能對該頁進行訪問;x鎖一直到事務結束才能被釋放。

3)更新(u)鎖:用來預定要對此頁施加x鎖,它允許其他事務讀,但不允許再施加u鎖或x鎖;當被讀取的頁將要被更新時,則公升級為x鎖;u鎖一直到事務結束時才能被釋放。

2、資料庫的事務隔離級別有幾種?

事務隔離級別有四種

1)讀未提交

2)不可重複讀

3)可重複讀

4)序列化

———————————— 擴充———————————

事物的基本要素

1、原子性:事務開始後所有操作,要麼全部做完,要麼全部不做,不可能停滯在中間環節。事務執行過程中出錯,會回滾到事務開始前的狀態,所有的操作就像沒有發生一樣。也就是說事務是乙個不可分割的整體,就像化學中學過的原子,是物質構成的基本單位。

2、一致性:事務開始前和結束後,資料庫的完整性約束沒有被破壞 。比如a向b轉賬,不可能a扣了錢,b卻沒收到。

3、隔離性:同一時間,只允許乙個事務請求同一資料,不同的事務之間彼此沒有任何干擾。比如a正在從一張銀行卡中取錢,在a取錢的過程結束前,b不能向這張卡轉賬。

4、永續性:事務完成後,事務對資料庫的所有更新將被儲存到資料庫,不能回滾。

————————————————————————————————————————

3、 悲歡鎖和樂觀鎖,分別用在什麼場景?

悲觀鎖(pessimistic lock):

每次獲取資料的時候,都會擔心資料被修改,所以每次獲取資料的時候都會進行加鎖,確保在自己使用的過程中資料不會被別人修改,使用完成後進行資料解鎖。由於資料進行加鎖,期間對該資料進行讀寫的其他執行緒都會進行等待。

樂觀鎖(optimistic lock):

每次獲取資料的時候,都不會擔心資料被修改,所以每次獲取資料的時候都不會進行加鎖,但是在更新資料的時候需要判斷該資料是否被別人修改過。如果資料被其他執行緒修改,則不進行資料更新,如果資料沒有被其他執行緒修改,則進行資料更新。由於資料沒有進行加鎖,期間該資料可以被其他執行緒進行讀寫操作。

適用場景:

悲觀鎖:比較適合寫入操作比較頻繁的場景,如果出現大量的讀取操作,每次讀取的時候都會進行加鎖,這樣會增加大量的鎖的開銷,降低了系統的吞吐量。

樂觀鎖:比較適合讀取操作比較頻繁的場景,如果出現大量的寫入操作,資料發生衝突的可能性就會增大,為了保證資料的一致性,應用層需要不斷的重新獲取資料,這樣會增加大量的查詢操作,降低了系統的吞吐量。

——————————————————————————————————————

知識點二

1、cookie和session的區別

1)cookie資料存放在客戶端的瀏覽器上,session資料存放在伺服器上

2)cookie不是很安全

3)session會在一定時間內儲存在伺服器上。訪問增多時會比較占用伺服器的效能

ps:小小建議

將登陸等重要資訊存放在session中

其他資訊如果需要保留可以放在cookie中

2、https和http的區別是什麼?

1)https協議需要一定的費用

2)http是超文字傳輸協議,資訊是明文傳輸,而https則具有安全性的加密傳輸

3)http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443

4)http的連線很簡單,是無狀態的。https是由ssl和http協議構建的可進行加密傳輸、身份認證的網路協議,比http安全

————————————————未完待續,下章見————————————————-

作為Unity程式設計師需要掌握的技能

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!筆者介紹 姜雪偉,it公司技術合夥人,it高階講師,csdn社群專家,特邀編輯,暢銷書作者,已出版書籍 手把手教你架構3d遊戲引擎 電子工業出版社和 unity3d實戰核心技術詳解 電子工業出版社等。最近公司由於人員變動,需要招聘unity3d程式...

程式設計師還應該掌握哪些技能

最近公司在討論如何通過培訓來提高開發人員技能,我覺得除了程式設計工具的熟悉運用,以及對演算法和系統的掌握外,下列的一些技能也是現代開發人員應該要提公升的技能 1.設計模式 熟悉常用的設計模式,並了解你所用的軟體包中提供了哪些設計模式。2.物件導向的程式設計 熟悉物件導向的程式設計思想,掌握物件導向的...

高階PHP程式設計師應該掌握哪些技術?

作業系統 熟悉作業系統的作用,以及其如何管理軟硬體的熟悉程序和執行緒,以及相互之間的區別和聯絡熟悉linux中程序執行緒切換和排程,熟悉程序間通訊方式熟悉socket基本操作計算機網路 熟悉osi七層網路模型,以及資料傳遞的過程熟悉各種網路協議原理熟悉http tcp udp等協議熟悉nginx等軟...