阻塞与非阻塞 主要是指,操作系统,或者底层的c库,提供的方法,或者是一个系统调用。也就是说我们调用这个方法的时候,这个方法可能会导致我的进程进入sleep状态,为什么会进入sleep状态呢?就是当前的条件不满足的情况下,操作系统主动的把我的进程切换为另外一个进程了,在使用当前的CPU。那么这样就是一个阻塞方法。 而非阻塞方法就是我们调用该方法,永远不会因为,当我们时间片未用完时,把我们的进程主动
最近更新
按时间写下的文章
Tarjan寻找图的强连通分量算法
参考 GeeksforGeeks 如果所有的顶点对之间都有一条路径,那么一个有向图就是强连通的。有向图的强连通分量(strongly connected component,SCC)是一个最大强连通子图。例如,下面的图中有3个SCC。 我们已经讨论过Kosaraju的强连通分量的算法。前面讨论的算法需要对一个Graph进行两次DFS遍历。在这篇文章中,我们将讨论Tarjan算法,它只需要一次
我们唯一值得恐惧的就是恐惧本身
1933年,富兰克林·罗斯福首次总统就职演说 因此,首先,请允许我表明自己的坚定信念:我们唯一值得恐惧的就是恐惧本身——这是一种难以名状、盲目冲动、毫无缘由的恐惧,可以使人们转退为进所需的努力全都丧失效力。 名言: 我们必须成为民主制度的伟大兵工厂。对我们来讲,这是如同战争本身一样严重的紧急情况。我们必须以同样的决心,同样的紧迫感,同样的爱国主义和牺牲精神来致力于我们的任务,就好像我们处在战
全局锁和表锁:给表加个字段怎么有这么多阻碍?
今天我要跟你聊聊MySQL的锁。数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。 根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。今天这篇文章,我会和你分享全局锁和表级锁。而关于行锁的内容,我会留着在下一篇文章中再和你详细介绍。 这里需要说明的是,锁的设计比较复杂,
深入浅出索引
覆盖索引 如果执行的语句是select ID from T where k between 3 and 5,这时只需要查ID的值,而ID的值已经在k索引树上了,因此可以直接提供查询结果,不需要回表。也就是说,在这个查询里面,索引k已经“覆盖了”我们的查询需求,我们称为覆盖索引。 由于覆盖索引可以减少树的搜索次数,显著提升查询性能,所以使用覆盖索引是一个常用的性能优化手段。 需要注意的是,在引擎内部
nginx所有worker进程协同工作的关键:共享内存
nginx是一个多进程程序,那么不同的worker进程之间,如果需要共享数据,那么只能通过共享内存。那么下面我们来看一看,nginx中的共享内存是怎么使用的。 nginx的进程间的通讯方式,主要有两种,第一种是信号,那么之前我们在说如何管理nginx的过程中,已经比较详细的介绍过了,那么如果需要做数据的同步呢?那么只能通过共享内存,所谓共享内存,也就是说我们打开了一块内存,比如说10M,那么一整块
Python的方法解析顺序(MRO)
参考 链接 对于支持继承的编程语言来说,其方法(属性)可能定义在当前类,也可能来自于基类,所以在方法调用时就需要对当前类和基类进行搜索以确定方法所在的位置。而搜索的顺序就是所谓的「方法解析顺序」(Method Resolution Order,或MRO)。对于只支持单继承的语言来说,MRO 一般比较简单;而对于 Python 这种支持多继承的语言来说,MRO 就复杂很多。 先看一个「菱形继承」
自增id用完怎么办?
MySQL里有很多自增的id,每个自增id都是定义了初始值,然后不停地往上加步长。虽然自然数是没有上限的,但是在计算机里,只要定义了表示这个数的字节长度,那它就有上限。比如,无符号整型(unsigned int)是4个字节,上限就是2^32-1。 既然自增id有上限,我们就来看看MySQL里面的几种自增id,一起分析一下它们的值达到上限之后,会出现什么情况。 表定义自增值id 说到自增id,你第一
到底可不可以使用join
问题: 能不能使用join? 两个大小不同的表,应该用哪个表做驱动表? 为了便于量化分析,我建两个表t1和t2来和你说明。 123456789101112131415161718192021222324CREATE TABLE `t2` ( `id` int(11) NOT NULL, `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL,
转:说一说这些好问题
在我看来,能够帮我们扩展一个逻辑的边界的问题,就是好问题。因为通过解决这样的问题,能够加深我们对这个逻辑的理解,或者帮我们关联到另外一个知识点,进而可以帮助我们建立起自己的知识网络。 在工作中会问好问题,是一个很重要的能力。 join的写法 在35篇文章《join语句怎么优化?》中,我在介绍join执行顺序的时候,用的都是strainght_join。有同学哉问候提出了两个问题: 如果用left