并發(fā)編程中主要的三個(gè)問(wèn)題:安全性問(wèn)題,活躍性問(wèn)題和性能問(wèn)題. 安全性問(wèn)題 平時(shí)總是聽(tīng)到這個(gè)方法不是線程安全的,這個(gè)類不是線程安全的.那么這個(gè)安全是什么呢?其實(shí)就是程序按照我們...
并發(fā)編程中主要的三個(gè)問(wèn)題:安全性問(wèn)題,活躍性問(wèn)題和性能問(wèn)題. 安全性問(wèn)題 平時(shí)總是聽(tīng)到這個(gè)方法不是線程安全的,這個(gè)類不是線程安全的.那么這個(gè)安全是什么呢?其實(shí)就是程序按照我們...
在破壞占用且等待條件的時(shí)候,如果轉(zhuǎn)出賬本和轉(zhuǎn)入賬本不滿足同時(shí)在文件架上這個(gè)條件,就用死循環(huán)的方式來(lái)循環(huán)等待 如果apply()操作耗時(shí)非常短,而且并發(fā)沖突量頁(yè)不大時(shí),這個(gè)方案...
前面講到使用Account.class作為互斥鎖,來(lái)解決銀行業(yè)務(wù)里面的轉(zhuǎn)賬問(wèn)題,雖然這個(gè)方法不存在并發(fā)問(wèn)題,但是所有賬戶的轉(zhuǎn)賬操作都是串行的.例如賬戶A轉(zhuǎn)賬戶B,賬戶C轉(zhuǎn)帳戶...
受保護(hù)資源和鎖之間合理的關(guān)聯(lián)關(guān)系應(yīng)該是 N:1 的關(guān)系,也就是說(shuō)可以用一把鎖來(lái)保護(hù)多個(gè)資源,但是不能用多把鎖來(lái)保護(hù)一個(gè)資源. 當(dāng)我們要保護(hù)多個(gè)資源時(shí),首先要區(qū)分這些資源是否存...
一個(gè)或多個(gè)操作在CPU執(zhí)行的過(guò)程中不被中斷的特性.稱為"原子性".理解這個(gè)特性有助于你分析并發(fā)編程 Bug 出現(xiàn)的原因,例如利用它可以分析出 long 型變量在 32 位機(jī)器...
什么是java內(nèi)存模型? 導(dǎo)致可見(jiàn)性的原因是緩存,導(dǎo)致有序性的原因是編譯優(yōu)化,那解決可見(jiàn)性,有序性最直接的辦法就是禁用緩存和編譯優(yōu)化,但是這樣問(wèn)雖然解決了,我們程序的性能可就...
我們的CPU,內(nèi)存,I/O設(shè)備都在不斷迭代,不斷朝著更快的方向努力,但是,在這個(gè)快速發(fā)展的過(guò)程中,有一個(gè)核心矛盾一直存在,就是這三者的速度差異. cpu和內(nèi)存的速度差異可以形...
一.java內(nèi)存組成介紹:堆(Heap)和非堆(Non-heap)內(nèi)存 按照官方的說(shuō)法:"Java虛擬機(jī)具有一個(gè)堆,堆是運(yùn)行時(shí)數(shù)據(jù)區(qū)域,所有實(shí)例和數(shù)組的內(nèi)存均從此處分配.堆是...
Tomcat 總體架構(gòu) 我們知道如果要設(shè)計(jì)一個(gè)系統(tǒng),首先是要了解需求,我們已經(jīng)了解了Tomcat要實(shí)現(xiàn)2個(gè)核心功能: 處理Socket連接,負(fù)責(zé)網(wǎng)絡(luò)字節(jié)流與Request和R...
瀏覽器發(fā)給服務(wù)端的是一個(gè)HTTP格式的請(qǐng)求,HTTP服務(wù)器收到這個(gè)請(qǐng)求后,需要調(diào)用服務(wù)端程序來(lái)處理,所謂的服務(wù)端程序就是你寫(xiě)的java類,一般來(lái)說(shuō)不同的請(qǐng)求需要不同的java...
HTTP 和 HTML 有什么區(qū)別? 為什么會(huì)問(wèn)這個(gè)問(wèn)題?你可以把它當(dāng)作一個(gè)入門(mén)測(cè)試,檢測(cè)一下自己的對(duì)HTTP協(xié)議的理解.因?yàn)門(mén)omcat和Jetty本身就是一個(gè)"HTTP服...
前面我們系統(tǒng)了解了一個(gè)查詢語(yǔ)句的執(zhí)行流程,并介紹了執(zhí)行過(guò)程中涉及的處理模塊.相信你還記得,一條查詢語(yǔ)句的執(zhí)行過(guò)程一般是經(jīng)過(guò)連接器,分析器,優(yōu)化器,執(zhí)行器等功能模塊,最后到達(dá)存...
我們經(jīng)常說(shuō),看一個(gè)事前往不要陷入細(xì)節(jié)里,你應(yīng)該先鳥(niǎo)瞰全貌,這樣能夠幫助你從高緯度理解問(wèn)題.同樣,對(duì)于mysql的學(xué)習(xí)也是這樣.平時(shí)我們使用數(shù)據(jù)庫(kù),看到i的通常是一個(gè)整體.比如...
之前講過(guò)事務(wù)隔離級(jí)別的時(shí)候提到過(guò),如果時(shí)可重復(fù)讀隔離級(jí)別,事務(wù)T啟動(dòng)的時(shí)候會(huì)創(chuàng)建一個(gè)視圖read-view,之后事務(wù)T執(zhí)行期間,即使有其他事務(wù)修改了數(shù)據(jù),事務(wù)T看到的仍然跟在...
提到事務(wù),你肯定不陌生,和數(shù)據(jù)庫(kù)打交道的時(shí)候,我們總是會(huì)用到事務(wù)。最經(jīng)典的例子就是轉(zhuǎn)賬,你要給朋友小王轉(zhuǎn) 100 塊錢(qián),而此時(shí)你的銀行卡只有 100 塊錢(qián)。 轉(zhuǎn)賬過(guò)程具體到程...