CN114546467A - 一种补丁文件投放方法、装置、设备和存储介质 - Google Patents

一种补丁文件投放方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN114546467A
CN114546467A CN202011337802.3A CN202011337802A CN114546467A CN 114546467 A CN114546467 A CN 114546467A CN 202011337802 A CN202011337802 A CN 202011337802A CN 114546467 A CN114546467 A CN 114546467A
Authority
CN
China
Prior art keywords
patch
patch file
release
information
function
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
CN202011337802.3A
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 CN202011337802.3A priority Critical patent/CN114546467A/zh
Publication of CN114546467A publication Critical patent/CN114546467A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例公开了一种补丁文件投放方法、装置、设备和存储介质,该方法包括:获取用于存储待投放补丁文件信息的信息存储对象,其中,待投放补丁文件信息包括:待投放补丁文件对应的包名信息、应用版本信息、补丁文件版本信息和投放类型信息;以信息存储对象为输入参数,调用预设投放对象中的补丁投放函数,获取与待投放补丁文件信息相匹配的目标补丁文件,并将目标补丁文件投放至服务器的数据库中,以使服务器基于投放后的数据库对用户请求进行响应处理,其中,预设投放对象的对象类型为预设投放接口协议类型。通过本发明实施例的技术方案,可以提高投放效率,并减少流量耗费。

Description

