第一部分:網課學習筆記
第二部分:程序題
①熱身題
2)實現思路:
- 利用fopen打開文件
- 利用fgets和fputs讀寫文件
3)實現結果以下圖(截取部分):
②基本題
2)實現思路:
- 用結構體數組記錄每一次請求
- 邊保存邊判斷是否此用戶名已經出現過
- 累加各個用戶請求值總值
- 遍歷結構體數組依據條件輸出黑客人數和名稱
3)實現結果以下圖:
③開放題:
方法一的問題:
- 佔用太多空間
- 判斷標準過於生硬,容易錯失大客戶
- 沒法用於用戶名很長的狀況
改進的思路:
- 對於接收者名字(bob)不予屢次保存至結構體數組,以節省空間;
- 對於較長的用戶名,用特定幾位來記錄,好比僅記錄奇數位字母或者先後幾位字母
- 更改判斷標準,具體思路以下:
- 收集並分析一段時間內的數據,得出一個垃圾請求和正常請求請求值大小的大體分佈圖以及兩種請求的次數的分佈圖
- 依據上一步得出的分佈圖,得出區分垃圾請求和正常請求的請求值分界線(記爲T)、請求次數分界線(記爲S)
- 讀取一段時間內產生的數據,同時根據分界線T將請求區分爲垃圾請求和正常請求
- 記錄每一個用戶垃圾請求和正常請求的次數
- 一旦某用戶垃圾請求的次數超過度界線S,記錄此用戶用戶名
- 再遇到此用戶的請求不予記錄,節省存儲空間
- 依據記錄的用戶名的名單,輸出並拉黑這些用戶
另一種思路:
黑客和普通用戶的區別,主要仍是體如今短期內發送請求的次數多少,針對這個特色,獲得如下思路:
- 收集並分析一段時間內的數據,得出垃圾請求和正常請求的次數的統計圖
- 依據上一步的結論,擬定一個分界線(記爲S)
- 對於每一組數據,只保存用戶名
- 統計不一樣用戶名出現次數
- 對於出現次數超過S的用戶名,視其爲黑客
- 輸出黑客名單並拉黑