比方說,您有一個程序,如文本編輯器或文字處理器,寫入用戶創建的文件。應該採取哪些措施來保證面臨崩潰,空間錯誤,突然斷電,比賽條件等時數據丟失或腐敗的最小風險?建議您在寫入文件時如何保護用戶數據的最佳做法?
1
A
回答
0
我寫了一個較早的answer到一個類似的問題,在這裏也適用。步驟如下:
- 寫入新數據 臨時文件
- 移動臨時文件到原始文件的目錄中的備份文件。
- 執行備份和原始文件(Windows中的File.Replace或Unix中的inode交換)的原子交換。
- 刪除備份(現在是原始)文件。
0
1
經驗爲保障重要數據的一個很好的規則是
嚴禁改動只複製
在Word處理器和文本編輯器的情況下,我相信這是標準打造的「陰影複製「(這可能不是技術術語),它是進行所有更改的原始文件的副本。定期(或當用戶請求時),您可以強制進行包含對原始文件進行修改的保存。這樣做的好處是,如果任何時候出現故障,總是至少有一個有效的數據副本。
真正的目標是實現原子性 - 操作只能成功或失敗,永遠不會有不完整的狀態。除了「影子副本」之外,還有許多其他方法可以實現原子性,但這是我相信文本編輯人員做到的。
0
這可能已經過時了今天的多GB的機器,但是當在mac上開發時,我記得我們曾經分配過一個足夠大的內存塊來執行保存操作。
如果我們內存不足,我們可以給用戶警告他/她內存不足,然後釋放該塊,以便實際保存操作可以發生。
對於保存用戶數據很重要的其他功能是提供撤消 - 理想情況下無限制的撤銷/重做。
相關問題
- 1. 保護純文本文件中的敏感數據的最佳做法?
- 2. 隱藏/保護php-engine配置文件的最佳做法?
- 3. 在SQL Server 2008數據庫中保護數據的最佳做法
- 4. 爲匿名用戶保存數據的最佳做法?
- 5. 最佳做法建議R管道%>%
- 6. 最佳做法建議:面向對象
- 7. 在macOS中保存臨時文件的最佳做法?
- 8. 文件寫入的最佳做法是什麼
- 9. 在xcode中導入類文件時的最佳做法
- 10. 編寫Makefile時的最佳做法
- 11. 保護GWTP應用程序的最佳做法
- 12. 在c#上保存Excell文件數據的最佳做法是什麼?
- 13. 爲10k +用戶保存用戶數據的最佳方法
- 14. 如何保護您的客戶代碼
- 15. 存儲用戶的應用程序設置,最佳做法和/或建議
- 16. 如何保護用戶的文件
- 17. 使用java創建寫保護文件
- 18. 使用IEqualityComparer <T>的建議最佳做法是什麼?
- 19. 在SQL中保存數據的最佳做法
- 20. 保護你的網站的php文件的最佳方法
- 21. 保護網站管理部分的最佳做法是什麼?
- 22. 保護git倉庫祕密的最佳做法是什麼?
- 23. 保護帶有數據庫寫入權限的文件
- 24. 加載文件,操作數據和寫入新文件的最佳方法
- 25. 創建網頁內容時保存/發佈的最佳做法
- 26. 做頻繁的磁盤日誌寫入的最佳做法
- 27. 警告用戶他們將丟失數據的最佳做法
- 28. 登錄前檢查用戶數據的最佳做法
- 29. 寫入受保護的文件
- 30. 在數據綁定控件中應用條件格式時的最佳做法?