很多开发者认为:平时写业务代码,把封装好的接口、类库拿来用做开发就好了,自己不需要考虑是哪些数据结构构建的它们,甚至认为数据结构只是面试的时候才能用得到。
但很多技术人,对数据结构的认知都是错误的:
1.只会使用,不懂底层原理: 看了很多算法、架构设计的书和资料,开源软件拿来就用,却始终没有搞懂底层数据结构的原理。不懂底层原理,你就只能堆砌业务逻辑,就会导致整个代码库异常琐碎复杂且难以维护。一旦用错,那你其实连业务逻辑都没堆砌好,会导致资源消耗过多、延迟太高等等问题。
2.面试才学,工作中不会用: “面试造火箭、工作拧螺丝” 很多人认为面试要考,所以才学。但其实正确使用数据结构,你便可以使用最优解,对不同的算法和数据结构的组合,找到最佳的时间复杂度和空间复杂度,对你的业务编码能力会起到质的飞跃。
这个专栏,将从底层到应用层贯穿整个思路,结合硅谷一线大厂的最佳实践和顶级开源软件的应用,来讲数据结构「是什么、为什么、怎么做」,从而让你明白这些数据结构为什么存在以及在什么情况下可以最好地解决什么样的问题,进而在编码上面有质的飞跃。
五大模块,带你攻克数据结构实战:
模块一 数组与链表。 先带你回顾时间复杂度和空间复杂度、深入数组和链表的内存结构。
模块二 哈希表。 这个模块将会带你通过比特币挖矿的案例,来理解哈希函数和哈希碰撞的本质。
模块三 树。 在树的模块中,讲解树的结构化特性。会以 MySQL 语法树为例,看树是如何在 Amazon AWS 中以超大型数据库查询起到中流砥柱的作用的,后半部分则会拆解 LSM 树在 Apache 项目中的应用。
模块四 图。 图也是在大厂应用非常广泛的数据结构之一。会以 Apache Spark 为例,来看看有向无环图是如何优化大规模分布式运算顺序的。利用 Uber 的车辆调度算法,深入浅出的帮你掌握图是怎样实现这些硅谷一线大厂核心功能的。
模块五 数据结构组合拳。 在实战中一定会融合使用多个数据结构去实现业务逻辑。这个模块会从 Nginx 中的缓存数据结构,比如哈希表、链表、红黑树和LRU缓存讲起,再根据 Instagram 和 Twitter 的高并发限流机制的数据结构实战应用,带你游刃有余使用数据结构进行实战,轻松打出数据结构组合拳。