亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hcat.cpp

?? trpr是可以分析tcpdump和mgen日志記錄
?? CPP
字號:
// hcat: Histogram concatenation program#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>const unsigned int MAX_LINE = 1024;#ifndef MIN#define MIN(X,Y) (X<Y?X:Y)#define MAX(X,Y) (X>Y?X:Y)#endif // MIN/MAXvoid usage(){    fprintf(stderr, "Usage: hcat [normalize] [percent [<rangeMin>:]<rangeMax>] file1 [file2 file3 ...]\n");}class FastReader{    public:        FastReader();        bool Read(FILE* filePtr, char* buffer, unsigned int* len);        bool Readline(FILE* filePtr, char* buffer, unsigned int* len);        private:        enum {BUFSIZE = 1024};        char         savebuf[BUFSIZE];        char*        saveptr;        unsigned int savecount;};  // end class FastReader// Simple self-scaling linear/non-linear histogram (one-sided)class Histogram{    public:        Histogram();        bool IsEmpty() {return (NULL == bin);}        void Init(unsigned long numBins, double linearity)        {            num_bins = numBins;            q = linearity;            if (bin) delete[] bin;            bin = NULL;        }        bool Tally(double value, unsigned long count = 1);        void Print(FILE* file);        unsigned long Count();        double PercentageInRange(double rangeMin, double rangeMax);        double Min() {return min_val;}        double Max() {return ((max_val < 0.0) ? 2.0*max_val : 0.5*max_val);}        double Percentile(double p);                   private:             typedef struct        {            double          total;            unsigned long   count;        } Bin;                double          q;        unsigned long   num_bins;        double          min_val;        double          max_val;          Bin*            bin;           }; // end class HistogramHistogram::Histogram() : q(1.0), num_bins(1000), min_val(0.0), max_val(0.0), bin(NULL){}bool Histogram::Tally(double value, unsigned long count){    if (!bin)    {        if (!(bin = new Bin[num_bins]))        {            perror("trpr: Histogram::Tally() Error allocating histogram");            return false;           }        memset(bin, 0, num_bins*sizeof(Bin));        min_val = max_val = value;        bin[0].count = count;        bin[0].total = (value * (double)count);    }    else if ((value > max_val) || (value < min_val))    {        Bin* newBin = new Bin[num_bins];        if (!newBin)        {            perror("trpr: Histogram::Tally() Error reallocating histogram");            return false;         }        memset(newBin, 0, num_bins*sizeof(Bin));        double newScale, minVal;        if (value < min_val)        {                    newScale = ((double)(num_bins-1)) / pow(max_val - value, q);            unsigned long index = (unsigned long)ceil(newScale * pow(min_val - value, q));            if (index > (num_bins-1)) index = num_bins - 1;            newBin[index].total += bin[0].total;            newBin[index].count += bin[0].count;            minVal = value;        }        else        {            double s = (value < 0.0) ? 0.5 : 2.0;               newScale = ((double)(num_bins-1)) / pow(s*value - min_val, q);            newBin[0].total = bin[0].total;            newBin[0].count = bin[0].count;            minVal = min_val;        }        for (unsigned int i = 1; i < num_bins; i++)        {            if (bin[i].count)            {                double x = bin[i].total / ((double)bin[i].count);                unsigned long index = (unsigned long)ceil(newScale * pow(x - minVal, q));                if (index > (num_bins-1)) index = num_bins - 1;                newBin[index].count += bin[i].count;                newBin[index].total += bin[i].total;            }           }        if (value < min_val)        {            newBin[0].count += count;            newBin[0].total += (value * (double)count);            min_val = value;        }        else        {            double s = (value < 0.0) ? 0.5 : 2.0;               max_val = s*value;            unsigned long index =                 (unsigned long)ceil(((double)(num_bins-1)) * pow((value-min_val)/(max_val-min_val), q));                    if (index > (num_bins-1)) index = num_bins - 1;            bin[index].count += count;            bin[index].total += (value * (double)count);        }        delete[] bin;        bin = newBin;    }    else    {        unsigned long index =             (unsigned long)ceil(((double)(num_bins-1)) * pow((value-min_val)/(max_val-min_val), q));                if (index > (num_bins-1)) index = num_bins - 1;        bin[index].count += count;        bin[index].total += (value * (double)count);    }    return true;}  // end Histogram::Tally()void Histogram::Print(FILE* file){    if (bin)    {        for (unsigned int i = 0; i < num_bins; i++)        {            if (bin[i].count)            {                double x = bin[i].total / ((double)bin[i].count);                fprintf(file, "%f, %lu\n", x, bin[i].count);                }        }    }}  // end Histogram::Print()unsigned long Histogram::Count(){    if (bin)    {        unsigned long total =0 ;        for (unsigned int i = 0; i < num_bins; i++)        {            total += bin[i].count;        }        return total;    }    else    {         return 0;    }   }  // end Histogram::Count()double Histogram::PercentageInRange(double rangeMin, double rangeMax){    if (bin)    {        unsigned long countTotal = 0;        unsigned long rangeTotal = 0;        for (unsigned long i = 0; i < num_bins; i++)        {            double value = bin[i].total / ((double)bin[i].count);            countTotal += bin[i].count;            if (value < rangeMin)                continue;            else if (value > rangeMax)                continue;            else                rangeTotal += bin[i].count;        }        return (100.0 * ((double)rangeTotal) / ((double)countTotal));    }    else    {        return 0.0;    }         }  // end Histogram::PercentageInRange(double Histogram::Percentile(double p){    unsigned long goal = Count();    goal = (unsigned long)(((double)goal) * p + 0.5);    unsigned long count = 0;    if (bin)    {        for (unsigned long i = 0; i < num_bins; i++)        {            count += bin[i].count;            if (count >= goal)            {                double x = pow(((double)i) / ((double)num_bins-1), 1.0/q);                x *= (max_val - min_val);                x += min_val;                return x;               }        }    }    return max_val;}  // end Histogram::Percentile()int main(int argc, char* argv[]){    bool normalize = false;    bool firstBin = true;    double minimum = 0.0;    bool compute_percent = false;    double percentMin = 0.0;    double percentMax = 0.0;        if (argc < 2)    {        fprintf(stderr, "hcat: Insufficient arguments!\n");        usage();        exit(-1);       }        // Check for command options    unsigned int i = 1;    unsigned int argMin = 1;    while(i < argc)    {        if (!strcmp(argv[i], "normalize"))        {            i++;            normalize = true;            if (argc < 3)            {                fprintf(stderr, "hcat: Insufficient arguments!\n");                usage();                exit(-1);               }        }        else if (!strcmp(argv[i], "percent"))        {            i++;            if (i >= argc)            {                fprintf(stderr, "hcat: Insufficient \"percent\" args!\n");                usage();                exit(-1);               }             char* ptr = strchr(argv[i], ':');            if (ptr)            {                if (2 != sscanf(argv[i], "%lf:%lf", &percentMin, &percentMax))                {                    fprintf(stderr, "hcat: Bad \"percent\" arg!\n");                    usage();                    exit(-1);                   }              }            else            {                percentMin = 0.0;                if (1 != sscanf(argv[i], "%lf", &percentMax))                {                    fprintf(stderr, "hcat: Bad \"percent\" arg!\n");                    usage();                    exit(-1);                   }             }             i++;                compute_percent = true;                 }        else        {            // Must be first of file names            break;           }    }            Histogram h;    h.Init(1000, 0.5); // 1000 point, non-linear histogram (low-value precision)    for (; i < argc; i++)    {        FILE* file = fopen(argv[i], "r");        if (!file)        {            perror("hcat: Error opening input file");            usage();            exit(-1);           }        FastReader reader;        char buffer[MAX_LINE];        unsigned int len = MAX_LINE;        while (reader.Readline(file, buffer, &len))        {            // Skip blank and commented (leading `#` lines)            if ((0 == len) || ('#' == buffer[0]))            {                len = MAX_LINE;                continue;            }            len = MAX_LINE;            double value;            unsigned int count;            if (2 != sscanf(buffer, "%lf, %lu", &value, &count))            {                fprintf(stderr, "hcat: Warning! Bad histogram line in file: %s\n", argv[i]);                continue;               }            if (normalize)            {                if (firstBin)                {                    minimum = value;                    firstBin = false;                    value = 0.0;                   }                   else                {                    value -= minimum;                   }            }            if (!h.Tally(value, count))            {                fprintf(stderr, "hcat: Error adding tallying data point!\n");                exit(-1);            }        }  // end while(reader.Readline())           fclose(file);          firstBin = true;       }  // end for(i=1..argc)        if (h.IsEmpty())     {        fprintf(stderr, "hcat: Warning! Empty histogram.\n");        exit(0);  // nothing to output    }        if (compute_percent)    {        double percent = h.PercentageInRange(percentMin, percentMax);        fprintf(stdout, "%f\n", percent);    }    else    {        // Default output        // Output new combined histogram w/ percentile info        const double p[6] = {0.99, 0.95, 0.9, 0.8, 0.75, 0.5};        fprintf(stdout, "#histogram: ");        fprintf(stdout, "min:%f max:%f percentiles: ", h.Min(), h.Max());        for (int j = 0; j < 6; j++)        {            double percentile = h.Percentile(p[j]);            fprintf(stdout, "%2d>%f ", (int)(p[j]*100.0+0.5), percentile);        }        fprintf(stdout, "\n");        h.Print(stdout);    }    exit(0);}  // end main()FastReader::FastReader()    : savecount(0){    }bool FastReader::Read(FILE* filePtr, char* buffer, unsigned int* len){    unsigned int want = *len;       if (savecount)    {        unsigned int ncopy = MIN(want, savecount);        memcpy(buffer, saveptr, ncopy);        savecount -= ncopy;        saveptr += ncopy;        buffer += ncopy;        want -= ncopy;    }    while (want)    {        unsigned int result = fread(savebuf, sizeof(char), BUFSIZE, filePtr);        if (result)        {            unsigned int ncopy= MIN(want, result);            memcpy(buffer, savebuf, ncopy);            savecount = result - ncopy;            saveptr = savebuf + ncopy;            buffer += ncopy;            want -= ncopy;        }        else  // end-of-file        {            *len -= want;            if (*len)                return true;  // we read something            else                return false; // we read nothing        }    }    return true;}  // end FastReader::Read()// An OK text readline() routine (reads what will fit into buffer incl. NULL termination)// if *len is unchanged on return, it means the line is bigger than the buffer and // requires multiple readsbool FastReader::Readline(FILE* filePtr, char* buffer, unsigned int* len){       unsigned int count = 0;    unsigned int length = *len;    char* ptr = buffer;    unsigned int one = 1;    while ((count < length) && Read(filePtr, ptr, &one))    {        if (('\n' == *ptr) || ('\r' == *ptr))        {            *ptr = '\0';            *len = count;            return true;        }        count++;        ptr++;    }    // Either we've filled the buffer or hit end-of-file    if (count < length) *len = count;    return false;}  // end FastReader::Readline()

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产三级欧美三级日产三级99 | 国产精品国产三级国产三级人妇| 一区二区三区欧美日| 国产自产视频一区二区三区| 欧美精选在线播放| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 蜜臀av一区二区在线免费观看 | 国产精品18久久久久| 欧美日韩高清在线| 亚洲丝袜另类动漫二区| 国产成人精品亚洲午夜麻豆| 日韩限制级电影在线观看| 亚洲国产日产av| 91视频com| 中日韩av电影| 国产91精品一区二区麻豆网站| 日韩一区二区电影网| 五月婷婷久久丁香| 欧美综合亚洲图片综合区| 中文字幕一区二区三区乱码在线 | 日本亚洲最大的色成网站www| 色狠狠一区二区| 国产精品理伦片| 国产成人自拍网| 久久久www免费人成精品| 久久99久久99| 精品国产亚洲在线| 免费观看一级欧美片| 欧美精品aⅴ在线视频| 亚洲成在线观看| 欧美色综合久久| 亚洲一区二区三区免费视频| 色伊人久久综合中文字幕| 18成人在线视频| 99re成人精品视频| 中文字幕亚洲一区二区va在线| 丁香五精品蜜臀久久久久99网站 | 色老汉一区二区三区| 亚洲人一二三区| 99久久国产免费看| 亚洲欧洲日产国码二区| av色综合久久天堂av综合| 国产精品国产三级国产普通话99| 粉嫩aⅴ一区二区三区四区 | 久久青草国产手机看片福利盒子| 麻豆成人av在线| 精品三级在线观看| 国产一区二区三区蝌蚪| 2022国产精品视频| 高清成人免费视频| 国产精品狼人久久影院观看方式| 97久久精品人人澡人人爽| 中文字幕在线不卡| 欧美影院一区二区三区| 亚洲动漫第一页| 日韩三级中文字幕| 国产自产v一区二区三区c| 久久精品人人做人人综合| www.欧美精品一二区| 一区二区在线观看视频 | 国产一区二区网址| 中文字幕不卡一区| 色欧美片视频在线观看| 午夜电影网一区| 欧美成人精品福利| 成人免费观看av| 一区二区成人在线观看| 这里只有精品免费| 国产乱一区二区| 亚洲色图清纯唯美| 5566中文字幕一区二区电影| 精品一区二区三区不卡 | 欧美日韩国产高清一区二区三区 | 亚洲超碰精品一区二区| 日韩欧美在线网站| 国产精品资源网站| 一区二区三区鲁丝不卡| 欧美久久久影院| 国产成都精品91一区二区三| 亚洲人妖av一区二区| 欧美一级在线观看| 成人免费视频国产在线观看| 一区二区久久久久| 精品999在线播放| 色婷婷综合久久久久中文一区二区| 日韩黄色一级片| 国产日韩高清在线| 欧美日韩五月天| 国产精品一区二区男女羞羞无遮挡| 亚洲视频一区在线观看| 制服丝袜中文字幕亚洲| 成人国产在线观看| 天堂蜜桃91精品| 亚洲国产精品黑人久久久 | 国产69精品久久99不卡| 亚洲精品午夜久久久| 日韩一级片网站| 91视频.com| 黄色日韩网站视频| 亚洲一区二区三区美女| 久久久www免费人成精品| 欧美图片一区二区三区| 国产成人av影院| 日韩av在线免费观看不卡| 国产精品无遮挡| 日韩欧美二区三区| 色一区在线观看| 国产不卡视频在线播放| 日本欧洲一区二区| 亚洲欧美国产高清| 久久蜜桃av一区精品变态类天堂| 欧美日韩一区二区在线观看视频 | 亚瑟在线精品视频| 中文字幕av一区二区三区高| 欧美一级理论片| 91高清视频在线| 成人精品免费视频| 久久99精品久久久久久动态图| 亚洲一级二级在线| 日韩美女久久久| 久久九九全国免费| 欧美变态tickling挠脚心| 欧美优质美女网站| 不卡的av网站| 国产精品996| 久久99九九99精品| 秋霞午夜av一区二区三区| 夜夜揉揉日日人人青青一国产精品| 亚洲国产精品传媒在线观看| 精品国产成人在线影院| 欧美一区二区视频在线观看 | 国产一区二区主播在线| 天堂蜜桃91精品| 亚洲无人区一区| 亚洲精品成人在线| 国产精品国产自产拍在线| 国产婷婷色一区二区三区| 日韩欧美色综合网站| 欧美挠脚心视频网站| 在线视频中文字幕一区二区| 成人av动漫在线| 不卡的av在线播放| bt7086福利一区国产| 国产成人精品免费一区二区| 国产在线不卡一区| 韩国三级电影一区二区| 免费观看在线色综合| 日本在线不卡一区| 蜜臀av性久久久久蜜臀av麻豆 | 国产精品日产欧美久久久久| 国产午夜精品福利| 国产欧美日韩亚州综合| 久久久久久**毛片大全| 久久久精品免费免费| 久久午夜羞羞影院免费观看| 久久尤物电影视频在线观看| 久久久久久影视| 久久精品男人的天堂| 国产拍揄自揄精品视频麻豆 | 91福利在线看| 欧美系列一区二区| 欧美电影一区二区三区| 91精品国产91久久久久久一区二区| 日韩欧美美女一区二区三区| 国产精品乱人伦| 中文av字幕一区| 亚洲免费观看高清完整版在线观看熊| 国产精品久久久久久久裸模 | 日韩免费成人网| 欧美变态tickle挠乳网站| 久久色在线观看| 国产亚洲欧美中文| 国产精品无人区| 亚洲美腿欧美偷拍| 丝袜美腿亚洲综合| 麻豆精品视频在线观看视频| 国产一区在线精品| 成人av免费在线观看| 日本韩国欧美三级| 欧美一区二区三区视频在线| 欧美电视剧在线看免费| 国产日韩av一区| 亚洲欧美色图小说| 天堂av在线一区| 国产一区二区中文字幕| 99re这里都是精品| 在线播放中文字幕一区| 精品国产网站在线观看| 亚洲欧美在线观看| 亚洲mv在线观看| 国产精选一区二区三区| 91在线视频网址| 欧美一区二区三区在线观看视频| 欧美精品一区二区不卡| 中文字幕在线免费不卡| 日本中文在线一区| 成人激情免费电影网址| 欧美高清性hdvideosex| 国产亚洲va综合人人澡精品| 亚洲欧美国产三级|