クォータのdledger

目的:しきい値睡眠を超える秒あたりのバイト数、

// 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に; 
}

 

おすすめ

転載: www.cnblogs.com/allenwas3/p/12522193.html