一种数据结构的管理方法和装置
技术领域
本发明涉及通信领域,具体来说,涉及一种数据结构的管理方法和装置。
背景技术
随着网络的飞速发展,网络环境越来越复杂,在网络中传输的数据越难保证其原始顺序,同时,服务器已连接的数据结构上通常采用顺序表结构,针对顺序表的插入、删除等操作时间复杂度为O(n),其中,n为线性表的长度,但是,并发服务器采用顺序表结构存储已连接客户端时,该顺序表结构的效率不够高效。
同时,淘汰策略通常采用LRU(Least Recently Used近期最少使用)算法,以断开最长时间没有数据传输的连接,但是,该淘汰算法有可能删除(淘汰)由于网络堵塞等原因造成的数据长时间没有到达的连接,另外该淘汰算法没有考虑数据传输数量对传输的影响,同时在DDos(Distributed Denial of Service分布式拒绝服务)攻击的时候,该算法也容易把活跃的有效的连接删除。
针对相关技术中的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中的问题,本发明提出一种数据结构的管理方法和装置。
本发明的技术方案是这样实现的:
根据本发明的一个方面,提供了一种数据结构的管理方法。
该管理方法包括:
获取链表中m个链表项的信息,其中,m为正整数;
根据m个链表项的信息,获取m个链表项的活跃度;
比较m个链表项的活跃度,删除活跃度最小的链表项。
根据本发明的一个实施例,链表项的信息包括:
创建时间T0、活跃时间T1、当前时间T2、接收字节数N1、发送字节数N2。
根据本发明的一个实施例,活跃时间为客户端与服务器最后一次的通信时间。
根据本发明的一个实施例,进一步包括:
根据m个链表项的信息,获得m个链表项的传输速率;
比较m个链表项的传输速率,获取最小传输速率Vmin。
根据本发明的一个实施例,进一步包括:
其中,Am为当前链表项的活跃度,Vm为当前链表项的传输速率。
根据本发明的一个实施例,在获取链表中m个链表项的信息之前包括:
步骤S1,确定链表中链表项是否达到最大连接个数n;
步骤S2,在链表项达到最大连接个数n的情况下,获取链表中m个链表项的信息;
步骤S3,在链表项未达到最大连接个数n的情况下,将新的链接项添加至链表中。
根据本发明的另一方面,提供了一种数据结构的管理装置。
该管理装置包括:
第一获取模块,用于获取链表中m个链表项的信息,其中,m为正整数;
第二获取模块,用于根据m个链表项的信息,获取m个链表项的活跃度;
比较删除模块,用于比较m个链表项的活跃度,删除活跃度最小的链表项。
根据本发明的一个实施例,链表项的信息包括:
创建时间T0、活跃时间T1、当前时间T2、接收字节数N1、发送字节数N2。
根据本发明的一个实施例,活跃时间为服务器与客户端最后一次的通信时间。
根据本发明的一个实施例,活跃度获取模块包括:
其中,Am为当前链表项的活跃度,Vm为当前链表项的传输速率,Vmin为m个链表项的最小传输速率。
本发明的有益技术效果在于:
1)、本发明通过获取链表中m个链表项的信息,并根据m个链表项的信息,获取m个链表项的活跃度,以及比较m个链表项的活跃度,删除活跃度最小的链表项,本发明根据活跃度进行链表项的删除操作(即淘汰策略),既考虑了时间因素,又考虑了数据传输的因素,避免删除由于网络堵塞等原因造成的数据长时间没有到达的连接或有效连接;
2)、本发明通过采用链表数据结构,方便进行链表项的删除、插入等操作。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的一种数据结构的管理方法的流程图;
图2是根据本发明实施例的数据结构的管理方法的流程图;
图3是根据本发明实施例的一种数据结构的管理装置的框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
根据本发明的实施例,提供了一种数据结构的管理方法。
如图1所示,根据本发明实施例的管理方法包括:
步骤S101,获取链表中m个链表项的信息,其中,m为正整数;
步骤S103,根据m个链表项的信息,获取m个链表项的活跃度;
步骤S105,比较m个链表项的活跃度,删除活跃度最小的链表项。
通过本发明的上述方案,通过获取链表中m个链表项的信息,并根据m个链表项的信息,获取m个链表项的活跃度,以及比较m个链表项的活跃度,删除活跃度最小的链表项,本发明根据活跃度进行链表项的删除操作(即淘汰策略),既考虑了时间因素,又考虑了数据传输的因素,避免删除由于网络堵塞等原因造成的数据长时间没有到达的连接或有效连接。
根据本发明的一个实施例,链表项的信息包括:
创建时间T0、活跃时间T1、当前时间T2、接收字节数N1、发送字节数N2。
根据本发明的一个实施例,活跃时间为客户端与服务器最后一次的通信时间。
根据本发明的一个实施例,进一步包括:
根据m个链表项的信息,获得m个链表项的传输速率;
比较m个链表项的传输速率,获取最小传输速率Vmin。
根据本发明的一个实施例,进一步包括:
其中,Am为当前链表项的活跃度,Vm为当前链表项的传输速率。
根据本发明的一个实施例,在获取链表中m个链表项的信息之前包括:
步骤S1,确定链表中链表项是否达到最大连接个数n;
步骤S2,在链表项达到最大连接个数n的情况下,获取链表中m个链表项的信息;
步骤S3,在链表项未达到最大连接个数n的情况下,将新的链接项添加至链表中。
为了更好的理解本发明,下面以一个具体的实施例进行描述。
如图2所示,该实施例的具体步骤如下:
(1)、初始化服务器的已连接的单链表,初始化后该链表长度为0,链表的最大长度为服务器允许最大连接个数,该个数可以根据实际需求进行设定,如:链表中具有100个链表项,本发明对此不作限定;
(2)、监听端口,如:在服务器和客户端连接的同时,监听传输层的端口;
(3)、查看该链表长度是否达到最大长度,即链表中链表项是否达到最大个数,如果没有,则转到(6),否则转到(4);
、遍历链表,根据连接链表项中信息,如创建时间、活跃时间、当前时间、接收字节数、发送字节数,根据上述信息计算已连接的链表项的活跃度,得到已连接链表项中活跃度最小的链表项,如:链表的最大连接个数为100个,获取100个链表项各自的信息,根据上述信息,计算100个链表项的活跃度,随后比较100个链表项的大小,得到活跃度最小的链表项。
此外,任意一个已经链表项“活跃度”的计算过程如下:
数据传输数量=接收字节数+发送字节数;
传输速率=数据传输数量/(当前时间-创建时间);
活跃度=(当前时间-创建时间)/(当前时间-活跃时间)+传输速率/最小传输速率,其中等号右边的两项可以进行加权;
其中,每个链表项至少维护下面的信息:创建时间、活跃时间、当前时间、接收字节数、发送字节数,其中,活跃时间为客户端与服务器最后一次的通信时间,根据上述信息,每个链表项就可以计算出数据传输量及传输速率,同时,最小传输速率是已连接的链表项中的最小传输速率。
(4)、删除活跃度最小的链表项,即关闭该链表项对应的连接,对应地,释放内存资源;
(5)、在需创建链表项的情况下,将新的链表项加入至该链表中,在链表项中记录连接创建时间,同时,链表长度加1;
(6)、在服务器和客户端通信的过程中,将数据传输量、活跃时间等信息保存在链表项中。
根据本发明的实施例,还提供了一种数据结构的管理装置。
如图3所示,根据本发明实施例的管理装置包括:
第一获取模块31,用于获取链表中m个链表项的信息,其中,m为正整数;
第二获取模块32,用于根据m个链表项的信息,获取m个链表项的活跃度;
比较删除模块33,用于比较m个链表项的活跃度,删除活跃度最小的链表项。
根据本发明的一个实施例,链表项的信息包括:
创建时间T0、活跃时间T1、当前时间T2、接收字节数N1、发送字节数N2。
根据本发明的一个实施例,活跃时间为服务器与客户端最后一次的通信时间。
根据本发明的一个实施例,活跃度获取模块(未示出)包括:
其中,Am为当前链表项的活跃度,Vm为当前链表项的传输速率,Vmin为m个链表项的最小传输速率。
综上所述,借助于本发明的上述技术方案,通过获取链表中m个链表项的信息,并根据m个链表项的信息,获取m个链表项的活跃度,以及比较m个链表项的活跃度,删除活跃度最小的链表项,本发明根据活跃度进行链表项的删除操作,即淘汰策略即考虑了时间因素、也考虑了数据传输的因素,避免了删除由于网络堵塞等原因造成的数据长时间没有到达的连接或有效连接的情况。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。