文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
总结
让我们回顾得到最后的MinuteHourCounter设计所走过的路。这是个典型的代码片段演进过程。
首先,我们从编写一个幼稚的方案开始。这帮助我们意识到两个设计上的挑战:速度和内存使用情况。
接下来,我们尝试用“传送带”设计方案。这种设计改进了速度和内存使用情况,但对于高性能应用来讲还是不够好。并且,这个设计不是很灵活:让这段代码能处理其他的时间间隔需要很多工作。
我们最终的设计解决了前面的问题,通过把问题拆分成子问题。下面是创建的三个类,自下向上,以及每个类所解决的子问题:
ConveyorQueue
一个最大长度的队列,可以“移位”并且维护其总和。
TrailingBucketCounter
根据过去了多少时间来移动ConveyorQueue,并且按所给的精度来维护单一(最后)的时间间隔中的计数。
MinuteHourCounter
简单地包含两个TrailingBucketCounters,一个用来统计分钟,一个用来统计小时。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论