业务开发算法 50 讲
从算法的工程实践开始,提升问题解决能力
黄清昊  Hashdata 数据库内核工程师,LeetCode 高赞答主,公众号微扰理论作者
专栏
已完结·共 51 讲
|
2.3w 人已学
|
收藏
我们让盗取任务的进程,从队列的另一端盗取就行了,这样只有队列长度为 1 的时候才会出现竞争
来自:03|双端队列:并行计算中的工作窃取算法如何实现?
3 人划过
在 select 的时候如果没有加 for update 的话,就不会发生幻读的现象,反之则会有幻读的现象
来自:28|MVCC:如何突破数据库并发读写性能瓶颈?
3 人划过
journaling file system 的核心思想是鼎鼎大名的预写日志 WAL 也就是 write-ahead logging,这个也正是数据库系统中用于实现原子事务的主要机制,也很好理解,毕竟事务和文件系统一样,都需要保证一致性。
来自:16|日志型文件系统:写入文件的时候断电了会发生什么?
3 人划过
经典拥塞控制算法主要包括四个部分:
来自:20|滑动窗口:TCP是如何进行流量控制和拥塞控制的?
3 人划过
这其实也是在分布式系统中非常常见的做法。容斥原理我们知道,能获得半数以上票选的候选人只可能有一个。所以半数机制,如果遇到网络分区,网络分区少数的那一方就肯定不会产生 Leader;同样,同一个 Term 下全局也只会有一个 Leader,不会出现脑裂也就是同时有多个 leader 的情况。
来自:23|Raft:分布式系统间如何达成共识?
3 人划过
不同的字符编码间不能彼此成为对方的前缀
来自:13|哈夫曼树:HTTP2.0是如何更快传输协议头的?
3 人划过
有没有什么办法利用磁盘读写的特性,既可以保持树状结构的灵活性,又同时降低查询的 IO 次数呢?这就是 B+ 树的用武之地了,核心就是通过引入更多的分叉,在节点同样数量级的范围内,显著地降低树状索引的层数
来自:26|B+ Tree:PostgreSQL 的索引是如何建立的?
3 人划过
既然建立线性的索引文件就可以帮助我们加速查询的过程,那为什么在许多情况下,我们还需要使用诸如红黑树、B+ 树这样的复杂索引结构呢?比如 InnoDB 的索引文件就采用了 B+Tree,它和 Kafka 所选择的顺序稀疏索引文件各有什么优劣呢?
来自:09|二分:如何高效查询Kafka中的消息?
3 人划过
*精彩内容为该课程各文章中划线次数最多的内容
免费试读
讲师

黄清昊

Hashdata 数据库内核工程师,LeetCode 高赞答主,公众号微扰理论作者

黄清昊(微扰理论),前阿里云、字节跳动、腾讯工程师,毕业于上海交通大学。在 LeetCode 上刷了 800 多道题目,贡献了 200 余篇优秀题解,对算法有深入理解,也因此在毕业后顺利完成了从前端到基础软件研发的方向转变。现任 EMQ X 存储工程师,对函数式编程和分布式...查看更多
编辑推荐
看过的人还看了
数据结构与算法之美
王争
前 Google 工程师

81讲 | 283801 人已学习

¥68¥199
MySQL 实战 45 讲
林晓斌
网名丁奇,前腾讯云数据库负责人

49讲 | 224934 人已学习

¥68¥199
左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家

119讲 | 180998 人已学习

¥98¥399
设计模式之美
王争
前 Google 工程师,《数据结构与算法之美》专栏作者

113讲 | 123466 人已学习

¥98¥299
Redis 核心技术与实战
蒋德钧
中科院计算所副研究员

53讲 | 81740 人已学习

¥68¥199
从 0 开始学架构
李运华
网名“华仔”,前阿里资深技术专家(P9)

66讲 | 152618 人已学习

¥68¥199