
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
其实在电脑中,内存并不是读取速度最快的存储介质,还有更快的,叫CPU缓存。如果你看CPU的参数,经常能看到(L1/L2/L3缓存,他们共同组成CPU缓存),它是CPU的一部分,你们在看CPU规格时常常会看到,它离CPU计算核心更近,访问速度更快,但容量更小。CPU缓存和内存的关系与内存和硬盘的关系是一样的。其实CPU缓存中还能细分,“L1缓存 ”是“L2缓存 ”的缓存,“L2缓存”是“L3缓存”的缓存,“L3缓存”是内存的缓存。
缓存还有另外一个作用,缓冲。
达内长沙IT培训举个拉面店的例子。
有个拉面店只卖一种拉面,顾客时多时少,有时一次性来好几个人,师傅现做的话肯定有顾客等很久,如果提前做很多的话又有可能做多卖不出去,那么师傅想了这么一个策略,提前做好一些拉面,放在一个固定的桌子上,如果桌子上的拉面达到2碗,师傅就慢着点做,如果一直没卖出去,桌上的面达到4碗,就完全不做了,如果某个时段生意旺卖很快,桌上的面可能会少于2碗,或者卖完,甚至还有人等,那么师傅就要开足马力做面了。
那么,这里就把桌子当作缓存,通过缓存策略,给师傅一定的缓冲时间,一定程度上抵消人流波动带来的影响。
缓冲可以从两个角度解释,一个是任务发送者,另一个是任务处理者。在发送者和处理者之间设置缓存,来协调任务发送速度与处理速度不一致。当任务发送速度大于处理速度时,任务在缓存中堆积,发送者减慢发送速度,处理者提高处理速度;如果缓存中任务非常少了,则提高发送速度,减慢处理速度。如果处理是一次性的,缓存能减少处理的频率。
达内长沙IT培训再举个例子:垃圾桶是一种缓存,如果家里没有垃圾桶,我们一旦有垃圾就得扔到外头的垃圾桶,垃圾桶的存着可以减少我们处理的频率。
产品例子
缓存理论不仅在计算机领域应用广泛,而且在生活和产品中也常常用到。我们先对理论进行抽象:
缓存/内存,泛指那些使用方便又非常有限的容器。
硬盘,那些使用不方便但容量非常大的容器。
数据,放在容器中的物体。
算法,上面的算法大多都是说怎么淘汰,而下面往往说的是怎么保留,怎样选择,其实本质是一样的。从保留数据的角度重新解释上面的算法:FIFO,保留最后进入内存的;LRU,保留最近用过的;LFU,保留近期使用最频繁的;AI,保留未来最可能用到的。
达内长沙IT培训再举例说明:
我们的电脑桌面就是一个“缓存”,你可以在上面放文件及程序,它非常方便,触手可及,但是它容量非常有限,而资源管理器(我的电脑)则像是“硬盘”。桌面空间有限,东西多了也容易造成混乱,所以必须有所取舍,熵君在整理电脑桌面时一般会将最常用的放在桌面上,不常用的淘汰,这其实就是LFU算法 。
我们的手机桌面的首屏也可以当做“缓存”,一打开就能用到,而最下面一排的快捷栏则是更高级的缓存。我一直期望手机有这样一个功能,自动把最常用(LFU)的应用放首屏,省得我去整理。
网站的首页也是一个缓存,就拿电商网站来说,首页资源是非常珍贵的,过去,这个首页往往是死的,把一些热门的商品放在首页,而现在都是使用推荐算法为每个用户定制首页,这就是上面所说的AI算法。新闻网站也很类似,以前都是编辑根据经验人工调整的首页,现在往往会引入智能算法(AI),结合用户个性化,新闻时效性等综合因素来安排首页内容。
生活中也有很多例子。比如桌面,或者其他一些触手可及的地方;我也会制造缓存,比如指定衣柜中的某个格子为缓存,规定放在这个格子里的衣服可以随意堆放。这些“缓存”常常会溢出,比如桌上太多东西了,影响我工作了;或者衣柜里的缓存区衣服太满,衣服不好找了。
这时我就会清理,我会把不常用的物品清出缓存区,并规整地放在它应该放的地方。这样就避免了频繁整理常用的物品,而这些常用的物品常常在你整理后又会使用到,那么之前就白整理了。这里也用到了缓存的缓冲功能。
这样的例子还有很多,比如微信的首屏也是个缓存,显示最近的对话,显然是使用LRU算法。当你在某个场景抽象出了缓存,那么下一步就是选取合适的算法,一般情况下LFU/LRU这样的简单算法就够用了,如果缓存资源非常珍贵,那么就应该求助你们的算法工程师做一套AI算法了,这就是缓存理论。