我正在使用BST(二叉搜索樹)構建數據庫,我希望用戶能夠回滾最後5條命令。有什麼建議麼?我正在使用Java。ROLLBACK undo redo
回答
您是否考慮過使用Berkey DB?它是免費的,支持嵌套事務(這將讓你有任何數量的回滾的水平):
http://download.oracle.com/docs/cd/E17076_02/html/gsg_txn/JAVA/nestedtxn.html
即使你決定實現自己的數據庫,它可能是作爲參考用。
這聽起來像你想Memento pattern。實質上,您創建一個對象,其中包含以下所需的所有信息:
- 從操作之前的樹狀態開始,重複該操作。 (重做)
- 從操作後的樹狀態恢復操作。 (撤消)
你會保留最後五個。當用戶請求撤消時,請採取最新措施,讓其恢復操作,然後以某種方式(例如,某些索引變量)指示您在紀念品列表中的位置。然後,您應該能夠在任一方向移動列表,儘可能多地撤消和重做。
我想着插入我的樹到一個堆棧彈出它時,用戶調用撤消?這是可能的嗎?/ – user475529 2010-11-09 06:50:41
你當然可以這樣做,但使用紀念品可以節省大量空間,同時仍然允許撤銷/重做功能。 – cdhowie 2010-11-09 06:52:32
- 1. Undo-Redo重複命令
- 2. (Undo/Redo || KeyStrokes)不能在JEditorPane中工作
- 3. 如何使用undo-redo設計SQL數據庫?
- 4. 如何(UNDO&REDO)按鈕的狀態重置froala編輯
- 5. 如何在惡意模式下重新綁定Emacs中的C-r(undo-tree-redo)?
- 6. Mercurial Undo合併
- 7. window.innerHeight與React和REDO
- 8. REDO傳奇和history.push
- 9. 檢查有撤銷/重做主幹undo
- 10. If..begin..begin tran..Rollback
- 11. Rails destroy_all undo
- 12. Php,undo mysql_real_escape_string
- 13. vim temporary disable undo?
- 14. undo nsarray排序
- 15. Lamina undo siphon - Clojure
- 16. Liquibase:runOnChange + rollback
- 17. 蟒蛇如何GOTO/REDO
- 18. React-day picker with REDO形式
- 19. Netbeans 6.9 UNDO操作
- 20. oracle-undo表空間
- 21. MVC3 jQuery..UNDO功能
- 22. SQL服務器undo
- 23. JS UNDO DOM修改
- 24. Rollback im phpmyadmin
- 25. RAISERROR和ROLLBACK TRANSACTION
- 26. Ab initio rollback
- 27. SQL ROLLBACK TRANSACTION
- 28. <rollback> - Liquibase -
- 29. Symfony2 Doctrine MongoDB rollback
- 30. PDO :: rollBack或__destruct
樹有多大?如果它足夠小,您可以保留最近5次操作的副本。 – leonm 2010-11-06 22:27:43
不是很大。我將如何處理經緯度5操作? – user475529 2010-11-06 22:48:30
@ user475529:不要保留最近五次操作,每次操作後複製整個樹並保留最近五次操作。 – 2010-11-07 00:02:46