目的:しきい値睡眠を超える秒あたりのバイト数、
// 5つのウィンドウのデフォルト // 二つの配列、配列の添字=現在の第二の窓% @ サンプルを累積値保持 // 秒のtimeVec蓄積時間 プライベート 最終 INT []試料を、 プライベート 最終 ロング [] timeVec。
サンプリング
// io.openmessaging.storage.dledger.utils.Quotaサンプル# 公共 ボイドサンプル(int型の値){ // ミリ秒の現在の数 ロング timeMs = にSystem.currentTimeMillis(); // 秒の現在の数5%。 int型のインデックス= 指数(timeMs ); // 現在の第二 ロング SECOND = SECOND(timeMs); IF!(timeVec [インデックス] = 秒){ // 5、10、15時間後である現在の時間に対応する時間に等しくない指数... // 再割り当て timeVec [インデックス] = ; SECOND サンプル[インデックス]を = 値; }他{ //は直接蓄積する サンプル[インデックス] + = 値; } }
値が閾値を超えたかどうかを決定します
// io.openmessaging.storage.dledger.utils.QuotaにvalidateNow# パブリック ブールにvalidateNow(){ // ミリ秒の現在の数 ロング timeMs = にSystem.currentTimeMillis(); // 秒の現在の数5%。 int型のインデックス= 指数(timeMs)。 // 現在の第二 ロング SECOND = SECOND(timeMs); IF(timeVec [インデックス] == 秒){ // クォータ上 リターンサンプル[インデックス]> = マックス; } 戻り falseに; }