没有万能的结构和选择

一、背景

前一段时间读到一本技术书说到“大师就是可以在特定的场景选择最合适的技术的人”

回想数据结构,线性结构和链式结构中,插入和删除与查询的效率是相互矛盾的。

大多数开发的方案、框架中,都是时间和空间的取舍

如利用空间换时间的消息队列、分库分表、缓存框架等。

目前没见过性能超强,速度超快且占用空间超小的结构,如果有估计大家都用这个结构了。

 

二、思考

2.1 计算机相关

常见的几种结构特点:

数组查询的效率高,但是插入、删除的效率低;

链表的插入和删除的效率高,但是查询的效率低;

哈希表的查询效率高,但是范围查找无法实现。

二叉查找树查找的效率高;

队列则先入先出;栈则先入后出;

大顶堆保证顶部元素最大;

B+树支持范围查找且树矮;

各种数据结构各有特性,没有任何一种结构可以在所有场景都是最优的。

 

参考《深入理解计算机系统》1.6节

从磁盘到CPU的寄存器的所有存储介质,都是从体积大、速度慢、价格便宜 到体积小、速度高价格更贵;

 没有万能的结构和选择

每个专业的图书也有入门级和大师级的图书,有浅显易懂的有理论性超强的。

初学者往往更适合选择初级的浅显易懂的,有一定得工作经验的可以选择理论性强一些的经典的图书。

 

2.2 从生活而言

比如步行、自行车、电车、公交车、汽车、火车、高铁、飞机等,价格从低到高,舒适度相对来说也是从低到高。

但是没有任何一种交通工具可以又便宜,速度又快。

而且每种交通工具都有人会选择,距离近则可步行、自行车、电车。

中途旅行可以选择公交、汽车;

中长途旅行可以选择汽车、火车、高铁、飞机。

因为每个人的财力不同,每种交通工具的场景不同。

 

再比如大学学校的层层次不一样,有985、211、普本、专科。

谁都想读名校,但是学校招收的条件不一样;学生的天赋、方法、努力甚至户口都不一样,不可能所有人都读名校。

再比如每个大学的专业都很多,有经济、数学、文学等,没有任何一个专业是永远吃香的,同样是高分或者低分,都会有人选择不同的专业。

每个人根据自己能力选择最合适的学校和专业。

 

再比如同一个学校的学生,有选择考研,选择考老师,考公务员;选择直接就业,有选择创业。

每一种选择都,可能成功,可能失利。考老师可能稍微安逸,但是薪资低一些;创业可能挣大钱也可能血本无归。

安逸和薪资是矛盾的,挣大钱和风险是矛盾的;

 

三、结论

既然没有万能的结构,没有万能的选择,我们尽量针对不同的场景,选择适合的数据结构,适合的技术等。

 

如果觉得本文对你有帮助,欢迎点赞,欢迎关注我,如果有补充欢迎评论交流,我将努力创作更多更好的文章。