s*m
2 楼
两个inerface
void inject(int value)
double getAverage() //返回过去5分钟内的平均值
先不考虑并发,
用个Queue或者Dqueue保存数据。另开个线程一定时间删除数据
谁负责计算平均值呢? 考虑getAverage会被经常call.
inject吧。getAverage会快一点。
(getAverage和最后一次inject的时间不一样,计算出来的还就不是过去5分钟的了吧
。。。擦,刚开始还注意到了,被challenge了一下,把这个点给忘了)
计算平均的时候有办法避免每次遍历这个Queue吗?
考虑并发是,上面的方法还行得通吗?
void inject(int value)
double getAverage() //返回过去5分钟内的平均值
先不考虑并发,
用个Queue或者Dqueue保存数据。另开个线程一定时间删除数据
谁负责计算平均值呢? 考虑getAverage会被经常call.
inject吧。getAverage会快一点。
(getAverage和最后一次inject的时间不一样,计算出来的还就不是过去5分钟的了吧
。。。擦,刚开始还注意到了,被challenge了一下,把这个点给忘了)
计算平均的时候有办法避免每次遍历这个Queue吗?
考虑并发是,上面的方法还行得通吗?
l*2
3 楼
RT
t*s
4 楼
rt
在macy's里买的话能有什么优惠?
在macy's里买的话能有什么优惠?
y*r
5 楼
和大妈一起抢 itouch 4?
c*e
6 楼
为了避免每次计算平均数时遍历整个queue:
1. 保存当前5分钟所有数据的总和,或者总平均值
2. 每次新来一个数时,加到总和里,或者加到总平均值里
3. 每过去1秒(或者考官要求的时间精度),找到那些超过5分钟的数字,从总和里减掉
3号逻辑,做成一个独立的方法,然后在getAverage方法以及inject方法里都调用1次,
这样既保证getAverage是准确的,也保证如果一直没有人调用getAveragae,也不会塞
太多过时数据在队列里
还有啊,如果时间精度要求不高,比如1秒,而inject频率很高,比如每秒钟1000次,
那么根本就不用保存每一个数以及其时间戳,可以把1秒钟内的数字,全部累加,保存
成1个数,1个时间戳
因为只要输出平均值,本来就没有必要保存每个数,只要有单位时间内总数值保存好就
行了
1. 保存当前5分钟所有数据的总和,或者总平均值
2. 每次新来一个数时,加到总和里,或者加到总平均值里
3. 每过去1秒(或者考官要求的时间精度),找到那些超过5分钟的数字,从总和里减掉
3号逻辑,做成一个独立的方法,然后在getAverage方法以及inject方法里都调用1次,
这样既保证getAverage是准确的,也保证如果一直没有人调用getAveragae,也不会塞
太多过时数据在队列里
还有啊,如果时间精度要求不高,比如1秒,而inject频率很高,比如每秒钟1000次,
那么根本就不用保存每一个数以及其时间戳,可以把1秒钟内的数字,全部累加,保存
成1个数,1个时间戳
因为只要输出平均值,本来就没有必要保存每个数,只要有单位时间内总数值保存好就
行了
b*y
7 楼
日,又来了!
b*6
8 楼
touch给50块的卡,怎么样?
s*r
9 楼
是个什么东西啊?
黑糊糊的。
黑糊糊的。
m*o
11 楼
丽娟儿
C*i
12 楼
你要再发一次!
我也没啥脾气
我也没啥脾气
相关阅读
这个Prada值得跳吗?jcrew 30%off code谁教教我巩俐高领毛衣怎么穿才好看?Maggie Q~奔个今天穿的刚刚在macys买了好几件cashmere----29.99/each!继续刘海-男人的刘海冬天在家里的look家有2岁宝宝的宝妈看过来coach outlet 买的包可以到 retail 店退掉吗?大家明天跳啥?请问一下kiehl's的sample怎么加进shipping bag啊给大家灭个兰寇小黑瓶的草Lucky Brand additional 40% off美女们帮我推荐螺旋藻和腰椎间盘突出的保健药吧,谢谢!请问男士一个nike衣服大小的问题la mer 这个牌子ugg号码偏大么?大家买的时候都是往大一号买还是小一号买?