1. 程式人生 > >以生活的例子來解釋程式設計中的名詞

以生活的例子來解釋程式設計中的名詞

死鎖

死鎖就是兩個或兩個以上的執行緒爭奪同一資源而形成的一種僵持狀態,這種狀態在沒有外力的作用下將一直持續下去

例子:比如饃夾菜這道菜,需要饅頭和菜,A執行緒搶到了饅頭,而B執行緒搶到了菜,這時A需要B的菜,而B需要A的饅頭,他們都不願放棄手中的資源而一直僵持下去,這種就叫做死鎖

活鎖

活鎖簡單來說就是同時釋放,又同時拿,還是上面那個例子,A放棄了饅頭,B也放棄了菜,可他們又同時拿了資源,又會造成僵持

例子: 在路上走路的時候,迎面來了一個人,這時你想給他讓路,所以你向左邊移動,而他也想給你讓路,所以他也向左邊移動,此時你倆又是無法通過,又彼此讓路,又無法通過。。。。就這樣一直持續下去,這種就是活鎖。

IOC

IOC(Inversion of Control) 控制反轉,你要明白是什麼被反轉了,是物件的獲取過程被反轉了,之前是我們手動去new一個物件,不需要的時候在銷燬物件,手動去管理物件之間的依賴關係,而現在是將物件託管給容器管理。。它有兩種實現方式,一種是DI(Dependency Injection)依賴注入,也是最常見的方式,另一種是DL(Dependency Lookup)依賴查詢

例子:你去餐館吃飯,服務員只需要把選單給你,你點菜就可以了,而這裡菜就是物件,你不需要知道這個菜是怎們做的,材料和菜譜什麼的你都不需要關心,這種方式就是IOC,你無需關心

HTTPS

https是一種加密的網路傳輸協議,它不同於http,http是無狀態的,並且資訊是可篡改的。客戶端在第一次是通過非對稱加密拿到祕鑰,客戶端訪問https伺服器時會發送公鑰,https伺服器通過CA頒發的證書利用公鑰對資訊(祕鑰)進行加密,客戶端可以利用私鑰拿到這個資訊(祕鑰),以後通訊就可以用這個祕鑰進行對稱加密

例子: http 就好比飛鴿傳輸,飛鴿把資訊直接綁在腿上,任何人都可以截獲這個飛鴿並且把資訊更換掉,可見這種方式是極其不安全的,那怎麼辦了?我們可以把資訊加密不就好了,比如字母每個都+1,這樣 abc就變成了 bcd ,服務端在收到這個資訊之後再把字母-1 就又變成了abc,可這個 +1 的資訊怎麼通知服務端呢,如果別人拿到了這個資訊不是就可以輕易破解我們的資訊並篡改他們了嗎,這時就需要用到了非對稱加密,通過公鑰對資訊加密,再通過私鑰進行加密。而 https 就好比 客戶端在飛鴿上綁了一個開著鎖的盒子發給服務端,服務端將 加密祕鑰 (+1資訊)放到盒子裡並鎖上鎖發給客戶端,這樣客戶端就可以通過鑰匙開啟鎖,並拿到這個祕鑰,以後都通過這個祕鑰對資訊加密。在這裡CA證書就充當了盒子的身份。