CN111026465A - 程序处理方法、装置、电子设备及存储介质 - Google Patents
程序处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111026465A CN111026465A CN201911122650.2A CN201911122650A CN111026465A CN 111026465 A CN111026465 A CN 111026465A CN 201911122650 A CN201911122650 A CN 201911122650A CN 111026465 A CN111026465 A CN 111026465A
- Authority
- CN
- China
- Prior art keywords
- program
- subprogram
- target
- locking
- idempotent operation
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开的实施例提供了一种程序处理方法、装置、电子设备及存储介质。所述方法包括:根据待运行程序中预先添加的注解,获取所述待运行程序中需要进行幂等操作的目标子程序;生成所述目标子程序在进行幂等操作时使用的参数对应的加锁请求;将所述加锁请求发送至服务器;在接收到所述服务器返回的加锁成功的结果之后,根据所述参数对所述目标子程序执行幂等操作。本公开的实施例能够避免写操作并发引起的请求重复提交,通常需要进行幂等校验,保证资源的唯一性,进而,可以减少资产损失,提高了用户的体验。
Description
技术领域
本公开的实施例涉及通信技术领域,尤其涉及一种程序处理方法、装置、电子设备及存储介质。
背景技术
幂等(Idempotence)是一个数学与计算机学概念,常见于抽象代数中,某一元运算为幂等的时,其作用在任一元素两次后会和其作用一次的结果相同。
在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响***状态,也不用担心重复执行会对***造成多次改变。
而在调用幂等操作的接口时,可能存在调用接口异常存在重复尝试的情况,则势必造成***所无法承受的损失,例如,一个订单创建接口,第一次调用超时了,然后调用方重试了一次,在订单创建时,需要去扣减库存,这时接口发生了超时,调用方重试了一次,当这笔订单开始支付,在支付请求发出之后,在服务端发生了费用扣减的操作,接口响应超时了,调用方重试了一次,一个订单状态更新接口,调用方连续发送了两个消息,一个是已创建消息,一个是已付款消息。但是在先接收到已付款消息,然后又接收到了已创建消息,在支付完成订单之后,需要发送一条短信,当一台机器接收到短信发送的消息之后,处理较慢。消息中间件又把消息投递给另外一台机器处理,因此,可能会造成资产损失,导致用户体验极差。
发明内容
本公开的实施例提供一种程序处理方法、装置、电子设备及存储介质,用以减少资产损失,提高用户体验。
根据本公开的实施例的第一方面,提供了一种程序处理方法,包括:
根据待运行程序中预先添加的注解,获取所述待运行程序中需要进行幂等操作的目标子程序;
生成所述目标子程序在进行幂等操作时使用的参数对应的加锁请求;
将所述加锁请求发送至服务器;
在接收到所述服务器返回的加锁成功的结果之后,根据所述参数对所述目标子程序执行幂等操作。
可选地,在所述根据待运行程序中预先添加的注解,获取所述待运行程序中需要进行幂等操作的目标子程序之前,还包括:
获取所述待运行程序中需要进行幂等操作的至少一个子程序;所述目标子程序为所述至少一个子程序中的一个子程序;
调用预先设置的注解包对所述至少一个子程序添加注解,以标示所述至少一个子程序在进行幂等操作时所使用的参数。
可选地,所述根据待运行程序中预先添加的注解,获取所述待运行程序中需要进行幂等操作的目标子程序,包括:
在所述待运行程序的运行过程中,获取被注解处理器拦截的所述至少一个子程序中的一个子程序,将被拦截的一个子程序作为所述目标子程序。
可选地,所述注解中包含有指定加锁方式,所述生成所述目标子程序在进行幂等操作时使用的参数对应的加锁请求,包括:
根据所述注解处理器对所述目标子程序的注解的解析结果,获取所述目标子程序在进行幂等操作时所使用的参数和所述指定加锁方式;
根据所述参数和所述指定加锁方式,生成所述加锁请求。
可选地,所述将所述加锁请求发送至服务器,包括:
将所述加锁请求发送至所述服务器,以由所述服务器采用所述指定加锁方式对所述参数进行加锁处理,并生成加锁结果。
根据本公开的实施例的第二方面,提供了一种程序处理装置,包括:
目标程序获取模块,用于根据待运行程序中预先添加的注解,获取所述待运行程序中需要进行幂等操作的目标子程序;
加锁请求生成模块,用于生成所述目标子程序在进行幂等操作时使用的参数对应的加锁请求;
加锁请求发送模块,用于将所述加锁请求发送至服务器;
幂等操作执行模块,用于在接收到所述服务器返回的加锁成功的结果之后,根据所述参数对所述目标子程序执行幂等操作。
可选地,还包括:
子程序获取模块,用于获取所述待运行程序中需要进行幂等操作的至少一个子程序;所述目标子程序为所述至少一个子程序中的一个子程序;
程序注解添加模块,用于调用预先设置的注解包对所述至少一个子程序添加注解,以标示所述至少一个子程序在进行幂等操作时所使用的参数。
可选地,所述目标程序获取模块包括:
目标程序获取子模块,用于在所述待运行程序的运行过程中,获取被注解处理器拦截的所述至少一个子程序中的一个子程序,将被拦截的一个子程序作为所述目标子程序。
可选地,所述注解中包含有指定加锁方式,所述加锁请求生成模块包括:
幂等参数获取子模块,用于根据所述注解处理器对所述目标子程序的注解的解析结果,获取所述目标子程序在进行幂等操作时所使用的参数和所述指定加锁方式;
加锁请求生成子模块,用于根据所述参数和所述指定加锁方式,生成所述加锁请求。
可选地,所述加锁请求发送模块包括:
加锁请求发送子模块,用于将所述加锁请求发送至所述服务器,以由所述服务器采用所述指定加锁方式对所述参数进行加锁处理,并生成加锁结果。
根据本公开的实施例的第三方面,提供了一种电子设备,包括:
处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一项所述的程序处理方法。
根据本公开的实施例的第四方面,提供了一种计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述任一项所述的程序处理方法。
本公开的实施例提供了一种程序处理方案,根据待运行程序中预先添加的注解,获取待运行程序中需要进行幂等操作的目标子程序,生成目标子程序在进行幂等操作时使用的参数对应的加锁请求,将加锁请求发送至服务器,在接收到服务器返回的加锁成功的结果之后,根据参数对目标子程序执行幂等操作。本公开实施例可以对执行幂等操作的参数预先进行加锁,能够避免写操作并发引起的请求重复提交,通常需要进行幂等校验,保证资源的唯一性,进而,可以减少资产损失,提高了用户的体验。
附图说明
为了更清楚地说明本公开的实施例的技术方案,下面将对本公开的实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例一提供的一种程序处理方法的步骤流程图;
图2为本公开实施例二提供的一种程序处理方法的步骤流程图;
图3为本公开实施例三提供的一种程序处理装置的结构示意图;
图4为本公开实施例四提供的一种程序处理装置的结构示意图;
图5为本公开实施例提供的一种目标程序获取模块的示意图;
图6为本公开实施例提供的一种加锁请求生成模块的示意图;
图7为本公开实施例提供的一种加锁请求发送模块的示意图。
具体实施方式
下面将结合本公开的实施例中的附图,对本公开的实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开的实施例一部分实施例,而不是全部的实施例。基于本公开的实施例中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开的实施例保护的范围。
参照图1,示出了本公开实施例一提供的一种程序处理方法的步骤流程图,如图1所示,该程序处理方法具体可以包括如下步骤:
步骤101:根据待运行程序中预先添加的注解,获取所述待运行程序中需要进行幂等操作的目标子程序。
在本公开实施例中,幂等操作是指使用相同的参数重复执行,并能获取相同结果的操作。
执行幂等操作的时机可以分为以下几种情况:
1、接口可能被重复调用;
2、消息被重复发送;
3、作业被并发执行;
4、数据被并发处理;
5、按业务场景做针对性判断,利益相关型业务(支付、结算等)。
待运行程序是指客户端将需要运行的程序进行封装打包处理之后,发送给业务线使用的程序。
目标子程序是指待运行程序中需要进行幂等操作的子程序,如费用支付、结算等子程序,数据发送超时时,数据被用户重试进行再次发送的程序等,即目标子程序为待运行程序中的一个函数,或实现某个细节的子程序等等。
可以理解地,上述示例仅是为了更好地理解本公开实施例的技术方案而列举的示例,不作为对本公开实施例的唯一限制。
注解是指用于指示目标子程序需要执行幂等操作的解释说明。
在本公开中,可以预先在业务线上设置一个注解处理器,通过注解处理器可以识别得到待运行程序中添加了注解的子程序,具体地,将在下述实施例二中进行详细描述,本公开在此不再加以赘述。。
当然,不局限于此,在具体实现中,还可以采用其它方式获取待运行程序中需要进行幂等操作的目标子程序,具体地,可以根据业务需求而定,本公开实施例对此不加以限制。
在根据待运行程序中预先添加的注解,获取到待运行程序中需要进行幂等操作的目标子程序之后,执行步骤102。
步骤102:生成所述目标子程序在进行幂等操作时使用的参数对应的加锁请求。
加锁请求是指用于对目标子程序进行幂等操作时使用的参数进行加锁处理的请求。
在获取需要进行幂等操作的目标子程序之后,可以获取目标子程序在进行幂等操作使用的参数,进而,可以生成这些参数对应的加锁请求,例如,目标子程序进行幂等操作时使用的参数为:name、mobile、mail、address、score等参数,然后可以生成这些参数的加锁请求。
可以理解地,上述示例仅是为了更好地理解本公开实施例的技术方案而列举的示例,不作为对本公开实施例的唯一限制。
在生成目标子程序在进行幂等操作时使用的参数对应的加锁请求之后,执行步骤103。
步骤103:将所述加锁请求发送至服务器。
对目标子程序在进行幂等操作使用的参数进行加锁处理的方式是在服务器侧执行的,在生成目标子程序在进行幂等操作时使用的参数对应的加锁请求之后,可以将加锁请求发送至服务器。
在将加锁请求发送至服务器之后,执行步骤104。
步骤104:在接收到所述服务器返回的加锁成功的结果之后,根据所述参数对所述目标子程序执行幂等操作。
加锁成功的结果是指服务器对目标子程序进行幂等操作使用的参数加锁成功的结果。
在服务器接收到加锁请求之后,可以依据加锁请求对目标子程序在进行幂等操作时使用的参数进行加锁处理,并生成相应的加锁结果,并向客户端返回加锁结果。例如,在服务器对参数加锁失败之后,可以向终端返回加锁失败的结果;而在服务器对参数加锁成功之后,可以向终端返回加锁成功的结果。
在接收到服务器返回的对目标子程序进行幂等操作的参数加锁成功的结果之后,可以根据参数对目标子程序执行幂等操作,而在对参数进行幂等操作的过程中,可以保证这些参数在同一时刻只能被执行一次,一次成功之后不再进行幂等操作,可以避免参数的并发执行,避免写操作并发引起的请求重复提交,通常需要进行幂等校验,保证资源的唯一性,进而,可以减少资产损失,提高了用户的体验。
本公开的实施例提供的程序处理方法,根据待运行程序中预先添加的注解,获取待运行程序中需要进行幂等操作的目标子程序,生成目标子程序在进行幂等操作时使用的参数对应的加锁请求,将加锁请求发送至服务器,在接收到服务器返回的加锁成功的结果之后,根据参数对目标子程序执行幂等操作。本公开实施例可以对执行幂等操作的参数预先进行加锁,能够避免写操作并发引起的请求重复提交,通常需要进行幂等校验,保证资源的唯一性,进而,可以减少资产损失,提高了用户的体验。
参照图2,示出了本公开实施例二提供的一种程序处理方法的步骤流程图,如图2所示,该程序处理方法具体可以包括如下步骤:
步骤201:获取所述待运行程序中需要进行幂等操作的至少一个子程序。
在本公开实施例中,待运行程序是指客户端将需要运行的程序进行封装打包处理之后,发送给业务线使用的程序。
子程序是指需要待运行程序中需要进行幂等操作的程序。例如,待运行程序是由函数A、函数B和函数C构成的,而函数A需要进行幂等操作,那么将函数A对应的程序作为需要进行幂等操作的子程序。
幂等操作是指使用相同的参数重复执行,并能获取相同结果的操作。
执行幂等操作的时机可以分为以下几种情况:
1、接口可能被重复调用;
2、消息被重复发送;
3、作业被并发执行;
4、数据被并发处理;
5、按业务场景做针对性判断,利益相关型业务(支付、结算等)。
可以通过上述方式预先由业务人员判定待运行程序中哪些子程序需要执行幂等操作,哪些不需要执行幂等操作。
在下述步骤中提及的目标子程序为至少一个子程序中的一个子程序。
在获取待运行程序中需要进行幂等操作的至少一个子程序之后,执行步骤202。
步骤202:调用预先设置的注解包对所述至少一个子程序添加注解,以标示所述至少一个子程序在进行幂等操作时所使用的参数。
在获取待运行程序中需要进行幂等操作的至少一个子程序之后,可以由业务人员预先为至少一个子程序添加注解,该注解可以用于标示子程序需要进行幂等操作。具体地,可以根据预先设置的注解包,如客户端中的jar包,jar包中定义了注解方式及注解的处理器,可以根据jar包对子程序打注解等,例如,在客户端中预先设置的一个jar包中添加有注解和注解处理器,在业务线上对子程序添加注解时,可以直接调用客户端的jar包,并通过jar包在子程序上打上注解。在对子程序打上注解之后,该注解可以标示出至少一个子程序在进行幂等操作时所使用的参数等信息。
在对至少一个子程序添加注解之后,执行步骤203。
步骤203:在所述待运行程序的运行过程中,获取被注解处理器拦截的所述至少一个子程序中的一个子程序,将被拦截的一个子程序作为所述目标子程序。
目标子程序是指待运行程序中需要进行幂等操作的子程序,如费用支付、结算等子程序,数据发送超时时,数据被用户重试进行再次发送的程序等,即目标子程序为待运行程序中的一个函数,或实现某个细节的子程序等等。
可以理解地,上述示例仅是为了更好地理解本公开实施例的技术方案而列举的示例,不作为对本公开实施例的唯一限制。
在对待运行程序中的至少一个子程序添加注解之后,添加了注解的子程序可以被注解处理器拦截,可以理解地,各个子程序是逐个执行的,在首先被注解处理器拦截的一个子程序即为本公开中所限定的目标子程序。
在获取目标子程序之后,执行步骤204。
步骤204:根据所述注解处理器对所述目标子程序的注解的解析结果,获取所述目标子程序在进行幂等操作时所使用的参数和所述指定加锁方式。
指定加锁方式是指由业务人员预先设置的对目标子程序在进行幂等操作时所使用的参数进行加锁处理的方式,例如,可以预先在终端设置一个token令牌,使用token保证幂等,并由服务器设置token令牌的有效期和合法性,以在终端在有效期内对目标子程序执行幂等操作,而在token令牌超过有效期或不合法时,则不再对目标子程序执行幂等操作。而在加锁方式为分布式锁时,可以在preHandle(***)中获取锁,获取锁成功则执行方法,执行完毕在postHandle(释放器)中释放锁。
可以理解地,上述示例仅是为了更好地理解本公开实施例的技术方案而列举的示例,不作为对本公开实施例的唯一限制。
在注解中还包含有业务人员预先添加的指定加锁方式。
在获取待运行程序中需要进行幂等操作的目标子程序时,可以由注解处理器对目标子程序上添加的注解进行解析,以根据解析结果获取目标子程序在进行幂等操作时使用的参数和指定加锁方式,例如,目标子程序为addUser方法,addUser方法进行幂等操作时所使用的参数为:name、mobile、mail、address、score等参数。
在获取目标子程序在进行幂等操作时所使用的参数和指定加锁方式之后,执行步骤205。
步骤205:根据所述参数和所述指定加锁方式,生成所述加锁请求。
在获取目标子程序在进行幂等操作时所使用的参数和指定加锁方式之后,可以结合目标子程序在进行幂等操作时所使用的参数和指定加锁方式生成加锁请求。
在生成加锁请求之后,执行步骤206。
步骤206:将所述加锁请求发送至所述服务器,以由所述服务器采用所述指定加锁方式对所述参数进行加锁处理,并生成加锁结果。
对目标子程序在进行幂等操作使用的参数进行加锁处理的过程是在服务器侧执行的,在生成目标子程序在进行幂等操作时使用的参数和指定加锁方式对应的加锁请求之后,可以将加锁请求发送至服务器。
服务器在接收到加锁请求之后,可以根据加锁请求中包含的指定加锁方式对目标子程序在进行幂等操作时使用的参数进行加锁处理。
在服务器对目标子程序进行幂等操作使用的参数进行加锁处理之后,可以向终端返回加锁结果,例如,在服务器对参数加锁失败之后,可以向终端返回加锁失败的结果;而在服务器对参数加锁成功之后,可以向终端返回加锁成功的结果。
在将加锁请求发送至服务器之后,执行步骤207。
步骤207:在接收到所述服务器返回的加锁成功的结果之后,根据所述参数对所述目标子程序执行幂等操作。
加锁成功的结果是指服务器对待处理程序进行幂等操作使用的参数加锁成功的结果。
在接收到服务器返回的加锁成功的结果之后,可以根据加锁的参数对目标子程序执行幂等操作,在对目标子程序执行幂等操作的过程中,由于目标子程序执行幂等操作的参数已加锁,可以确保这些参数只能被执行一次,可以避免参数的并发执行。
本公开的实施例提供的程序处理方法,根据待运行程序中预先添加的注解,获取待运行程序中需要进行幂等操作的目标子程序,生成目标子程序在进行幂等操作时使用的参数对应的加锁请求,将加锁请求发送至服务器,在接收到服务器返回的加锁成功的结果之后,根据参数对目标子程序执行幂等操作。本公开实施例可以对执行幂等操作的参数预先进行加锁,能够避免写操作并发引起的请求重复提交,通常需要进行幂等校验,保证资源的唯一性,进而,可以减少资产损失,提高了用户的体验。
参照图3,示出了本公开实施例三提供的一种程序处理装置的结构示意图,如图3所示,该程序处理装置具体可以包括如下模块:
目标程序获取模块310,用于根据待运行程序中预先添加的注解,获取所述待运行程序中需要进行幂等操作的目标子程序;
加锁请求生成模块320,用于生成所述目标子程序在进行幂等操作时使用的参数对应的加锁请求;
加锁请求发送模块330,用于将所述加锁请求发送至服务器;
幂等操作执行模块340,用于在接收到所述服务器返回的加锁成功的结果之后,根据所述参数对所述目标子程序执行幂等操作。
本公开的实施例提供的程序处理装置,根据待运行程序中预先添加的注解,获取待运行程序中需要进行幂等操作的目标子程序,生成目标子程序在进行幂等操作时使用的参数对应的加锁请求,将加锁请求发送至服务器,在接收到服务器返回的加锁成功的结果之后,根据参数对目标子程序执行幂等操作。本公开实施例可以对执行幂等操作的参数预先进行加锁,能够避免写操作并发引起的请求重复提交,通常需要进行幂等校验,保证资源的唯一性,进而,可以减少资产损失,提高了用户的体验。
参照图4,示出了本公开实施例四提供的一种程序处理装置的结构示意图,如图4所示,该程序处理装置具体可以包括如下模块:
子程序获取模块410,用于获取所述待运行程序中需要进行幂等操作的至少一个子程序;所述目标子程序为所述至少一个子程序中的一个子程序;
程序注解添加模块420,用于调用预先设置的注解包对所述至少一个子程序添加注解,以标示所述至少一个子程序在进行幂等操作时所使用的参数;
目标程序获取模块430,用于根据待运行程序中预先添加的注解,获取所述待运行程序中需要进行幂等操作的目标子程序;
加锁请求生成模块440,用于生成所述目标子程序在进行幂等操作时使用的参数对应的加锁请求;
加锁请求发送模块450,用于将所述加锁请求发送至服务器;
幂等操作执行模块460,用于在接收到所述服务器返回的加锁成功的结果之后,根据所述参数对所述目标子程序执行幂等操作。
可选地,如图5所示,所述目标程序获取模块430包括:
目标程序获取子模块431,用于在所述待运行程序的运行过程中,获取被注解处理器拦截的所述至少一个子程序中的一个子程序,将被拦截的一个子程序作为所述目标子程序。
可选地,所述注解中包含有指定加锁方式,如图6所示,所述加锁请求生成模块440包括:
幂等参数获取子模块441,用于根据所述注解处理器对所述目标子程序的注解的解析结果,获取所述目标子程序在进行幂等操作时所使用的参数和所述指定解锁方式;
加锁请求生成子模块442,用于根据所述参数和所述指定加锁方式,生成所述加锁请求。
可选地,如图7所示,所述加锁请求发送模块450包括:
加锁请求发送子模块451,用于将所述加锁请求发送至所述服务器,以由所述服务器采用所述指定加锁方式对所述参数进行加锁处理,并生成加锁结果。
本公开的实施例提供的程序处理装置,根据待运行程序中预先添加的注解,获取待运行程序中需要进行幂等操作的目标子程序,生成目标子程序在进行幂等操作时使用的参数对应的加锁请求,将加锁请求发送至服务器,在接收到服务器返回的加锁成功的结果之后,根据参数对目标子程序执行幂等操作。本公开实施例可以对执行幂等操作的参数预先进行加锁,能够避免写操作并发引起的请求重复提交,通常需要进行幂等校验,保证资源的唯一性,进而,可以减少资产损失,提高了用户的体验。
本公开的实施例还提供了一种电子设备,包括:处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现前述实施例的程序处理方法。
本公开的实施例还提供了一种计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述实施例的程序处理方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在此提供的算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本公开的实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本公开的实施例的内容,并且上面对特定语言所做的描述是为了披露本公开的实施例的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本公开的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本公开的示例性实施例的描述中,本公开的实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本公开的实施例要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本公开的实施例的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的替代特征来代替。
本公开的实施例的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本公开的实施例的动态图片的生成设备中的一些或者全部部件的一些或者全部功能。本公开的实施例还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序。这样的实现本公开的实施例的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本公开的实施例进行说明而不是对本公开的实施例进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本公开的实施例可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所述仅为本公开的实施例的较佳实施例而已,并不用以限制本公开的实施例,凡在本公开的实施例的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本公开的实施例的保护范围之内。
以上所述,仅为本公开的实施例的具体实施方式,但本公开的实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开的实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的实施例的保护范围之内。因此,本公开的实施例的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种程序处理方法,其特征在于,包括:
根据待运行程序中预先添加的注解,获取所述待运行程序中需要进行幂等操作的目标子程序;
生成所述目标子程序在进行幂等操作时使用的参数对应的加锁请求;
将所述加锁请求发送至服务器;
在接收到所述服务器返回的加锁成功的结果之后,根据所述参数对所述目标子程序执行幂等操作。
2.根据权利要求1所述的方法,其特征在于,在所述根据待运行程序中预先添加的注解,获取所述待运行程序中需要进行幂等操作的目标子程序之前,还包括:
获取所述待运行程序中需要进行幂等操作的至少一个子程序;所述目标子程序为所述至少一个子程序中的一个子程序;
调用预先设置的注解包对所述至少一个子程序添加注解,以标示所述至少一个子程序在进行幂等操作时所使用的参数。
3.根据权利要求1所述的方法,其特征在于,所述根据待运行程序中预先添加的注解,获取所述待运行程序中需要进行幂等操作的目标子程序,包括:
在所述待运行程序的运行过程中,获取被注解处理器拦截的所述至少一个子程序中的一个子程序,将被拦截的一个子程序作为所述目标子程序。
4.根据权利要求3所述的方法,其特征在于,所述注解中包含有指定加锁方式,所述生成所述目标子程序在进行幂等操作时使用的参数对应的加锁请求,包括:
根据所述注解处理器对所述目标子程序的注解的解析结果,获取所述目标子程序在进行幂等操作时所使用的参数和所述指定加锁方式;
根据所述参数和所述指定加锁方式,生成所述加锁请求。
5.根据权利要求4所述的方法,其特征在于,所述将所述加锁请求发送至服务器,包括:
将所述加锁请求发送至所述服务器,以由所述服务器采用所述指定加锁方式对所述参数进行加锁处理,并生成加锁结果。
6.一种程序处理装置,其特征在于,包括:
目标程序获取模块,用于根据待运行程序中预先添加的注解,获取所述待运行程序中需要进行幂等操作的目标子程序;
加锁请求生成模块,用于生成所述目标子程序在进行幂等操作时使用的参数对应的加锁请求;
加锁请求发送模块,用于将所述加锁请求发送至服务器;
幂等操作执行模块,用于在接收到所述服务器返回的加锁成功的结果之后,根据所述参数对所述目标子程序执行幂等操作。
7.根据权利要求6所述的装置,其特征在于,还包括:
子程序获取模块,用于获取所述待运行程序中需要进行幂等操作的至少一个子程序;所述目标子程序为所述至少一个子程序中的一个子程序;
程序注解添加模块,用于调用预先设置的注解包对所述至少一个子程序添加注解,以标示所述至少一个子程序在进行幂等操作时所使用的参数。
8.根据权利要求6所述的装置,其特征在于,所述目标程序获取模块包括:
目标程序获取子模块,用于在所述待运行程序的运行过程中,获取被注解处理器拦截的所述至少一个子程序中的一个子程序,将被拦截的一个子程序作为所述目标子程序。
9.一种电子设备,其特征在于,包括:
处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1至5中任一项所述的程序处理方法。
10.一种计算机可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行权利要求1至5中任一项所述的程序处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911122650.2A CN111026465A (zh) | 2019-11-15 | 2019-11-15 | 程序处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911122650.2A CN111026465A (zh) | 2019-11-15 | 2019-11-15 | 程序处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111026465A true CN111026465A (zh) | 2020-04-17 |
Family
ID=70200257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911122650.2A Withdrawn CN111026465A (zh) | 2019-11-15 | 2019-11-15 | 程序处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111026465A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111967830A (zh) * | 2020-08-28 | 2020-11-20 | 上加下信息技术成都有限公司 | 一种线上线下库存同步方法 |
CN113064584A (zh) * | 2021-04-22 | 2021-07-02 | 中国平安财产保险股份有限公司 | 幂等的实现方法、装置、设备及介质 |
CN113778389A (zh) * | 2020-09-23 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 接口幂等判断方法、装置、设备及存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040117453A1 (en) * | 2002-12-17 | 2004-06-17 | International Business Machines Corporation | Client/server request handling |
US20120117423A1 (en) * | 2010-11-09 | 2012-05-10 | International Business Machines Corporation | Fault tolerance in distributed systems |
CN105740258A (zh) * | 2014-12-09 | 2016-07-06 | 阿里巴巴集团控股有限公司 | 基于幂等号校验的业务处理方法及装置 |
CN106033439A (zh) * | 2015-03-13 | 2016-10-19 | 阿里巴巴集团控股有限公司 | 一种分布式事务处理方法及*** |
US20180131678A1 (en) * | 2016-11-10 | 2018-05-10 | International Business Machines Corporation | Managing Idempotent Operations while Interacting with a System of Record |
US10031948B1 (en) * | 2013-12-02 | 2018-07-24 | Amazon Technologies, Inc. | Idempotence service |
CN108459913A (zh) * | 2017-12-26 | 2018-08-28 | 阿里巴巴集团控股有限公司 | 数据并行处理方法、装置及服务器 |
CN108563693A (zh) * | 2018-03-16 | 2018-09-21 | 阿里巴巴集团控股有限公司 | 一种事务的处理方法、装置及设备 |
CN108874654A (zh) * | 2017-05-15 | 2018-11-23 | 阿里巴巴集团控股有限公司 | 幂等有效性测试方法、装置及设备、可读介质 |
CN110097330A (zh) * | 2019-03-27 | 2019-08-06 | 深圳市佰仟金融服务有限公司 | 一种业务请求处理方法、装置及计算机可读存储介质 |
CN110162532A (zh) * | 2019-05-09 | 2019-08-23 | 中国银行股份有限公司 | 交易数据处理方法和设备 |
-
2019
- 2019-11-15 CN CN201911122650.2A patent/CN111026465A/zh not_active Withdrawn
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040117453A1 (en) * | 2002-12-17 | 2004-06-17 | International Business Machines Corporation | Client/server request handling |
US20120117423A1 (en) * | 2010-11-09 | 2012-05-10 | International Business Machines Corporation | Fault tolerance in distributed systems |
US10031948B1 (en) * | 2013-12-02 | 2018-07-24 | Amazon Technologies, Inc. | Idempotence service |
CN105740258A (zh) * | 2014-12-09 | 2016-07-06 | 阿里巴巴集团控股有限公司 | 基于幂等号校验的业务处理方法及装置 |
CN106033439A (zh) * | 2015-03-13 | 2016-10-19 | 阿里巴巴集团控股有限公司 | 一种分布式事务处理方法及*** |
US20180131678A1 (en) * | 2016-11-10 | 2018-05-10 | International Business Machines Corporation | Managing Idempotent Operations while Interacting with a System of Record |
CN108874654A (zh) * | 2017-05-15 | 2018-11-23 | 阿里巴巴集团控股有限公司 | 幂等有效性测试方法、装置及设备、可读介质 |
CN108459913A (zh) * | 2017-12-26 | 2018-08-28 | 阿里巴巴集团控股有限公司 | 数据并行处理方法、装置及服务器 |
CN108563693A (zh) * | 2018-03-16 | 2018-09-21 | 阿里巴巴集团控股有限公司 | 一种事务的处理方法、装置及设备 |
CN110097330A (zh) * | 2019-03-27 | 2019-08-06 | 深圳市佰仟金融服务有限公司 | 一种业务请求处理方法、装置及计算机可读存储介质 |
CN110162532A (zh) * | 2019-05-09 | 2019-08-23 | 中国银行股份有限公司 | 交易数据处理方法和设备 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111967830A (zh) * | 2020-08-28 | 2020-11-20 | 上加下信息技术成都有限公司 | 一种线上线下库存同步方法 |
CN113778389A (zh) * | 2020-09-23 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 接口幂等判断方法、装置、设备及存储介质 |
CN113064584A (zh) * | 2021-04-22 | 2021-07-02 | 中国平安财产保险股份有限公司 | 幂等的实现方法、装置、设备及介质 |
CN113064584B (zh) * | 2021-04-22 | 2024-05-07 | 中国平安财产保险股份有限公司 | 幂等的实现方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111026465A (zh) | 程序处理方法、装置、电子设备及存储介质 | |
CN107766101B (zh) | App启动事件的处理方法、装置和设备 | |
US10050899B2 (en) | Data processing method, apparatus, client, server and system | |
CN107426711B (zh) | 绑定或解绑手机号的方法、装置及*** | |
CN110276202B (zh) | 一种反序列化漏洞的检测方法及装置 | |
CN105159771A (zh) | 处理应用间链式启动的方法及装置 | |
CN110400217B (zh) | 智能合约的规则变更处理方法及装置 | |
CN110020043B (zh) | 页面爬取方法、装置、存储介质及处理器 | |
CN104219235A (zh) | 一种分布式交易请求方法及装置 | |
CN110033280B (zh) | 支付防抖方法及装置 | |
US8380788B2 (en) | System and method for providing user context support in a native transaction platform | |
CN113225379A (zh) | 一种http请求消息的发送方法及装置 | |
CN110704131B (zh) | 一种html5应用调用原生应用的方法和装置 | |
CN116502283A (zh) | 一种隐私数据处理方法及装置 | |
CN109408251B (zh) | 消息发送方法与装置、消息接收处理方法与装置 | |
CN106612263B (zh) | 一种用于处理应用访问请求的方法与设备 | |
CN111327680B (zh) | 认证数据同步方法、装置、***、计算机设备和存储介质 | |
CN111626606A (zh) | 业务规则处理方法、装置、设备、***及存储介质 | |
CN110677465B (zh) | 一种分布式锁的控制方法及装置 | |
CN110457116B (zh) | 处理事务请求的方法及装置 | |
CN111695901B (zh) | 账务凭证处理方法、装置、设备及存储介质 | |
CN109510816B (zh) | 服务请求有效性验证方法、客户端及服务器 | |
CN112579960A (zh) | 一种网页取证方法、网页取证装置及服务器 | |
CN112363720A (zh) | 基于Spring Restful框架实现公共控制逻辑的方法及装置 | |
CN114860468A (zh) | 一种sdk调用方法、装置、计算机设备及存储介质 |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200417 |