V. Wap-tree:
3. Path Completion:
Phục hồi lại các LogEntry bị mất bằng giải thuật đã tìm hiểu ở phần trên. Ý tƣởng và code:
- Đầu tiên chạy vòng lặp từ đầu đến hết file serverlog, gán n = size(kích thƣớc ban đầu của file)
- Nếu URL trƣớc khác với REF liền sau, có nghĩa là đã có một LogEntry bị mất. Lúc nay ta cập nhật lại kích thƣớc của file, đồng thời lƣu lại vị trí mà LogEntry bị mất vào mảng a[].
Biến k là tổng số LogEntry bị mất.
- Tạo 1 struct LogEntry *arr1 có số lƣợng phần tử = k để lƣu các LogEntry bị mất.
- Timefix là thời gian của LogEntry bị mất, sẽ bằng phân nữa thời gian của 2 LogEntry liền trƣớc và liền sau
- Tiếp theo gán LogEntry đã tìm đƣợc vào cuối file.
- Duyệt lại hết file sau khi đã thêm các LogEntry bị mất vào cuối file. Vì các LogEntry đƣợc sắp xếp theo thự tự tăng dần của thời gian, nên ta sẽ dùng phƣơng pháp sắp xếp theo thứ tự tăng dần của thời gian để xếp lại các LogEntry.
- Cuối cùng phục hồi lại LogEntry đầu tiên nếu bị mất. Nếu REF của arr[0] khác null. Thì sẽ tiến hành khôi phục lại LogEntry đầu tiên bị mất với các thông tin giống với LogEntry cũ nhƣng thời gian sẽ sớm hơn 5s và URL đƣợc phục hồi chính là REF của LogEntry cũ, nhƣng REF đƣợc phục hồi sẽ là null.
- Cuối xuất ra thông tin file đã đƣợc phục hồi. Kết quả nhƣ sau:
Hình 21: Kết quả patch completion
Chƣơng 4
TỔNG KẾT
1. Kết quả đạt đƣợc:
1.1 Về phía bản phân:
- Trong quá trình tìm hiểu và xây dựng đồ án, chúng em đã tìm hiểu thêm đƣợc nhiều kiến thức mới, cũng nhƣ nâng cao thêm khả năng phân tích và lập trình ứng dụng. Áp dụng đƣợc các kiến thức đã học trong quá trình phát triển đồ án.
- Cũng từ đây, chúng em đã nâng cao đƣợc kinh nghiệm lập trình, tìm hiểu thông tin cũng nhƣ khả năng làm việc nhóm.
1.2 Về phía đề tài:
- Đã tìm hiễu rõ về đề tài đã chọn.
- Bƣớc đầu xây dựng đƣợc ứng dụng minh họa gồm có các chức năng cơ bản cần thiết dựa vào các thuật toán đã nghiên cứu.
- Nhƣng bên cạnh đó, vẫn còn một số chức năng chƣa đƣợc hoàn thiện do thời gian cũng nhƣ kiến thức còn hạn chế.