CN102270207B - 一种面向在线多媒体信息挖掘的数据缓存方法和系统 - Google Patents
一种面向在线多媒体信息挖掘的数据缓存方法和系统 Download PDFInfo
- Publication number
- CN102270207B CN102270207B CN201010196406.3A CN201010196406A CN102270207B CN 102270207 B CN102270207 B CN 102270207B CN 201010196406 A CN201010196406 A CN 201010196406A CN 102270207 B CN102270207 B CN 102270207B
- Authority
- CN
- China
- Prior art keywords
- offset
- len
- buffer zone
- node
- buffer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种面向在线多媒体信息挖掘的数据缓存方法和系统。所述方法,包括下列步骤:在内存中为在线多媒体信息分配缓冲池,所述缓冲池由预设的长短不同的接收缓冲区组成;根据捕获的在线多媒体信息的长度属性信息,申请相应缓冲区存储多媒体数据;为所述捕获的在线多媒体信息建立已接收数据信息链表,采用有序链表方式记录已接收的多媒体信息;查询所述已接收数据信息链表,向所述缓冲区中存储多媒体数据。
Description
技术领域
本发明涉及互联网信息挖掘技术领域,特别是涉及一种面向在线多媒体信息挖掘的数据缓存方法和系统。
背景技术
多媒体信息具有数据量巨大、数据类型多、数据类型间差距大以及输入和输出复杂的特点。传统的数据采用了编码表示,数据量并不大。但多媒体数据量巨大,例如:一幅640×480分辨率、256种颜色的彩色照片,存储量要0.3MB;CD质量双声道的声音,存储量要每秒1.4MB。多媒体数据包括图形、图像、声音、文本和动画等多种形式,即使同属于图像一类,也还有黑白、彩色、高分辨率、低分辨率之分。数据类型间差距大主要表现在:不同媒体的存储量差别大;不同类型的媒体由于内容和格式不同,相应的内容管理、处理方法和解释方法也不同;声音和动态影像视频的媒体与建立在空间数据基础上的信息组织方法有很大的不同。多媒体数据的输入方式分为两种:即多通道异步方式和多通道同步方式。多通道异步方式是目前较流行的方式,它是指在通道、时间都不相同的情况下,输入各种媒体数据并存储,最后按合成效果在不同的设备上表现出来。多通道同步方式是指同时输入媒体数据并存储,最后按合成效果在不同的设备上表现出来,由于涉及的设备较多,因此输出也较为复杂。
在互联网信息挖掘领域,在线多媒体信息挖掘是其中非常重要的一项技术。目前,在互联网信息挖掘领域,主动采集是主流方式,其工作原理是挖掘系统主动采集互联网上的多媒体信息,并存储到本地进行进一步挖掘分析。该方法虽然行之有效,但是存在三个明显的缺陷:一是仅能针对互联网多媒体信息的已有集合进行挖掘,不能及时体现互联网上更新的多媒体信息,二是对已有多媒体信息进行遍历方式的访问,成本高,三是所有多媒体信息来自于主动访问,不能体现实际在线传输的多媒体信息特征。而对于在线多媒体信息的挖掘则完全不存在这些缺陷,它通过捕获骨干数据接口上实际在线传输的多媒体 信息来提供信息挖掘的源信息,该方法之所以未能获得普遍应用,其根本原因在于要捕获的数据量巨大、数据复杂多样、多媒体数据并发程度极高,难以进行高速、有效的缓存管理。
面向个人用户数据下载的硬盘缓存方案,受硬盘寿命和带宽的制约,不能满足这种应用背景下的数据缓存管理。
发明内容
本发明的目的在于提供一种面向在线多媒体信息挖掘的数据缓存方法和系统。其实现了动态高效地缓存多媒体数据。
为实现本发明的目的而提供的一种面向在线多媒体信息挖掘的数据缓存方法,包括下列步骤:
步骤100.在内存中为在线多媒体信息分配缓冲池,所述缓冲池由预设的长短不同的接收缓冲区组成;
步骤200.根据捕获的在线多媒体信息的长度属性信息,申请相应缓冲区存储多媒体数据;
步骤300.为所述捕获的在线多媒体信息建立已接收数据信息链表,采用有序链表方式记录已接收的多媒体信息;
步骤400.查询所述已接收数据信息链表,向所述缓冲区中存储多媒体数据。
步骤100中,所述长短不同的接收缓冲区,分别是缓冲区L和缓冲区S,其中:
预设缓冲区L,缓冲空间大,用于存储长度已知且较短的多媒体信息;
预设缓冲区S,缓冲空间小,用于存储其它多媒体信息;
针对L和S两类缓冲区,分别在内存中分配对应的缓冲池PL和PS。
所述步骤200,包括下列步骤:
步骤210.获取捕获的在线多媒体信息的长度属性信息len_con,判断所述在线多媒体信息的长度属性信息len_con是否大于缓冲区L长度len_L,若是,则执行步骤220;否则,执行步骤230;向缓冲池PL申请L缓冲区;
步骤220.申请者向缓冲池PS申请S缓冲区;
步骤230.申请者向缓冲池PL申请L缓冲区;
步骤240.所述缓冲池接收到缓冲区申请时,应查找其拥有的缓冲区,并找到一个标识为“未用”的缓冲区,将其地址返回给申请者,同时将该缓冲区置为“已用”。
所述步骤300,包括下列步骤:
步骤310.链表指针p移动到某个节点时,获得所述链表指针p指向节点P的信息<p_offset,p_len>;链表指针n指向所述节点P的下一个节点N,n=p->next;
步骤320.判断所述节点N是否为空,若N非空,获得n指向节点N的信息<n_offset,n_len>;若N为空,将n指向节点的信息<n_offset,n_len>赋值为<MAXINT,0>,其中MAXINT为最大无符号32位整数;
步骤330.比较待添加节点C<c_offset,c_len>与p指向节点P及后一个节点N的属性,判断p_offset+p_len是否大于或等于c_offset,若是,则执行步骤340;否则执行步骤350;
步骤340.判断c_offset+c_len是否大于或等于n_offset,若是,则合并节点P和节点N,p_len=n_offset-p_offset+n_len,并释放节点N,P->next=N->next;否则合并节点P和待添加节点C,p_len=c_offset-p_offset+c_len;
步骤350.判断c_offset+c_len是否大于或等于n_offset并且c_offset<=n_offset,若是,则合并节点N和待添加节点Cn_offset=c_offset,n_len=n_offset-c_offset+n_len;否则,执行步骤360;
步骤360.判断c_offset是否小于n_offset,若是,则执行步骤370;否则,令P=N,并返回步骤310;
步骤370.将所述待添加节点C作为一个新的节点C’插入链表,C’_offset=c_offset,;C’len=c_len,C’->next=N,P->next=C’;
所述步骤400,包括下列步骤:
步骤410.获得所述在线多媒体信息中待处理数据包信息<c_offset,c_len>,并输入到所述已接收数据信息链表查询,根据查询结果输出调整后的数据包信息<v_offset,v_len>;
步骤420.如果v_len小于等于0,表明片段数据已经完全接收过,跳转至步骤410,处理下一个数据包,否则执行步骤430;
步骤430.根据v_offset,确定其应该存储的缓冲区,满足条件的缓冲区应该满足的条件是:v_offset>=b_offset且v_offset<b_offset+con_S;如果找到合适的缓冲区,则获取缓冲区的属性信息<偏移量,基址,长度>,记为<b_offset,b_base,con_S>,并执行步骤450;否则,执行步骤440;
步骤440.向PS缓冲池申请新的S缓冲区,同时将申请到的S缓冲区的偏移量置为v_offset,新申请缓冲区长度必然大于v_len,即可以完整存储长v_len的数据,从数据包中偏移量为v_offset开始,复制长度为v_len的数据到S缓冲区中;
步骤450.按下式计算数据在缓冲区中存放位置r_base,r_base=b_base+(v_offset-b_offset);当数据包可以完整保存在所选择缓冲区(即v_offset+v_len<=b_offset+con_S)中,将r_len赋值为v_len,v_len赋值为0否则,r_len=b_offset+con_S-v_offset,同时将<v_offset,v_len>赋值为<b_offset+con_S,v_len-r_len>,执行步骤460,存储数据;
步骤460.从数据包中偏移量为v_offset开始,复制长度为r_len的数据到所选择的缓冲区(基址为r_base)中,跳转到420。
所述步骤410,包括下列步骤:
步骤411.链表指针p指向链表头节点;
步骤412.获得链表指针p指向节点P的信息<p_offset,p_len>,判断是否c_offset大于等于p_offset且c_offset小于等于p_offset+p_len,若是则执行c_len=c_offset+c_len-p_offset-p_len;c_offset=p_offset+p_len,并跳转到415;否则,执行步骤413;
步骤413.判断是否c_offset小于p_offset且c_offset+c_len大于p_offset,若是跳转到416,否则执行步骤414;
步骤414.判断是否c_offset+c_len小于等于p_offset,若是跳转到步骤418,否则执行步骤417;
步骤415.如果c_len小于等于0,执行步骤418,否则执行步骤417;
步骤416.判断c_offset+c_len是否小于p_offset+p_len,若是则执行c_len=p_offset-c_offset。随后执行步骤418;否则直接执行步骤418;
步骤417.将p->next赋值给p,并跳转到步骤412;
步骤418.将<c_offset,c_len>赋值给<v_offset,v_len>。
所述方法,还包括步骤500.在进行数据挖掘后回收所述缓冲区,其中:
步骤510.当某个缓冲区A满或者达到数据挖掘的要求时,且缓冲区A的偏移量非0时,首先需要检查所属多媒体信息的偏移量为0的缓冲区H(头数据缓冲区)是否已经过数据挖掘,如果没有经过处理,需要强制推送H缓冲区至数据解码还原,如果解码还原成功,则可推送缓冲区A进行解码还原及其后的数据挖掘处理。如果解码失败,则缓冲区A进入等待处理状态,直到缓冲区H成功解码;
步骤520.当缓冲区A经过数据挖掘处理之后,如果其偏移量非0,则发送回收该缓冲区命令,由对应缓冲区管理池执行回收操作,将占用状态修改为未用;
步骤530.当所属多媒体信息数据缓冲完成后,由缓冲区管理池执行缓冲区H的回收操作。
为实现本发明的目的还提供一种面向在线多媒体信息挖掘的数据缓存系统,包括:
分配单元,用于在内存中为在线多媒体信息分配缓冲池,所述缓冲池由预设的长短不同的接收缓冲区组成;
申请单元,用于根据捕获的在线多媒体信息的长度属性信息,申请相应缓冲区存储多媒体数据;
记录单元,用于为所述捕获的在线多媒体信息建立已接收数据信息链表,采用有序链表方式记录已接收的多媒体信息;
存储单元,用于查询所述已接收数据信息链表,向所述缓冲区中存储多媒体数据。
所述分配单元,包括:
长短不同的接收缓冲区,分别是缓冲区L和缓冲区S,其中:
缓冲区L,缓冲空间大,用于存储长度已知且较短的多媒体信息;
缓冲区S,缓冲空间小,用于存储其它多媒体信息;
针对L和S两类缓冲区,分别在内存中分配对应的缓冲池PL和PS。
所述申请单元,包括:
信息获取模块,用于获取捕获的在线多媒体信息的长度属性信息len_con,判断所述在线多媒体信息的长度属性信息len_con是否大于缓冲区L长度len_L,若是,则触发缓冲区S申请模块;否则,执行触发缓冲区L申请模块;向缓冲池PL申请L缓冲区;
缓冲区S申请模块,用于申请者向缓冲池PS申请缓冲区S;
缓冲区L申请模块,申请者向缓冲池PL申请缓冲区L;
搜索模块,所述缓冲池接收到缓冲区申请时,应查找其拥有的缓冲区,并找到一个标识为“未用”的缓冲区,将其地址返回给申请者,同时将该缓冲区置为“已用”。
所述记录单元3,包括:
指针信息获取模块,用于链表指针p移动到某个节点时,获得所述链表指针p指向节点P的信息<p_offset,p_len>;链表指针n指向所述节点P的下一个节点N,n=p->next;
1号判断模块,判断所述节点N是否为空,若N非空,获得n指向节点N的信息<n_offset,n_len>;若N为空,将n指向节点的信息<n_offset,n_len>赋值为<MAXINT,0>,其中MAXINT为最大无符号32位整数;
比较模块,用于比较待添加节点C<c_offset,c_len>与p指向节点P及后一个节点N的属性,判断p_offset+p_len是否大于或等于c_offset,若是,则触发2号判断模块;否则触发3号判断模块;
2号判断模块,判断c_offset+c_len是否大于或等于n_offset,若是,则合并节点P和节点N,p_len=n_offset-p_offset+n_len,并释放节点N,P->next=N->next;否则合并节点P和待添加节点C,p_len=c_offset-p_offset+c_len;
3号判断模块,用于判断c_offset+c_len是否大于或等于n_offset并且c_offset<=n_offset,若是,则合并节点N和待添加节点Cn_offset=c_offset,n_len=n_offset-c_offset+n_len;否则,触发4号判断模块;
4号判断模块36,判断c_offset是否小于n_offset,若是,则触发添加模块;否则,令P=N,并触发指针信息获取模块;
添加模块,将所述待添加节点C作为一个新的节点C’插入链表,C’_offset=c_offset,;C’len=c_len,C’->next=N,P->next=C’。
所述存储单元,包括:
查询调整模块,用于获得所述在线多媒体信息中待处理数据包信息 <c_offset,c_len>,并输入到所述已接收数据信息链表查询,根据查询结果输出调整后的数据包信息<v_offset,v_len>;
5号判断模块,如果v_len小于等于0,表明片段数据已经完全接收过,触发查询调整模块41,处理下一个数据包;否则触发缓冲区选择模块43;
缓冲区选择模块,用于根据v_offset选择满足条件的缓冲区,如果找到合适的缓冲区,则获取缓冲区的属性信息<偏移量,基址,长度>,记为<b_offset,b_base,con_S>,并触发计算模块;否则,触发缓冲区申请模块;
缓冲区申请模块,向PS缓冲池申请新的S缓冲区,同时将申请到的S缓冲区的偏移量置为v_offset,从数据包中偏移量为v_offset开始,复制长度为v_len的数据到S缓冲区中;
计算模块,用于根据r_base=b_base+(v_offset-b_offset)计算数据在缓冲区中存放位置,当v_offset+v_len<=b_offset+con_S)时,将r_len赋值为v_len,v_len赋值为0;否则,r_len=b_offset+con_S-v_offset,同时将<v_offset,v_len>赋值为<b_offset+con_S,v_len-r_len>,触发复制模块46,存储数据;
复制模块,从数据包中偏移量为v_offset开始,复制长度为r_len的数据到所选择的缓冲区(基址为r_base)中,触发5号判断模块。
所述查询调整模块,包括:
初始化模块,将链表指针p指向链表头节点;
6号判断模块,获得链表指针p指向节点P的信息<p_offset,p_len>,判断是否c_offset大于等于p_offset且c_offset小于等于p_offset+p_len,若是则执行c_len=c_offset+c_len-p_offset-p_len;c_offset=p_offset+p_len,并触发9号判断模块;否则,触发7号判断模块;
7号判断模块,判断是否c_offset小于p_offset且c_offset+c_len大于p_offset,若是触发10号判断模块,否则触发8号判断模块;
8号判断模块.判断是否c_offset+c_len小于等于p_offset,若是触发赋值模块,否则触发赋值跳转模块;
9号判断模块.如果c_len小于等于0,触发赋值模块,否则触发赋值跳转模块;
10号判断模块.判断c_offset+c_len是否小于p_offset+p_len,若是则执行c_len=p_offset-c_offset,随后触发赋值模块;否则直接触发赋值模块;
赋值跳转模块.将p->next赋值给p,并触发6号判断模块;
赋值模块.将<c_offset,c_len>赋值给<v_offset,v_len>。
所述系统,还包括回收单元,用于在进行数据挖掘后回收所述缓冲区,其中:
当某个缓冲区A满或者达到数据挖掘的要求时,且缓冲区A的偏移量非0时,首先需要检查所属多媒体信息的偏移量为0的缓冲区H(头数据缓冲区)是否已经过数据挖掘,如果没有经过处理,需要强制推送H缓冲区至数据解码还原,如果解码还原成功,则可推送缓冲区A进行解码还原及其后的数据挖掘处理。如果解码失败,则缓冲区A进入等待处理状态,直到缓冲区H成功解码;
当缓冲区A经过数据挖掘处理之后,如果其偏移量非0,则发送回收该缓冲区命令,由对应缓冲区管理池执行回收操作,将占用状态修改为未用;
当所属多媒体信息数据缓冲完成后,由缓冲区管理池执行缓冲区H的回收操作。
本发明的有益效果是:
1.本发明直接采用内存来缓存数据,完全满足高数据量并发的要求,同时,采用预先分配缓冲区池的方法,可有效避免程序运行中的频繁地内存分配、释放操作,一方面提高缓存速度,同时也提高缓存方案的稳定性能;
2.本发明采用动态缓冲区机制,即为每个多媒体信息预备多个接收缓冲区来完成数据保存,这种方案可最大限度地应对多用户访问同一个多媒体内容、一个用户采用多线程下载方式访问多媒体内容等导致的在线多媒体信息的复杂性所引发的数据缓存问题。
3.本发明中设计了两种长度不同的缓冲区,对于长度较短的多媒体信息的缓存只使用一个较长缓冲区来实现数据缓存;而对于较长的多媒体信息的缓存采用多个动态缓冲区来应对其可能引发的复杂的数据缓冲问题。
4.本发明设计了已接收数据链表,保存已接收数据信息,一旦发现接收的数据包已经缓存,则置为无效,不再进行存储操作。这极高地提高了数据缓存的效率,因为根据实际统计数据,访问热度最高的100个多媒体节目其带来的多媒体信息带宽可占整个多媒体信息的70%以上。
5.本发明设计了一种根据数据包的偏移量来计算缓存位置的方法。首先,根据数据包偏移量来确定用于接收数据的缓冲区,再根据缓冲区的偏移量和数据包偏移量来计算数据包在该缓冲区中的接收位置,大大减少了数据包存储的寻址时间。
附图说明
图1是本发明的一种面向在线多媒体信息挖掘的数据缓存方法的步骤流程图;
图2是本发明中根据在线多媒体信息申请缓冲区的步骤流程图;
图3是本发明中有序链表的示意图;
图4是本发明中采用有序链表方式存储已接收的多媒体信息的步骤流程图;
图5是本发明中采用有序链表方式存储已接收的多媒体信息的一实施例的示意图;
图6是本发明中向申请到的缓冲区中存储多媒体信息的步骤流程图;
图7是本发明中获得待处理数据包信息并输入到所述已接收数据信息链表查询,输出调整后的数据包信息的步骤流程图;
图8是本发明的面向在线多媒体信息挖掘的数据缓存系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种面向在线多媒体信息挖掘的数据缓存方法和系统进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的一种面向在线多媒体信息挖掘的数据缓存方法和系统,通过对在线多媒体信息数据流量特征的大量分析,特别分析了不同用户对多媒体信息访问对数据流量的影响而设计了适合该应用场景的多媒体数据缓存方法,即动态缓冲区快速缓存方案,在缓冲区达到处理要求后,按规则及时处理并释放,以供其他多媒体信息缓存使用。实现了动态高效地缓存多媒体数据。
下面结合上述目标详细介绍本发明一种面向在线多媒体信息挖掘的数据 缓存方法,图1是本发明的一种面向在线多媒体信息挖掘的数据缓存方法的步骤流程图,如图1所示,所述方法,包括下列步骤:
步骤100.在内存中分配缓冲池,所述缓冲池由预设的长短不同的接收缓冲区组成;
由于数据流量巨大,并发多媒体信息程度高,硬盘缓存方案不能胜任,频繁写硬盘操作将导致硬盘寿命缩短,形成影响系统稳定性的严重隐患。本发明直接采用内存来缓存数据,目前流行的双通道DDR400的带宽达到了6.4GBps的带宽,完全满足高数据量并发的要求。同时,采用预先分配缓冲区池的方法,可有效避免程序运行中的频繁地内存分配、释放操作,一方面提高缓存速度,同时也提高缓存方案的稳定性能。
由于多媒体信息类型复杂多样,一方面我们将整个方案设计为基于动态缓冲区,即为每个多媒体信息预备多个接收缓冲区来完成数据保存,这种方案可最大限度地应对多用户访问同一个多媒体内容、一个用户采用多线程下载方式访问多媒体内容等导致的在线多媒体信息的复杂性所引发的数据缓存问题。另一方面,实际在线多媒体信息中,也包含长度较短,访问方式简单的多媒体信息,比如图片访问,因此,方案中设计了两种长度不同的缓冲区,对于长度较短的多媒体信息的缓存只使用一个较长缓冲区来实现数据缓存;而对于较长的多媒体信息的缓存采用多个动态缓冲区来应对其可能引发的复杂的数据缓冲问题。
如前所述,本发明设计了L和S两类长短不同的接收缓冲区,以缓冲不同的在线多媒体信息传输流量。其中缓冲区L较大,用于多媒体信息长度已知且较短的情况;其他情形则采用较小的S缓冲区,这种情形下,多媒体信息的缓冲通常需要同时使用多个S缓冲区。每个缓冲区应该包括如下属性信息<偏移量,基址,长度,占用状态>。
作为一种可实施方式,L缓冲区长度(记为len_L)设置为2M兆字节,S缓冲区长度(记为len_S)设置为400K字节,可以很好地满足实际的多媒体信息的缓冲。也可根据多媒体信息挖掘的具体算法,对二者进行调整。
针对L和S两类缓冲区,分别在内存中分配对应的缓冲池PL和PS。PL和PS池的大小可根据在线多媒体信息流量的分析结果调整,同时需要考虑缓冲程序所在服务器的内存容量。
所述步骤100,包括:
预设缓冲区L,缓冲空间较大,用于存储长度已知且较短的多媒体信息;
预设缓冲区S,缓冲空间较小,用于存储其它多媒体信息;
针对L和S两类缓冲区,分别在内存中分配对应的缓冲池PL和PS。
作为一种可实施方式,将PL和PS中的数目采用1∶10配比,比如PL中缓冲区设计为1000个,则PS中缓冲区设计为10000个。
缓冲池分配之后,将缓冲池中所有缓冲区状态置为“未用”。
当缓冲区申请者,在所述多媒体信息缓存完成,并完成必要的数据挖掘之后,向相应缓冲池发出缓冲区回收请求。缓冲池PL或PS接收到回收请求后,将缓冲区置为“未用”。
系统停止运行时,将主动释放缓冲池初始化时申请的内存空间。
步骤200.根据捕获的在线多媒体信息的长度属性信息,申请相应缓冲区存储多媒体数据;
捕获在线多媒体数据包后,需要进行数据存储时,首先应获取该多媒体信息的长度属性信息len_con,如果多媒体信息的长度≤L缓冲区长度(len_con≤len_L),则向缓冲池PL申请L缓冲区,如果不能获取多媒体信息长度属性信息len_con或者多媒体信息的长度>L缓冲区长度(len_con>len_L),则向缓冲池PS申请S缓冲区。任何一个缓冲池接收到缓冲区申请时,应查找其拥有的缓冲区,并找到一个标识为“未用”的缓冲区,将其地址返回给申请者,同时将该缓冲区置为“已用”。
图2是本发明中根据在线多媒体信息申请缓冲区的步骤流程图,如图2所示,所述步骤200,包括下列步骤:
步骤210.获取捕获的在线多媒体信息的长度属性信息len_con,判断所述在线多媒体信息的长度属性信息len_con是否大于L缓冲区长度len_L,若是,则执行步骤220;否则,执行步骤230;向缓冲池PL申请L缓冲区;
步骤220.申请者向缓冲池PS申请S缓冲区;
步骤230.申请者向缓冲池PL申请L缓冲区;
步骤240.所述缓冲池接收到缓冲区申请时,应查找其拥有的缓冲区,并找到一个标识为“未用”的缓冲区,将其地址返回给申请者,同时将该缓冲区置为“已用”。
步骤300.建立已接收数据信息链表,采用有序链表方式存储已接收的多媒体信息;
较佳地,已接收数据信息链表的目的就是避免重复接收相同数据,如果不使用该链表同样可以实现数据缓存,但是考虑到数据拷贝操作是一种极耗时操作,数据缓存的效率和并发能力均会下降,特别是当多个用户采用多线程下载方式同时访问一个热门节目时,其效率会严重降低。为了提高数据缓冲的速度,特别是要应对多用户访问同一个多媒体内容引发的相同数据重复接收问题,本发明设计了已接收数据链表,保存已接收数据信息,一旦发现接收的数据包已经缓存,则置为无效,不再进行存储操作。这提高了数据缓存的效率,因为根据实际统计数据,访问热度最高的100个多媒体节目其带来的多媒体信息带宽可占整个多媒体信息的70%以上。
图3是本发明中有序链表的示意图,如图3所示,对于已接收数据信息采用有序链表方式存储。每个节点除链接指针外,还包括<偏移量,长度信息>,以定义一个已接收数据段。即一个链表节点包括三个域<偏移量,长度信息,next>
当某个多媒体信息保存第一个数据包时,进行已接收数据信息链表的初始化,初始时链表中仅有一个头节点,链表指针p指向链表头节点,节点信息为<0,0,0>。
链表指针p移动到某个节点时,比较待添加节点与p指向节点P及后一个节点N的属性。根据偏移量和长度属性关系,决定五种处理方式:向前与P合并、向后与N合并、P与N合并、插入新节点、移动p到下一个节点。
图4是本发明中采用有序链表方式存储已接收的多媒体信息的步骤流程图,如图4所示,所述步骤300,包括下列步骤:
步骤310.链表指针p移动到某个节点时,获得所述链表指针p指向节点P的信息<p_offset,p_len>;链表指针n指向所述节点P的下一个节点N,n=p->next;
步骤320.判断所述节点N是否为空,若N非空,获得n指向节点N的信息<n_offset,n_len>;若N为空,将n指向节点的信息<n_offset,n_len>赋值为<MAXINT,0>(其中,MAXINT为最大无符号32位整数);
节点N为空,表示P为链表中最后一个节点,作此处理,是为了对链表中 最后一个节点采用与其他节点相同的处理流程,不必特殊处理。
步骤330.比较待添加节点C<c_offset,c_len>与p指向节点P及后一个节点N的属性,判断p_offset+p_len是否大于或等于c_offset,若是,则执行步骤340;否则执行步骤350;
步骤340.判断c_offset+c_len是否大于或等于n_offset,若是,则双向合并,即合并节点P和节点N,p_len=n_offset-p_offset+n_len,并释放节点N,p->next=N->next;否则向前合并,即合并节点P和待添加节点C,p_len=c_offset-p_offset+c_len;
步骤350.判断c_offset+c_len是否大于或等于n_offset并且c_offset<=n_offset,若是,则向后合并,即合并节点N和待添加节点Cn_offset=c_offset,n_len=n_offset-c_offset+n_len;否则,执行步骤360;
步骤360.判断c_offset是否小于n_offset,若是,则执行步骤370;否则,令P=N,并返回步骤31 0;
步骤360用于判定节点C是否位于节点N之前,如果是则在P与N之间插入C,否则应该移到下一个节点再进行判定。由于当P指向链表尾时,构建了虚拟节点N,处理方式与非链表尾完全相同。图5是本发明中采用有序链表方式存储已接收的多媒体信息的一实施例的示意图,如图5所示,第一个子图为准备插入C时,链表中已有节点,之后的图为C节点不同取值时,链表中节点变化情况,依次为前向合并、后向合并、双向合并、作为新节点插入(给出了在链表尾插入和非链表尾插入两种情形),图中无阴影部分表示发生改变的节点。
步骤370.将所述待添加节点C作为一个新的节点C’插入链表,C’_offset=c_offset,;C’len=c_len,C’->next=N,p->next=C’;
正常情况下,多媒体信息缓存完成时,链表中只有一个节点,节点信息为<0,len_con>(其中,len_con与前文出现的意义相同,是该媒体信息的总长度)。
当所述多媒体信息缓存完成,并完成必要的数据挖掘之后,执行链表释放操作。
步骤400.查询所述已接收数据信息链表,向申请到的缓冲区中存储多媒体信息。
图6是本发明中向申请到的缓冲区中存储多媒体信息的步骤流程图,如图6所示,所述步骤400包括下列步骤:
步骤410.获得待处理数据包信息<c_offset,c_len>,并输入到所述已接收数据信息链表查询,输出调整后的数据包信息<v_offset,v_len>;
所述待处理数据包,是指用户访问一个多媒体节目所引发传输的数据包,由网络数据捕获程序获取。根据获取数据包的顺序依次处理。
图7是本发明中获得待处理数据包信息并输入到所述已接收数据信息链表查询,输出调整后的数据包信息的步骤流程图,如图7所示,所述步骤410,包括下列步骤:
步骤411.链表指针p指向链表头节点;
步骤412.获得链表指针p指向节点P的信息<p_offset,p_len>,判断是否c_offset大于等于p_offset且c_offset小于等于p_offset+p_len,若是则执行c_len=c_offset+c_len-p_offset-p_len;c_offset=p_offset+p_len,并跳转到415;否则,执行步骤413。
步骤413.判断是否c_offset小于p_offset且c_offset+c_len大于p_offset,若是跳转到416,否则执行步骤414。
步骤414.判断是否c_offset+c_len小于等于p_offset,若是跳转到步骤418,否则执行步骤417。
步骤415.如果c_len小于等于0,执行步骤418,否则执行步骤417。
步骤416.判断c_offset+c_len是否小于p_offset+p_len,若是则执行c_len=p_offset-c_offset。随后执行步骤418;否则直接执行步骤418;
步骤417.将p->next赋值给p,并跳转到步骤412。
步骤418.将<c_offset,c_len>赋值给<v_offset,v_len>
步骤420.如果v_len小于等于0,表明片段数据已经完全接收过,跳转至步骤410,处理下一个数据包,否则执行步骤430。
步骤430.根据v_offset,确定其应该存储的缓冲区,满足条件的缓冲区应该满足的条件是:v_offset>=b_offset且v_offset<b_offset+con_S;如果找到合适的缓冲区,则获取缓冲区的属性信息<偏移量,基址,长度>,记为<b_offset,b_base,con_S>,并执行步骤450;否则,执行步骤440.
步骤440.向PS缓冲池申请新的S缓冲区,同时将申请到的S缓冲区的偏移量置为v_offset,新申请缓冲区长度必然大于v_len,即可以完整存储长v_len的数据,从数据包中偏移量为v_offset开始,复制长度为v_len的数据到S缓冲区中;
所有多媒体信息的缓冲区的申请都是动态地根据实际到达的数据包的分布来进行的,而不是一次性分配,有效提高了有限内存空间的使用效率。一旦多媒体信息的数据挖掘处理完成,所申请的缓冲区空间会被立刻回收,用于其他多媒体信息的缓存。
步骤450.按下式计算数据在缓冲区中存放位置r_base,r_base=b_base+(v_offset-b_offset)。
所有数据包的缓存位置的选择都是根据其偏移量来进行:根据偏移量来确定当前是否存在可使用的缓冲区,当存在合适缓冲区是,根据偏移量确定其应该缓存的位置,否则申请新的缓冲区,并将新缓冲区的偏移量置为正在接收数据包的偏移量,以在新申请的缓冲区中接收与之相近的数据包。
当数据包可以完整保存在所选择缓冲区(即v_offset+v_len<=b_offset+con_S)中,将r_len赋值为v_len,v_len赋值为0否则,r_len=b_offset+con_S-v_offset,同时将<v_offset,v_len>赋值为<b_offset+con_S,v_len-r_len>,执行步骤460,存储数据。
步骤460.从数据包中偏移量为v_offset开始,复制长度为r_len的数据到所选择的缓冲区(基址为r_base)中,跳转到420;
步骤500.在进行数据挖掘后回收缓冲区。
步骤510.当某个缓冲区A满或者达到数据挖掘的要求时,且当缓冲区A的偏移量非0时,首先需要检查所属多媒体信息的偏移量为0缓冲区H(头数据缓冲区)是否已经过数据挖掘,如果没有经过处理,需要强制推送H缓冲区至数据解码还原,如果解码还原成功,则可推送缓冲区A进行解码还原及其后的数据挖掘处理。(这是由于多媒体信息数据挖掘中必需的解码还原要依赖多媒体信息的头部数据H)如果解码失败,则缓冲区A进入等待处理状态,直到缓冲区H成功解码。
步骤520.当缓冲区A经过数据挖掘处理之后,如果其偏移量非0,则发送回收该缓冲区命令,由对应缓冲区管理池执行回收操作,将占用状态修改为未用。
步骤530.当所述多媒体信息数据缓冲完成后,由缓冲区管理池执行缓冲区H的回收操作。(这是由于后续缓冲区数据挖掘操作需依赖缓冲区H中的数据)
相应于本发明的一种面向在线多媒体信息挖掘的数据缓存方法,还提供一种面向在线多媒体信息挖掘的数据缓存系统,图8是本发明的面向在线多媒体信息挖掘的数据缓存系统的结构示意图,如图8所示,所述系统,包括;
分配单元1,用于在内存中为在线多媒体信息分配缓冲池,所述缓冲池由预设的长短不同的接收缓冲区组成;
所述分配单元1,包括:
长短不同的接收缓冲区,分别是缓冲区L和缓冲区S,其中:
缓冲区L,缓冲空间大,用于存储长度已知且较短的多媒体信息;
缓冲区S,缓冲空间小,用于存储其它多媒体信息;
针对L和S两类缓冲区,分别在内存中分配对应的缓冲池PL和PS。
申请单元2,用于根据捕获的在线多媒体信息的长度属性信息,申请相应缓冲区存储多媒体数据;
所述申请单元2,包括:
信息获取模块21,用于获取捕获的在线多媒体信息的长度属性信息len_con,判断所述在线多媒体信息的长度属性信息len_con是否大于缓冲区L长度len_L,若是,则触发缓冲区S申请模块22;否则,执行触发缓冲区L申请模块22;向缓冲池PL申请L缓冲区;
缓冲区S申请模块22,用于申请者向缓冲池PS申请缓冲区S;
缓冲区L申请模块23,申请者向缓冲池PL申请缓冲区L;
搜索模块24,所述缓冲池接收到缓冲区申请时,应查找其拥有的缓冲区,并找到一个标识为“未用”的缓冲区,将其地址返回给申请者,同时将该缓冲区置为“已用”。
记录单元3,用于为所述捕获的在线多媒体信息建立已接收数据信息链表,采用有序链表方式记录已接收的多媒体信息;
所述记录单元3,包括:
指针信息获取模块31,用于链表指针p移动到某个节点时,获得所述链表指针p指向节点P的信息<p_offset,p_len>;链表指针n指向所述节点P的下一个节点N,n=p->next;
1号判断模块32判断所述节点N是否为空,若N非空,获得n指向节点N的信息<n_offset,n_len>;若N为空,将n指向节点的信息<n_offset,n_len>赋值为<MAXINT,0>,其中MAXINT为最大无符号32位整数;
比较模块32,用于比较待添加节点C<c_offset,c_len>与p指向节点P及后一个节点N的属性,判断p_offset+p_len是否大于或等于c_offset,若是,则触发2号判断模块34;否则触发3号判断模块35;
2号判断模块34,判断c_offset+c_len是否大于或等于n_offset,若是,则合并节点P和节点N,p_len=n_offset-p_offset+n_len,并释放节点N,P->next=N->next;否则合并节点P和待添加节点C,p_len=c_offset-p_offset+c_len;
3号判断模块35,用于判断c_offset+c_len是否大于或等于n_offset并且c_offset<=n_offset,若是,则合并节点N和待添加节点Cn_offset=c_offset,n_len=n_offset-c_offset+n_len;否则,触发4号判断模块36;
4号判断模块36,判断c_offset是否小于n_offset,若是,则触发添加模块37;否则,令P=N,并触发指针信息获取模块31;
添加模块37,将所述待添加节点C作为一个新的节点C’插入链表,C’_offset=c_offset,;C’len=c_len,C’->next=N,P->next=C’。
存储单元4,用于查询所述已接收数据信息链表,向所述缓冲区中存储多媒体数据。
所述存储单元4,包括:
查询调整模块41,用于获得所述在线多媒体信息中待处理数据包信息<c_offset,c_len>,并输入到所述已接收数据信息链表查询,根据查询结果输出调整后的数据包信息<v_offset,v_len>;
所述查询调整模块41,包括:
初始化模块411,将链表指针p指向链表头节点;
6号判断模块412,获得链表指针p指向节点P的信息<p_offset,p_len>,判断是否c_offset大于等于p_offset且c_offset小于等于p_offset+p_len,若是则执行c_len=c_offset+c_len-p_offset-p_len;c_offset= p_offset+p_len,并触发9号判断模块415;否则,触发7号判断模块413;
7号判断模块413,判断是否c_offset小于p_offset且c_offset+c_len大于p_offset,若是触发10号判断模块416,否则触发8号判断模块414;
8号判断模块414.判断是否c_offset+c_len小于等于p_offset,若是触发赋值模块418,否则触发赋值跳转模块417;
9号判断模块415.如果c_len小于等于0,触发赋值模块418,否则触发赋值跳转模块417;
10号判断模块416.判断c_offset+c_len是否小于p_offset+p_len,若是则执行c_len=p_offset-c_offset,随后触发赋值模块418;否则直接触发赋值模块418。
赋值跳转模块417.将p->next赋值给p,并跳转到步骤412;
赋值模块418.将<c_offset,c_len>赋值给<v_offset,v_len>。
5号判断模块42,如果v_len小于等于0,表明片段数据已经完全接收过,触发查询调整模块41,处理下一个数据包;否则触发缓冲区选择模块43;
缓冲区选择模块43,用于根据v_offset选择满足条件的缓冲区,如果找到合适的缓冲区,则获取缓冲区的属性信息<偏移量,基址,长度>,记为<b_offset,b_base,con_S>,并触发计算模块45;否则,触发缓冲区申请模块44;
缓冲区申请模块44,向PS缓冲池申请新的S缓冲区,同时将申请到的S缓冲区的偏移量置为v_offset,从数据包中偏移量为v_offset开始,复制长度为v_len的数据到S缓冲区中;
计算模块45,用于根据r_base=b_base+(v_offset-b_offset)计算数据在缓冲区中存放位置,当v_offset+v_len<=b_offset+con_S)时,将r_len赋值为v_len,v_len赋值为0;否则,r_len=b_offset+con_S-v_offset,同时将<v_offset,v_len>赋值为<b_offset+con_S,v_len-r_len>,触发复制模块46,存储数据;
复制模块46,从数据包中偏移量为v_offset开始,复制长度为r_len的数据到所选择的缓冲区(基址为r_base)中,触发5号判断模块42。
系统所述,还包括:回收单元5,用于在进行数据挖掘后回收所述缓冲区,其中:
当某个缓冲区A满或者达到数据挖掘的要求时,且缓冲区A的偏移量非0时,首先需要检查所属多媒体信息的偏移量为0的缓冲区H(头数据缓冲区)是否已经过数据挖掘,如果没有经过处理,需要强制推送H缓冲区至数据解码还原,如果解码还原成功,则可推送缓冲区A进行解码还原及其后的数据挖掘处理。如果解码失败,则缓冲区A进入等待处理状态,直到缓冲区H成功解码;
当缓冲区A经过数据挖掘处理之后,如果其偏移量非0,则发送回收该缓冲区命令,由对应缓冲区管理池执行回收操作,将占用状态修改为未用;
当所属多媒体信息数据缓冲完成后,由缓冲区管理池执行缓冲区H的回收操作。
本发明的有益效果在于:
1.本发明直接采用内存来缓存数据,完全满足高数据量并发的要求,同时,采用预先分配缓冲区池的方法,可有效避免程序运行中的频繁地内存分配、释放操作,一方面提高缓存速度,同时也提高缓存方案的稳定性能;
2.本发明采用动态缓冲区机制,即为每个多媒体信息预备多个接收缓冲区来完成数据保存,这种方案可最大限度地应对多用户访问同一个多媒体内容、一个用户采用多线程下载方式访问多媒体内容等导致的在线多媒体信息的复杂性所引发的数据缓存问题。
3.本发明中设计了两种长度不同的缓冲区,对于长度较短的多媒体信息的缓存只使用一个较长缓冲区来实现数据缓存;而对于较长的多媒体信息的缓存采用多个动态缓冲区来应对其可能引发的复杂的数据缓冲问题。
4.本发明设计了已接收数据链表,保存已接收数据信息,一旦发现接收的数据包已经缓存,则置为无效,不再进行存储操作。这极高地提高了数据缓存的效率,因为根据实际统计数据,访问热度最高的100个多媒体节目其带来的多媒体信息带宽可占整个多媒体信息的70%以上。
5.本发明设计了一种根据数据包的偏移量来计算缓存位置的方法。首先,根据数据包偏移量来确定用于接收数据的缓冲区,再根据缓冲区的偏移量和数据包偏移量来计算数据包在该缓冲区中的接收位置,大大减少了数据包存储的寻址时间。
通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。
Claims (12)
1.一种面向在线多媒体信息挖掘的数据缓存方法,其特征在于,所述方法,包括下列步骤:
步骤100.在内存中为在线多媒体信息分配缓冲池,所述缓冲池由预设的长短不同的接收缓冲区组成;
步骤200.根据捕获的在线多媒体信息的长度属性信息,申请相应缓冲区存储多媒体数据;
步骤300.为所述捕获的在线多媒体信息建立已接收数据信息链表,采用有序链表方式记录已接收的多媒体信息;
步骤400.查询所述已接收数据信息链表,向所述缓冲区中存储多媒体数据;
步骤500.在进行数据挖掘后回收所述缓冲区,其中所述步骤500包括:
步骤510.当某个缓冲区A满或者达到数据挖掘的要求时,且缓冲区A的偏移量非0时,首先需要检查所属多媒体信息的偏移量为0的头数据缓冲区H是否已经过数据挖掘,如果没有经过处理,需要强制推送H缓冲区至数据解码还原,如果解码还原成功,则可推送缓冲区A进行解码还原及其后的数据挖掘处理,如果解码失败,则缓冲区A进入等待处理状态,直到缓冲区H成功解码;
步骤520.当缓冲区A经过数据挖掘处理之后,如果其偏移量非0,则发送回收该缓冲区命令,由对应缓冲区管理池执行回收操作,将占用状态修改为未用;
步骤530.当所属多媒体信息数据缓冲完成后,由缓冲区管理池执行缓冲区H的回收操作。
2.根据权利要求1所述的面向在线多媒体信息挖掘的数据缓存方法,其特征在于,步骤100中,所述长短不同的接收缓冲区,分别是缓冲区L和缓冲区S,其中:
预设缓冲区L,缓冲空间大,用于存储长度已知且较短的多媒体信息;
预设缓冲区S,缓冲空间小,用于存储其它多媒体信息;
针对L和S两类缓冲区,分别在内存中分配对应的缓冲池PL和PS。
3.根据权利要求2所述的面向在线多媒体信息挖掘的数据缓存方法,其 特征在于,所述步骤200,包括下列步骤:
步骤210.获取捕获的在线多媒体信息的长度属性信息len_con,判断所述在线多媒体信息的长度属性信息len_con是否大于缓冲区L长度len_L,若是,则执行步骤220;否则,执行步骤230;向缓冲池PL申请L缓冲区;
步骤220.申请者向缓冲池PS申请S缓冲区;
步骤230.申请者向缓冲池PL申请L缓冲区;
步骤240.所述缓冲池接收到缓冲区申请时,应查找其拥有的缓冲区,并找到一个标识为“未用”的缓冲区,将其地址返回给申请者,同时将该缓冲区置为“已用”。
4.根据权利要求1所述的面向在线多媒体信息挖掘的数据缓存方法,其特征在于,所述步骤300,包括下列步骤:
步骤310.链表指针p移动到某个节点时,获得所述链表指针p指向节点P的信息<p_offset,p_len>,其中,p_offset为节点P的偏移量,p_len为节点P的长度;链表指针n指向所述节点P的下一个节点N,记为n=p->next;
步骤320.判断所述节点N是否为空,若N非空,获得n指向节点N的信息<n_offset,n_len>,其中,n_offset为节点N的偏移量,n_len为节点N的长度;若N为空,将n指向节点的信息<n_offset,n_len>赋值为<MAXINT,0>,其中MAXINT为最大无符号32位整数;
步骤330.比较待添加节点C<c_offset,c_len>与p指向节点P及后一个节点N的属性,判断p_offset+p_len是否大于或等于c_offset,若是,则执行步骤340,其中,c_offset为节点C的偏移量,c_len为节点C的长度;否则执行步骤350;
步骤340.判断c_offset+c_len是否大于或等于n_offset,若是,则合并节点P和节点N,p_len=n_offset-p_offset+n_len,并释放节点N,P->next=N->next;否则合并节点P和待添加节点C,p_len=c_offset-p_offset+c_len;
步骤350.判断c_offset+c_len是否大于或等于n_offset并且c_offset<=n_offset,若是,则合并节点N和待添加节点Cn_offset=c_offset,n_len=n_offset-c_offset+n_len;否则,执行步骤360;
步骤360.判断c_offset是否小于n_offset,若是,则执行步骤370;否则,令P=N,并返回步骤310;
步骤370.将所述待添加节点C作为一个新的节点C’插入链表,C’_offset=c_offset,;C’len=c_len,表示为C’->next=N,P->next=C’。
5.根据权利要求4所述的面向在线多媒体信息挖掘的数据缓存方法,其特征在于,所述步骤400,包括下列步骤:
步骤410.获得所述在线多媒体信息中待处理数据包信息<c_offset,c_len>,并输入到所述已接收数据信息链表查询,根据查询结果输出调整后的数据包信息<v_offset,v_len>,其中,v_offset为调整后的节点的偏移量,v_len为调整后的节点的长度;
步骤420.如果v_len小于等于0,表明片段数据已经完全接收过,跳转至步骤410,处理下一个数据包,否则执行步骤430;
步骤430.根据v_offset,确定其应该存储的缓冲区,满足条件的缓冲区应该满足的条件是:v_offset>=b_offset且v_offset<b_offset+con_S;如果找到合适的缓冲区,则获取缓冲区的属性信息<偏移量,基址,长度>,记为<b_offset,b_base,con_S>,并执行步骤450;否则,执行步骤440;
步骤440.向PS缓冲池申请新的S缓冲区,同时将申请到的S缓冲区的偏移量置为v_offset,新申请缓冲区长度必然大于v_len,即可以完整存储长v_len的数据,从数据包中偏移量为v_offset开始,复制长度为v_len的数据到S缓冲区中;
步骤450.按下式计算数据在缓冲区中存放位置r_base,r_base=b_base+(v_offset-b_offset);当数据包可以完整保存在所选择缓冲区(即v_offset+v_len<=b_offset+con_S)中,将r_len赋值为v_len,v_len赋值为0否则,r_len=b_offset+con_S-v_offset,同时将<v_offset,v_len>赋值为<b_offset+con_S,v_len-r_len>,执行步骤460,存储数据;
步骤460.从数据包中偏移量为v_offset开始,复制长度为r_len的数据到所选择的基址为r_base的缓冲区中,跳转到420。
6.根据权利要求5所述的面向在线多媒体信息挖掘的数据缓存方法,其特征在于,所述步骤410,包括下列步骤:
步骤411.链表指针p指向链表头节点;
步骤412.获得链表指针p指向节点P的信息<p_offset,p_len>,判断是否c_offset大于等于p_offset且c_offset小于等于p_offset+p_len,若是 则执行c_len=c_offset+c_len-p_offset-p_len;c_offset=p_offset+p_len,并跳转到415;否则,执行步骤413;
步骤413.判断是否c_offset小于p_offset且c_offset+c_len大于p_offset,若是跳转到416,否则执行步骤414;
步骤414.判断是否c_offset+c_len小于等于p_offset,若是跳转到步骤418,否则执行步骤417;
步骤415.如果c_len小于等于0,执行步骤418,否则执行步骤417;
步骤416.判断c_offset+c_len是否小于p_offset+p_len,若是则执行c_len=p_offset-c_offset,随后执行步骤418;否则直接执行步骤418;
步骤417.将p->next赋值给p,并跳转到步骤412;
步骤418.将<c_offset,c_len>赋值给<v_offset,v_len>。
7.一种面向在线多媒体信息挖掘的数据缓存系统,其特征在于,所述系统,包括:
分配单元,用于在内存中为在线多媒体信息分配缓冲池,所述缓冲池由预设的长短不同的接收缓冲区组成;
申请单元,用于根据捕获的在线多媒体信息的长度属性信息,申请相应缓冲区存储多媒体数据;
记录单元,用于为所述捕获的在线多媒体信息建立已接收数据信息链表,采用有序链表方式记录已接收的多媒体信息;
存储单元,用于查询所述已接收数据信息链表,向所述缓冲区中存储多媒体数据;
回收单元,用于在进行数据挖掘后回收所述缓冲区,其中:
当某个缓冲区A满或者达到数据挖掘的要求时,且缓冲区A的偏移量非0时,首先需要检查所属多媒体信息的偏移量为0的缓冲区H(头数据缓冲区)是否已经过数据挖掘,如果没有经过处理,需要强制推送H缓冲区至数据解码还原,如果解码还原成功,则可推送缓冲区A进行解码还原及其后的数据挖掘处理,如果解码失败,则缓冲区A进入等待处理状态,直到缓冲区H成功解码;
当缓冲区A经过数据挖掘处理之后,如果其偏移量非0,则发送回收该缓冲区命令,由对应缓冲区管理池执行回收操作,将占用状态修改为未用;
当所属多媒体信息数据缓冲完成后,由缓冲区管理池执行缓冲区H的回收 操作。
8.根据权利要求7所述的面向在线多媒体信息挖掘的数据缓存系统,其特征在于,所述分配单元,包括:
长短不同的接收缓冲区,分别是缓冲区L和缓冲区S,其中:
缓冲区L,缓冲空间大,用于存储长度已知且较短的多媒体信息;
缓冲区S,缓冲空间小,用于存储其它多媒体信息;
针对L和S两类缓冲区,分别在内存中分配对应的缓冲池PL和PS。
9.根据权利要求8所述的面向在线多媒体信息挖掘的数据缓存系统,其特征在于,所述申请单元,包括:
信息获取模块,用于获取捕获的在线多媒体信息的长度属性信息len_con,判断所述在线多媒体信息的长度属性信息len_con是否大于缓冲区L长度len_L,若是,则触发缓冲区S申请模块;否则,执行触发缓冲区L申请模块;向缓冲池PL申请L缓冲区;
缓冲区S申请模块,用于申请者向缓冲池PS申请缓冲区S;
缓冲区L申请模块,申请者向缓冲池PL申请缓冲区L;
搜索模块,所述缓冲池接收到缓冲区申请时,应查找其拥有的缓冲区,并找到一个标识为“未用”的缓冲区,将其地址返回给申请者,同时将该缓冲区置为“已用”。
10.根据权利要求7所述的面向在线多媒体信息挖掘的数据缓存系统,其特征在于,所述记录单元,包括:
指针信息获取模块,用于链表指针p移动到某个节点时,获得所述链表指针p指向节点P的信息<p_offset,p_len>,其中,p_offset为节点P的偏移量,p_len为节点P的长度;链表指针n指向所述节点P的下一个节点N,记为:n=p->next;
1号判断模块,判断所述节点N是否为空,若N非空,获得n指向节点N的信息<n_offset,n_len>,其中,n_offset为节点N的偏移量,n_len为节点N的长度;若N为空,将n指向节点的信息<n_offset,n_len>赋值为<MAXINT,0>,其中MAXINT为最大无符号32位整数;
比较模块,用于比较待添加节点C<c_offset,c_len>与p指向节点P及后一个节点N的属性,判断p_offset+p_len是否大于或等于c_offset,若是, 则触发2号判断模块;否则触发3号判断模块;其中,c_offset为节点C的偏移量,c_len为节点C的长度;
2号判断模块,判断c_offset+c_len是否大于或等于n_offset,若是,则合并节点P和节点N,p_len=n_offset-p_offset+n_len,并释放节点N,P->next=N->next;否则合并节点P和待添加节点C,p_len=c_offset-p_offset+c_len;
3号判断模块,用于判断c_offset+c_len是否大于或等于n_offset并且c_offset<=n_offset,若是,则合并节点N和待添加节点Cn_offset=c_offset,n_len=n_offset-c_offset+n_len;否则,触发4号判断模块;
4号判断模块,判断c_offset是否小于n_offset,若是,则触发添加模块;否则,令P=N,并触发指针信息获取模块;
添加模块,将所述待添加节点C作为一个新的节点C’插入链表,C’_offset=c_offset,;C’len=c_len,记为:C’->next=N,P->next=C’。
11.根据权利要求10所述的面向在线多媒体信息挖掘的数据缓存系统,其特征在于,所述存储单元,包括:
查询调整模块,用于获得所述在线多媒体信息中待处理数据包信息<c_offset,c_len>,并输入到所述已接收数据信息链表查询,根据查询结果输出调整后的数据包信息<v_offset,v_len>,其中,v_offset为调整后的节点的偏移量,v_len为调整后的节点的长度;
5号判断模块,如果v_len小于等于0,表明片段数据已经完全接收过,触发查询调整模块,处理下一个数据包;否则触发缓冲区选择模块;
缓冲区选择模块,用于根据v_offset选择满足条件的缓冲区,如果找到合适的缓冲区,则获取缓冲区的属性信息<偏移量,基址,长度>,记为<b_offset,b_base,con_S>,并触发计算模块;否则,触发缓冲区申请模块;
缓冲区申请模块,向PS缓冲池申请新的S缓冲区,同时将申请到的S缓冲区的偏移量置为v_offset,从数据包中偏移量为v_offset开始,复制长度为v_len的数据到S缓冲区中;
计算模块,用于根据r_base=b_base+(v_offset-b_offset)计算数据在缓冲区中存放位置,当v_offset+v_len<=b_offset+con_S)时,将r_len赋 值为v_len,v_len赋值为0;否则,r_len=b_offset+con_S-v_offset,同时将<v_offset,v_len>赋值为<b_offset+con_S,v_len-r_len>,触发复制模块,存储数据;
复制模块,从数据包中偏移量为v_offset开始,复制长度为r_len的数据到所选择的基址为r_base的缓冲区中,触发5号判断模块。
12.根据权利要求11所述的面向在线多媒体信息挖掘的数据缓存系统,其特征在于,所述查询调整模块,包括:
初始化模块,将链表指针p指向链表头节点;
6号判断模块,获得链表指针p指向节点P的信息<p_offset,p_len>,判断是否c_offset大于等于p_offset且c_offset小于等于p_offset+p_len,若是则执行c_len=c_offset+c_len-p_offset-p_len;c_offset=p_offset+p_len,并触发9号判断模块;否则,触发7号判断模块;
7号判断模块,判断是否c_offset小于p_offset且c_offset+c_len大于p_offset,若是触发10号判断模块,否则触发8号判断模块;
8号判断模块.判断是否c_offset+c_len小于等于p_offset,若是触发赋值模块,否则触发赋值跳转模块;
9号判断模块.如果c_len小于等于0,触发赋值模块,否则触发赋值跳转模块;
10号判断模块.判断c_offset+c_len是否小于p_offset+p_len,若是则执行c_len=p_offset-c_offset,随后触发赋值模块;否则直接触发赋值模块;
赋值跳转模块.将p->next赋值给p,并触发6号判断模块;
赋值模块418.将<c_offset,c_len>赋值给<v_offset,v_len>。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010196406.3A CN102270207B (zh) | 2010-06-02 | 2010-06-02 | 一种面向在线多媒体信息挖掘的数据缓存方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010196406.3A CN102270207B (zh) | 2010-06-02 | 2010-06-02 | 一种面向在线多媒体信息挖掘的数据缓存方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102270207A CN102270207A (zh) | 2011-12-07 |
CN102270207B true CN102270207B (zh) | 2014-08-13 |
Family
ID=45052514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010196406.3A Active CN102270207B (zh) | 2010-06-02 | 2010-06-02 | 一种面向在线多媒体信息挖掘的数据缓存方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102270207B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663096B (zh) * | 2012-04-11 | 2015-12-16 | 北京像素软件科技股份有限公司 | 一种基于数据缓存技术读取数据的方法 |
CN103384252B (zh) * | 2013-07-18 | 2016-08-24 | 北京星网锐捷网络技术有限公司 | 网络设备防攻击的方法和装置、网络设备 |
CN103699497B (zh) * | 2013-12-19 | 2017-01-04 | 京信通信系统(中国)有限公司 | 一种缓存分配方法及装置 |
CN106358158B (zh) * | 2016-11-10 | 2019-04-30 | 河海大学 | 基于lte-a系统的多媒体广播多播服务网络配置方法 |
CN107193947A (zh) * | 2017-05-22 | 2017-09-22 | 郑州云海信息技术有限公司 | 一种文件系统缓存增量刷新方法及系统 |
CN109246123B (zh) * | 2018-09-30 | 2021-10-22 | 广州酷狗计算机科技有限公司 | 媒体流获取方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101330472A (zh) * | 2008-07-28 | 2008-12-24 | 中兴通讯股份有限公司 | 流媒体数据的缓存处理方法 |
-
2010
- 2010-06-02 CN CN201010196406.3A patent/CN102270207B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101330472A (zh) * | 2008-07-28 | 2008-12-24 | 中兴通讯股份有限公司 | 流媒体数据的缓存处理方法 |
Non-Patent Citations (2)
Title |
---|
周淼.网络多媒体信息还原系统实现技术研究.《中国优秀硕士学位论文全文数据库 信息科技辑》.2009,(第5期),24-40. |
网络多媒体信息还原系统实现技术研究;周淼;《中国优秀硕士学位论文全文数据库 信息科技辑》;20090515(第5期);24-40 * |
Also Published As
Publication number | Publication date |
---|---|
CN102270207A (zh) | 2011-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102270207B (zh) | 一种面向在线多媒体信息挖掘的数据缓存方法和系统 | |
US20230011387A1 (en) | Data processing method and nvme storage device | |
US10198363B2 (en) | Reducing data I/O using in-memory data structures | |
US8433702B1 (en) | Horizon histogram optimizations | |
CN105245912B (zh) | 一种缓存视频数据及读取视频数据的方法及装置 | |
CN102331986B (zh) | 一种数据库缓存管理方法及一种数据库服务器 | |
CN101551736B (zh) | 基于地址指针链表的缓存管理装置和方法 | |
CN103399823B (zh) | 业务数据的存储方法、设备和系统 | |
US7436330B2 (en) | High-speed data compression based on set associative cache mapping techniques | |
TWI305618B (en) | Use of virtual targets for preparing and servicing requests for server-free data transfer operations | |
CN101330472B (zh) | 流媒体数据的缓存处理方法 | |
CN103635887B (zh) | 缓存数据的方法和存储系统 | |
CN101277211A (zh) | 数据缓存方法及装置 | |
US7111289B2 (en) | Method for implementing dual link list structure to enable fast link-list pointer updates | |
CN104794228A (zh) | 一种搜索结果提供方法及装置 | |
Mishra et al. | Duos-simple dual tcam architecture for routing tables with incremental update | |
CN113139100B (zh) | 一种网络流量实时索引方法及系统 | |
CN105488108A (zh) | 一种多个视频文件高速并行存储的方法及装置 | |
CN104899161A (zh) | 一种基于云存储环境的连续数据保护的缓存方法 | |
CN103778120A (zh) | 全局文件标识生成方法、生成装置及相应的分布式文件系统 | |
CN110096458B (zh) | 基于神经网络的命名数据网内容存储池数据检索方法 | |
CN1908915A (zh) | 用于管理元数据的方法和系统 | |
CN105426126B (zh) | 云存储客户端多路恒定速率io缓存的构建方法及装置 | |
CN105721627B (zh) | 一种ip网络流数据在线匿名化方法 | |
Xie et al. | Index–Trie: Efficient archival and retrieval of network traffic |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210222 Address after: Room 1146, 11 / F, research complex building, Institute of computing technology, Chinese Academy of Sciences, No. 6, South Road, Haidian District, Beijing, 100190 Patentee after: Zhongkehai micro (Beijing) Technology Co.,Ltd. Address before: 100080 No. 6 South Road, Zhongguancun Academy of Sciences, Beijing, Haidian District Patentee before: Institute of Computing Technology, Chinese Academy of Sciences |
|
TR01 | Transfer of patent right |