問題起源:由於系統被外掛程式攻擊,所以要對外部訪問的日誌進行分析,找出攻擊者的攻擊方式。系統使用了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...