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新特性 

 

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