背景介绍
很多开发者认为:平时写业务代码,把封装好的接口、类库拿来用做开发就好了,自己不需要考虑是哪些数据结构构建的它们,甚至认为数据结构只是面试的时候才能用得到。
但很多技术人,对数据结构的认知都是错误的:
1.只会使用,不懂底层原理: 看了很多算法、架构设计的书和资料,开源软件拿来就用,却始终没有搞懂底层数据结构的原理。不懂底层原理,你就只能堆砌业务逻辑,就会导致整个代码库异常琐碎复杂且难以维护。一旦用错,那你其实连业务逻辑都没堆砌好,会导致资源消耗过多、延迟太高等等问题。
2.面试才学,工作中不会用: “面试造火箭、工作拧螺丝” 很多人认为面试要考,所以才学。但其实正确使用数据结构,你便可以使用最优解,对不同的算法和数据结构的组合,找到最佳的时间复杂度和空间复杂度,对你的业务编码能力会起到质的飞跃。
这个专栏,将从底层到应用层贯穿整个思路,结合硅谷一线大厂的最佳实践和顶级开源软件的应用,来讲数据结构「是什么、为什么、怎么做」,从而让你明白这些数据结构为什么存在以及在什么情况下可以最好地解决什么样的问题,进而在编码上面有质的飞跃。
五大模块,带你攻克数据结构实战:
模块一 数组与链表。 先带你回顾时间复杂度和空间复杂度、深入数组和链表的内存结构。
模块二 哈希表。 这个模块将会带你通过比特币挖矿的案例,来理解哈希函数和哈希碰撞的本质。
模块三 树。 在树的模块中,讲解树的结构化特性。会以MySQL语法树为例,看树是如何在 Amazon AWS 中以超大型数据库查询起到中流砥柱的作用的,后半部分则会拆解 LSM 树在 Apache 项目中的应用。
模块四 图。 图也是在大厂应用非常广泛的数据结构之一。会以 Apache Spark 为例,来看看有向无环图是如何优化大规模分布式运算顺序的。利用 Uber 的车辆调度算法,深入浅出的帮你掌握图是怎样实现这些硅谷一线大厂核心功能的。
模块五 数据结构组合拳。 在实战中一定会融合使用多个数据结构去实现业务逻辑。这个模块会从 Nginx 中的缓存数据结构,比如哈希表、链表、红黑树和LRU缓存讲起,再根据 Instagram 和 Twitter 的高并发限流机制的数据结构实战应用,带你游刃有余使用数据结构进行实战,轻松打出数据结构组合拳。
课程目录
模块一:数组与链表的应用
第 01 讲:数组内存模型
第 02 讲:位图数组在 Redis 中的应用
第 03 讲:链表基础原理
第 04 讲:链表在 Apache Kafka 中的应用
模块二:哈希表的应用
第 05 讲:哈希函数的本质及生成方式
第 06 讲:哈希函数在 GitHub 和比特币中的应用
第 07 讲:哈希碰撞的本质及解决方式
第 08 讲:哈希表在 Facebook 和 Pinterest 中的应用
模块三:树的应用
第 09 讲:树的基本原理
第 10 讲:树在 Amazon 中的应用
第 11 讲:平衡树的性能优化
第 12 讲:LSM 树在 Apache HBase 等存储系统中的应用
模块四:图的应用
第 13 讲:用图来表达更为复杂的数据关系
第 14 讲:有向无环图在 Spark 中的应用
第 15 讲:图的实现方式与核心算法
第 16 讲:图在 Uber 拼车业务中的应用
模块五:数据结构组合拳
第 17 讲:缓存数据结构在 Nginx 中的应用
第 18讲:高并发数据结构在 Instagram 与 Twitter 中的应用
讲师介绍
蔡元楠,硅谷资深工程师
工作领域为 AI Healthcare(人工智能的健康医疗应用),领导并开发超大规模数据驱动的全新 AI 应用与商业模式。
于哥伦比亚大学和上海交通大学获计算机硕士和信息工程学士学位,并曾于哈佛医学院执行官项目学习。同时,在国际一线互联网公司兼任 C++语言评审以及 AI 挑战赛评委会委员。