- 发布
- 南京正厚软件技术有限公司
- 电话
- 025-86665061
- 手机
- 13357804560
- 发布时间
- 2020-12-11 15:28:27
“你们采用的软件开发流程是什么?”
无论实际的细节是什么,培训,流程对于软件工程都至关重要。至于哪些东西对于优化流程做出了贡献可能大家会有不同的看法,IT培训,但仅就项目的工作方式达成一致就能将混乱很小化并且确保每个人都能达成共识。
危险信号:“我们的流程受到了自由风格的爵士的影响。” → 很有可能整个部门都处在救火模式,总是不断地从紧急跳到另一个紧急状态而缺乏任何明确的目标。
“你们是如何处理技术债的?”
技术债是过时技术以及代码库中临时应急的解决方案的累积。处理好技术债对于代码的长期健康很重要,这件事情应该持续地做。
危险信号:“我们只关注新功能。” → 他们的代码库一团糟或者很快就会一团糟。
条件二
参考计数器算法条件二实现。
算法升级
可以看到实现漏桶算法的话需要每隔interval时间都要另外一条线程去遍历所key的value去做递减操作,那么有没有什么办法可以省略这一步呢。是肯定有。
213 if(存在key){ value--; if((nowTime-lastUpdateTime)gt;interval){ value=value-(nowTime-lastUpdateTime)/interval*step; lastUpdateTime=nowTime; } if(valuelt;=0){ 不能访问 } }else{ 添加key,设置value为limit; lastUpdateTime=nowTime; }
令牌桶算法核心思想
令牌桶算法呢,恰恰是和漏桶算法相反的一个算法,不过还是推荐你使用这个。这个算法的原理我不讲,我觉得聪明的你看了伪代码就明白了。
涉及变量
接口(key)
时间单位(expire)
允许访问多少次(limit)
递增间隔时间(interval)
递增步长(step)
当前可访问次数(value)
key的访问时间(lastUpdateTime)
当前时间(nowTime)(参照漏桶算法需要注意的点)
条件一线程一:
if(存在key){ value ; if(valuegt;=limit){ 不能访问 } }else{ 添加key,设置value为limit }
线程二:
123 while(过去interval时间){ 所有key的value step }