一种管理内存中高频变化数据的缓冲链表数据结构设计方法技术

技术编号:20025463 阅读:99 留言:0更新日期:2019-01-06 04:25
本发明专利技术公开一种管理内存中高频变化数据的缓冲链表数据结构设计方法,其特征在于:在链表结构的基础上增加一条缓冲链表(CacheList),所有对于链表的添加、删除操作并不直接作用于内存,而是作用于缓冲链表(CacheList),包括初始化步骤、添加数据步骤、删除数据步骤。本发明专利技术统一申请内存空间,统一释放,在系统应用运行时,把进程软硬件资源尽量用于对实时数据的处理,将系统交互次数降低到最小,初始化开始就分配的内存空间实际多次复用,为应用进程的动态数据容器管理和内存空间之间提供了一个良好的缓冲。

【技术实现步骤摘要】
一种管理内存中高频变化数据的缓冲链表数据结构设计方法
一个工业监控系统要对外部系统的运行进行监视、控制和管理,很多应用不仅需要维护大量的共享数据,而且要求在一定的时间限期内或指定的某一确定时刻从外部系统采集数据,并按照指定的要求处理数据,再对外部系统做出及时的响应。本专利技术涉及一种管理内存中高频变化数据的缓冲链表数据结构设计方法。
技术介绍
在目前的地铁自动化领域,环境与设备监控(BAS)系统能提供一个可实现信息互通和资源共享的平台,其设计采用模块式、类似积木结构的多层软件开发平台定制应用软件,采用通用开放的硬件接口及软件通信协议,以集成和互联的方式与各接入子系统实现信息交换,最终实现对各相关机电设备的集中监控功能和各系统之间的信息互通、信息共享和协调互动功能。在实际运营管理时,各个基于系统平台的具体应用程序根据自身的功能所关注的数据内容不尽相同,其工作流程大致相同,应用启动→注册数据(告诉系统本应用所关注的数据)→接收系统的消息推送(该应用所关注数据的变化情况)→存储数据并根据功能需求处理数据。考虑到工业环境下,系统平台对应用的数据推送往往是高频且数量巨大,为了不过多的占用系统资源,给系统平台带来过重的负担,系统平台为具体的某一应用分配的推送数据消息队列空间是有限的,这就意味着如果该应用不能及时提取并处理推送消息队列中的系统消息,就会因为消息队列被占满而无法及时收到新的数据消息,造成消息丢失,这在数据时效性和准确性都有高要求的工业自动化领域是不能被接受的。如何简单快速的提取消息并处理相应的数据内容,及时的消化系统平台推送消息队列,对程序采用的数据结构提出了高要求。既要简单方便,有助于数据提取处理,又要兼顾稳定和速度。常用的数据管理容器很多,例如Array、Stack、Queue、List等等,其中链表是动态容器的典型代表之一。链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。在链表的基础上,本专利技术提供了一种管理内存中高频变化数据的缓冲链表数据结构设计方法,专门处理高频变化的海量数据所产生的消息队列,更高效、更稳定。
技术实现思路
针对现有技术中存在的问题,本专利技术提供了一种管理内存中高频变化数据的缓冲链表数据结构设计方法。为了实现上述目的,本专利技术的技术方案如下。一种管理内存中高频变化数据的缓冲链表数据结构设计方法,其特征在于:在链表结构的基础上增加一条缓冲链表(CacheList),所有对于链表的添加、删除操作并不直接作用于内存,而是作用于缓冲链表(CacheList),包括初始化步骤、添加数据步骤、删除数据步骤。上述一种管理内存中高频变化数据的缓冲链表数据结构设计方法,其进一步特征在于:所述缓冲链表(CacheList)包括:m_listCurrent和m_listSpare两个List类型的成员变量,m_listSpare管理内存空间,负责统一申请内存空间,统一释放内存;m_listCurrent直接面对应用程序,所有数据(指针)的添加、删除操作由m_listCurrent来完成,m_listCurrent添加数据(指针)时,向m_listSpare申请内存,而非操作系统,删除数据时,也不直接释放内存空间,而是将处理完数据所占用的内存空间“还给”m_listSpare。上述一种管理内存中高频变化数据的缓冲链表数据结构设计方法,其进一步特征在于:所述初始化步骤中,m_listCurrent初始化无任何数据,为空链表,m_listSpare在初始化时就申请分配N个信息数据对象的内存空间。上述一种管理内存中高频变化数据的缓冲链表数据结构设计方法,其进一步特征在于:所述添加数据步骤包括遇到新数据时,查看m_listSpare是否为空,如不为空,把m_listSpare第一个数据元素pointerDataT1取出来给m_listCurrent使用,先做新数据赋值保存,再把pointerDataT1加入m_listCurrent中。上述一种管理内存中高频变化数据的缓冲链表数据结构设计方法,其进一步特征在于:所述删除数据步骤包括应用进程从m_listCurrent中提取数值元素指针pointerDataT1,处理后将之从m_listCurrent中删除,删除后并不释放内存空间,而是pointerDataT1再添加到m_listSpare继续备用,等m_listCurrent有需要时再提取出来,如此循环往复。有益效果:与现有技术相比,本专利技术所述一种管理内存中高频变化数据的缓冲链表数据结构设计方法,不同于常规的动态数据容器,实时的按需申请、释放内存,本专利技术统一申请内存空间,统一释放,在系统应用运行时,把进程软硬件资源尽量用于对实时数据的处理,将系统交互次数降低到最小,初始化开始就分配的内存(堆)空间实际多次复用,为应用进程的动态数据容器管理和内存空间之间提供了一个良好的缓冲。附图说明图1为常规链表与本申请的对比图(初始化状态)。图2为常规链表与本申请的对比图(新增数据)。图3为常规链表与本申请的对比图(删除数据)。具体实施方式具体实施例对本专利技术作进一步详细说明。链表是一种在物理内存上不连续的数据结构,是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象)+指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。常用的链表形式有单(向)链表和双(向)链表两种。本专利技术所述的一种管理内存中高频变化数据的缓冲链表数据结构设计方法不同于双向链表,是在链表的基础上再增加一条中间链表,所有对于链表的添加、删除等操作并不是直接作用于内存,而是作用于中间链表,中间链表就像是内存和程序链表之间的一个缓冲Cache,因此,又叫缓冲链表(CacheList)。其类实现(C++)代码示意如下:类CacheList中有两个List类型的成员变量,分别是m_listCurrent和m_listSpare,m_listCurrent直接面对应用程序,而真正管理内存空间的则是m_listSpare。m_listSpare负责统一申请内存空间,统一释放内存,而所有数据(指针)的添加、删除操作由m_listCurrent来完成。m_listCurrent添加数据(指针)时,向m_listSpare申请内存,而非操作系统,删除数据时,也不直接释放内存空间,而是将处理完数据所占用的内存空间“还给”m_listSpare,具体实现细节如下。初始化步骤通常,链表这类基础数据结构,在初始化没有任何数据,为空链表,除了链表本身的损耗,没有任何数据内存占用,随着应用进程的运行,数据动态增加减少,链表按需实时请求分配内存或者释放内存。如图1所示,常规链表与本申请的对比图(初始化状态)。本设计的两个List成员变量,m本文档来自技高网
...

