首页 > 其他分享 >队列Rollback的设计

队列Rollback的设计

时间:2023-06-15 14:07:20浏览次数:34  
标签:rollback Rollback 插入 队列 pos item 设计 block


有一个队列包含了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

标签:rollback,Rollback,插入,队列,pos,item,设计,block
From: https://blog.51cto.com/u_16162111/6486711

相关文章

  • LED开关电源里的PCB回路设计应该怎么做?
    LED开关电源的研发速度在最近几年中有了明显的技术飞跃,新产品更新换代的速度也加快了许多。作为最后一个设计环节,PCB的设计也显得尤为重要,因为一旦在这一环节出现问题,那么很可能会对整个的LED开关电源系统产生较多的电磁干扰,对于电源工作的稳定性和安全性也都会造成不利影响。那么,P......
  • 模拟板卡设计资料原理图:631-单路12Gsps 3G 带宽模拟信号源PCIe卡
    一、板卡概述    单路3G带宽模拟信号源卡由DA子卡和PCIe底板组成,二者通过标准FMC连接器互联,可以实现将PCIe总线数据转换为一路高速的模拟量输出。该板可广泛用于雷达、通信、光电领域的噪声信号、毛刺、脉冲信号模拟产生等领域。 二、 性能指标板卡功能参数......
  • 中视频如何设计出好的剧本情节
    相对于普通的中视频而言,那些带有情节的故事类中视频通常更具吸引力,能够让用户对整个视频产生更大的兴趣。当然,大多数中视频的情节都是经过精心设计的。那么,如何通过设计使中视频的剧情更具戏剧性,更能吸引用户的注意呢?(腾讯|课堂搜|索“如何运营视频才能获得百万粉丝”)一、服务于......
  • 队列
    队列的访问和搜索时间复杂度都是O(N)插入和删除的时间复杂度都是O(1)常见操作:1.创建队列2.添加元素3.获取即将出队的元素4.删除即将出队的元素5.判断队列是否为空6.队列长度7.遍历队列 933写一个 RecentCounter 类来计算特定时间范围内最近的请求。请你实现RecentCou......
  • m基于MPC模型预测控制算法的永磁直线同步电机控制系统simulink仿真,MPC分别使用工具箱
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要MPC(ModelPredictiveControl)模型预测控制算法是一种先进的控制算法,能够有效地解决非线性、多变量、约束条件等复杂系统的控制问题。永磁直线同步电机是一种高性能、高效率的电机,广泛应用于机器人、医疗设备、工业......
  • m基于MPC模型预测控制算法的永磁直线同步电机控制系统simulink仿真,MPC分别使用工具箱
    1.算法仿真效果matlab2022a仿真结果如下:  2.算法涉及理论知识概要      MPC(ModelPredictiveControl)模型预测控制算法是一种先进的控制算法,能够有效地解决非线性、多变量、约束条件等复杂系统的控制问题。永磁直线同步电机是一种高性能、高效率的电机,广泛应用于机......
  • C++面试八股文:C++中,设计一个类要注意哪些东西?
    某日二师兄参加XXX科技公司的C++工程师开发岗位第9面:面试官:C++中,设计一个类要注意哪些东西?二师兄:设计一个类主要考虑以下几个方面:1.面向对象的封装、继承及多态。2.bigthree或者bigfive。3.运算符和函数重载、静态成员、友元、异常处理等相关问题。面试官:请介绍一下面向......
  • 硬件设计LLM:AI辅助创建微处理芯片
    编辑|绿萝通常,开发任何类型的硬件(包括芯片,作为电子设备大脑的微小电子元件),都是从用正常语言描述硬件应该做什么开始的。然后,经过专门训练的工程师将该描述翻译成硬件描述语言(HDL),例如Verilog,以创建允许硬件执行其任务的实际电路元件。自动化此翻译可以减少工程过程中的人为错......
  • 队列全集(线程池任务队列选择,有界队列,阻塞队列)
    转载:https://juejin.cn/post/7125373259066900493https://juejin.cn/post/6870298844425371655#comment......
  • spring中用到哪些设计模式
     1.工厂模式,这个很明显,在各种BeanFactory以及ApplicationContext创建中都用到了;2.模版模式,这个也很明显,在各种BeanFactory以及ApplicationContext实现中也都用到了;3.代理模式,在Aop实现中用到了JDK的动态代理;4.单例模式,这个比如在创建bean的时候。5.Tomcat中有很多场景都使......