遍历计时器的方法及装置制造方法及图纸

技术编号:15052658 阅读:126 留言:0更新日期:2017-04-05 23:26
本发明专利技术公开了一种遍历计时器的方法及装置,涉及互联网技术领域,为解决计时器遍历效率低下的问题而发明专利技术。本发明专利技术的方法包括:构建计时器二叉树,计时器二叉树的节点数值为计时器的到时时刻值,节点数值大于父节点数值的子节点为父节点的右子节点,节点数值小于父节点数值的子节点为父节点的左子节点;从根节点开始遍历,查找节点数值小于等于当前时刻值的目标节点;关闭目标节点对应的计时器。本发明专利技术主要用于对服务器内存使用的计时器进行遍历。

【技术实现步骤摘要】

本专利技术涉及互联网
,尤其涉及一种遍历计时器的方法及装置
技术介绍
终端在向服务器请求数据时,服务器会对数据库进行访问,从数据库中获取终端请求的数据内容并返回给终端。由于每次请求都会访问数据库,因此当请求并发数较大时,会对数据库造成比较大的访问压力。为降低数据库的访问压力,工程人员对现有技术进行了改进,将从数据库中获取的数据缓存在服务器内存中。当终端发起数据请求时,服务器在内存中查找终端请求的数据,如果查找到该数据则直接返回给终端,由此减少数据库的访问次数。通常,服务器端内存资源是十分宝贵的,无法将数据永久地存储在服务器内存中。因此现有技术为内存中的数据建立了有效期机制,即为不同的数据设置不同的有效期,这个有效期是一个时长值,用以表征数据在内存中保存的时间长短。为监控数据是否过期,服务器需要为内存中的每条数据设置一个计时器(Timer),将上述有效期时长设置为计时器的计时时长。如果计时器到时,则触发计时器事件,将对应的数据从内存中删除。为及时释放计时器任务,节省服务器的处理资源,服务器需要定期对计时器进行遍历,查找并关闭到时的计时器。通常服务器遍历计时器的周期为计时器的最小计时单位,例如1秒或10毫秒。也就是说,服务器会每隔1秒(甚至更短)对内存中所有的计时器进行一次遍历。现有技术中,计时器列表是按照计时器建立的先后顺序对所有计时器进行保存的。服务器每次遍历计时器时,都需要将当前的系统时刻值与计时器列表中的每一个计时器的到时时刻值进行一次比对,关闭到时时刻值小于当前系统时刻值的计时器。这种遍历计时器的方式效率非常低,实际应用中,当服务器内存中保存的数据较多时(例如十万甚至百万级别的数据),服务器每次都需要对十万百万个计时器进行遍历,这会占用服务器的大量处理资源,严重影响服务器性能。
技术实现思路
本专利技术提供了一种遍历计时器的方法及装置,能够解决计时器遍历效率低下的问题。为解决上述问题,一方面,本专利技术提供了一种遍历计时器的方法,该方法包括:构建计时器二叉树,计时器二叉树的节点数值为计时器的到时时刻值,节点数值大于父节点数值的子节点为父节点的右子节点,节点数值小于父节点数值的子节点为父节点的左子节点;从根节点开始遍历,查找节点数值小于等于当前时刻值的目标节点;关闭目标节点对应的计时器。另一方面,本专利技术还提供了一种遍历计时器的装置,该装置包括:构建单元,用于构建计时器二叉树,计时器二叉树的节点数值为计时器的到时时刻值,节点数值大于父节点数值的子节点为父节点的右子节点,节点数值小于父节点数值的子节点为父节点的左子节点;遍历单元,用于从根节点开始遍历,查找节点数值小于等于当前时刻值的目标节点;处理单元,用于关闭目标节点对应的计时器。本专利技术提供的遍历计时器的方法及装置,能够根据计时器到时时刻值的大小构建计时器二叉树,其中,节点数值大于父节点数值的子节点为父节点的右子节点,节点数值小于父节点数值的子节点为父节点的左子节点。在遍历计时器时,通过对计时器二叉树的遍历查找到时的计时器。本专利技术中,计时器二叉树根据节点数值的大小构建左右分支,当遍历到计时器到时的节点时,可以将该节点左侧分支的所有下级节点全部确定为目标节点,而无需继续对这些节点依次进行遍历。与现有技术相比,本专利技术能够大大减少计时器的遍历次数,提高计时器的遍历效率,节省服务器的处理资源。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1示出了本专利技术实施例提供的一种遍历计时器的方法流程图;图2a示出了本专利技术实施例提供的一种在计时器二叉树中新增节点的示意图;图2b示出了本专利技术实施例提供的一种遍历计时器二叉树的示意图;图3示出了本专利技术实施例提供的另一种遍历计时器的方法流程图;图4a示出了本专利技术实施例提供的一种计时器二叉树的示意图;图4b示出了本专利技术实施例提供的另一种在计时器二叉树中新增节点的示意图;图4c示出了本专利技术实施例提供的又一种在计时器二叉树中新增节点的示意图;图4d示出了本专利技术实施例提供的一种对计时器二叉树进行重新排序的示意图;图5示出了本专利技术实施例提供的一种遍历计时器的装置的组成框图;图6示出了本专利技术实施例提供的另一种遍历计时器的装置的组成框图。具体实施方式下面将参照附图更详细地描述本专利技术公开的示例性实施例。虽然附图中显示了本专利技术公开的示例性实施例,然而应当理解,可以以各种形式实现本专利技术公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本专利技术,并且能够将本专利技术公开的范围完整的传达给本领域的技术人员。本专利技术实施例提供了一种遍历计时器的方法,该方法应用于服务器一侧,主要用于对服务器内存使用的计时器进行遍历。如图1所示,该方法包括:101、构建计时器二叉树。服务器为每一条缓存的数据对应启动一个计时器,计时器的启动时刻为数据存入到内存中的时刻,计时器的计时时长为数据的有效时长,而数据的有效时长又由数据的重要程度、请求频率等因素决定,从几秒钟到几个小时不等,不同数据的计时时长可以不同。从计时器的启动时刻开始,经过计时时长后的时刻值,为计时器的到时时刻值。例如某条数据在13:04:12存入到内存中,服务器在13:04:12启动计时器,计时器的计时时长为1分钟,那么计时器的到时时刻值为13:05:12。本实施例中,服务器创建计时器二叉树,该二叉树用于记录所有计时器的到时时刻值。其中,二叉树的节点数量与服务器启动的计时器数量相同,每个节点用于记录一个计时器的到时时刻值。在节点排序上,本实施例采用“左小右大”的规则(实际应用中也可以使用“左大右小”规则),从二叉树的根节点开始遍历,将节点数值比父节点小的子节点,排列在父节点的左侧分支,将节点数值比父节点大的子节点,排列在父节点的右侧分支。每当新启动一个计时器时,服务器就从根节点开始进行一次遍历,确定新增节点的位置,将新增节点添加到计时器二叉树中本文档来自技高网
...

