【问题标题】:ROLLBACK undo redoROLLBACK 撤消重做
【发布时间】:2010-11-06 22:22:48
【问题描述】:

我正在使用 BST(二叉搜索树)构建数据库,我希望用户能够回滚最后 5 个命令。有什么建议么?我正在使用 Java。

【问题讨论】:

  • 这棵树有多大?如果它足够小,您可以保留最后 5 次操作的副本。
  • 不是很大。我将如何处理 lat 5 操作??
  • @user475529:不要保留最后五个操作,每次操作后复制整个树并保留最近的五个。

标签: java copy binary-tree undo


【解决方案1】:

您是否考虑过使用 Berkey DB?它是免费且受支持的嵌套事务(这将允许您拥有任意数量的回滚级别):

http://download.oracle.com/docs/cd/E17076_02/html/gsg_txn/JAVA/nestedtxn.html

即使您决定实现自己的数据库,它也可能作为参考有用。

【讨论】:

    【解决方案2】:

    听起来你想要Memento pattern。本质上,您创建的对象包含以下所需的所有信息:

    1. 从操作前的树状态,重复操作。 (重做)
    2. 从操作后树的状态,还原操作。 (撤消)

    你会保留最后五个。当用户要求撤消时,获取最新的,要求它恢复操作,然后以某种方式指示(例如某些索引变量)您在纪念品列表中的位置。然后,您应该能够在列表中朝任一方向移动,随意撤消和重做。

    【讨论】:

    • 我正在考虑将我的树插入堆栈,当用户调用撤消时弹出它?这可能吗?/
    • 您当然可以这样做,但使用纪念品可以节省大量空间,同时仍允许撤消/重做功能。
    猜你喜欢
    • 1970-01-01
    • 2011-11-25
    • 2011-08-04
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    相关资源
    最近更新 更多