hi,大家好,今天分享一个特别重要的思想,这个思想是解决困难问题的利器,那就是分摊思想,今天深入介绍一下这个思想,希望大家可以从中学到一些东西。
什么是分摊思想
狭义的分摊是指算法复杂度分析里面,对单次复杂度高的操作,其操作代价可以通过拉长周期,在长时间看来,其复杂度可以分摊到每一次低复杂度操作,
简单地说就是,偶尔的高复杂度操作,并不能决定整个算法真实复杂度,随着算法长时间运行,高复杂度的操作可以平摊到每次的低复杂度操作,这样算法评估的复杂度就变成低了,也更接近真实的复杂度。
广义的分摊思想,是指要完成一个大目标,需要进行目标分解,分解成日常操作,是不是和上面狭义的定义有点类似,因为一般大目标是不可能一次完成的,需要日积月累,需要每天完成分解好的任务,这样最后才可能完成大目标(高复杂度操作)。
分摊思想就类似批量处理思想的对立面,批量处理核心原理是:借助计算机局部性原理,把多个单次操作,聚集起来形成一个大操作,一次处理完成,可以让处理更加有效率。
而分摊思想利用了积少成多特性,一般很多目标(一般指有一定难度的目标)都不是一次可以完成,都需要分解成细小任务,分散到每天生活中去完成。我们可以看一看此思想在各个领域中的应用。
算法中的分摊思想
上面章节已经说过了,狭义的分摊思想就是从算法复杂度分析中来的,偶尔的高复杂度操作,并不能决定整个算法真实复杂度,随着算法长时间运行,高复杂度的操作可以平摊到每次的低复杂度操作,这样算法评估的复杂度就变低了,也更接近真实的复杂度。
动态扩容复杂度分析
就是很多时候,不要因为方案里面包含一次高复杂度操作,就否决该方案,应该采用分摊思想进行复杂度分析,很可能长时间来看,分摊后的复杂度是可以接受的,但程序偶尔出现高复杂度读操作可能会导致性能抖动。
比如在Java中,传统的垃圾回收(GC)过程可能会导致程序暂停,这在一些对延迟敏感的应用中是不可接受的。因此,如果应用不允许存在这种暂停,就需要寻找其他的解决方案。ZGC(Z Garbage Collector)是一种新型的垃圾回收器,它采用了分摊的思想来解决这个问题。
ZGC通过每次只回收一小部分的垃圾,将垃圾回收的工作分摊到多次中,从而降低了每次垃圾回收对程序运行的影响。这样,即使在进行垃圾回收时,程序也可以保持运行,大大减少了垃圾回收带来的暂停,ZGC在标记、转移和重定位阶段几乎都是并发的,这是ZGC实现停顿时间小于10ms目标的最关键原因。
工作上的分摊思想
在工作中,公司都是把战略目标从上到下进行分解,把公司目标分解为部门目标,部门再分解为团队目标,最后团队再分解成具体可执行的任务,一般大厂都是这样倒推工作的,先定一个合理的目标,然后要完成这个目标(战略目标),各部门必须要做哪些工作(完美计划),再推动各部门严格执行(执行力),最后验收成果(复盘),就个就是当前大厂比较流行的目标管理方法OKR。
这里面就包含了分摊的思想,怎么去完成一个大的战略目标,比如市场占有率,APP在线人数,营收增长等等,这些目标都需要分摊到每一天的工作中去实现,每天严格执行起来,才可以完成目标。
对于个人而言,首先要清楚团队的目标,其次要学会把这些目标分摊到每一天工作中,如果当天工作没有完成,很可能会影响到整个任务进度,甚至会导致部门目标不能完成,可能会产生蝴蝶效应,所以如果作为项目负责人,要随时发现这些风险点,并及时调整。
生活中的分摊思想
其实在生活中,很多人都喜欢只立flag,不管行动,没有具体落地的计划,并没有去分析如果要完成这些flag,需要完成哪些任务,没有把任务分摊到每一天生活中去,大多数时候,很多人都只记得flag,而忘记每一天要完成的任务,形成拖延症。
所以在生活中,我们需要明确可量化目标,比如减肥20斤,然后制定详细计划,并分解成小任务到每一天生活中,然后每天严格完成这些任务,相信这个目标很快都会达到(很多时候,只要严格执行,目标都会提前完成)。
我们可以看到,每一个成功人士的背后,都离不开汗水和坚持,唯有自律的人,才能每天迎接朝阳和晚霞。
我们可以举个例子:《邪不压正》中,人人都在惊叹彭于晏的身材,殊不知,他私底下为此付出了多少努力。
我们只是看到了他光鲜亮丽的一面,以前他也迷茫过,绝望过,他问过自己,为什么别人能够接那么多戏?有那么多粉?赚那么多钱?答案就是自己还不够优秀!
怎么让自己变得优秀?只有一个答案:拼命,自律。他没有才华,所以只能去拼命地努力,才能成为更好的自己。
在拍《翻滚吧,阿信》这部电影时,彭于晏挑战了电影中所有的高难度体操动作,这些都是他苦练了8个月才拿下了,每天严格控制饮食(分摊思想),体脂保持在10%以下,最后他学会了体操项目,并且把身材练得特别好。
经济学中的分摊思想
相信大家都想挣钱,很多人都给自己设置了目标,比如30岁之前一定要年薪100W,或者40岁之前实现财富自由等等,但是生活告诉我们,这些并不是到了30岁会自然实现的,需要一个非常完美计划和强大的执行力,需要从30岁的时间点,把目标100W倒推到今天,制定每天干什么,每个月干什么,每个一年达成什么目标,直到30岁之前计划,这是一个逐步实现的过程。
举一个不恰当的例子,一个从艺20年终于成功的明星,拍广告30分钟挣100万。如果单从这回报看,是不公平的暴利。但是事实上,商家购买的是明星的影响力,这影响力是之前20年不停积累的结果。也就是说这100万从他20年前就开始挣了,这30分钟只是最后的兑现。
最后总结
最后,从上面的例子中,我们深刻体会到了,分摊思想是非常重要的,要想完成一个巨大的目标,第一眼看上去确实很困难,其实只要认真去分解目标,踏踏实实完成好每一个小任务,坚持下去,说不一定哪一天就实现了自己的小目标。
希望大家不要畏惧设立目标,也不要轻视目标,掌握分摊思想精髓,在生活中,工作中的实践起来,把生活朝着自己预期方向发展。
参考和扩展
https://www.zhihu.com/question/19920338
https://www.cnblogs.com/gaochaochao/p/9216079.html
- END -
深入理解计算机系统
深入理解操作系统(调度,内存,网络,IO)
深入理解并发技术全景指南
深入理解编程语言
深入理解算法与数据结构
深入理解网络协议
深入理解网络编程
深入理解性能优化
深入理解分布式技术
深入理解AI技术全景图
深入理解数据库
深入理解代码设计
深入理解架构设计
更多硬核资料在极客星球,现在加入超级优惠,扫描下面的优惠劵,早点加入一起学习成长,早点突破成长瓶颈,完成初始的技术积累。
坚持干货内容,欢迎大家关注极客重生
感谢大家在看,转发,点赞
推荐阅读: