程序修改方法及装置与流程

文档序号:26139127发布日期:2021-08-03 14:22阅读:76来源:国知局
程序修改方法及装置与流程

本发明涉及移动互联技术领域,尤其涉及一种程序修改方法及装置。



背景技术:

本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

在java程序开发的软件系统中,一旦软件开发完成部署上线后,程序的行为便确定下来,仅能通过预设的参数,来调整程序的执行逻辑,一旦程序内部出现错误,仅能通过修改代码并重新部署才可以修复。

发明人发现现有技术至少存在以下问题:

现有技术仅能修改参数,从而通过修改参数达到调整程序的目的,灵活性差,仅能在几种预设的情况下切换,对于预设之外的情况,则无法处理,只能修改代码,以重新部署程序。



技术实现要素:

本发明实施例提供一种程序修改方法,可以实现对程序的动态修改,而无需对程序进行重新部署,灵活性强,该方法包括:

接收程序修改请求;

根据所述程序修改请求,调用代码加载接口;

基于所述代码加载接口,从服务器中加载预先存储的代码数据;

根据所述预先存储的代码数据,修改待修改程序spring容器中原有的代码数据,其中,所述预先存储的代码数据的文件标识与所述原有的代码数据的文件标识相同。

可选的,所述基于所述代码加载接口,从服务器中加载预先存储的代码数据,包括:

确定所述代码加载接口;

基于所述代码加载接口,通过类加载器classloader从服务器中加载预先存储的代码数据。

可选的,所述根据所述预先存储的代码数据,修改待修改程序spring容器中原有的代码数据,包括:

获取待修改程序spring容器中原有的代码数据;

基于所述预先存储的代码数据,对待修改程序spring容器中原有的代码数据进行替换处理。

可选的,所述代码数据为java代码数据。

本发明实施例还提供一种程序修改装置,实现对程序的动态修改,而无需对程序进行重新部署,灵活性强,该装置包括:

请求接收模块,用于接收程序修改请求;

接口调用模块,用于根据所述程序修改请求,调用代码加载接口;

代码数据加载模块,用于基于所述代码加载接口,从服务器中加载预先存储的代码数据;

程序修改模块,用于根据所述预先存储的代码数据,修改待修改程序spring容器中原有的代码数据。

可选的,代码数据加载模块进一步用于:

确定所述代码加载接口;

基于所述代码加载接口,通过类加载器classloader从服务器中加载预先存储的代码数据。

可选的,程序修改模块进一步用于:

获取待修改程序spring容器中原有的代码数据;

基于所述预先存储的代码数据,对待修改程序spring容器中原有的代码数据进行替换处理。

可选的,所述代码数据为java代码数据。

本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。

本发明实施例中,通过接收程序修改请求,并根据所述程序修改请求,调用代码加载接口,基于所述代码加载接口,从服务器中加载预先存储的代码数据,实现了对代码数据的远程调用,无需从本地对待修改程序的代码数据进行修改。由于预先存储的代码数据的文件标识与原有的代码数据的文件标识相同,因此,根据所述预先存储的代码数据,修改待修改程序spring容器中原有的代码数据,即可实现对程序的动态修改,不会对程序的运行造成影响,即无需对程序进行重新部署,灵活性强。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1为本发明实施例中程序修改方法的流程图;

图2为本发明实施例中程序修改方法的流程图;

图3为本发明实施例中程序修改方法的流程图;

图4为本发明实施例中程序修改装置的结构示意图;

图5是本发明实施例计算机设备示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。

下面对本发明中涉及的名称进行解释:

classloader指的是:类加载器,具体地,虚拟机把描述类的数据从class字节码文件加载到内存,并对数据进行检验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。

spring容器指的是:某个实现了applicationcontext接口的类的实例。也就是说,从代码层面,spring容器其实就是一个applicationcontext(一个实例化对象)

在java程序开发的软件系统中,一旦软件开发完成部署上线后,程序的行为便确定下来,仅能通过预设的参数,来调整程序的执行逻辑,一旦程序内部出现错误,仅能通过修改代码并重新部署才可以修复。

但是,现有技术仅能修改参数,从而通过修改参数达到调整程序的目的,灵活性差,仅能在几种预设的情况下切换,对于预设之外的情况,则无法处理,只能修改程序重新部署。为了解决上述问题,本发明实施例提供了一种程序修改方法。

图1为本发明实施例提供的程序修改方法的流程图,如图1所示,该方法包括:

步骤101、接收程序修改请求。

