组织你的思路
既然你的大量时间都是用在沟通、研究和多任务上,你需要一些工具来帮助一切井然有序。TODO 清单/任务工具:你的公司应该已经有了某种任务管理软件了,但你自己也有类似的个人系统是有帮助的。使用便利贴或者像 Trello 或者 Todoist 之类的软件。笔记:开会一定要记笔记,南京平面设计就业难吗,要致力于改进现有文档并且建立个人的知识库。使用 Evernote、OneNote 或者笔记本。使用这些工具似乎有用力过度之嫌,南京平面设计学费多少,但日后在回顾这一耗掉了你 3 天时间才想清楚的晦涩的开发过程时你会感谢自己的。不做丰富笔记的好的软件*我一个都没见过。图表/可视化:人是视觉动物,创建流程图和架构可帮助你和其他人理解复杂的话题。在跟非技术人员沟通时图解尤其有用。可使用 Lucidchart、 Visio 或者白板。
条件二
参考计数器算法条件二实现。
算法升级
可以看到实现漏桶算法的话需要每隔interval时间都要另外一条线程去遍历所key的value去做递减操作,那么有没有什么办法可以省略这一步呢。是肯定有。
12345678910111213 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)(参照漏桶算法需要注意的点)
条件*程一:
12345678 if(存在key){ value ; if(valuegt;=limit){ 不能访问 } }else{ 添加key,设置value为limit }
线程二:
123 while(过去interval时间){ 所有key的value step }