返回介绍

总结

发布于 2024-08-18 11:54:28 字数 493 浏览 0 评论 0 收藏 0

让我们回顾得到最后的MinuteHourCounter设计所走过的路。这是个典型的代码片段演进过程。

首先,我们从编写一个幼稚的方案开始。这帮助我们意识到两个设计上的挑战:速度和内存使用情况。

接下来,我们尝试用“传送带”设计方案。这种设计改进了速度和内存使用情况,但对于高性能应用来讲还是不够好。并且,这个设计不是很灵活:让这段代码能处理其他的时间间隔需要很多工作。

我们最终的设计解决了前面的问题,通过把问题拆分成子问题。下面是创建的三个类,自下向上,以及每个类所解决的子问题:

ConveyorQueue

一个最大长度的队列,可以“移位”并且维护其总和。

TrailingBucketCounter

根据过去了多少时间来移动ConveyorQueue,并且按所给的精度来维护单一(最后)的时间间隔中的计数。

MinuteHourCounter

简单地包含两个TrailingBucketCounters,一个用来统计分钟,一个用来统计小时。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文