CN113672248A - 一种补丁获取方法、装置、服务端及存储介质 - Google Patents

一种补丁获取方法、装置、服务端及存储介质 Download PDF

Info

Publication number
CN113672248A
CN113672248A CN202010407184.9A CN202010407184A CN113672248A CN 113672248 A CN113672248 A CN 113672248A CN 202010407184 A CN202010407184 A CN 202010407184A CN 113672248 A CN113672248 A CN 113672248A
Authority
CN
China
Prior art keywords
data
patch
cached
cache
key information
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.)
Pending
Application number
CN202010407184.9A
Other languages
English (en)
Inventor
张磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN202010407184.9A priority Critical patent/CN113672248A/zh
Publication of CN113672248A publication Critical patent/CN113672248A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例公开了一种补丁获取方法、装置、服务端及存储介质。该方法包括:在监测到获取补丁的触发事件时,获取与触发事件对应的键信息;从缓存于缓存区的各已缓存数据中,获取与键信息对应的补丁数据;其中,已缓存数据基于预先构建的缓存数据通道缓存于缓存区中,缓存数据通道通过如下步骤实现数据缓存功能:获取待构造的已缓存数据的键信息,将键信息传递至预先构建的补丁读取函数中,根据补丁读取函数的输出结果得到补丁数据;基于键信息和补丁数据,以键值对方式构造出已缓存数据;将已构造的已缓存数据缓存于缓存区中。本发明实施例的技术方案,基于缓存数据通道将补丁数据预先缓存于缓存区中,提高了补丁数据的获取效率和并发访问量。

Description

