获得徽章 0
赞了这篇文章
赞了这篇文章
赞了这篇文章
最近在酝酿一个想法,还不是很成熟。大家都知道算法有时间复杂度和空间复杂度。对于工程实现代码来讲,也有逻辑复杂度。
逻辑复杂度是指要考虑的逻辑分支的数量。
举个简单的例子:如果写了一个用户用户登录模块A,这个时候要加一个功能是分析用户的登录时间,高频登录用户会发放优惠卷。
方案1:在每次用户登录时,记录该用户的登录时间,达到一个阈值后,触发发优惠卷。
方案2:用户登录时记录登录时间字段。有另外一个模块/线程,定期扫描该字段,触发发放优惠卷。
方案1的逻辑复杂度远高于方案2,方案1要考虑用户是否登录失败远算到登录中,重复登录如何去重,如果计算超时会不会导致用户正常登录超时等等。复杂性是o(n^2)。
方案2的逻辑复杂度是o(2n)。
这个简单的例子是提倡的松耦合。但是逻辑复杂度的场景补仅仅局限于耦合场景。以后细说。
逻辑复杂度是指要考虑的逻辑分支的数量。
举个简单的例子:如果写了一个用户用户登录模块A,这个时候要加一个功能是分析用户的登录时间,高频登录用户会发放优惠卷。
方案1:在每次用户登录时,记录该用户的登录时间,达到一个阈值后,触发发优惠卷。
方案2:用户登录时记录登录时间字段。有另外一个模块/线程,定期扫描该字段,触发发放优惠卷。
方案1的逻辑复杂度远高于方案2,方案1要考虑用户是否登录失败远算到登录中,重复登录如何去重,如果计算超时会不会导致用户正常登录超时等等。复杂性是o(n^2)。
方案2的逻辑复杂度是o(2n)。
这个简单的例子是提倡的松耦合。但是逻辑复杂度的场景补仅仅局限于耦合场景。以后细说。
展开
6
8
赞了这篇沸点
赞了这篇沸点
百度mac不限速
安装
cd ~/Downloads && git clone
github.com && ./BaiduNetdiskPlugin-macOS/Other/Install.sh
卸载
cd ~/Downloads && ./BaiduNetdiskPlugin-macOS/Other/Uninstall.sh
安装
cd ~/Downloads && git clone
卸载
cd ~/Downloads && ./BaiduNetdiskPlugin-macOS/Other/Uninstall.sh
展开
29
107
赞了这篇沸点
最近遇到几个问题:1.如何做有状态数据的上云迁移?2.监控上报源变了,但是指标没变,如何做上报源的切换?
这些有状态的数据的迁移问题,归根结底是生产者变化。要保证数据的一致性,准确性。
基本思路是,将生产者划分多个小的粒度,依次切换。切换过程中,旧的生产者写数据到临时文件,用作比对监控。确认一段时间监控一致后,再继续切换其他分片/副本。
这些有状态的数据的迁移问题,归根结底是生产者变化。要保证数据的一致性,准确性。
基本思路是,将生产者划分多个小的粒度,依次切换。切换过程中,旧的生产者写数据到临时文件,用作比对监控。确认一段时间监控一致后,再继续切换其他分片/副本。
展开
评论
1
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章