【技术保护点】
一种遍历计时器的方法,其特征在于,所述方法包括:构建计时器二叉树,所述计时器二叉树的节点数值为计时器的到时时刻值,节点数值大于父节点数值的子节点为所述父节点的右子节点,节点数值小于父节点数值的子节点为所述父节点的左子节点;从根节点开始遍历,查找节点数值小于等于当前时刻值的目标节点;关闭所述目标节点对应的计时器。

【技术特征摘要】
1.一种遍历计时器的方法,其特征在于,所述方法包括:
构建计时器二叉树,所述计时器二叉树的节点数值为计时器的到时时
刻值,节点数值大于父节点数值的子节点为所述父节点的右子节点,节点
数值小于父节点数值的子节点为所述父节点的左子节点;
从根节点开始遍历,查找节点数值小于等于当前时刻值的目标节点;
关闭所述目标节点对应的计时器。
2.根据权利要求1所述的方法,其特征在于,所述构建计时器二叉树,
包括:
当新增计时器时,从所述根节点开始进行遍历;
若新增节点的节点数值小于当前节点的节点数值,则向左继续遍历;
若新增节点的节点数值大于当前节点的节点数值,则向右继续遍历;
当遍历到最后一级节点时,增加所述新增节点;
若新增节点的节点数值等于当前节点的节点数值,则将所述当前节点
确定为所述新增计时器的节点。
3.根据权利要求1所述的方法,其特征在于,所述从根节点开始遍历,
查找节点数值小于等于当前时刻值的目标节点,包括:
若当前节点的节点数值小于等于所述当前时刻值,则将所述当前节点
以及所述当前节点左侧分支的所有下级节点,确定为所述目标节点;
继续遍历所述当前节点右侧分支的下级节点。
4.根据权利要求3所述的方法,其特征在于,所述从根节点开始遍历,
查找节点数值小于等于当前时刻值的目标节点,包括:
若当前节点的节点数值大于所述当前时刻值,则继续遍历所述当前节
点左侧分支的下级节点。
5.根据权利要求1所述的方法,其特征在于,所述关闭所述目标节点
对应的计时器,包括:
获取所述目标节点的节点标识;
查找对应所述节点标识的计时器标识;
根据所述计时器标识查找待关闭的计时器;...

【专利技术属性】
技术研发人员:艾菲
申请(专利权)人:北京奇虎科技有限公司北京奇安信科技有限公司
类型:发明
国别省市:北京;11

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

1