一种补丁获取方法、装置、服务端及存储介质
技术领域
本发明实施例涉及计算机应用技术领域,尤其涉及一种补丁获取方法、装置、服务端及存储介质。
背景技术
在Android系统中,现有的补丁获取方案是先和数据库建立连接,再基于已建立连接从数据库中读取补丁数据。但是,这一方案较为耗时且效率低下,特别地,因为可建立的连接的数量存在限制,其在高并发场景下会导致补丁数据获取耗时的大幅度增加。
发明内容
本发明实施例提供了一种补丁获取方法、装置、服务端及存储介质,解决了Android补丁数据的获取效率较低的问题。
第一方面,本发明实施例提供了一种补丁获取方法,可以包括:
在监测到获取补丁的触发事件时,获取与触发事件对应的键信息;
从缓存于缓存区的各已缓存数据中,获取与键信息对应的补丁数据;
其中,已缓存数据基于预先构建的缓存数据通道缓存于缓存区中,缓存数据通道通过如下步骤实现数据缓存功能:
获取待构造的已缓存数据的键信息,将键信息传递至预先构建的补丁读取函数中,根据补丁读取函数的输出结果得到补丁数据;
基于键信息和补丁数据,以键值对方式构造出已缓存数据;
将已构造的已缓存数据缓存于缓存区中。
可选的,补丁读取函数可以通过如下步骤实现补丁读取功能:
若键信息与补丁数据的标识信息匹配,则基于键信息获取补丁数据的发布通道信息,其中,发布通道信息包括编码信息;
根据编码信息读取补丁数据,并输出补丁数据。
可选的,根据编码信息读取补丁数据,并输出补丁数据,可以包括:
根据编码信息读取出补丁数据,若补丁数据为空,则输出空对象信息,否则输出补丁数据。
可选的,根据编码信息读取补丁数据,可以包括:
若内存区中存在与编码信息对应的补丁数据,则根据编码信息从内存区中读取补丁数据;否则,根据编码信息从数据库中读取补丁数据。
可选的,上述补丁获取方法,还可以包括:
基于预先构建的已设置预设注解的初始化函数初始化缓存数据通道,以使缓存数据通道实现数据缓存功能,其中,预设注解用于表示在执行构造函数后立即执行初始化函数。
可选的,初始化函数可以通过如下步骤实现缓存数据通道的初始化功能:
获取缓存数据通道的已设置的最大容量,若已缓存数据的数据量超过最大容量,则基于预设的最近最少使用算法移除已缓存数据。
可选的,已缓存数据可以包括LoadingCache类型的数据,键信息可以包括String类型的数据,和/或,补丁数据可以包括Optional<Object>类型的数据。
第二方面,本发明实施例还提供了一种补丁获取装置,该装置可以包括:
键信息获取模块,用于在监测到获取补丁的触发事件时,获取与该触发事件对应的键信息;
补丁数据获取模块,用于从缓存于缓存区的各已缓存数据中,获取与键信息对应的补丁数据,其中,已缓存数据基于预先构建的缓存数据通道缓存于缓存区中,缓存数据通道通过数据缓存模块实现数据缓存功能;
数据缓存模块,用于获取待构造的已缓存数据的键信息,将键信息传递至预先构建的补丁读取函数中,根据补丁读取函数的输出结果得到补丁数据;基于键信息和补丁数据,以键值对方式构造出已缓存数据;将已构造的已缓存数据缓存于缓存区。
第三方面,本发明实施例还提供了一种服务端,该服务端可以包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本发明任意实施例所提供的补丁获取方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例所提供的补丁获取方法。
本发明实施例的技术方案,在监测到获取补丁的触发事件时,因为各补丁数据已基于预先构建的缓存数据通道缓存于缓存区中,由此,可以从缓存于缓存区的以键值对方式构造出的各已缓存数据中,直接获取到与触发事件对应的键信息所对应的补丁数据,该补丁数据是已缓存数据的值信息。上述技术方案,基于缓存数据通道可以将补丁数据预先缓存于缓存区中,由此,在无需建立任何连接的情况下,可以直接从缓存区中获取相应的补丁数据,提高了Android补丁数据的获取效率和并发访问量。
附图说明
图1是本发明实施例一中的一种补丁获取方法的流程图;
图2是本发明实施例二中的一种补丁获取方法的流程图;
图3是本发明实施例三中的一种补丁获取装置的结构框图;
图4是本发明实施例四中的一种服务端的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在介绍本发明实施例之前,先对本发明实施例的应用场景进行示例性说明:为提高Android补丁数据的获取效率,一个可选方案是先将存储于数据库和/或内存区中的补丁数据缓存于缓存区中,再从缓存区中获取补丁数据。
由此,考虑到缓存区中各补丁数据是一个数据集合,为保证补丁数据的获取效率,可以基于键值对方式构造出已缓存数据,该已缓存数据由键信息和值信息构成,该键信息是为有效辨别各补丁数据而设置的信息,该值信息即为补丁数据。可选的,已缓存数据可以是一种LoadingCache类型的数据,其实质上是一个Map结构,但是在Map结构上增加了数据自动维护功能,可以实现数据的自动添加、自动移除等等操作。在此基础上,键值对中的键信息(key)可以是整数类型、String类型等等,需要说明的是,相对于容易出现因含义不明确而难以对补丁数据进行有效辨别的整数类型,String类型能够摒弃数字含义不清的缺陷,极大地提高了key的辨别度。另外,键值对中的值信息即为补丁数据,考虑到补丁数据具有多种数据类型,可以基于Objec类型对各种数据类型进行承载。但是,Objec类型对空是非安全的,这可能会降低后续补丁数据获取操作的安全性和稳定性,因此,可在Object类型的最外层套上一个Optional类型,Optional类型能够有效解决对空不安全的问题。
综上,已缓存数据可以是LoadingCache<String,Optional<Object>>类型的数据,即,已缓存数据可以定义为private LoadingCache<String,Optional<Object>>loadingCache。需要说明的是,上述LoadingCache类型的已缓存数据、String类型的键信息和Optional<Object>类型的补丁数据均是示例性说明,它们也可以是其余类型的数据,在此未做具体限定。
实施例一
图1是本发明实施例一中提供的一种补丁获取方法的流程图。本实施例可适用于从缓存区中获取补丁数据的情况,该缓存器是基于预先构建的缓存数据通道管理的缓存区。该方法可以由本发明实施例提供的补丁获取装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在各种服务端上。
参见图1,本发明实施例的方法具体包括如下步骤:
S110、获取待构造的已缓存数据的键信息,将键信息传递至预先构建的补丁读取函数中,根据补丁读取函数的输出结果得到补丁数据;基于键信息和补丁数据,以键值对方式构造出已缓存数据;将已构造的已缓存数据缓存于缓存区中,其中,本步骤可基于预先构建的缓存数据通道实现。
其中,已缓存数据的构造过程和缓存过程均可基于缓存数据通道实现,可选的,上述构造过程和/或缓存过程可在缓存数据通道的初始化时实现,这一初始化过程可以在服务端启动且部署好相应环境后执行,也可以在首次监测到获取补丁数据的触发事件且部署好相应环境后执行,等等,在此未做具体限定。另外,补丁读取函数的入参参数是键信息,出参参数是补丁数据。
S120、在监测到获取补丁的触发事件时,获取与触发事件对应的键信息。
其中,触发事件可以是服务端监测到的来源于某个请求方的用于请求获取补丁数据的触发事件,根据该触发事件可以获取相应的key,key可以呈现出该请求方的基本信息。示例性的,以请求方为移动终端中某应用程序为例,移动终端在启动该应用程序时,可将其基本信息通过参数形式发送给服务端;服务端在接收到这些参数之后,可以对它们进行拼装以生成key,key可以呈现出该应用程序是什么应用程序、当前版本信息等等基本信息。
S130、从缓存于缓存区的各已缓存数据中,获取与键信息对应的补丁数据。
其中,由于缓存于缓存区的各已缓存数据是以键值对方式构造出的数据,其中的key是为有效辨别各补丁数据而设置的信息,值信息即为补丁数据,因此,根据key可以判断出各已缓存数据中是否存在与key对应的补丁数据,若是则可以从缓存区中获取到该补丁数据。示例性的,继续以上述例子为例,根据key判断各已缓存数据中是否存在与该应用程序的该当前版本信息对应的补丁数据,若是则读取出该补丁数据,且将该补丁数据返回给移动终端,以使移动终端根据接收到的补丁数据进行应用升级。
需要说明的是,数据库通常存储于外部存储器中,由此,相对于数据库和内存区,缓存区的数据读取速度是最快的,且CPU在运行时也会先去自身的缓存区中查找数据,若没有再去内存区中查找数据,而数据库中的数据需要先写入内存区后方能被CPU读取。也就是说,上述技术方案,一方面,因为补丁数据已预先缓存于缓存区中,由此,可直接从缓存区中读取补丁数据,相对于现有的从数据库中读取补丁数据的技术方案,其有效缩短了补丁获取时间且提高了补丁获取效率。另一方面,因为是从缓存区中读取补丁数据,这一读取过程无需建立任何连接,这意味着数据读取过程不再受到连接数量的限制,可同时读取多个补丁数据,极大地提高了并发访问量。
本发明实施例的技术方案,在监测到获取补丁的触发事件时,因为各补丁数据已基于预先构建的缓存数据通道缓存于缓存区中,由此,可以从缓存于缓存区的以键值对方式构造出的各已缓存数据中,直接获取到与触发事件对应的键信息所对应的补丁数据,该补丁数据是已缓存数据的值信息。上述技术方案,基于缓存数据通道可以将补丁数据预先缓存于缓存区中,由此,在无需建立任何连接的情况下,可以直接从缓存区中获取相应的补丁数据,提高了Android补丁数据的获取效率和并发访问量。
一种可选的技术方案,上述补丁获取方法,还可以包括:基于预先构建的已设置预设注解的初始化函数初始化缓存数据通道,以使缓存数据通道实现数据缓存功能,该预设注解用于表示在执行构造函数后立即执行初始化函数。其中,初始化函数通常在当前类实例化时被调用,一种可选方案是在多个构造函数中直接调用初始化函数以实现初始化功能,但是,该方案会导致频繁编写调用初始化函数的逻辑效率和性能比较低下。为解决这一问题,一种可选方案是在初始化函数上编写用于表示在执行构造函数后立即执行该初始化函数的预设注解,由此,当存在多个构造函数时,也可只编写一个初始化函数且无需手动编写调用逻辑即可完成任何情况下的初始化功能,这可极大地提高了开发效率且降低了错误发生的可能性。示例性的,假设初始化函数的函数名称是init,则已设置@PostConstruct的初始化函数可以表示为@PostConstruct void init(){}。
在此基础上,初始化函数可以通过如下步骤实现缓存数据通道的初始化功能:获取缓存数据通道的已设置的最大容量,若已缓存数据的数据量超过最大容量,则基于预设的最近最少使用(Least Recently Used,LRU)算法移除至少一个已缓存数据,由此实现了缓存区中已缓存数据的自动删除。当然,除上述内容外,初始化函数还可通过其余步骤实现缓存数据通道的初始化功能,例如,设置并发级别,该并发级别用于表示同时写缓存的线程数,设置数据过期时限、缓存对象失效的时间精度、缓存容器的初始容量和最大容量、待统计缓存的命中率,等等,在此未做具体限定。
实施例二
图2是本发明实施例二中提供的一种补丁获取方法的流程图。本实施例以上述各技术方案为基础进行优化。在本实施例中,可选的,补丁读取函数可以通过如下步骤实现补丁读取功能:若键信息与补丁数据的标识信息匹配,则基于键信息获取补丁数据的发布通道信息,其中,发布通道信息包括编码信息;根据编码信息读取补丁数据,并输出补丁数据。其中,与上述各实施例相同或相应的术语的解释在此不再赘述。
参见图2,本实施例的方法具体可以包括如下步骤:
S210、获取待构造的已缓存数据的键信息,将键信息传递至预先构建的补丁读取函数中,以使补丁读取函数在键信息与补丁数据的标识信息匹配时,基于键信息获取补丁数据的发布通道信息,并根据发布通道信息中的编码信息读取补丁数据,输出补丁数据;根据补丁读取函数的输出结果得到补丁数据,基于键信息和补丁数据,以键值对方式构造出已缓存数据;将已构造的已缓存数据缓存于缓存区中,本步骤可基于预先构建的缓存数据通道实现。
其中,在获取补丁数据之前,可先判断内存区和/或数据库中是否存储有与键信息完全匹配的标识信息,该标识信息用于唯一标识某补丁数据,其可以是编码信息、包名、类名、发布通道等等内容融合后的数据。这一判断过程可以通过比较两个字符串是否相同的方式实现,也可以采用StringUtils.equals()比较两个字符串的方式实现,相对于前者,后者的判断效率更高,且在空字符串比较时不容易出现问题。需要说明的是,可发布补丁数据的发布通道存在多个,比如渠道投放通道、全量投放通道、设备ID投放通道等等,上述标识信息即为某个发布通道下的标识信息,由此,在键信息和标识信息匹配成功后,可基于该键信息获取到该发布通道下的补丁数据的发布通道信息,该发布通道信息包括编码信息,该编码信息是后续获取补丁数据的关键入口。
进一步,可以根据编码信息读取补丁数据,并根据读取结果输出补丁数据。在此基础上,可选的,在根据编码信息读取补丁数据时,可以先在内存区中查找与编码信息对应的补丁数据,若查找成功则可从内存区中读取该补丁数据;否则,这说明CPU还未将该补丁数据从数据库中写入内存区中,则可以从数据库中读取该补丁数据。再可选的,在根据编码信息读取出补丁数据后,可先判断该补丁数据是否为空,若是则可输出空对象信息,否则可输出补丁数据。
S220、在监测到获取补丁的触发事件时,获取与触发事件对应的键信息。
S230、从缓存于缓存区的各已缓存数据中,获取与键信息对应的补丁数据。
本发明实施例的技术方案,在获取补丁数据之前,可先判断内存区和/或数据库中是否存储有与键信息完全匹配的标识信息,该标识信息用于唯一标识某补丁数据,其可以是编码信息、包名、类名、发布通道等等内容融合后的数据;因此,在键信息与补丁数据的标识信息匹配时,补丁读取函数可以基于键信息获取补丁数据的发布通道信息,该发布通道信息包括编码信息,该编码信息是后续获取补丁数据的关键入口,这样一来,补丁读取函数根据编码信息可以读取出对应的补丁数据,由此实现了补丁读取功能。
为了更好地理解上述步骤的具体实现过程,下面结合具体示例,对本实施例的补丁获取方法中与缓存数据通道相关的内容进行示例性说明。示例性的,通过设置缓存数据通道以实现缓存自动管理功能,在此基础上,通过设置初始化函数init()可以实现缓存数据通道的初始化。具体的,初始化函数如下所示:
Figure BDA0002491751770000101
Figure BDA0002491751770000111
其中,在初始化过程中,首先通过调用CacheBuilder.newBuilder()构建一个builder对象,然后对builder对象进行参数设置。具体的,考虑到写缓存的并发问题,通过调用concurrencyLevel(4)函数设置并发级别为4,并发级别是可以同时写缓存的线程数;考虑到数据过期的实现问题,通过调用expireAfterWrite(LOCAL_CACHE_TTL_SECONDS,TimeUnit.SECONDS)设置写缓存后数据永不过期,其中LOCAL_CACHE_TTL_SECONDS是一个最大整数;通过调用ticker(Ticker.systemTicker())设置缓存对象失效的时间精度为纳秒级;通过调用initialCapacity(LOCAL_CACHE_INIT_CAPACITY)设置缓存容器的初始容量为500;通过调用maximumSize(LOCAL_CACHE_MAX_CAPACITY)设置缓存最大容量为10000,超过10000之后按照LRU算法移除缓存项,该缓存容器即为缓存数据通道,该缓存项即为已缓存数据;通过调用recordStats()设置待统计缓存的命中率;通过调用removalListener(notification->log.debug("AndroidPatchServiceImpl:{}was removed,cause is{}",notification.getKey(),notification.getCause()))实现对移除数据的监听并写入到日志文件中;最后通过调用build(new CacheLoader<String,Optional<Object>>()实现待构造的已缓存数据的构造,由此完成了缓存数据通道的设置。
进一步,补丁数据的获取逻辑是在缓存数据通道的build函数内部实现的,这样方能将补丁数据托管到缓存区中。为了实现数据获取逻辑,可单独封装一个补丁读取函数loadPatchInfo实现数据获取功能,补丁读取函数定义如下:
private Optional<Object>loadPatchInfo(String key){
}
该补丁读取函数的入参参数是一个String类型的key,值(即,出参参数)是一个Optional<Object>类型的补丁数据,由此可以通过不同的key获取多种类型的补丁数据。接下来详细描述一下loadPatchInfo内部的实现逻辑。
需要说明的是,可发布补丁数据的发布通道有多个,比如渠道投放通道、全量投放通道、设备ID投放通道等等,各发布通道下的补丁数据的获取逻辑类似,在此以全量投放通道为例,在获取补丁数据前,通过采用StringUtils.equals(key,target)匹配出key与全量投放模式下的targe时,可通过调用return Optional.of(redisService.getObject(key,PublishAreaPatch.class));返回获取到的全量投放的数据对象,PublishAreaPatch表示全量投放的发布通道信息,将其标记为PublishAreaPatch publishAreaPatch,变量publishAreaPatch包括一个核心信息patchId(即,编码信息),patchId是后续获取补丁数据(patch)的关键入口。进一步,AndroidHotPatch androidHotPatch=redisService.hget(patchId,AndroidHotPatch.class);通过调用redisService.hget(patchId,AndroidHotPatch.class);获取到一个补丁类型AndroidHotPatch的补丁数据androidHotPatch,接下来可通过调用androidHotPatch==null判定androidHotPatch是否为空。如果为空,此时可以通过调用return Optional.empty();直接返回一个优化的空对象信息;否则,可通过调用return Optional.of(androidHotPatch);直接将获取到的补丁数据返回出去,由此实现了通过缓存数据通道实现补丁数据获取的功能。
实施例三
图3为本发明实施例三提供的补丁获取装置的结构框图,该装置用于执行上述任意实施例所提供的补丁获取方法。该装置与上述各实施例的补丁获取方法属于同一个发明构思,在补丁获取装置的实施例中未详尽描述的细节内容,可以参考上述补丁获取方法的实施例。参见图3,该装置具体可包括:数据缓存模块310、键信息获取模块320和补丁数据获取模块330。
其中,数据缓存模块310,用于获取待构造的已缓存数据的键信息,将键信息传递至预先构建的补丁读取函数中,根据补丁读取函数的输出结果得到补丁数据;基于键信息和补丁数据,以键值对方式构造出已缓存数据;将已构造的已缓存数据缓存于缓存区;
键信息获取模块320,用于在监测到获取补丁的触发事件时,获取与触发事件对应的键信息;
补丁数据获取模块330,用于从缓存于缓存区的各已缓存数据中,获取与键信息对应的补丁数据,其中,已缓存数据基于预先构建的缓存数据通道缓存于缓存区中,缓存数据通道通过上述数据缓存模块实现数据缓存功能。
可选的,数据缓存模块310,具体可以包括:
数据缓存单元,用于获取待构造的已缓存数据的键信息,将键信息传递至预先构建的补丁读取函数中,以使补丁读取函数在键信息与补丁数据的标识信息匹配时,基于键信息获取补丁数据的发布通道信息,并根据发布通道信息中的编码信息读取补丁数据,输出补丁数据;根据补丁读取函数的输出结果得到补丁数据;基于键信息和补丁数据,以键值对方式构造出已缓存数据;将已构造的已缓存数据缓存于缓存区。
可选的,数据缓存单元,具体可以包括:
补丁数据判断子单元,用于根据编码信息读取出补丁数据,若补丁数据为空,则输出空对象信息,否则输出补丁数据。
可选的,数据缓存单元,具体可以包括:
内存区读取子单元,用于若内存区中存在与编码信息对应的补丁数据,则根据编码信息从内存区中读取补丁数据;
数据库读取子单元,用于否则,根据编码信息从数据库中读取补丁数据。
可选的,在上述装置的基础上,该装置还可包括:
初始化模块,用于基于预先构建的已设置预设注解的初始化函数初始化缓存数据通道,以使缓存数据通道实现数据缓存功能,其中,预设注解用于表示在执行构造函数后立即执行初始化函数。
可选的,初始化函数通过如下单元实现缓存数据通道的初始化功能:
数据移除单元,用于获取缓存数据通道的已设置的最大容量,若已缓存数据的数据量超过最大容量,则基于预设的最近最少使用算法移除已缓存数据。
可选的,已缓存数据包括LoadingCache类型的数据,键信息包括String类型的数据,和/或,补丁数据包括Optional<Object>类型的数据。
本发明实施例三提供的补丁获取装置,通过数据缓存模块、键信息获取模块和补丁数据获取模块相互配合,在监测到获取补丁的触发事件时,因为各补丁数据已基于预先构建的缓存数据通道缓存于缓存区中,由此,可以从缓存于缓存区的以键值对方式构造出的各已缓存数据中,直接获取到与触发事件对应的键信息所对应的补丁数据,该补丁数据是已缓存数据的值信息。上述装置,基于缓存数据通道可以将补丁数据预先缓存于缓存区中,由此,在无需建立任何连接的情况下,可以直接从缓存区中获取相应的补丁数据,提高了Android补丁数据的获取效率和并发访问量。
本发明实施例所提供的补丁获取装置可执行本发明任意实施例所提供的补丁获取方法,具备执行方法相应的功能模块和有益效果。
值得注意的是,上述补丁获取装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
实施例四
图4为本发明实施例四提供的一种服务端的结构示意图,如图4所示,该服务端包括存储器410、处理器420、输入装置430和输出装置440。服务端中的处理器420的数量可以是一个或多个,图4中以一个处理器420为例;服务端中的存储器410、处理器420、输入装置430和输出装置440可以通过总线或其它方式连接,图4中以通过总线450连接为例。
存储器410作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的补丁获取方法对应的程序指令/模块(例如,补丁获取装置中的数据缓存模块310、键信息获取模块320和补丁数据获取模块330)。处理器420通过运行存储在存储器410中的软件程序、指令以及模块,从而执行服务端的各种功能应用以及数据处理,即实现上述的补丁获取方法。
存储器410可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据服务端的使用所创建的数据等。此外,存储器410可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器410可进一步包括相对于处理器420远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置430可用于接收输入的数字或字符信息,以及产生与装置的用户设置以及功能控制有关的键信号输入。输出装置440可包括显示屏等显示设备。
实施例五
本发明实施例五提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种补丁获取方法,该方法包括:
在监测到获取补丁的触发事件时,获取与触发事件对应的键信息;
从缓存于缓存区的各已缓存数据中,获取与键信息对应的补丁数据;
其中,已缓存数据基于预先构建的缓存数据通道缓存于缓存区中,缓存数据通道通过如下步骤实现数据缓存功能:
获取待构造的已缓存数据的键信息,将键信息传递至预先构建的补丁读取函数中,根据补丁读取函数的输出结果得到补丁数据;
基于键信息和补丁数据,以键值对方式构造出已缓存数据;
将已构造的已缓存数据缓存于缓存区中。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的补丁获取方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。依据这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种补丁获取方法,其特征在于,包括:
在监测到获取补丁的触发事件时,获取与所述触发事件对应的键信息;
从缓存于缓存区的各已缓存数据中,获取与所述键信息对应的补丁数据;
其中,所述已缓存数据基于预先构建的缓存数据通道缓存于所述缓存区中,所述缓存数据通道通过如下步骤实现数据缓存功能:
获取待构造的所述已缓存数据的所述键信息,将所述键信息传递至预先构建的补丁读取函数中,根据所述补丁读取函数的输出结果得到所述补丁数据;
基于所述键信息和所述补丁数据,以键值对方式构造出所述已缓存数据;
将已构造的所述已缓存数据缓存于所述缓存区中。
2.根据权利要求1所述的方法,其特征在于,所述补丁读取函数通过如下步骤实现补丁读取功能:
若所述键信息与所述补丁数据的标识信息匹配,则基于所述键信息获取所述补丁数据的发布通道信息,其中,所述发布通道信息包括编码信息;
根据所述编码信息读取所述补丁数据,并输出所述补丁数据。
3.根据权利要求2所述的方法,其特征在于,所述根据所述编码信息读取所述补丁数据,并输出所述补丁数据,包括:
根据所述编码信息读取出所述补丁数据,若所述补丁数据为空,则输出空对象信息,否则输出所述补丁数据。
4.根据权利要求2所述的方法,其特征在于,所述根据所述编码信息读取所述补丁数据,包括:
若内存区中存在与所述编码信息对应的所述补丁数据,则根据所述编码信息从所述内存区中读取所述补丁数据;
否则,根据所述编码信息从数据库中读取所述补丁数据。
5.根据权利要求1所述的方法,其特征在于,还包括:
基于预先构建的已设置预设注解的初始化函数初始化所述缓存数据通道,以使所述缓存数据通道实现所述数据缓存功能,其中,所述预设注解用于表示在执行构造函数后立即执行所述初始化函数。
6.根据权利要求5所述的方法,其特征在于,所述初始化函数通过如下步骤实现所述缓存数据通道的初始化功能:
获取所述缓存数据通道的已设置的最大容量,若所述已缓存数据的数据量超过所述最大容量,则基于预设的最近最少使用算法移除所述已缓存数据。
7.根据权利要求1-6任一所述的方法,其特征在于,所述已缓存数据包括LoadingCache类型的数据,所述键信息包括String类型的数据,和/或,所述补丁数据包括Optional<Object>类型的数据。
8.一种补丁获取装置,其特征在于,包括:
键信息获取模块,用于在监测到获取补丁的触发事件时,获取与所述触发事件对应的键信息;
补丁数据获取模块,用于从缓存于缓存区的各已缓存数据中,获取与所述键信息对应的补丁数据,其中,所述已缓存数据基于预先构建的缓存数据通道缓存于所述缓存区中,所述缓存数据通道通过数据缓存模块实现数据缓存功能;
所述数据缓存模块,用于获取待构造的所述已缓存数据的所述键信息,将所述键信息传递至预先构建的补丁读取函数中,根据所述补丁读取函数的输出结果得到所述补丁数据;基于所述键信息和所述补丁数据,以键值对方式构造出所述已缓存数据;将已构造的所述已缓存数据缓存于所述缓存区。
9.一种服务端,其特征在于,所述服务端包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的补丁获取方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一所述的补丁获取方法。
CN202010407184.9A 2020-05-14 2020-05-14 一种补丁获取方法、装置、服务端及存储介质 Pending CN113672248A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010407184.9A CN113672248A (zh) 2020-05-14 2020-05-14 一种补丁获取方法、装置、服务端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010407184.9A CN113672248A (zh) 2020-05-14 2020-05-14 一种补丁获取方法、装置、服务端及存储介质

Publications (1)

Publication Number Publication Date
CN113672248A true CN113672248A (zh) 2021-11-19

Family

ID=78537303

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010407184.9A Pending CN113672248A (zh) 2020-05-14 2020-05-14 一种补丁获取方法、装置、服务端及存储介质

Country Status (1)

Country Link
CN (1) CN113672248A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115878666A (zh) * 2022-10-31 2023-03-31 四川川大智胜系统集成有限公司 一种缓存依赖关系的管理方法、系统、电子设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170155712A1 (en) * 2015-12-01 2017-06-01 Le Holdings (Beijing) Co., Ltd. Method and device for updating cache data
CN107346252A (zh) * 2016-05-07 2017-11-14 腾讯科技(深圳)有限公司 应用更新方法和装置
CN108804447A (zh) * 2017-04-28 2018-11-13 北京京东尚科信息技术有限公司 利用缓存响应数据请求的方法和系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170155712A1 (en) * 2015-12-01 2017-06-01 Le Holdings (Beijing) Co., Ltd. Method and device for updating cache data
CN107346252A (zh) * 2016-05-07 2017-11-14 腾讯科技(深圳)有限公司 应用更新方法和装置
CN108804447A (zh) * 2017-04-28 2018-11-13 北京京东尚科信息技术有限公司 利用缓存响应数据请求的方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
WUHJ: "SpringBoot加入Guava Chache实现本地缓存", pages 1, Retrieved from the Internet <URL:https://www.cnblogs.com/hjwucc/p/11458276.html> *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115878666A (zh) * 2022-10-31 2023-03-31 四川川大智胜系统集成有限公司 一种缓存依赖关系的管理方法、系统、电子设备及介质
CN115878666B (zh) * 2022-10-31 2023-09-12 四川川大智胜系统集成有限公司 一种缓存依赖关系的管理方法、系统、电子设备及介质

Similar Documents

Publication Publication Date Title
CN110489417B (zh) 一种数据处理方法及相关设备
CN106778260B (zh) 攻击检测方法和装置
CN109831487A (zh) 分片文件验证方法及终端设备
CN112131002B (zh) 数据管理方法及装置
CN111817984B (zh) 消息发送方法、装置、设备及存储介质
CN110633168A (zh) 一种分布式存储系统的数据备份方法和系统
CN110888838A (zh) 基于对象存储的请求处理方法、装置、设备及存储介质
CN109787884B (zh) 一种消息推送方法和装置
CN108665235B (zh) 资源处理节点的运行方法、终端设备及介质
CN113067875A (zh) 基于微服务网关动态流控的访问方法和装置以及设备
CN109600254B (zh) 全链路日志的生成方法及相关系统
CN110602234B (zh) 区块链网络节点管理方法、装置、设备以及存储介质
CN109246234B (zh) 一种镜像文件下载方法、装置、电子设备及存储介质
CN109710502B (zh) 日志传输方法、装置及存储介质
CN110910249A (zh) 一种数据处理方法、装置、节点设备及存储介质
CN113672248A (zh) 一种补丁获取方法、装置、服务端及存储介质
CN112969198A (zh) 数据传输方法、终端及存储介质
CN115086047B (zh) 接口鉴权方法、装置、电子设备及存储介质
CN115580522A (zh) 一种容器云平台运行状态的监控方法及装置
CN113726885A (zh) 一种流量配额的调整方法和装置
CN116542668A (zh) 一种基于区块链的数据处理方法、设备及可读存储介质
CN107454018B (zh) 报文缓存管理器异常的处理方法及装置
CN110784479B (zh) 一种数据校验方法、装置、电子设备及存储介质
CN113342275B (zh) 区块链节点存取数据的方法、设备和计算机可读存储介质
CN110213314B (zh) 确定存储节点的方法、装置、服务器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination