一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

单据处理方法、装置、计算机设备和存储介质与流程

2022-03-23 08:12:23 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,特别是涉及一种单据处理方法、装置、计算机设备和存储介质。


背景技术:

2.随着计算机技术的发展,不同的用户可通过不同的应用来对同一共享数据进行修改,比如,用户a可通过分布式应用中的a节点来提交单据a,以通过单据a对c物料的库存进行修改,同一时刻,用户b也可通过分布式应用中的b节点来提交单据b,以通过单据b对c物料的库存进行修改。
3.然而,当多个用户通过不同的单据同时对同一共享数据进行修改时,容易产生修改冲突,从而导致该共享数据修改错误,进而导致单据处理错误。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种能够提高单据处理的准确性的单据处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
5.第一方面,本技术提供了一种单据处理方法。所述方法包括:
6.获取与目标待处理单据中的每个待处理数据行各自对应的获取锁请求;
7.对于至少一个获取锁请求中的每个获取锁请求,均确定互斥锁池中是否存在已分配的、且与当前获取锁请求中的当前行标识相对应的互斥锁;
8.若不存在,则将所述互斥锁池中的未分配的互斥锁,分配至所述目标待处理单据中的与所述当前行标识相对应的待处理数据行;
9.在所述目标待处理单据中的每个待处理数据行均获取得到互斥锁时,对所述目标待处理单据进行业务处理;
10.在业务处理完毕时,释放已处理单据中的各数据行所占用的互斥锁。
11.在其中一个实施例中,当得到单据提交请求时,确定所述单据提交请求所对应的目标待处理单据;确定所述目标待处理单据包括的至少一个待处理数据行;根据所述待处理数据行的行标识和所述目标待处理单据的单据标识,生成每个所述待处理数据行各自对应的获取锁请求;所述方法还包括:将所述获取锁请求存储至存储队列中。
12.在其中一个实施例中,当获取到至少一个单据提交请求时,确定每个单据提交请求各自对应的目标待处理单据,并生成每个目标待处理单据中的每个待处理数据行各自对应的获取锁请求;所述方法还包括:确定每个所述目标待处理单据各自对应的请求权限,并根据所述请求权限,确定每个所述锁获取请求在存储队列中的排列顺序;按照所述排列顺序将所述获取锁请求存储至存储队列中。
13.在其中一个实施例中,按照所述获取锁请求在所述存储队列中的排列顺序,对所述存储队列中的获取锁请求进行遍历;对于当前遍历至的当前获取锁请求,确定互斥锁池中是否存在已分配的、且与当前获取锁请求中的当前行标识相对应的互斥锁。
14.在其中一个实施例中,获取所述目标待处理单据中的每个待处理数据行中的数据内容;所述数据内容包括库存总数值、库存转移量、资源总数值、和资源转移数值中的至少一种;对于多个待处理数据行中的每个待处理数据行,均根据当前待处理数据行中的库存总数值、库存转移量、资源总数值、资源转移数值中的至少一种,对预设业务数据库中的业务数据进行更新。
15.在其中一个实施例中,确定与所述目标待处理单据相对应的每个获取锁请求,是否均在预设超时时长内获取到互斥锁;若存在未在超时时长内获取到互斥锁的获取锁请求时,则释放所述目标待处理单据中的待处理数据行所占用的互斥锁。
16.在其中一个实施例中,确定释放所述互斥锁的释放时间点;确定当前时间点与所述释放时间点之间的时间间隔;当所述时间间隔与预设等待时长相匹配时,重新响应于目标待处理单据相对应的至少一个获取锁请求,得到所述目标待处理单据中的每个待处理数据行各自对应的互斥锁。
17.第二方面,本技术还提供了一种单据处理装置。所述装置包括:
18.获取锁请求模块,用于获取与目标待处理单据中的每个待处理数据行各自对应的获取锁请求;
19.互斥锁分配模块,用于对至少一个获取锁请求中的每个获取锁请求,均确定互斥锁池中是否存在已分配的、且与当前获取锁请求中的当前行标识相对应的互斥锁;若不存在,则将所述互斥锁池中的未分配的互斥锁,分配至所述目标待处理单据中的与所述当前行标识相对应的待处理数据行;
20.业务处理模块,用于在所述目标待处理单据中的每个待处理数据行均获取得到互斥锁时,对所述目标待处理单据进行业务处理;在业务处理完毕时,释放已处理单据中的各数据行所占用的互斥锁。
21.第三方面,本技术还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
22.获取与目标待处理单据中的每个待处理数据行各自对应的获取锁请求;
23.对于至少一个获取锁请求中的每个获取锁请求,均确定互斥锁池中是否存在已分配的、且与当前获取锁请求中的当前行标识相对应的互斥锁;
24.若不存在,则将所述互斥锁池中的未分配的互斥锁,分配至所述目标待处理单据中的与所述当前行标识相对应的待处理数据行;
25.在所述目标待处理单据中的每个待处理数据行均获取得到互斥锁时,对所述目标待处理单据进行业务处理;
26.在业务处理完毕时,释放已处理单据中的各数据行所占用的互斥锁。
27.第四方面,本技术还提供了一种计算机可读存储介质。所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
28.获取与目标待处理单据中的每个待处理数据行各自对应的获取锁请求;
29.对于至少一个获取锁请求中的每个获取锁请求,均确定互斥锁池中是否存在已分配的、且与当前获取锁请求中的当前行标识相对应的互斥锁;
30.若不存在,则将所述互斥锁池中的未分配的互斥锁,分配至所述目标待处理单据中的与所述当前行标识相对应的待处理数据行;
31.在所述目标待处理单据中的每个待处理数据行均获取得到互斥锁时,对所述目标待处理单据进行业务处理;
32.在业务处理完毕时,释放已处理单据中的各数据行所占用的互斥锁。
33.第五方面,本技术还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
34.获取与目标待处理单据中的每个待处理数据行各自对应的获取锁请求;
35.对于至少一个获取锁请求中的每个获取锁请求,均确定互斥锁池中是否存在已分配的、且与当前获取锁请求中的当前行标识相对应的互斥锁;
36.若不存在,则将所述互斥锁池中的未分配的互斥锁,分配至所述目标待处理单据中的与所述当前行标识相对应的待处理数据行;
37.在所述目标待处理单据中的每个待处理数据行均获取得到互斥锁时,对所述目标待处理单据进行业务处理;
38.在业务处理完毕时,释放已处理单据中的各数据行所占用的互斥锁。
39.上述单据处理方法、装置、计算机设备、存储介质和计算机程序产品,通过获取与目标待处理单据中的每个待处理数据行各自对应的获取锁请求,并对于至少一个获取锁请求中的每个获取锁请求,均确定互斥锁池中是否存在已分配的、且与当前获取锁请求中的当前行标识相对应的互斥锁;若不存在,则将互斥锁池中的未分配的互斥锁,分配至目标待处理单据中的与当前行标识相对应的待处理数据行,从而在目标待处理单据中的每个待处理数据行均获取得到互斥锁时,对目标待处理单据进行业务处理,并在业务处理完毕时,释放已处理单据中的各数据行所占用的互斥锁。由于会对目标待处理单据中的当前待处理数据行分配互斥锁,因此,在上锁时段内,仅允许一个线程对当前待处理数据行所指向的共享数据进行处理,而不允许其余线程依据其余单据对当前待处理数据行所指向的共享数据进行处理,从而大大减少了修改共享数据时发生修改冲突的概率,进而提升了单据处理的准确性。
40.此外,由于是针对目标待处理单据中的每个待处理数据行分别分配互斥锁,而非对整个目标待处理单据分配互斥锁,因此,可减少对不需要进行上锁的内容强行上锁的概率,从而提升了互斥锁的分配有效性。
附图说明
41.图1为一个实施例中单据处理方法的应用环境图;
42.图2为一个实施例中单据处理方法的流程示意图;
43.图3为一个实施例中获取互斥锁的结构示意图;
44.图4为一个实施例中单据获取互斥锁的流程示意图;
45.图5为一个实施例中目标待处理单据的结构示意图;
46.图6为一个实施例中单据处理装置的结构框图;
47.图7为一个实施例中计算机设备的内部结构图。
具体实施方式
48.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对
本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
49.本技术实施例提供的单据处理方法,可以应用于如图1所示的应用环境中。其中,终端102可通过网络与服务器104进行通信。其中,终端102和服务器104均可单独用于执行本技术实施例中提供的单据处理方法,也可协同用于执行本技术实施例中提供的单据处理方法。以终端102和服务器104协同用于执行单据处理方法为例进行说明,终端102用于将目标待处理单据中的每个待处理数据行各自对应的获取锁请求、以及目标待处理单据发送至服务器104。服务器104用于根据每个获取锁请求,将互斥锁池中的未分配的互斥锁,分配至目标待处理单据中的与当前行标识相对应的待处理数据行。服务器104在每个待处理数据行均获取得到互斥锁时,对目标待处理单据进行业务处理,并将业务处理结果返回至终端102。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机和平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
50.在一个实施例中,如图2所示,提供了一种单据处理方法,以该方法应用于计算机设备为例进行说明,该计算机设备可为图1中的终端或服务器。单据处理方法包括以下步骤:
51.步骤202,获取与目标待处理单据中的每个待处理数据行各自对应的获取锁请求。
52.其中,获取锁请求可用于获取与待处理数据行的行标识相对应的互斥锁。其中,待处理数据行的行标识是根据待处理数据行所指向的共享数据生成得到。比如,当单据1中的数据行a的数据内容为“c物料的库存:100;扣减:10”时,可认为数据行a所指向的共享数据为“c物料的库存”;当单据2中的数据行b的数据内容为“d物料的库存:200;增加:20”时,可认为数据行b所指向的共享数据为“d物料的库存”。容易理解的,当两个单据中的数据行所指向的共享数据一致时,这两个单据中的数据行的行标识也一致。
53.在多线程对金额或库存进行扣减的场景下,待处理数据行获取到互斥锁后,只有一个线程可根据待处理数据行中的数据内容,对该待处理数据行所指向的共享数据执行减扣操作,而其余线程则不能对获取到锁的待处理数据行所指向的共享数据执行减扣操作,以此保证共享数据的完整性。例如,当用户通过某个线程要对共享数据进行修改时,先通过互斥锁将共享数据锁定,并将共享数据的状态转换为“已锁定”,此时其他线程不能再对共享数据进行修改。直到该线程释放互斥锁,将共享数据的状态转换成“非锁定”,此时其他线程才能再对共享数据进行修改。
54.具体地,计算机设备在获取到目标待处理单据后,确定目标待处理单据中的数据行,并将目标待处理单据中的数据行作为待处理数据行。当确定目标待处理单据中的待处理数据行时,计算机设备可根据目标单据的单据标识和待处理数据行的行标识,生成每个待处理数据行各自对应的获取锁请求。其中,单据标识指的是唯一标识一个单据的信息,比如,单据标识可以为单据的id。
55.在其中一个实施例中,在提交单据之前,用户可对单据进行修改,比如,用户可对单据中的部分数据行进行修改,可得到修改后的目标单据。当用户提交修改后的目标单据时,形成携带有目标单据的单据提交请求,其中该目标单据即为上述的目标待处理单据。计算机设备通过单据提交请求对目标待处理单据进行业务处理,得到相应的业务数据,并通
过业务数据对目标单据进行更新。
56.步骤204,对于至少一个获取锁请求中的每个获取锁请求,均确定互斥锁池中是否存在已分配的、且与当前获取锁请求中的当前行标识相对应的互斥锁。
57.其中,互斥锁池中包含有多个已分配状态的互斥锁和未分配状态的互斥锁,当随机将某一未分配的互斥锁分配至某个数据行后,计算机设备会将进行分配后的互斥锁记录为已分配、以及记录该互斥锁的锁标识和该数据行的行标识,并得到已分配的互斥锁和已获取锁的数据行之间的对应关系,从而后续可基于该对应关系,确定互斥锁池中是否存在已分配的、且与当前获取锁请求中的当前行标识相对应的互斥锁。
58.例如,若单据2中的第二行数据行与单据1中的第一数据行指向同一共享数据,也即单据2中的第二行数据行与单据1中的第一数据行的行标识相同时,计算机设备可将将互斥锁a分配至单据2中的第二行数据行,此时,计算机设备记录互斥锁a的锁标识和单据2中的第二行数据行的行标识,得到已分配的互斥锁和已获取锁的数据行之间的对应关系。当计算机设备获取得到与单据1中的第一数据行对应的获取锁请求时,计算机设备可通过上述对应关系,确定互斥锁池中存在已分配的、且与单据1中的第一行数据行的行标识相对应的互斥锁a,此时,互斥锁a已将单据1中的第一行数据行所指向的共享数据进行锁定,因此,计算机设备不再将互斥锁池中未分配的互斥锁分配至单据1中的第一数据行。
59.具体地,计算机设备依次对存储于存储队列中的锁获取请求进行处理,对于存储于存储队列中的当前锁获取请求,均确定与当前锁获取请求相对应的待处理数据行的当前行标识、以及确定与当前获取锁请求中的当前行标识相对应的互斥锁。对于与当前获取锁请求中的当前行标识相对应的互斥锁,确定在互斥锁池中是否处于已分配状态。
60.在其中一个实施例中,计算机设备可预先生成每个共享数据各自对应的互斥锁,并将所生成的互斥锁存储至互斥锁池中。计算机设备依次对存储于存储队列中的获取锁请求进行处理,针对多个获取锁请求中的每个获取锁请求,均在互斥锁池中查找与当前获取锁请求相匹配的当前互斥锁,其中,相匹配的当前互斥锁为与当前获取锁请求相对应的待处理数据行所指向的共享数据相对应的互斥锁。由于不同单据中的不同待处理数据行可指向同一个共享数据,因此,单个互斥锁可对应于多个获取锁请求。若当前互斥锁已分配至其他待处理数据行,则当前待处理数据行不能获取到与当前获取锁请求相匹配的当前互斥锁。
61.例如,如图3所示,图3为获取互斥锁的结构示意图。当计算机设备获取单据2中的待处理数据行a的获取锁请求2时,若在互斥锁池中能查找与获取锁请求2相匹配的互斥锁,但此时的互斥锁已分配至单据1中的待处理数据行a,则单据2中的待处理数据行a不能分配到与获取锁请求2相匹配的互斥锁。
62.步骤206,若不存在,则将互斥锁池中的未分配的互斥锁,分配至目标待处理单据中的与当前行标识相对应的待处理数据行。
63.具体地,当互斥锁池中不存在已分配的、且与当前获取锁请求中的当前行标识相对应的互斥锁时,计算机设备将互斥锁池中未分配的互斥锁分配至目标待处理单据中的与当前行标识相对应的待处理数据行。
64.在其中一个实施例中,计算机设备提取当前获取锁请求中的单据标识和行标识,并根据当前获取锁请求中的单据标识和行标识,将未分配的互斥锁分配至目标待处理单据
中的相应待处理数据行。
65.在其中一个实施例中,当计算机设备同时获取到多个目标待处理单据时,计算机设备可生成每个目标待处理单据各自对应的多个获取锁请求,并根据获取锁请求的生成时间将其存储至存储队列中。由于计算机设备可预先生成每个共享数据各自对应的互斥锁,并将所生成的互斥锁存储至互斥锁池中。因此,计算机设备可根据存储队列中各获取锁请求的排列顺序,对存储队列中的锁获取请求进行遍历,得到当前遍历的当前锁获取请求,并通过互斥锁池响应于当前锁获取请求。
66.例如,参考图3,当计算机设备同时获取到单据1和单据2时,计算机设备可先针对单据1中的待处理数据行a生成的获取锁请求1,再根据单据2中的待处理数据行a生成获取锁请求2,并将获取锁请求1和获取锁请求2依次存储至存储队列中。由于是依次将获取锁请求1和获取锁请求2存储至存储队列中,因此,计算机设备会先响应获取锁请求1,并在互斥锁池中查找与获取锁请求1相匹配的互斥锁,也即查找针对单据1中的待处理数据行a所指向的共享数据而生成的互斥锁,将该互斥锁分配至单据1中的待处理数据行a。计算机设备再响应于获取锁请求2,此时与获取锁请求2相匹配的互斥锁已分配至单据1中的待处理数据行a,因此,计算机设备不再将其分配至单据2中的待处理数据行a。
67.步骤208,在目标待处理单据中的每个待处理数据行均获取得到互斥锁时,对目标待处理单据进行业务处理。
68.具体地,计算机设备确定目标待处理单据中的每个待处理数据行是否均获取到互斥锁。在目标待处理单据中的每个待处理数据行均获取得到互斥锁时,计算机设备获取目标待处理单据中的每个待处理数据行中的数据内容,并根据每个待处理数据行中的数据内容,对预设业务数据库中的业务数据进行更新。
69.容易理解的,由于是对每个待处理数据行均分配互斥锁,因此,在上锁时段内,若其他目标待处理单据中的待处理数据行的行标识与分配了互斥锁的待处理数据行的行标识相同时,计算机设备不能对其他目标待处理单据中的待处理数据行所指向的共享数据进行处理,从而减少了修改共享数据时发生修改冲突的概率。通过在目标待处理单据中的每个待处理数据行均获取得到获取锁请求时,才对目标待处理单据进行业务处理,可使得每个待处理数据行所指向的共享数据均被锁定,进而使得每个待处理数据行所指向的共享数据均处于锁定状态时才会被修改。如此,便可减少因目标待处理单据中的部分待处理数据行未获取得到互斥锁,而使得该待处理数据行所指向的共享数据处于未锁定状态却被修改的情况发生,进而减少了因共享数据未被锁定而导致修改冲突的概率。
70.步骤210,在业务处理完毕时,释放已处理单据中的各数据行所占用的互斥锁。
71.具体地,当计算机设备对目标待处理单据处理完毕,得到已处理单据时,计算机设备对已处理单据中获取到互斥锁的每个数据行均进行互斥锁释放,此时,已分配的互斥锁更新为未分配状态。
72.在其中一个实施例中,当释放互斥锁时,计算机设备获取当前已分配的互斥锁和已获取锁的数据行之间的对应关系,并在该对应关系中删除当前释放的互斥锁的锁标识记录和释放互斥锁的数据行的行标识,此时的被释放的互斥锁更新为未分配状态。
73.上述单据处理方法中通过获取与目标待处理单据中的每个待处理数据行各自对应的获取锁请求,并对于至少一个获取锁请求中的每个获取锁请求,均确定互斥锁池中是
否存在已分配的、且与当前获取锁请求中的当前行标识相对应的互斥锁;若不存在,则将互斥锁池中的未分配的互斥锁,分配至目标待处理单据中的与当前行标识相对应的待处理数据行,从而在目标待处理单据中的每个待处理数据行均获取得到互斥锁时,对目标待处理单据进行业务处理,并在业务处理完毕时,释放已处理单据中的各数据行所占用的互斥锁。由于会对目标待处理单据中的当前待处理数据行分配互斥锁,因此,在上锁时段内,仅允许一个线程对当前待处理数据行所指向的共享数据进行处理,而不允许其余线程依据其余单据对当前待处理数据行所指向的共享数据进行处理,从而大大减少了修改共享数据时发生修改冲突的概率,进而提升了单据处理的准确性。
74.在其中一个实施例中,当得到单据提交请求时,确定单据提交请求所对应的目标待处理单据;确定目标待处理单据包括的至少一个待处理数据行;根据待处理数据行的行标识和目标待处理单据的单据标识,生成每个待处理数据行各自对应的获取锁请求;上述方法还包括:将获取锁请求存储至存储队列中。
75.具体地,当用户在终端提交单据时,终端可生成单据提交请求。其中,单据提交请求携带有用户提交的单据。服务器可获接收终端发送的单据提交请求,并提取单据提交请求中的单据,将单据提交请求中的单据作为目标待处理单。服务器均根据目标待处理单据的单据标识、以及目标待处理单据中的每个待处理数据行的行标识,生成每个待处理数据行各自对应的获取锁请求,并将生成的获取锁请求存储至存储队列中。
76.在其中一个实施例中,服务器可接收多个不同终端发送的多个单据提交请求,并提取单据提交请求中的单据,将单据提交请求中的单据作为目标待处理单。对于多个目标待处理单据中的每个目标待处理单据,服务器均根据当前目标待处理单据的单据标识、以及当前目标待处理单据中的每个待处理数据行的行标识,确定当前目标待处理单据中的每个待处理数据行各自关联的获取锁请求。每个待处理数据行仅有唯一相关联的获取锁请求。每个待处理数据行对应的获取锁请求为一个线程,服务器可将不同目标待处理单据各自对应的获取锁请求依次至存储队列中,从而后续可依次响应存储队列中的获取锁请求。
77.在其中一个实施例中,计算机设备可根据获取锁请求的生成时间顺序,将其存储至存储队列中。例如,若单据1先于单据2进行提交,则先将单据1中的待处理数据行a、待处理数据行b、待处理数据行c各自对应的获取锁请求依次存储至存储队列,再将单据2中的待处理数据行a、待处理数据行d、待处理数据行e各自对应的获取锁请求依次存储至存储队列。若单据1与单据2同时提交,则将单据1与单据2中待处理数据行各自对应的获取锁请求随机存储至存储队列。
78.本实施例中,通过确定目标待处理单据的单据标识、以及目标待处理单据中的待处理数据行的行标识,可基于单据标识和行标识生成与待处理数据行相关联的获取锁请求,并将获取锁请求存储至存储队列。通过将获取锁请求存储至存储队列中,使得后续可依次响应于存储队列中的获取锁请求。
79.在其中一个实施例中,当获取到至少一个单据提交请求时,确定每个单据提交请求各自对应的目标待处理单据,并生成每个目标待处理单据中的每个待处理数据行各自对应的获取锁请求,上述方法还包括:确定每个目标待处理单据各自对应的请求权限,并根据请求权限,确定每个锁获取请求在存储队列中的排列顺序;按照排列顺序将获取锁请求存储至存储队列中。
80.具体地,当不同用户分别在各自的终端提交单据时,用户所在的终端分别生成相对应的单据提交请求,服务器可获接收每个终端发送的单据提交请求,并确定每个单据提交请求各自对应的目标待处理单据。服务器根据每个目标待处理单据的单据标识、以及每个目标待处理单据中的每个待处理数据行的行标识,生成每个目标待处理单据中的每个待处理数据行各自对应的获取锁请求。对于多个目标待处理单据中的每个目标待处理单据,服务器均确定当前目标待处理单据的请求权限,并将当前目标待处理单据的请求权限作为与当前目标待处理单据相对应的获取锁请求的请求权限,如此,服务器便能确定每个目标待处理单据各自对应的每个获取锁请求的请求权限,从而服务器根据各获取锁请求之间的请求权限大小,确定多个目标待处理单据中的每个获取锁请求在存储队列中的排列顺序,并按照排列顺序将每个目标待处理单据中的获取锁请求存储至存储队列中。
81.例如上述举例,若据1中的待处理数据行a,单据2中也包括有待处理数据行a,且单据2的请求权限高于单据1的请求权限,则单据2中的待处理数据行a的获取锁请求2在存储队列中的排列顺序,早于单据1中的待处理数据行a的获取锁请求1在存储队列中的排列顺序,当服务器同时获取到单据1和单据2的单据提交请求时,则服务器先将获取锁请求2存储至存储队列中,再将获取锁请求1存储至存储队列中。
82.在其中一个实施例中,请求权限可以根据单据提交请求的紧急程度确定,比如,紧急程度较高的单据提交请求所对应的请求权限高于紧急程度较低的单据提交请求所对应的请求权限。请求权限也可根据提出单据提交请求的用户账号确定,比如,高级别的用户账号所生成的单据提交请求的请求权限高于低级别的用户账号所生成的单据提交请求的请求权限。
83.本实施例中,通过每个目标待处理单据各自对应的请求权限的大小,确认确定每个目标待处理单据中的获取锁请求在存储队列中的排列顺序,不仅使得服务器可以优先处理请求权限较高的获取锁请求,而且由于可以按照排列顺序依次对获取锁请求进行处理,还减少了多个用户同时修改共享数据时发生修改冲突的概率。
84.在一个实施例中,对于至少一个获取锁请求中的每个获取锁请求,均确定互斥锁池中是否存在已分配的、且与当前获取锁请求中的当前行标识相对应的互斥锁,包括:按照获取锁请求在存储队列中的排列顺序,对存储队列中的获取锁请求进行遍历;对于当前遍历至的当前获取锁请求,确定互斥锁池中是否存在已分配的、且与当前获取锁请求中的当前行标识相对应的互斥锁。
85.具体地,计算机设备按照获取锁请求在存储队列中的排列顺序,依次响应存储队列中的获取锁请求,对于当前响应的当前获取锁请求,计算机设备在互斥锁池中查找是否存在已分配的、且与当前获取锁请求中的当前行标识相对应的互斥锁。
86.在其中一个实施例中,由于存储队列中可存在多个目标待处理单据的获取锁请求,因此,当计算机设备依次响应于存储队列中的获取锁请求,并确定互斥锁池中不存在已分配的、且与当前获取锁请求中的当前行标识相对应的互斥锁时,计算机设备根据当前获取锁请求中的单据标识,确定与当前获取锁请求相对应的当前目标待处理单据,并将未分配的互斥锁分配至当前目标待处理单据中的当前行标识所对应的待处理数据行。
87.在其中一个实施例中,当计算机设备获取到存储队列中的当前获取锁请求时,存储队列中的其他获取锁请求处于等待状态,若与当前获取锁请求相对应的待处理数据行分
配到互斥锁时,则处理存储队列下一获取锁请求,并将下一获取锁请求解除等待状态;直至存储队列中的所有获取锁请求的等待状态解除,并成功分配到获取锁请求中与行标识相对应的互斥锁。
88.在其中一个实施例中,计算机设备根据当前待处理单据中的每个待处理数据行的行标识的排列顺序、以及待处理数据行的行标识各自对应的获取锁请求,得到获取锁请求在存储队列中的排列顺序。
89.例如,参考图3,当计算机设备获取到单据1中的多个待处理数据行,且待处理数据行的行标识的排列顺序依次为待处理数据行c、待处理数据行b、待处理数据行a时,计算机设备依次获取每个待处理数据行各自对应的获取锁请求。
90.本实施例中,通过确定获取锁请求在存储队列中的排列顺序,使得计算机设备可按照排列顺序依次对获取锁请求进行处理,从而减少了漏处理获取锁请求的概率。
91.在一个实施例中,在目标待处理单据中的每个待处理数据行均获取得到互斥锁时,对目标待处理单据进行业务处理,包括:获取目标待处理单据中的每个待处理数据行中的数据内容;数据内容包括库存总数值、库存转移量、资源总数值、资源转移数值中的至少一种;对于多个待处理数据行中的每个待处理数据行,均根据当前待处理数据行中的库存总数值、库存转移量、资源总数值、资源转移数值中的至少一种,对预设业务数据库中的业务数据进行更新。
92.具体地,当用户在终端填写目标待处理单据,并提交目标待处理单据后,终端可生成与目标待处理单据相对应的单据提交请求。服务器通过获取到的单据提交请求,确定目标待处理单据中每个待处理数据行的数据内容,并根据待处理数据行的数据内容确认在预设业务数据库中业务数据,其中,该业务数据即可为上述的待处理数据行所指向的共享数据。进一步地,计算机设备根据各待处理数据行各自对应的数据内容,对相应的业务数据进行更新,以实现对目标待处理单据进行业务处理。
93.例如,若某资源转移项目单据中的待处理数据行为“资源:a;资源总数值:100万元;资源转移数值:2万元”时,计算机设备将预设业务数据库中的业务数据“资源a”的资源总数值从100更新为98。
94.例如,若某库存管理单据中的待处理数据行为“库存:b;库存总数值:100件;库存转移量:5件”时,计算机设备将预设业务数据库中的业务数据“库存b”的库存总数值从100更新为95。
95.在其中一个实施例中,计算机设备可将更新结果在目标待处理单据中相应的待处理数据行进行显示。
96.本实施例中,计算机设备在确定目标待处理单据中的每个待处理数据行均获取得到互斥锁时,对目标待处理单据的数据内容进行更新,避免了多个用户对同一共享数据进行修改时发生的修改冲突,因此能够提升单据处理的准确性。
97.在一个实施例中,确定与目标待处理单据相对应的每个获取锁请求,是否均在预设超时时长内获取到互斥锁;若存在未在超时时长内获取到互斥锁的获取锁请求时,则释放目标待处理单据中的待处理数据行所占用的互斥锁。
98.例如,如图4所示,图4为单据获取互斥锁的流程示意图。当用户在终端对目标待处理单据进行提交后,计算机设备根据提交请求确定目标待处理单据中的多个待处理数据
行、以及确定每个待处理数据行各自对应的获取锁请求,其中,计算机设备的每一个线程则执行一个获取锁请求,线程的执行具有超时时长限制。若计算机设备在预设超时时长内未通过获取锁请求获取得到互斥锁时,也即,若线程的执行超出超时时长时,则计算机设备释放目标待处理单据中的待处理数据行所占用的互斥锁;反之,当目标待处理单据中的每个待处理数据行均获取到互斥锁,目标待处理单据可进行业务处理。业务处理完成后,用户在终端提交的目标待处理单据视为提交成功,此时,计算机设备将目标待处理单据中的所有互斥锁释放至互斥锁池中,以便后续其他单据中的待处理数据行获取相对应的互斥锁。
99.本实施例中,通过确定在预设超时时长内未获取到互斥锁的待处理数据行后,将已获取到互斥锁的待处理数据行所占用的互斥锁释放,能够有效减少对互斥锁的无效占用,使得后续每个待处理数据行均能顺利获取到互斥锁。
100.在一个实施例中,确定释放互斥锁的释放时间点;确定当前时间点与释放时间点之间的时间间隔;当时间间隔与预设等待时长相匹配时,重新响应于目标待处理单据相对应的至少一个获取锁请求,得到目标待处理单据中的每个待处理数据行各自对应的互斥锁。
101.参考图4,当对每个待处理数据行已获取到的互斥锁同时进行释放后,计算机设备记录释放互斥锁的释放时间点,并进行预设时长的等待。当执行预设时长的等待后,计算机设备再次获取目标待处理单据中的每个待处理数据行各自对应的获取锁请求,若目标待处理单据中的每个待处理数据行均获取到互斥锁,目标待处理单据可进行业务处理;反之,若仍有待处理数据行获取互斥锁失败,则认为目标待处理单据的提交请求失败。例如上述举例,当计算机设备获取到单据1中的每个待处理数据行的获取锁请求时,在互斥锁的超时时间为1.1秒内,没有对待处理数据行a分配互斥锁,则计算机设备释放单据1中的已获取到互斥锁的待处理数据行b、待处理数据行c所占用的互斥锁。在当执行预设时长为1秒的等待后,计算机设备再次获取单据1中的每个待处理数据行各自对应的获取锁请求,若待处理数据行a仍没有分配到互斥锁,则单据1提交失败。
102.在其中一个实施例中,确定计算机设备中的线程获取互斥锁的超时时长,以超时时间为基础并减去一个预设时间值,可得到计算机设备释放互斥锁后的等待时长。例如,执行当前线程的超时时间为1.1秒,预设时间值是0.1秒,则计算机设备释放互斥锁后的等待时长为1秒。
103.本实施例中,计算机设备通过进行预设时长的等待后,重新响应于目标待处理单据相对应的至少一个获取锁请求,能够有效利用计算机设备资源,避免出现动态死锁的现象,从而提高了单据处理效率。
104.在一个实施例中,图5为目标待处理单据的结构示意图。如图5所示,单据1中包括多条数据行,若其中的第一数据行与第二数据行为待处理数据行,其他数据行为不需要进行数据内容处理的数据行,因此计算机设备仅需对第一数据行与第二数据分别分配互斥锁,其他数据行不需要分配互斥锁,更不用直接对整个目标待处理单据分配互斥锁。由此可减少对不需要进行上锁的数据行强行上锁的概率,从而提升了互斥锁的分配有效性。
105.应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,
如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
106.基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的单据处理方法的单据处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个单据处理装置实施例中的具体限定可以参见上文中对于单据处理方法的限定,在此不再赘述。
107.在一个实施例中,如图6所示,提供了一种单据处理装置600,包括:获取锁请求模块602、互斥锁分配模块604、业务处理模块606和时长判断模块608,其中:
108.获取锁请求模块602,用于获取与目标待处理单据中的每个待处理数据行各自对应的获取锁请求。
109.互斥锁分配模块604,用于对至少一个获取锁请求中的每个获取锁请求,均确定互斥锁池中是否存在已分配的、且与当前获取锁请求中的当前行标识相对应的互斥锁;若不存在,则将互斥锁池中的未分配的互斥锁,分配至目标待处理单据中的与当前行标识相对应的待处理数据行。
110.业务处理模块606,用于在目标待处理单据中的每个待处理数据行均获取得到互斥锁时,对目标待处理单据进行业务处理;在业务处理完毕时,释放已处理单据中的各数据行所占用的互斥锁。
111.在一个实施例中,获取锁请求模块602,用于当得到单据提交请求时,确定单据提交请求所对应的目标待处理单据;确定目标待处理单据包括的至少一个待处理数据行;根据待处理数据行的行标识和目标待处理单据的单据标识,生成每个待处理数据行各自对应的获取锁请求;将获取锁请求存储至存储队列中。
112.在一个实施例中,获取锁请求模块602,用于当获取到至少一个单据提交请求时,确定每个单据提交请求各自对应的目标待处理单据,并生成每个目标待处理单据中的每个待处理数据行各自对应的获取锁请求;确定每个目标待处理单据各自对应的请求权限,并根据请求权限,确定每个锁获取请求在存储队列中的排列顺序;按照排列顺序将获取锁请求存储至存储队列中。
113.在一个实施例中,互斥锁分配模块604,用于按照获取锁请求在存储队列中的排列顺序,对存储队列中的获取锁请求进行遍历;对于当前遍历至的当前获取锁请求,确定互斥锁池中是否存在已分配的、且与当前获取锁请求中的当前行标识相对应的互斥锁。
114.在一个实施例中,业务处理模块606,用于获取目标待处理单据中的每个待处理数据行中的数据内容;对于多个待处理数据行中的每个待处理数据行,均根据当前待处理数据行中的数据内容,对预设业务数据库中的业务数据进行更新。
115.在一个实施例中,单据处理装置600还包括时长判断模块608,用于确定与目标待处理单据相对应的每个获取锁请求,是否均在预设超时时长内获取到互斥锁;若存在未在超时时长内获取到互斥锁的获取锁请求时,则释放目标待处理单据中的待处理数据行所占用的互斥锁。
116.在一个实施例中,时长判断模块608,还用于确定释放互斥锁的释放时间点;确定
当前时间点与释放时间点之间的时间间隔;当时间间隔与预设等待时长相匹配时,重新响应于目标待处理单据相对应的至少一个获取锁请求,得到目标待处理单据中的每个待处理数据行各自对应的互斥锁。
117.上述单据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
118.在一个实施例中,提供了一种计算机设备,该计算机设备可以是计算机设备,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储单据处理数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种单据处理方法。
119.本领域技术人员可以理解,图7示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
120.在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
121.在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
122.在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
123.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
124.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
125.以上实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献