多路歸併在分析日誌中的使用

2022-03-22 09:52:51 字數 1334 閱讀 1056

問題起源:由於系統被外掛程式攻擊,所以要對外部訪問的日誌進行分析,找出攻擊者的攻擊方式。系統使用了lvs,這樣就有了多個訪問日誌檔案,需要將所有的日誌進行合併。這個合併的要求很簡單,由於每個檔案的紀錄都是按時間的先後來紀錄的,所以合併後的檔案是按照時間的先後順序。

舉個例子:我們有100個已經排好序的序列, 現在要將這一百個序列合併成乙個按順序的序列。

由於並不是研究這麼個演算法,主要是要盡快地分析問題,我臨時寫了乙個程式:先將**分享出來,以後可以進行優化

**

$files

=array('

60.txt',

'61.txt',

'62.txt');

$arrs

=array

();$arr_count=0

;$i=0

;$x=0

;foreach

($files

as$file

)$r_arrs

=array

();$t=$i

-1;while($t

>0)

$t=intval

(($t-$s

)/2);

}$arrs[0

] =merge(

$arrs[0

],$arrs[1

]);file_put_contents('

total.txt',

implode(''

,$arrs[0

]));

print_r

($arr_count

);print_r

(count

($arrs[0

]));

function

merge(

$arr1

,$arr2

)while

(isset

($arr1[$i

]))

$t_arr =

$arr1[$i

++];

while

(isset

($arr2[$j

]))

$t_arr =

$arr2[$j

++];

return

$t_arr;}

return

false;}

當然這個程式的思想還可以對陣列排序,記得以前有人問過,如果對有規律的資料進行排序,那麼如果有上述的規律,進行多路的合併, 比起對整個程式進行排序化得時間小。

下面是日誌的部分內容截圖

多路歸併排序 各種排序演算法的使用範圍

今日面試題分享 各種排序演算法的使用範圍 解析 排序可以算是最基本,最常用的演算法,也是筆試面試中最常被考的演算法,最基本的是氣泡排序,選擇排序,插入排序要可以很快地用 實現。這些主要考察你的實際編碼能力。堆排序,歸併排序,快速排序這些演算法需要熟悉主要思想,和需要注意的細節地方。需要熟悉的常用排序...

springboot中的日誌使用

springboot框架在企業中的使用越來越普遍,springboot日誌也是開發中常用的日誌系統。springboot預設就是使用slf4j作為日誌門面,logback作為日誌實現來記錄日誌。springboot中的日誌 spring boot starter logging artifactid...

Scrapy中的Request和日誌分析

自動去重,根據url的雜湊值,進行去重 屬性meta dict 在不同的請求之間傳遞資料,dict priority int 此請求的優先順序 預設為0 dont filter boolean 關閉自動去重 errback callable 在處理請求時引發任何異常時將呼叫的函式 flags lis...