Является LinkedList в.NET круговым связанным списком?

Мне не понравилось ни одно из найденных решений, поэтому я написал свое собственное.

  • mod_status не совсем точен. Он основан на том, как долго работает сервер, что в нашем случае обычно составляет месяцы. То, что я ищу, это всплески трафика.
  • В приведенном выше сценарии оболочки используется оператор sleep (), который не является идеальным, поскольку для фактического получения данных требуется x секунд.

Таким образом, это решение занимает определенную строку в access_log 15000 запросов назад и использует записанное время для сравнения с текущим временем.

# This check is needed because if the logs have just rolled over, then we need a minimum
# amount of data to report on.
# You will probably need to adjust the 3500000 - this is roughly the file size when the
# log file hits 15000 requests.
FILESIZE=`ls -l /var/log/httpd/access_log | awk '{print $5}' `
if [ $FILESIZE -le 3500000 ]
then
        # not enough data - log file has rolled over
        echo "APACHE_RPS|0"
else
        # Based on 15000 requests.  Depending on the location of the date field in
        # your apache log file you may need to adjust the ...substr($5... bit
        LASTTIME=`tail -15000 /var/log/httpd/access_log | head -1 | awk '{printf("%s\n",substr($5,2,20));}' `
        APACHE_RPS=`echo $LASTTIME | gawk -vREQUESTS=15000 ' {
                # convert apache datestring into time format accepted by mktime();
                monthstr = substr([110],4,3);
                if(monthstr == "Jan"){ monthint = "01"; }
                if(monthstr == "Feb"){ monthint = "02"; }
                if(monthstr == "Mar"){ monthint = "03"; }
                if(monthstr == "Apr"){ monthint = "04"; }
                if(monthstr == "May"){ monthint = "05"; }
                if(monthstr == "Jun"){ monthint = "06"; }
                if(monthstr == "Jul"){ monthint = "07"; }
                if(monthstr == "Aug"){ monthint = "08"; }
                if(monthstr == "Sep"){ monthint = "09"; }
                if(monthstr == "Oct"){ monthint = "10"; }
                if(monthstr == "Nov"){ monthint = "11"; }
                if(monthstr == "Dec"){ monthint = "12"; }
                mktimeformat=sprintf("%s %s %s %s %s %s [DST]\n", substr([110],8,4), monthint, substr([110],1,2), substr([110], 13,2), substr([110], 16,2), substr([110], 19,2) );
                # calculate difference
                difference = systime() - mktime(mktimeformat);
                # printf("%s - %s = %s\n",systime(), mktime(mktimeformat), difference);
                printf("%s\n",REQUESTS/difference);
        } ' `

        echo "APACHE_RPS|${APACHE_RPS}"
fi
18
задан John Calsbeek 8 July 2009 в 04:32
поделиться

3 ответа

No. Это двусвязный список, но не круговой. См. MSDN для получения подробной информации об этом .

LinkedList , однако, является хорошей основой для вашего собственного кругового связанного списка. Но у него есть определенные свойства First и Last, и он не будет перечислять их, как это делает правильный круговой связанный список.

17
ответ дан 30 November 2019 в 05:39
поделиться

Если вам нужна круговая структура данных, взгляните на библиотеку общих коллекций C5 . У них есть любая коллекция, которая может быть полезна, включая кольцевую очередь (которая может вам помочь).

6
ответ дан 30 November 2019 в 05:39
поделиться

Нет, это не так. См. MSDN

4
ответ дан 30 November 2019 в 05:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: