在这里立个 Flag 吧,目前想搞懂的一些东西。
## uwsgi 的并发模型
我在知乎看到这个问题:
https://www.zhihu.com/question/56472691 就想了一下 uwsgi 的并发模型。
我原来一直以为 uwsgi 每个请求线程都有自己的请求队列,然后请求放在队列里面一个一个处理。但是又搜索到
xiaorui.cc 中的一篇文章:
http://xiaorui.cc/2017/02/16/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3uwsgi%E5%92%8Cgunicorn%E7%BD%91%E7%BB%9C%E6%A8%A1%E5%9E%8B%E4%B8%8A/里面讲到 uwsgi 是使用 epoll 来管理多个 TCP 连接的,我就在想 uwsgi 还有请求队列吗?
想继续去读一下 uwsgi 的源码,了解一下它的并发模型,整理一篇博客出来。
## MySQL 的数据存储结构
之前在看 高性能 MySQL 的时候,说到 InnoDB 的索引和数据时放在一起,MyIsam 索引中存放的是数据的地址,然后我就在想,索引不应该启动的时候就加载到内存中了吗?那么数据肯定不可能一起加载上去啊,InnoDB 的索引和数据具体是如何存放的呢?
然后就去了解了 MySQL 的数据存储,了解到了表空间,段,区,页的概念。同时也了解了 undo 页,插入缓冲区位图页,redo 页等概念,发现不懂的更多了。
想继续了解 MySQL 它的 buffer pool 中的内容和硬盘上的数据文件是如何对应起来的,解开我上面的疑惑?
这个也要整理一篇博客出来
## MySQL 的联合索引为何是有序的?
这是同学问我的一个问题,MySQL 的联合索引,primary(a, b)和 primary(b, a)是不同,如果查询的时候使用 order by a,
b 和 order b, a 使用的也是不同的索引,为什么是这样的?同学说这和 B+ 树索引的实现有关系。听他说了没听懂,想去撸一遍 B+ 树,了解这个原因。
这个也整理一篇博客出来
## MySQL 的 MVVC 实现机制
当初了解了数据库的 ACID 特性和 隔离级别,在 高性能 MySQL 上看过简述的 MVVC 实现机制,但是感觉讲的不透彻,还是没有特别理解,想去深入了解一下。
## epoll 的实现原理
epoll 从大三就学习了过了,也知道它的基本用法,知道这是个特别牛叉的东西。但是说来惭愧,毕业一年多了,至今不懂它的原理,看到知乎上有人说是使用红黑树实现的,但是也没具体讲。想去了解一下它的实现,最好自己能撸一个简单的 demo 出来
## Redis zset 的实现
目前在工作中 zset 用的特别多,也用的特别爽,但是感觉使用调用命令使用,不了解它的实现原理。想自己撸一个 Redis,挨个实现它的数据结构。
列了好多想学的东西,希望未来两年能把我立的 Flag 给兑现了。