以便 defer 能在合適時機執行
// 錯誤的例子
func example()
}
這地方有個問題,example 函式是乙個加鎖操作。m.unlock()
只有在 example 函式結束的時候才執行,那麼每次迴圈實際上是執行m.lock()
語句,這個時候解鎖操作會被延遲到函式結束。
很顯然這個邏輯並不是我們想要的,我們當時寫的意思是加鎖,defer 為了保證鎖會被釋放,defer 就是語句後面就算出錯也會執行解鎖。
顯然現在邏輯出錯了,解鎖被延長了。
很顯然,它會認為程式死鎖,為什麼死鎖,是因為你不停的加鎖,解鎖沒有執行。
怎麼重構呢?最簡單的做法用匿名函式func(){}
把for迴圈裡面邏輯包起來,因為這個時候 defer 是在匿名函式執行完執行,所以你每次迴圈都可以保證加鎖解鎖都可以被執行。
func example() ()
}}
所以利用匿名函式縮小作用域,因為不用 bootstrap使用效能問題
1 如icheckbox等的初始化,不要採用類似for in的迴圈來對所需應用的元素進行初始化,直接採用如 data toggle popover popover 初始化即可 2 tooltips example tooltip options 使用popover需要載入tooltip.js exa...
linux下使用效能分析工具nmon
一 簡介 nmon 工具可以幫助在乙個螢幕上顯示所有重要的效能優化資訊,並動態地對其進行更新。這個高效的工具可以工作於任何啞螢幕 telnet 會話 甚至撥號線路。另外,它並不會消耗大量的 cpu 週期,通常低於百分之二。在更新的計算機上,其 cpu 使用率將低於百分之一。使用啞螢幕,在螢幕上對資料...
提高記憶體使用效能的幾種方法
提高記憶體使用效能的幾種方法,儘管現在計算機的記憶體一般都比較大,一般都有1gb的記憶體,有的甚至達到2gb,還有的更高達4gb的記憶體,但是由於使用者執行的軟體本身較大,或者開啟的檔案視窗較多,或者上網時開啟的視窗較多,也會影響系統執行的速度,嚴重地將會影響系統的執行效能。儘管現在計算機的記憶體一...