发明名称 基于缓冲池的数据缓存排序在线处理方法
摘要 基于缓冲池的数据缓存排序在线处理方法,属于互联网领域,为了解决目前常见的多线程下载软件对于下载数据乱序和重复的节目批量并发下载,不能实现基于内存的下载数据在线缓存、排序和去重,因而无法支持实时在线的识别、检索等处理的问题。本发明将所有缓冲区组织成缓冲区池,采用多个缓冲区缓存同一节目的下载数据。在接收节目数据包后,先查询节目的下载日志,若无新数据则丢弃不做任何处理,否则:首先选择合适的节目已有缓冲区接收数据,若无合适缓冲区且允许的情况下,申请新缓冲区接收数据;然后更新下载日志;最后调用分析处理模块将该缓冲区中排好的数据取走处理。重复上述过程,直至节目下载完成,将节目分配的缓冲区释放到缓冲区池中。
申请公布号 CN101834801B 申请公布日期 2012.11.21
申请号 CN201010177960.7 申请日期 2010.05.20
申请人 哈尔滨工业大学;国家计算机网络与信息安全管理中心 发明人 郑贵滨;韩纪庆;姜涛;郑铁然;陈训逊;吴震;周渊;刘峰;张冰
分类号 H04L12/56(2006.01)I;H04L29/06(2006.01)I 主分类号 H04L12/56(2006.01)I
代理机构 哈尔滨市松花江专利商标事务所 23109 代理人 张果瑞
主权项 基于缓冲池的数据缓存排序在线处理方法,在计算机系统内存中设置缓冲池,缓冲池中设置多个缓冲区,所有缓冲区组织成链表集中管理,其特征在于,为每个节目创建下载日志,用于记录节目已下载数据的偏移量范围,并设置节目的生命周期初始值为k,k为自然数,且k>0,对接收到的节目下载数据进行基于缓冲池的数据缓存排序在线处理,包括以下步骤:步骤一、接收下载模块下载的节目数据包,节目数据包中含有的信息有节目ID、起始地址、字节数、偏移量,步骤二、查询节目的下载日志,判断所述节目数据包中的数据是否下载过,判断结果为是,则丢弃所述节目数据包不做任何处理,返回步骤一接收下一个节目数据包;判断结果为否,执行步骤三;步骤三、获取所述节目数据包的信息,并写入下载日志,计算节目数据包中的下载数据与所有缓冲区的距离中的最小距离iMinDist,最小距离对应的缓冲区命名为PInBuffer;步骤四、判断条件iMinDist<0是否成立,判断结果为是,执行步骤七,判断结果为否,执行步骤五;步骤五、判断iMinDist是否大于缓冲区申请阈值,且节目拥有的缓冲区数小于缓冲区数量上限,判断结果为是,则执行步骤六;判断结果为否,则丢弃所述节目数据包不做任何处理,返回步骤一接收下一个节目数据包;步骤六、申请新的缓冲区,并且做如下赋值:PInBuffer=新申请缓冲区;步骤七、将所述节目数据包中的新数据存入缓冲区PInBuffer中,并返回缓冲区PInBuffer中第一块连续字节数据的字节数、首字节指针,将节目数据包中的下载数据的偏移量范围记录到该节目的下载日志中,并将节目生命周期重新置为初始值k;步骤八、调用分析处理程序,从缓冲区PInBuffer中将排好序的连续字节数据取出,分析处理程序返回取出的字节数m;步骤九、判断条件m>0是否成立,判断结果为是,执行步骤十,判断结果为否,结束本次操作,返回步骤一接收下一个节目数据包;步骤十、删除缓冲区PInBuffer中的前m个字节数据,并更新缓冲区PInBuffer的状态信息;重复执行步骤一至步骤十,同时将节目的生命周期做减法操作,直至该节目的生命周期小于等于0,表示该节目下载完毕,释放该节目所占用的缓冲区,完成对该节目的数据缓存排序的在线处理。
地址 150001 黑龙江省哈尔滨市南岗区西大直街92号