有一个队列包含了N个block,每个block是队列中的一个元素。block很大,一个block中可以容纳M个item(M>1)。
这个队列的基本使用模式就是:不断的有item过来,往block里面填充,一旦block满,就创建一个新的block,后继item都填往新block。
rollback的定义:最后一个item填充到block中后,由于出现了某种错误(如超出最大使用内存限制),需要把这个item删除掉,将队列恢复到删除前的状态。
有这么几种场景需要考虑:
1. 队列为空,插入第一个item后就需要回滚,插入前后队列中新增了一个block
2. 某个block插入第x个item后需要回滚,插入前后并没有创建新的block
3. 某个block插入第x个item时发现block满,新建一个block,将item插入到新block后回滚,插入前后队列中新增了一个block
2这种场景比较容易处理,只要插入前记录下rollback_pos,需要回滚的时候,将block中的pos恢复到rollback_pos即可。
1、3两种场景逻辑上很相似,编程上略有区别:1中队列头指针为NULL,3中队列头指针不为NULL,需要分别处理。
场景1的处理办法:发现需要回滚,free新建的block,令队列头指针为NULL,pos为0
场景3的处理办法:插入前记录rollback_block和rollback_pos,发现需要回滚,free新建的block,令队列头指针=rollback_block,pos=rollback_pos
这里最复杂的部分是free新建的block,如果能不去free block,问题会简单很多,三个场景可以用一个通用的算法解决:
插入前记录rollback_block和rollback_pos,发现需要回滚,令队列头指针=rollback_block,pos=rollback_pos
分享到:
相关推荐
Ansible-rollback.zip,在capistrano styleansistrano中负责回滚脚本应用程序(如php、python、ruby等),ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务自动化。
Win系统多点还原软件(RRx)RollBack Rx Pro V10.7带序列号版,可以对系统进行快照,多点记录,随时还原到记录点,快速还原
RollBack Rx v11.1 正式永久使用无限制,内包括正式版本SN(注册码) 非破解版本。
RollBack 10.2 雨过天晴 20161207 请分别看压缩包注释,不用winRAR打开可能看不到哦。
注册机 雨过天晴海外版
RollBack.Rx.Pro.11.1 (crack)RollBack.Rx.Pro.11.1 (crack)RollBack.Rx.Pro.11.1 (crack)
雨过天晴注册机(Rollback Rx 9.0 注册工具) 1.安装雨过天晴电脑保护系统专业版 V1.0.11.2.20100128,重启完成DOS下安装. 2.断开网络,注册机算出注册码. (机器码无法复制见这里X:\Program Files\Yuguo\netmsg.txt...
Win系统多点还原软件(RRx)RollBack Rx Pro V10.7无限制序列号版
1394B sp2(sp3)回滚 RollBack文件
RollBack Rx是一款功能强大的优秀系统恢复还原软件,是全面的Windows系统还原解决方案,程序可以帮助用户和IT管理员轻松地在几秒钟内恢复他们的个人电脑到任何以前的状态。 系统出错或遭受病毒攻击之后,即使你清理...
git-rollback 轻松回滚最后几次提交。安装$ gem install git-rollback用法$ git rollback贡献分叉( ) 创建功能分支( git checkout -b my-new-feature ) 提交更改( git commit -am 'Add some feature' ) 推送到...
emberjs-rollback-extended EmberJS Rollback Extended mixin最初是由amkirwan在提供的rollback-relationships.js启发的。 原始的rollback-relationship.js缺少一些功能,以及与我的应用程序集成的一些问题。 我决定...
1394B相机在WINXP SP2 中的ROLLBACK(回滚) 方法,PDF文档.。,供全球各大品牌工业相机,MATROX采集卡,欢迎垂询13823365382
RollBack Rx 10.3 破解版 最好的还原软件,支持Win8.1系统,安装即已注册。
Sql Server 2005/2008中提供了begin tran,commit tran和rollback tran来使用事务。begin tran表示开始事务, commit tran表示提交事务,rollback tran表示回滚事物
强大电脑系统恢复还原软件(RollBack Rx)是一款功能强大的优秀系统恢复还原软件,是全面的Windows系统还原解决方案,程序可以帮助用户和IT管理员轻松地在几秒钟内恢复他们的个人电脑到任何以前的状态。 系统出错或...
2016_Weight-Transducerless Rollback Mitigation Adopting Enhanced MPC With Extended State Observer for Direct-Drive Elevators 王教授的论文 2016_Weight-Transducerless Rollback Mitigation Adopting ...
sql学习 awr体验(rollback).sql
INS005-1-DDL_ROLLBACK.sql