一种补丁文件投放方法、装置、设备和存储介质
技术领域
本发明实施例涉及计算机技术,尤其涉及一种补丁文件投放方法、装置、设备和存储介质。
背景技术
随着计算机技术的快速发展,越来越多的应用软件被开发应用在终端设备中,以满足用户日益增长的需求。
用户在使用开发出来的应用软件的过程中往往会发现存在一些错误或者漏洞情况,从而开发人员需要针对这些错误或者漏洞,编写补丁文件,并将补丁文件投放至用户所使用的应用软件中,以便基于补丁文件来修正错误或者漏洞。
现有技术中,在投放补丁文件时,通常是针对每个用户单独进行投放的,从而大大降低了投放效率,并且使得流量耗费较多。
发明内容
本发明实施例提供了一种补丁文件投放方法、装置、设备和存储介质,以提高投放效率,并减少流量耗费。
第一方面,本发明实施例提供了一种补丁文件投放方法,包括:
获取用于存储待投放补丁文件信息的信息存储对象,其中,所述待投放补丁文件信息包括:待投放补丁文件对应的包名信息、应用版本信息、补丁文件版本信息和投放类型信息;
以所述信息存储对象为输入参数,调用预设投放对象中的补丁投放函数,获取与所述待投放补丁文件信息相匹配的目标补丁文件,并将所述目标补丁文件投放至服务器的数据库中,以使服务器基于投放后的数据库对用户请求进行响应处理,其中,所述预设投放对象的对象类型为预设投放接口协议类型。
第二方面,本发明实施例还提供了一种补丁文件投放装置,包括:
信息存储对象获取模块,用于获取用于存储待投放补丁文件信息的信息存储对象,其中,所述待投放补丁文件信息包括:待投放补丁文件对应的包名信息、应用版本信息、补丁文件版本信息和投放类型信息;
补丁文件投放模块,用于以所述信息存储对象为输入参数,调用预设投放对象中的补丁投放函数,获取与所述待投放补丁文件信息相匹配的目标补丁文件,并将所述目标补丁文件投放至服务器的数据库中,以使服务器基于投放后的数据库对用户请求进行响应处理,其中,所述预设投放对象的对象类型为预设投放接口协议类型。
第三方面,本发明实施例还提供了一种电子设备,所述电子设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所提供的补丁文件投放方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的补丁文件投放方法。
上述发明中的实施例具有如下优点或有益效果:
通过预先创建对象类型为预设投放接口协议类型的预设投放对象,以使预设投放对象中的补丁投放函数可以实现补丁文件的投放功能,从而可以将用于存储待投放补丁文件信息的信息存储对象作为输入参数,调用预设投放对象中的补丁投放函数,获取与待投放补丁文件信息相匹配的目标补丁文件,并将目标补丁文件直接投放至服务器的数据库中,使得服务器基于投放后的数据库对用户请求进行响应处理,以便用户可以获得修正后的应用信息,从而可以针对所有用户进行补丁文件的全量投放,无需单独进行每个用户的投放,大大提高了投放效率,减少了流量耗费。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种补丁文件投放方法的流程图;
图2是本发明实施例二提供的一种补丁文件投放方法的流程图;
图3是本发明实施例三提供的一种补丁文件投放装置的结构示意图;
图4是本发明实施例四提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种补丁文件投放方法的流程图,本实施例可适用于针对所有用户投放补丁文件的情况,尤其是可以对所有用户使用的Android版本的应用软件进行补丁文件的投放场景。该方法可以由补丁文件投放装置来执行,该装置可以由软件和/或硬件的方式来实现,集成于电子设备中。如图1所示,该方法具体包括以下步骤:
S110、获取用于存储待投放补丁文件信息的信息存储对象,其中,待投放补丁文件信息包括:待投放补丁文件对应的包名信息、应用版本信息、补丁文件版本信息和投放类型信息。
其中,待投放补丁文件可以是指对开发人员针对应用软件使用过程中出现的错误或者漏洞所编写的补充程序信息进行打包而形成的文件。待投放补丁文件信息可以是指补丁文件所对应的文件信息。包名信息可以用于表征待修正的具体的应用软件。每个包名对应一个应用软件。应用版本信息可以是指应用软件具体的版本信息。补丁文件版本信息可以是指当前待投放的补丁文件具体的版本信息。对于同一应用软件,补丁文件数据库中可能存在多个不同版本的补丁文件。信息存储对象可以是预先定义的预设存储类型的对象,以便存储待投放补丁文件信息。其中,预设存储类型可以是指预先定义的一个类对象。例如,预设存储类型可以定义如下:
Figure BDA0002797692330000041
Figure BDA0002797692330000051
其中,预设存储类型PublishAllReq可以继承自OperatorPara类,OperatorPara类是一个封装了部分基础信息的基础类,以便获得待投放补丁文件信息。在PublishAllReq类内部可以定义字符串String类型的包名信息pkgName、整型int类型的应用版本信息versionCode、整型int类型的补丁文件版本信息patchVersionCode、以及整型int类型的投放类型信息publishType。在PublishAllReq类内部定义每个信息时可以通过使用@NotNull关键字进行约束,从而有效避免了预设存储类型为空的情况,并且在预设存储类型为空时抛出相应的异常信息,使得开发人员可以及时了解异常情况。
具体地,可以基于业务需求输入当前需要投放的补丁文件的信息,从而获得用于存储待投放补丁文件信息的信息存储对象,比如预设存储类型PublishAllReq的信息存储对象publishAllReq。
S120、以信息存储对象为输入参数,调用预设投放对象中的补丁投放函数,获取与待投放补丁文件信息相匹配的目标补丁文件,并将目标补丁文件投放至服务器的数据库中,以使服务器基于投放后的数据库对用户请求进行响应处理,其中,预设投放对象的对象类型为预设投放接口协议类型。
其中,预设投放对象可以是预先创建的,对象类型为预设投放接口协议类型的对象。预设投放接口协议类型可以是指预先继承有预设投放接口协议的对象类型。预设投放接口协议可以是预先定义的,用于实现补丁文件的全量投放的协议。预设投放接口协议中可以包含预先定义的,但还未进行函数实现的补丁投放函数,以便后续可以基于该补丁投放函数自动地针对所有用户投放补丁文件。
示例性地,在S110之前还可以包括:定义预设投放接口协议以及预设投放接口协议中的补丁投放函数;通过调用接口继承关键字,预设投放类继承预设投放接口协议,并复写预设投放接口协议中的补丁投放函数,以使补丁投放函数实现补丁文件的投放逻辑功能;对继承预设投放接口协议的预设投放类进行实例化,创建相应的预设投放对象。
例如,预设投放接口协议可以定义如下:
public interface PublishAllService{
void publishAll(PublishAllReq publishAllReq)throws Exception;
}
其中,预设投放接口协议PublishAllService具有公有权限修饰符public的接口类型,其内部包含一个补丁投放函数publishAll,且该补丁投放函数具有一个输入参数为预设存储类型PublishAllReq的信息存储对象publishAllReq。在补丁投放函数中可以通过使用throws Exception关键字的方式,将补丁投放函数中产生的异常信息进行抛出,以有效避免异常对投放过程的终止操作。
本实施例中的预设投放类可以是预先定义的,用于实现预设投放接口协议的类。例如,预设投放类可以定义如下:
Figure BDA0002797692330000061
Figure BDA0002797692330000071
其中,预设投放类PublishAllServiceImpl可以通过调用接口继承关键字implements的方式,继承预设投放接口协议PublishAllService,并在预设投放类中通过复写@Override的方式来复写预设投放接口协议PublishAllService中的补丁投放函数publishAll。通过将预设投放类对应的补丁文件的投放逻辑在预设投放类中的复写函数publishAll中进行实现,使得预设投放类实例化创建的预设投放对象中的补丁投放函数publishAll可以实现相应的补丁文件投放功能。通过对继承预设投放接口协议的预设投放类进行实例化,使得创建出的预设投放对象的对象类型为预设投放接口协议类型。
具体地,通过以信息存储对象publishAllReq为输入参数,调用预设投放对象中的补丁投放函数publishAll,可以在补丁文件数据库中自动地获取与信息存储对象publishAllReq中存储的待投放补丁文件信息相相匹配的目标补丁文件,并将目标补丁文件直接投放至服务器的数据库中,使得服务器可以加载目标补丁文件,动态替换原版本程序中的相应数据,从而达到修正错误或者漏洞的目的。而且,服务器可以基于投放后的数据库对每个用户发送的用户请求进行响应处理,使得每个用户均可以获得修正后的响应数据,从而实现了针对所有用户的全量投放,无需单独进行每个用户的投放,大大提高了投放效率,减少了流量耗费。
本实施例的技术方案,通过预先创建对象类型为预设投放接口协议类型的预设投放对象,以使预设投放对象中的补丁投放函数可以实现补丁文件的投放功能,从而可以将用于存储待投放补丁文件信息的信息存储对象作为输入参数,调用预设投放对象中的补丁投放函数,获取与待投放补丁文件信息相匹配的目标补丁文件,并将目标补丁文件直接投放至服务器的数据库中,使得服务器基于投放后的数据库对用户请求进行响应处理,以便用户可以获得修正后的应用信息,从而可以针对所有用户进行补丁文件的全量投放,无需单独进行每个用户的投放,大大提高了投放效率,减少了流量耗费。
在上述技术方案的基础上,S120中的补丁投放函数可以通过如下步骤S121-S122实现获取与待投放补丁文件信息相匹配的目标补丁文件,并将目标补丁文件投放至服务器的数据库中的功能:
S121、以信息存储对象为输入参数,调用预设补丁文件获取子函数,获取与待投放补丁文件信息相匹配的目标补丁文件。
其中,预设补丁文件获取子函数可以是预先定义的,用于获取目标补丁文件的函数。例如,预设补丁文件获取子函数可以定义如下:
private AndroidHotPatch fetchAndroidHotPatch(PublishAllReqpublishAllReq)throws Exception{
}
其中,预设补丁文件获取子函数fetchAndroidHotPatch具有一个输入参数为预设存储类型PublishAllReq的信息存储对象publishAllReq,且返回值是一个AndroidHotPatch类型的对象,该对象可以用于存储所获得的目标补丁文件。在预设补丁文件获取子函数中可以通过使用throws Exception关键字的方式,将预设补丁文件获取子函数中产生的异常信息进行抛出,以有效避免异常对投放过程的终止操作。
具体地,通过以信息存储对象publishAllReq为输入参数,调用预设补丁文件获取子函数AndroidHotPatch hotPatch=fetchAndroidHotPatch(publishAllReq),可以获得与信息存储对象中存储的待投放补丁文件信息相匹配的目标补丁文件hotPatch。
示例性地,预设补丁文件获取子函数可以通过如下步骤实现获取与待投放补丁文件信息相匹配的目标补丁文件的功能:
若检测到信息存储对象中的包名信息为非空信息,则构建目标查询对象,并根据信息存储对象中的包名信息、应用版本信息和补丁文件版本信息构建目标查询对象对应的目标查询条件;以目标查询对象为输入参数,调用查询子函数,获取补丁数据库中与目标查询条件相匹配的查询结果;将查询结果中上传时间最近的补丁文件作为目标补丁文件进行返回。
具体地,可以通过调用信息存储对象中的包名信息获取函数pkgName=publishAllReq.getPkgName(),获得信息存储对象中的包名信息pkgName,并以包名信息pkgName作为输入参数,调用字符串工具类中的判空子函数StringUtils.isEmpty(pkgName),检测信息存储对象中的包名信息是否为空信息,若为空信息,则表明待投放补丁文件信息不完整,此时可以直接通过调用return null返回一个空对象;若为非空对象,则可以通过调用AndroidHotPatchExample hotPatchExample=newAndroidHotPatchExample(),构建一个AndroidHotPatchExample类型的目标查询对象hotPatchExample,并可以通过如下方式构建目标查询对象对应的目标查询条件:
hotPatchExample.createCriteria().andPkgNameEqualTo(publishAllReq.getPkgName())
.andVersionCodeEqualTo(publishAllReq.getVersionCode())
.andPatchVersionCodeEqualTo(publishAllReq.getPatchVersionCode());
其中,andPkgNameEqualTo(publishAllReq.getPkgName())表示需要查询出与信息存储对象中的包名信息publishAllReq.getPkgName()相同的补丁文件,.andVersionCodeEqualTo(publishAllReq.getVersionCode())表示需要查询出与应用版本信息publishAllReq.getVersionCode()相同的补丁文件,以及.andPatchVersionCodeEqualTo(publishAllReq.getPatchVersionCode())表示需要查询出与补丁文件版本信息publishAllReq.getVersionCode()相同的补丁文件,从而构建出需要查询与信息存储对象中的包名信息、应用版本信息和补丁文件版本信息均相同的目标查询条件。通过以目标查询对象hotPatchExample为输入参数,调用查询子函数List<AndroidHotPatch>androidHotPatchList=hotPatchMapper.selectByExample(hotPatchExample),可以获取补丁文件数据库中与目标查询条件相匹配的查询结果,即可以将查询到的相匹配的所有补丁文件均存储至List<AndroidHotPatch>类型的查询结果对象androidHotPatchList中。可以通过调用if(androidHotPatchList!=null&&androidHotPatchList.size()>0),检测查询结果对象androidHotPatchList是否不为空,且检测查询结果对象androidHotPatchList的大小大于零,如是,则表明补丁文件数据库中存在与目标查询条件相匹配的补丁文件。需要说明的是,开发人员可能会对同一版本的补丁文件进行多次更新,使得补丁文件数据库中存在与目标查询条件相匹配的补丁文件可能存在多个,从而可以通过调用androidHotPatchList.get(0),将查询结果对象中的第0个元素信息,即上传时间最近的补丁文件进行返回,从而可以获得最新更新的目标补丁文件hotPatch。
S122、对目标补丁文件和信息存储对象进行数据封装,构建一个补丁发布对象,并以补丁发布对象为输入参数,调用数据库写入子函数,将补丁发布对象存储至服务器的数据库中,完成目标补丁文件的投放功能。
其中,补丁发布对象可以用于投放补丁信息的对象。数据库写入子函数可以是指用于将补丁信息写入至服务器的数据库中的函数。数据库写入子函数可以包括后台数据库中的数据写入子函数,以实现后台服务器的全量投放功能,还可以包括前端数据库Redis中的数据更新子函数,以实现前端数据库Redis中数据的同步投放,从而可以实现双数据库的投放和数据同步的功能。
示例性地,对目标补丁文件和信息存储对象进行数据封装,构建一个补丁发布对象,可以包括:以目标补丁文件、信息存储对象中的投放类型信息、目标补丁文件中的发布状态以及信息存储对象为输入参数,调用预设数据封装子函数进行数据封装,构建出一个补丁发布对象。
其中,预设数据封装子函数可以是预先定义的,用于封装补丁信息的子函数。例如,预设数据封装子函数可以定义如下:
Figure BDA0002797692330000111
Figure BDA0002797692330000121
其中,预设数据封装子函数publishId2PublishAreaPatch具有四个输入参数,分别为:AndroidHotPatch类型的目标补丁文件hotPatch、int类型的投放类型信息publishType、int类型的发布状态publishStatus以及PublishAllReq类型的信息存储对象publishAllReq。该函数的返回值是一个信息封装类型PublishAreaPatch的对象,即补丁发布对象。预设数据封装子函数publishId2PublishAreaPatch是通过调用各类的set写入函数对数据对象进行封装处理,并将封装后的结果进行返回。
具体地,可以通过以目标补丁文件hotPatch、信息存储对象中的投放类型信息publishAllReq.getPublishType()、目标补丁文件中的发布状态PUBLISH_STATUS_PUBLISHED以及信息存储对象为输入参数publishAllReq,调用预设数据封装子函数PublishAreaPatch publishAreaPatch=publishId2PublishAreaPatch(hotPatch,publishAllReq.getPublishType(),PUBLISH_STATUS_PUBLISHED,publishAllReq)进行数据封装,构建出一个PublishAreaPatch类型的补丁发布对象publishAreaPatch。
示例性地,以补丁发布对象为输入参数,调用数据库写入子函数,将补丁发布对象存储至服务器的数据库中,可以包括:以补丁发布对象为输入参数,调用后台数据库中的数据写入子函数,将补丁发布对象存储至后台服务器的后台数据库中,以使后台服务器基于存储后的后台数据库对后台管理人员发送的数据请求进行响应处理;以补丁发布对象为输入参数,调用前端数据库中的数据更新子函数,将补丁发布对象更新至前端服务器的前端数据库中,以使前端服务器基于更新后的前端数据库对前端用户发送的数据请求进行响应处理。
具体地,通过以补丁发布对象publishAreaPatch为输入参数,调用后台数据库中的数据写入子函数publishAreaPatchMapper.insert(publishAreaPatch),可以将补丁发布对象publishAreaPatch存储至后台服务器的后台数据库中,使得后台服务器基于存储后的后台数据库对后台管理人员发送的数据请求进行响应处理,从而完成后台数据库端的全量投放功能。通过以补丁发布对象publishAreaPatch为输入参数,调用前端数据库中的数据更新子函数updateAllRedis(publishAllReq),可以将补丁发布对象publishAreaPatch更新至前端服务器的前端数据库中,使得前端服务器基于更新后的前端数据库对前端用户发送的数据请求进行响应处理,从而实现前端数据库Redis中数据的同步投放,进而实现了双数据库的投放和数据同步的功能,使得所有用户均可以访问修正后的应用数据,保证了应用软件的正常运行。
实施例二
图2为本发明实施例二提供的补丁文件投放方法的流程图,本实施例在上述各实施例的基础上,对利用补丁投放函数投放补丁文件的具体实现方式进行了进一步描述,即对“对目标补丁文件和信息存储对象进行数据封装,构建一个补丁发布对象,并以补丁发布对象为输入参数,调用数据库写入子函数,将补丁发布对象存储至服务器的数据库中,完成目标补丁文件的投放功能”进行了进一步优化。其中与上述各实施例相同或相应的术语的解释在此不再赘述。
参见图2,本实施例提供的补丁文件投放方法具体包括以下步骤:
S210、获取用于存储待投放补丁文件信息的信息存储对象,其中,待投放补丁文件信息包括:待投放补丁文件对应的包名信息、应用版本信息、补丁文件版本信息和投放类型信息。
S220、以信息存储对象为输入参数,调用预设补丁文件获取子函数,获取与待投放补丁文件信息相匹配的目标补丁文件。
S230、构建一个事物处理对象,并构建事物处理对象的整体事物框架。
其中,事物处理对象可以是用于实现数据访问的事物性的对象,以便进行数据回滚。
具体地,可以通过预先设置的事物模板transactionTemplate构建出一个TransactionTemplate事物模板类型的事物处理对象deliveryTransactionTemplate,即构建方式如下:
@Qualifier("transactionTemplate")
private TransactionTemplate deliveryTransactionTemplate
通过调用事物处理对象deliveryTransactionTemplate中的框架构建函数deliveryTransactionTemplate.execute(transactionStatus->{}),可以构建出事物处理对象的整体事物框架。
S240、在事物处理对象的闭包内部,对目标补丁文件和信息存储对象进行数据封装,构建一个补丁发布对象,并以补丁发布对象为输入参数,调用数据库写入子函数,将补丁发布对象存储至服务器的数据库中,完成目标补丁文件的投放功能。
具体地,通过在事物处理对象的闭包内部完成具体的事物操作,即补丁发布对象的构建操作和存储操作,从而可以在操作异常时,比如仅有部分用户投放成功时,及时进行回滚,回到数据初始状态,有效地避免了数据污染的情况。
示例性地,S240中的“对目标补丁文件和信息存储对象进行数据封装,构建一个补丁发布对象”,可以包括:以目标补丁文件、信息存储对象中的投放类型信息、目标补丁文件中的发布状态以及信息存储对象为输入参数,调用预设数据封装子函数进行数据封装,构建出一个补丁发布对象。
其中,预设数据封装子函数可以是预先定义的,用于封装补丁信息的子函数。例如,预设数据封装子函数可以定义如下:
Figure BDA0002797692330000151
Figure BDA0002797692330000161
其中,预设数据封装子函数publishId2PublishAreaPatch具有四个输入参数,分别为:AndroidHotPatch类型的目标补丁文件hotPatch、int类型的投放类型信息publishType、int类型的发布状态publishStatus以及PublishAllReq类型的信息存储对象publishAllReq。该函数的返回值是一个信息封装类型PublishAreaPatch的对象,即补丁发布对象。预设数据封装子函数publishId2PublishAreaPatch是通过调用各类的set写入函数对数据对象进行封装处理,并将封装后的结果进行返回。
具体地,可以通过以目标补丁文件hotPatch、信息存储对象中的投放类型信息publishAllReq.getPublishType()、目标补丁文件中的发布状态PUBLISH_STATUS_PUBLISHED以及信息存储对象为输入参数publishAllReq,调用预设数据封装子函数PublishAreaPatch publishAreaPatch=publishId2PublishAreaPatch(hotPatch,publishAllReq.getPublishType(),PUBLISH_STATUS_PUBLISHED,publishAllReq)进行数据封装,构建出一个PublishAreaPatch类型的补丁发布对象publishAreaPatch。
示例性地,S240中的“以补丁发布对象为输入参数,调用数据库写入子函数,将补丁发布对象存储至服务器的数据库中”,可以包括:以补丁发布对象为输入参数,调用后台数据库中的数据写入子函数,将补丁发布对象存储至后台服务器的后台数据库中,以使后台服务器基于存储后的后台数据库对后台管理人员发送的数据请求进行响应处理;以补丁发布对象为输入参数,调用前端数据库中的数据更新子函数,将补丁发布对象更新至前端服务器的前端数据库中,以使前端服务器基于更新后的前端数据库对前端用户发送的数据请求进行响应处理。
具体地,通过以补丁发布对象publishAreaPatch为输入参数,调用后台数据库中的数据写入子函数publishAreaPatchMapper.insert(publishAreaPatch),可以将补丁发布对象publishAreaPatch存储至后台服务器的后台数据库中,使得后台服务器基于存储后的后台数据库对后台管理人员发送的数据请求进行响应处理,从而完成后台数据库端的全量投放功能。通过以补丁发布对象publishAreaPatch为输入参数,调用前端数据库中的数据更新子函数updateAllRedis(publishAllReq),可以将补丁发布对象publishAreaPatch更新至前端服务器的前端数据库中,使得前端服务器基于更新后的前端数据库对前端用户发送的数据请求进行响应处理,从而实现前端数据库Redis中数据的同步投放,进而实现了双数据库的投放和数据同步的功能,使得所有用户均可以访问修正后的应用数据,保证了应用软件的正常运行。
本实施例的技术方案,通过构建一个事物处理对象,并在事物处理对象的闭包内部完成目标补丁文件的投放功能,从而可以实现数据访问的事物性,以便在操作异常时,及时进行回滚,有效地避免了数据污染的情况。
以下是本发明实施例提供的补丁文件投放装置的实施例,该装置与上述各实施例的补丁文件投放方法属于同一个发明构思,在补丁文件投放装置的实施例中未详尽描述的细节内容,可以参考上述补丁文件投放方法的实施例。
实施例三
图3为本发明实施例三提供的一种补丁文件投放装置的结构示意图,本实施例可适用于针对所有用户投放补丁文件的情况,该装置具体包括:信息存储对象获取模块310和补丁文件投放模块320。
其中,信息存储对象获取模块310,用于获取用于存储待投放补丁文件信息的信息存储对象,其中,待投放补丁文件信息包括:待投放补丁文件对应的包名信息、应用版本信息、补丁文件版本信息和投放类型信息;补丁文件投放模块320,用于以信息存储对象为输入参数,调用预设投放对象中的补丁投放函数,获取与待投放补丁文件信息相匹配的目标补丁文件,并将目标补丁文件投放至服务器的数据库中,以使服务器基于投放后的数据库对用户请求进行响应处理,其中,预设投放对象的对象类型为预设投放接口协议类型。
可选地,补丁投放函数通过如下功能单元实现获取与待投放补丁文件信息相匹配的目标补丁文件,并将目标补丁文件投放至服务器的数据库中的功能:
目标补丁文件获取单元,用于以信息存储对象为输入参数,调用预设补丁文件获取子函数,获取与待投放补丁文件信息相匹配的目标补丁文件;
目标补丁文件投放单元,用于对目标补丁文件和信息存储对象进行数据封装,构建一个补丁发布对象,并以补丁发布对象为输入参数,调用数据库写入子函数,将补丁发布对象存储至服务器的数据库中,完成目标补丁文件的投放功能。
可选地,预设补丁文件获取子函数通过如下功能子单元实现获取与待投放补丁文件信息相匹配的目标补丁文件的功能:
目标查询对象构建子单元,用于若检测到信息存储对象中的包名信息为非空信息,则构建目标查询对象,并根据信息存储对象中的包名信息、应用版本信息和补丁文件版本信息构建目标查询对象对应的目标查询条件;
查询结果获取子单元,用于以目标查询对象为输入参数,调用查询子函数,获取补丁文件数据库中与目标查询条件相匹配的查询结果;
目标补丁文件获取子单元,用于将查询结果中上传时间最近的补丁文件作为目标补丁文件进行返回。
可选地,目标补丁文件投放单元,包括:
事物处理对象构建子单元,用于构建一个事物处理对象,并构建事物处理对象的整体事物框架;
目标补丁文件投放子单元,用于在事物处理对象的闭包内部,对目标补丁文件和信息存储对象进行数据封装,构建一个补丁发布对象,并以补丁发布对象为输入参数,调用数据库写入子函数,将补丁发布对象存储至服务器的数据库中,完成目标补丁文件的投放功能。
可选地,目标补丁文件投放单元,具体用于:以目标补丁文件、信息存储对象中的投放类型信息、目标补丁文件中的发布状态以及信息存储对象为输入参数,调用预设数据封装子函数进行数据封装,构建出一个补丁发布对象。
可选地,目标补丁文件投放单元,还具体用于:
以补丁发布对象为输入参数,调用后台数据库中的数据写入子函数,将补丁发布对象存储至后台服务器的后台数据库中,以使后台服务器基于存储后的后台数据库对后台管理人员发送的数据请求进行响应处理;以补丁发布对象为输入参数,调用前端数据库中的数据更新子函数,将补丁发布对象更新至前端服务器的前端数据库中,以使前端服务器基于更新后的前端数据库对前端用户发送的数据请求进行响应处理。
可选地,该装置还包括:
预设投放对象创建模块,用于:在获取用于存储待投放补丁文件信息的信息存储对象之前,定义预设投放接口协议以及预设投放接口协议中的补丁投放函数;通过调用接口继承关键字,预设投放类继承预设投放接口协议,并复写预设投放接口协议中的补丁投放函数,以使补丁投放函数实现补丁文件的投放逻辑功能;对继承预设投放接口协议的预设投放类进行实例化,创建相应的预设投放对象。
本发明实施例所提供的补丁文件投放装置可执行本发明任意实施例所提供的补丁文件投放方法,具备执行补丁文件投放方法相应的功能模块和有益效果。
值得注意的是,上述补丁文件投放装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
实施例四
图4为本发明实施例四提供的一种电子设备的结构示意图。图4示出了适于用来实现本发明实施方式的示例性电子设备12的框图。图4显示的电子设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,电子设备12以通用计算设备的形式表现。电子设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
电子设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。电子设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
电子设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该电子设备12交互的设备通信,和/或与使得该电子设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,电子设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与电子设备12的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发实施例所提供的一种补丁文件投放方法步骤,该方法包括:
获取用于存储待投放补丁文件信息的信息存储对象,其中,待投放补丁文件信息包括:待投放补丁文件对应的包名信息、应用版本信息、补丁文件版本信息和投放类型信息;
以信息存储对象为输入参数,调用预设投放对象中的补丁投放函数,获取与待投放补丁文件信息相匹配的目标补丁文件,并将目标补丁文件投放至服务器的数据库中,以使服务器基于投放后的数据库对用户请求进行响应处理,其中,预设投放对象的对象类型为预设投放接口协议类型。
当然,本领域技术人员可以理解,处理器还可以实现本发明任意实施例所提供的补丁文件投放方法的技术方案。
实施例五
本实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的补丁文件投放方法步骤,该方法包括:
获取用于存储待投放补丁文件信息的信息存储对象,其中,待投放补丁文件信息包括:待投放补丁文件对应的包名信息、应用版本信息、补丁文件版本信息和投放类型信息;
以信息存储对象为输入参数,调用预设投放对象中的补丁投放函数,获取与待投放补丁文件信息相匹配的目标补丁文件,并将目标补丁文件投放至服务器的数据库中,以使服务器基于投放后的数据库对用户请求进行响应处理,其中,预设投放对象的对象类型为预设投放接口协议类型。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本领域普通技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种补丁文件投放方法,其特征在于,包括:
获取用于存储待投放补丁文件信息的信息存储对象,其中,所述待投放补丁文件信息包括:待投放补丁文件对应的包名信息、应用版本信息、补丁文件版本信息和投放类型信息;
以所述信息存储对象为输入参数,调用预设投放对象中的补丁投放函数,获取与所述待投放补丁文件信息相匹配的目标补丁文件,并将所述目标补丁文件投放至服务器的数据库中,以使服务器基于投放后的数据库对用户请求进行响应处理,其中,所述预设投放对象的对象类型为预设投放接口协议类型。
2.根据权利要求1所述的方法,其特征在于,所述补丁投放函数通过如下步骤实现获取与所述待投放补丁文件信息相匹配的目标补丁文件,并将所述目标补丁文件投放至服务器的数据库中的功能:
以所述信息存储对象为输入参数,调用预设补丁文件获取子函数,获取与所述待投放补丁文件信息相匹配的目标补丁文件;
对所述目标补丁文件和所述信息存储对象进行数据封装,构建一个补丁发布对象,并以所述补丁发布对象为输入参数,调用数据库写入子函数,将所述补丁发布对象存储至服务器的数据库中,完成所述目标补丁文件的投放功能。
3.根据权利要求2所述的方法,其特征在于,所述预设补丁文件获取子函数通过如下步骤实现获取与所述待投放补丁文件信息相匹配的目标补丁文件的功能:
若检测到所述信息存储对象中的包名信息为非空信息,则构建目标查询对象,并根据所述信息存储对象中的包名信息、应用版本信息和补丁文件版本信息构建所述目标查询对象对应的目标查询条件;
以所述目标查询对象为输入参数,调用查询子函数,获取补丁文件数据库中与所述目标查询条件相匹配的查询结果;
将所述查询结果中上传时间最近的补丁文件作为目标补丁文件进行返回。
4.根据权利要求2所述的方法,其特征在于,对所述目标补丁文件和所述信息存储对象进行数据封装,构建一个补丁发布对象,并以所述补丁发布对象为输入参数,调用数据库写入子函数,将所述补丁发布对象存储至服务器的数据库中,完成所述目标补丁文件的投放功能,包括:
构建一个事物处理对象,并构建所述事物处理对象的整体事物框架;
在所述事物处理对象的闭包内部,对所述目标补丁文件和所述信息存储对象进行数据封装,构建一个补丁发布对象,并以所述补丁发布对象为输入参数,调用数据库写入子函数,将所述补丁发布对象存储至服务器的数据库中,完成所述目标补丁文件的投放功能。
5.根据权利要求2或4所述的方法,其特征在于,对所述目标补丁文件和所述信息存储对象进行数据封装,构建一个补丁发布对象,包括:
以所述目标补丁文件、所述信息存储对象中的投放类型信息、所述目标补丁文件中的发布状态以及所述信息存储对象为输入参数,调用预设数据封装子函数进行数据封装,构建出一个补丁发布对象。
6.根据权利要求2或4所述的方法,其特征在于,以所述补丁发布对象为输入参数,调用数据库写入子函数,将所述补丁发布对象存储至服务器的数据库中,包括:
以所述补丁发布对象为输入参数,调用后台数据库中的数据写入子函数,将所述补丁发布对象存储至后台服务器的后台数据库中,以使所述后台服务器基于存储后的后台数据库对后台管理人员发送的数据请求进行响应处理;
以所述补丁发布对象为输入参数,调用前端数据库中的数据更新子函数,将所述补丁发布对象更新至前端服务器的前端数据库中,以使所述前端服务器基于更新后的前端数据库对前端用户发送的数据请求进行响应处理。
7.根据权利要求1所述的方法,其特征在于,在获取用于存储待投放补丁文件信息的信息存储对象之前,还包括:
定义预设投放接口协议以及所述预设投放接口协议中的补丁投放函数;
通过调用接口继承关键字,预设投放类继承所述预设投放接口协议,并复写所述预设投放接口协议中的补丁投放函数,以使所述补丁投放函数实现补丁文件的投放逻辑功能;
对继承所述预设投放接口协议的预设投放类进行实例化,创建相应的预设投放对象。
8.一种补丁文件投放装置,其特征在于,包括:
信息存储对象获取模块,用于获取用于存储待投放补丁文件信息的信息存储对象,其中,所述待投放补丁文件信息包括:待投放补丁文件对应的包名信息、应用版本信息、补丁文件版本信息和投放类型信息;
补丁文件投放模块,用于以所述信息存储对象为输入参数,调用预设投放对象中的补丁投放函数,获取与所述待投放补丁文件信息相匹配的目标补丁文件,并将所述目标补丁文件投放至服务器的数据库中,以使服务器基于投放后的数据库对用户请求进行响应处理,其中,所述预设投放对象的对象类型为预设投放接口协议类型。
9.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的补丁文件投放方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的补丁文件投放方法。
CN202011337802.3A 2020-11-25 2020-11-25 一种补丁文件投放方法、装置、设备和存储介质 Pending CN114546467A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011337802.3A CN114546467A (zh) 2020-11-25 2020-11-25 一种补丁文件投放方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011337802.3A CN114546467A (zh) 2020-11-25 2020-11-25 一种补丁文件投放方法、装置、设备和存储介质