【技术保护点】
1.一种管理内存中高频变化数据的缓冲链表数据结构设计方法,其特征在于:在链表结构的基础上增加一条缓冲链表CacheList,所有对于链表的添加、删除操作并不直接作用于内存,而是作用于缓冲链表CacheList,包括初始化步骤、添加数据步骤、删除数据步骤。

【技术特征摘要】
1.一种管理内存中高频变化数据的缓冲链表数据结构设计方法,其特征在于:在链表结构的基础上增加一条缓冲链表CacheList,所有对于链表的添加、删除操作并不直接作用于内存,而是作用于缓冲链表CacheList,包括初始化步骤、添加数据步骤、删除数据步骤。2.根据权利要求1所述的管理内存中高频变化数据的缓冲链表数据结构设计方法,其特征在于:所述缓冲链表CacheList包括:m_listCurrent和m_listSpare两个List类型的成员变量,m_listSpare管理内存空间,负责统一申请内存空间,统一释放内存;m_listCurrent直接面对应用程序,所有数据、指针的添加、删除操作由m_listCurrent来完成,m_listCurrent添加数据、指针时,向m_listSpare申请内存,删除数据时,不直接释放内存空间,而是将处理完数据所占用的内存空间“还给”m_listSpare。3.根据权利要求2所述的管理内存中高频变化数据的缓冲链表数据结构设计方法,其特征在...

【专利技术属性】
技术研发人员:经玉健吴小俊王惠
申请(专利权)人:南京国电南自轨道交通工程有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1