從零到一搭建出一個定時刪除資料夾框架的收穫
阿新 • • 發佈:2018-12-16
一、概述
框架的功能:定時讀取指定路徑下的配置檔案,掃描配置檔案中的節點,然後拼出一個新的路徑,在該路徑下判斷任務資料夾是否該刪除,如果該路徑下的任務資料夾為0,同時刪除該路徑。
二、所需要的關鍵技能點
技能概述
- Go語言基本語法
- channel機制:通道負責傳輸資料,同時具有安全保障。
- goroutine機制:多協程分發協作完成所需任務。
- 併發原理
- 熟悉常見的設計模式
- 單元測試,依賴注入
- 日誌系統:方便排查問題和跟蹤程式的執行過程。
三、搭建步驟
通過爬樓梯形式一步步完善框架的功能
1,寫出通過掃描指定路徑列印該路徑下的所有檔案和資料夾;
可以用 ioutil.ReadDir 函式實現
2,加入定時器,定時列印指定路徑下的所有檔案和資料夾;
可以用 Ticker 實現
3,在指定路徑下新增以時間命名的資料夾,定時將其符合條件的刪除,不符合條件的刪除;
可以用 Unix時間戳 實現
4,在指定路徑下新增配置檔案,通過掃描其節點重新拼湊成一個新的路徑輸出;
5,在重新拼湊的新路徑內建立需要定時刪除的資料夾,並判斷如果資料夾為空,將該路徑也一併刪除
6,新增日誌系統
7,進行單元測試
四、收穫
三週時間從零到一搭建出了一個框架,帶給我的感觸很多。
從踩的坑來看有非法指標訪問,型別轉換,函式作用域,在步驟五中出現類比失誤,將命令列與圖形化操作介面進行類比,阻礙瞭解決思路;
get到的技能有熟悉運用了兩個設計模式,對結構體,指標的作用有了更深入的理解,學會用Unix時間戳對資料夾進行刪除判斷,熟練使用Go語言對檔案和資料夾的操作,理解程序、執行緒、協程之間的區別,熟練掌握Go語言的兩個併發機制 channel和 goroutine。