tomcat打破雙親委派機制_雙寫實現數據遷移_mysql的架構_排序算法穩定性應用場景_java8新特性

 

 

 

 

 

雙寫實現數據遷移

 

 

 

 

 

 

 

 

 

 

 

 mysql的架構

 

 

 

 

 

 

 

 

 

在一張大表內包含了整個年級所有的班的同學的考試成績,當然爲了區別每個同學是來自哪個班的,相應的也有班級這個字段來標識。現在,我們依據總成績這個字段來將全年級的同學進行一個排名,排序的結果當然是各個班級的學生穿插在一起,大致如下表所示:

姓名 班級 成績
張三 2 95
李四 1 93
王五 2 90
趙六 3 80
丁七 3 70
…… …… ……

在得到這樣的排序結果之後,我們可以大致瞭解到每個同學在全年級中的名次,那麼如果想要得到每個同學在班級中的名次呢,我們能否在現有排序的基礎上,以班級這個字段爲依據進行排序呢?如果,我們所採用的排序算法不穩定,那麼很可能我們在對班級字段進行排序後得到下面這個結果:

姓名 班級 成績
李四 1 93
王五 2 90
張三 2 95
趙六 3 80
丁七 3 70
…… …… ……

我們發現,在班級這個字段進行重排的過程中,張三這條字段雖然調整到李四之後,但是他和王五的相對次序與原表中發生了改變,這樣第一次排序中產生的成績降序這個實際意義在班級這個小的序列中就無法作爲參考依據,那麼如果我們希望查詢學生在班級中的名次,在原大表中不論怎麼重排都是無法做到的,任何一個字段的排序就會使得之前排好的其他字段的排序關係失效,我們不得不開闢新的空間來存儲各個班的學生數據,花費額外的時間成本和空間成本,這樣無疑是非常浪費的。

通過這個案例我們可以看出穩定的排序算法能夠對多次排序的結果有記憶功能,幫助我們節省大量的時間和空間成本,從上述案例我們似乎可以發現,穩定與否的關鍵在於一次排序過程中,數據的位置交換有沒有跨越值相等的元素,如果沒有跨越,那麼結果一定是穩定的,否則是不穩定的。那麼到底是不是這樣的,我們來通過一些具體的算法來分析一下。

java8新特性 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章