为什么需要数据卷docker镜像是分层的,docker镜像是由多个只读层(read-only layer)叠加而成。当我们运行一个容器时,docker加载只读的镜像,和在最顶层加载一个读写层(read-write layer)。在一个运行的容器中修改文件,该文件从只读层复制到最顶部的读写层,修改是作用在读写层的新文件,没有作用到只读层的原文件,读写层隐藏了下层的原文件,原文件仍然保留着原来的...
什么是docker composecompose是定义和运行由多个容器(multi container)组成的应用的工具。compose中有两个概念server: 一个应用的容器。project: 由一组相关的应用容器组成的整个业务项目。为什么需要docker compose我们在开发一个project时,这个项目除了app service,一般还需要database,cache等其他的se...
问题在很多的场景中,都会使用到排序,然后分页展示。如果有对应的索引,就可以避免额外的文件排序操作,只需要扫描索引,效率通常会不错。假设我们维护着一个游戏积分排行榜,排行榜有10万个用户,按积分高低排序,界面上每页展示10个用户。CREATE TABLE `game_list` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id', ...
作为一个curd boy,整天和mysql打交道。索引是我们写sql语句时,一个经常需要考虑的问题。索引对良好的性能非常关键,在数据量少时,不恰当的索引对性能的影响可能还不明显,但随着数据量增多,性能则会急剧下降。索引优化应该是对查询性能优化最简单有效的手段了,索引能够轻易将查询性能提高几个数量级。索引就像一本书的目录,如果没有目录,我们查找其中的某个知识点,就需要翻阅整本书。有了目录,我们...
在上篇文章如何编写一个BT种子爬虫(二)里,我们了解了通过info-hash(magnet:?xt=urn:btih:<info-hash>,也就是磁力链),得到种子metadata(元数据)的底层协议。本来打算基于libtorrent来编写代码,但是libtorrent是 C++ 编写的,我不太熟悉 C++(╯‵□′)╯︵┴─┴。官方也提供了其他语言的binding,pytho...