Java面试题及答案2020,java数组循环赋值
什么是ACID?
事務(wù)的定義和實(shí)現(xiàn)一直隨著數(shù)據(jù)管理的發(fā)展在演進(jìn),當(dāng)計算機(jī)越來越強(qiáng)大,它們就能夠被用來管理越來越多數(shù)據(jù),最終,多個用戶可以在一臺計算機(jī)上共享數(shù)據(jù),這就導(dǎo)致了一個問題,當(dāng)一個用戶修改了數(shù)據(jù)而另外一個還在使用舊數(shù)據(jù)進(jìn)行計算過程中,這里就需要一些機(jī)制來保證這種情況不會發(fā)生。
ACID規(guī)則原來是在1970被Jim Gray定義,ACID事務(wù)解決了很多問題,但是仍然需要和性能做平衡協(xié)調(diào),事務(wù)越強(qiáng),性能可能越低,安全可靠性和高性能是一對矛盾。
一個事務(wù)是指對數(shù)據(jù)庫狀態(tài)進(jìn)行改變的一系列操作變成一個單個序列邏輯元操作,數(shù)據(jù)庫一般在啟動時會提供事務(wù)機(jī)制,包括事務(wù)啟動 停止 取消或回滾。
但是上述事務(wù)機(jī)制并不真的實(shí)現(xiàn)“事務(wù)”,一個真正事務(wù)應(yīng)該遵循ACID屬性,ACID事務(wù)才真正解決事務(wù),包括并發(fā)用戶訪問同一個數(shù)據(jù)表記錄的頭疼問題。
ACID的定義:
- Atomic原子性: 一個事務(wù)的所有系列操作步驟被看成是一個動作,所有的步驟要么全部完成要么一個也不會完成,如果事務(wù)過程中任何一點(diǎn)失敗,將要被改變的數(shù)據(jù)庫記錄就不會被真正被改變。
- Consistent一致性: 數(shù)據(jù)庫的約束 級聯(lián)和觸發(fā)機(jī)制Trigger都必須滿足事務(wù)的一致性。也就是說,通過各種途徑包括外鍵約束等任何寫入數(shù)據(jù)庫的數(shù)據(jù)都是有效的,不能發(fā)生表與表之間存在外鍵約束,但是有數(shù)據(jù)卻違背這種約束性。所有改變數(shù)據(jù)庫數(shù)據(jù)的動作事務(wù)必須完成,沒有事務(wù)會創(chuàng)建一個無效數(shù)據(jù)狀態(tài),這是不同于CAP理論的一致性"consistency".
- Isolated隔離性: 主要用于實(shí)現(xiàn)并發(fā)控制, 隔離能夠確保并發(fā)執(zhí)行的事務(wù)能夠順序一個接一個執(zhí)行,通過隔離,一個未完成事務(wù)不會影響另外一個未完成事務(wù)。
- Durable持久性: 一旦一個事務(wù)被提交,它應(yīng)該持久保存,不會因?yàn)楹推渌僮鳑_突而取消這個事務(wù)。很多人認(rèn)為這意味著事務(wù)是持久在磁盤上,但是規(guī)范沒有特別定義這點(diǎn)。
什么是CAP?
CAP是分布式系統(tǒng)中進(jìn)行平衡的理論,它是由 Eric Brewer發(fā)布在2000年。
- Consistent一致性: 同樣數(shù)據(jù)在分布式系統(tǒng)中所有地方都是被復(fù)制成相同。
- Available可用性: 所有在分布式系統(tǒng)活躍的節(jié)點(diǎn)都能夠處理操作且能響應(yīng)查詢。
- Partition Tolerant分區(qū)容錯性: 在兩個復(fù)制系統(tǒng)之間,如果發(fā)生了計劃之外的網(wǎng)絡(luò)連接問題,對于這種情況,有一套容錯性設(shè)計來保證。
一般情況下CAP理論認(rèn)為你不能擁有上述三種中兩種,這是一個實(shí)踐總結(jié),當(dāng)有網(wǎng)絡(luò)分區(qū)情況下,也就是分布式系統(tǒng)中,你不能又要有完美一致性和100%的可用性,只能這兩者選擇一個。在單機(jī)系統(tǒng)中,你則需要在一致性和延遲性latency之間權(quán)衡。
CAP和ACID一致性區(qū)別
ACID一致性是有關(guān)數(shù)據(jù)庫規(guī)則,如果數(shù)據(jù)表結(jié)構(gòu)定義一個字段值是唯一的,那么一致性系統(tǒng)將解決所有操作中導(dǎo)致這個字段值非唯一性的情況,如果帶有一個外鍵的一行記錄被刪除,那么其外鍵相關(guān)記錄也應(yīng)該被刪除,這就是ACID一致性意思。
CAP理論的一致性是保證同樣一個數(shù)據(jù)在所有不同服務(wù)器上的拷貝都是相同的,這是一種邏輯保證,而不是物理,因?yàn)楣馑傧拗?#xff0c;在不同服務(wù)器上這種復(fù)制是需要時間的,集群通過阻止客戶端查看不同節(jié)點(diǎn)上還未同步的數(shù)據(jù)維持邏輯視圖。
當(dāng)跨分布式系統(tǒng)提供ACID時,這兩個概念會混淆在一起,Google’s Spanner system能夠提供分布式系統(tǒng)的ACID,其包含ACID+CAP設(shè)計:
總結(jié)
面試前的“練手”還是很重要的,所以開始面試之前一定要準(zhǔn)備好啊,不然也是耽擱面試官和自己的時間。
我自己是刷了不少面試題的,所以在面試過程中才能夠做到心中有數(shù),基本上會清楚面試過程中會問到哪些知識點(diǎn),高頻題又有哪些,所以刷題是面試前期準(zhǔn)備過程中非常重要的一點(diǎn)。
下面我就把我整理的面試資料分享給有需要的讀者朋友——戳這里免費(fèi)獲取
面試題及解析總結(jié)
大廠面試場景
知識點(diǎn)總結(jié)
景
[外鏈圖片轉(zhuǎn)存中…(img-3Kia6dIv-1625658032170)]
知識點(diǎn)總結(jié)
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的Java面试题及答案2020,java数组循环赋值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使命召唤18先锋画面模糊怎么办
- 下一篇: Java面试题及答案,java底层实现原