為什麼會出現死鎖

2021-07-05 07:20:06 字數 898 閱讀 1235

今天在閱讀<

我在思考乙個**如何可以抵擋得住大的迸發量,我先羅列我應該會設計的方案,然後再分析其中實現應該注意的地方:

首先如果資料量很大的話,我們是要分散請求的,也就是需要伺服器來聯合作戰,當然這裡我們就需要有乙個好的輪詢的演算法,不然會出現資料無法保持一致而導致程式中隱藏bug,所以說,考慮的方面不一樣寫出的**時完全不一樣的,有些人更加注重**維護,有些更加注重效率和安全,但是我們要以實際情況而定,這兩方面都不要過分設計,否則你手下的程式設計師會恨死你的。這裡不贅述。

在這我們對資料庫的操作是不能直接對著的,不然你應該聽說死鎖,宕機,樂觀鎖,這些等等名詞吧,所以很多人才用了快取這些東西來做乙個緩衝機制,快取的學問很大,快取做的過分了程式很難維護,就像鎖鎖的越細,占用資源越大,這是同乙個道理,所以做合適的設計時多麼重要。下面還是講講今天的主題,如何避免死鎖來解決併發的問題。

當然,如果要想每乙個訂單都安全的如我們想象的那樣,這是不可能的,事情總是會有意外情況。不能用理論來衡量的。但是我們可以保證百分之99.99就足夠了,剩下的可以手工處理嗎,如果乙個併發**我們在程式中就實現這種佇列阻塞處理機制,佇列是我們最常用的資料結構了,你可以對快取中的資料利用佇列,程式運算元據庫的時候也實現佇列機制,這樣就可以避免併發直接對資料庫產生衝擊,如果你的**真的像我這樣說的進行設計,應該可以抵擋相當的訪問量了。

這就是我看了多執行緒的感悟,當然也提高了對鎖的認識,知道真正的為什麼會有鎖,會有樂觀鎖,悲觀鎖這些名詞了。這裡還想說說mysql資料庫中的innodb引擎中支援事務,當然mysql的行級鎖相對於鎖定整個表粒度小多了,所以容易占用資源過大,我主要是想說這個鎖的實現,今天在敲平衡樹**的時候發現了,其實鎖並不是那麼深奧的東西,其實就是乙個標記罷了,之所以出現死鎖,是因為多執行緒對資源的強佔,你要我的,我也要你的,兩人堵在路上誰都不讓,所以死鎖了。當然這個在程式中可以做保證的,可惜就是麻煩了程式設計師了。

陣列越界會出現什麼 為什麼會出現刺繡?

為什麼會出現刺繡,可能各個地方的繡種不同,答案也不盡相同。查翻資料,今天談談地處江南地區的 蘇繡 是為何出現。蘇繡的出現離不開四個字 斷髮文身 斷髮文身的古人 蘇繡至今已有2000餘年的歷史,傳說 於仲雍的孫女 女紅 首製繡衣。古代周太王古公亶父的兒子太伯 仲雍來到今江南蘇州一帶建立了吳國,當地人有...

為什麼會出現lvs nginx

一 ngix 應用層 網路七層負載均衡 1 非同步 請求資料和相應資料都要經過ngix,ngix和客戶端建立連線 2 輪詢所有的tomcat伺服器,保證請求成功或者最後一台tomcat伺服器也請求失敗 二 lvs 網路層 網路四層負載均衡 1 同步 接受請求資料,lvs 到伺服器,伺服器直接和客戶端...

為什麼會出現中文亂碼?

我記得剛開始使用tomcat寫的第乙個web應用,為中文亂碼問題折騰了半天 還記得設定乙個request.setcharacterencoding 指定utf 8可以解決當時大部分問題 post請求 那麼這是為什麼呢?那又為什麼又有些還是亂碼。get請求 還有就是tomcat公升級到9之後無論你怎麼...