在实施例中,当用户需要修改程序时,可以向终端发送程序修改请求。

步骤102、根据所述程序修改请求,调用代码加载接口。

具体实施时,可以在一个独立的用户操作页面,将代码编写好后上传至服务器指定位置,然后调用代码加载接口,出发加载操作。

步骤103、基于所述代码加载接口,从服务器中加载预先存储的代码数据。

具体实施时,如图2所示,步骤103包括:

步骤201、确定所述代码加载接口;

步骤202、基于所述代码加载接口,通过类加载器classloader从服务器中加载预先存储的代码数据。

具体实施时,可以根据用户请求,通过类加载器classloader到服务器指定位置加载修改后的代码数据。

步骤104、根据所述预先存储的代码数据,修改待修改程序spring容器中原有的代码数据,其中,所述预先存储的代码数据的文件标识与所述原有的代码数据的文件标识相同。

具体实施时,如图3所示,步骤104包括:

步骤301、获取待修改程序spring容器中原有的代码数据;

步骤302、基于所述预先存储的代码数据,对待修改程序spring容器中原有的代码数据进行替换处理。

应理解,为了在修改程序功能的同时,避免对程序进行重新部署,在本发明实施例中,所述预先存储的代码数据的文件标识与所述原有的代码数据的文件标识相同,举例来说,若所述原有的代码数据的文件名(即文件标识)为a,其包含x、y、z三种功能,而预先存储的代码数据则包含x、y、z、c四种功能,此时,只需将预先存储的代码数据的文件名也设置为a,然后用其包含的x、y、z、c替换原有的代码数据文件下的x、y、z即可。

其中,代码数据可以为java代码数据。

spring容器用于存储程序运行所需的代码数据。

由上可知,本发明实施例提供的程序修改方法,通过接收程序修改请求,并根据所述程序修改请求,调用代码加载接口,基于所述代码加载接口,从服务器中加载预先存储的代码数据,实现了对代码数据的远程调用,无需从本地对待修改程序的代码数据进行修改。由于预先存储的代码数据的文件标识与原有的代码数据的文件标识相同,因此,根据所述预先存储的代码数据,修改待修改程序spring容器中原有的代码数据,即可实现对程序的动态修改,不会对程序的运行造成影响,即无需对程序进行重新部署,灵活性强。

基于同一发明构思,本发明实施例中还提供了一种程序修改装置,如下面的实施例所述。由于程序修改装置解决问题的原理与程序修改方法相似,因此,程序修改装置的实施可以参见程序修改方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图4为本发明实施例提供的一种程序修改装置的结构示意图,如图4所示,该装置包括:

请求接收模块401,用于接收程序修改请求;

接口调用模块402,用于根据所述程序修改请求,调用代码加载接口;

代码数据加载模块403,用于基于所述代码加载接口,从服务器中加载预先存储的代码数据;

程序修改模块404,用于根据所述预先存储的代码数据,修改待修改程序spring容器中原有的代码数据。

在本发明实施例中,代码数据加载模块403进一步用于:

确定所述代码加载接口;

基于所述代码加载接口,通过类加载器classloader从服务器中加载预先存储的代码数据。

在本发明实施例中,程序修改模块404进一步用于:

获取待修改程序spring容器中原有的代码数据;

基于所述预先存储的代码数据,对待修改程序spring容器中原有的代码数据进行替换处理。

在本发明实施例中,所述代码数据为java代码数据。

为了实现上述目的,根据本申请的另一方面,还提供了一种计算机设备。如图5所示,该计算机设备包括存储器、处理器、通信接口以及通信总线,在存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例方法中的步骤。

处理器可以为中央处理器(centralprocessingunit,cpu)。处理器还可以为其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。

存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及单元,如本发明上述方法实施例中对应的程序单元。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及作品数据处理,即实现上述方法实施例中的方法。

存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

所述一个或者多个单元存储在所述存储器中,当被所述处理器执行时,执行上述实施例中的方法。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。

综上所述,本发明通过接收程序修改请求,并根据所述程序修改请求,调用代码加载接口,基于所述代码加载接口,从服务器中加载预先存储的代码数据,实现了对代码数据的远程调用,无需从本地对待修改程序的代码数据进行修改。由于预先存储的代码数据的文件标识与原有的代码数据的文件标识相同,因此,根据所述预先存储的代码数据,修改待修改程序spring容器中原有的代码数据,即可实现对程序的动态修改,而无需对程序进行重新部署,灵活性强。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1