Publications (1)

Publication Number Publication Date
CN114546467A true CN114546467A (zh) 2022-05-27

Family

ID=81660388

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011337802.3A Pending CN114546467A (zh) 2020-11-25 2020-11-25 一种补丁文件投放方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN114546467A (zh)

Similar Documents

Publication Publication Date Title
US11853774B2 (en) Dynamically loaded plugin architecture
CN111033468B (zh) 实施不同类型的区块链合约的系统和方法
US9262237B2 (en) Automating software availability management based on API versioning
CN110716748B (zh) 业务处理方法、装置、计算机可读介质及电子设备
US6745385B1 (en) Fixing incompatible applications by providing stubs for APIs
JP6316694B2 (ja) クラウドスケールの異種データセンタ管理インフラストラクチャ
US7454547B1 (en) Data exchange between a runtime environment and a computer firmware in a multi-processor computing system
US10268628B2 (en) Method for extracting BIOS attributes for BIOS management and system therefor
EP4002099A1 (en) Firmware component with self-descriptive dependency information
CN112166429A (zh) 暴露的信息模型与应用的集成中具有降低复杂度的系统和方法
CN110717268B (zh) 一种基于face架构的可移植组件单元封装方法
WO2022250864A1 (en) Deploying a cloud service based on component dependencies
US9727390B1 (en) Invoking a firmware function
US10657073B2 (en) Driver module framework enabling creation and execution of reliable and performant drivers
US7865884B1 (en) Typed-data translation for platform independence
US20210240484A1 (en) Selectively updating a bios image
US11907296B2 (en) Method and system for traversing an object graph using traversal context objects
US10379973B2 (en) Allocating storage in a distributed storage system
US8078637B1 (en) Memory efficient peim-to-peim interface database
CN110955415A (zh) 一种投影多平台服务适配的方法
US8146109B2 (en) Version resiliency for a host application and custom code
CN114546467A (zh) 一种补丁文件投放方法、装置、设备和存储介质
US8745620B2 (en) Software tool and method for updating a virtual appliance
US8495657B1 (en) Virtualized management objects
CN112261072B (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