1.本发明涉及数据传输领域,特别涉及一种账户查询方法及相关装置。
背景技术:
::2.银行的后台系统复杂,用户的各类账户(借记卡、贷记卡和二类户等)被存储在不同的关联系统中,若需要在用户的所有账户在掌上银行客户端上统一展示,必须通过掌上银行客户端的后台通过接口依次查询各个关联系统,将查询到的结果去重后展示,查询效率低下。技术实现要素:3.鉴于上述问题,本发明提供一种克服上述问题或者至少部分地解决上述问题的账户查询方法及相关装置。4.第一方面,一种账户查询方法,包括:5.获得针对目标用户的账户列表查询请求,其中,所述账户列表查询请求涉及多种账户;6.基于completablefuture技术,创建所述账户列表查询请求对应的多个子线程任务,其中,一个所述子线程任务对应一种所述账户;7.调用所述completablefuture技术的编排线程api,将各所述子线程任务分别编排至不同的cpu单元中并行运行,从而通过各所述子线程任务查询获得所述目标用户的各所述账户,其中,一个所述cpu单元运行一个所述子线程任务。8.结合第一方面,在某些可选的实施方式中,所述基于completablefuture技术,创建所述账户列表查询请求对应的多个子线程任务,包括:9.基于所述completablefuture技术,创建completablefuture实例;10.在所述completablefuture实例的多个线程池中分别添加不同任务,从而创建各所述子线程任务,其中,一个所述线程池添加一个所述任务。11.结合第一方面,在某些可选的实施方式中,所述调用所述completablefuture技术的编排线程api,将各所述子线程任务分别编排至不同的cpu单元中并行运行,从而通过各所述子线程任务查询获得所述目标用户的各所述账户,包括:12.调用所述completablefuture技术的supplyasync()接口,将各所述子线程任务分别编排至各所述cpu单元中;13.调用所述completablefuture技术的allof()接口,控制各所述子线程任务在相应的cpu单元中自动运行;14.调用所述completablefuture技术的aget()接口,获取各所述子线程任务查询得到的账户,从而获得所述目标用户的各所述账户。15.结合第一方面,在某些可选的实施方式中,在所述调用所述completablefuture技术的编排线程api,将各所述子线程任务分别编排至不同的cpu单元中并行运行,从而通过各所述子线程任务查询获得所述目标用户的各所述账户之后,所述方法还包括:16.将获得的各所述账户组合成账户列表发送给所述账户列表查询请求的发送方。结合第一方面,在某些可选的实施方式中,在所述获得针对目标用户的账户列表查询请求之后,所述方法还包括:17.加载预先针对所述目标用户存储的历史查询结果信息,其中,所述历史查询结果信息中记录有最近一次针对所述目标用户的账户列表的查询结果;18.将所述历史查询结果信息发送至所述账户列表查询请求的发送方。19.第二方面,一种账户查询装置,包括:查询请求获得单元、线程创建单元和编排查询单元;20.所述查询请求获得单元,用于获得针对目标用户的账户列表查询请求,其中,所述账户列表查询请求涉及多种账户;21.所述线程创建单元,用于基于completablefuture技术,创建所述账户列表查询请求对应的多个子线程任务,其中,一个所述子线程任务对应一种所述账户;22.所述编排查询单元,用于调用所述completablefuture技术的编排线程api,将各所述子线程任务分别编排至不同的cpu单元中并行运行,从而通过各所述子线程任务查询获得所述目标用户的各所述账户,其中,一个所述cpu单元运行一个所述子线程任务。23.结合第二方面,在某些可选的实施方式中,所述线程创建单元,包括:实例创建子单元和任务添加子单元;24.所述实例创建子单元,用于基于所述completablefuture技术,创建completablefuture实例;25.所述任务添加子单元,用于在所述completablefuture实例的多个线程池中分别添加不同任务,从而创建各所述子线程任务,其中,一个所述线程池添加一个所述任务。26.结合第二方面,在某些可选的实施方式中,所述编排查询单元,包括:编排子单元、运行子单元和获取子单元;27.所述编排子单元,用于调用所述completablefuture技术的supplyasync()接口,将各所述子线程任务分别编排至各所述cpu单元中;28.所述运行子单元,用于调用所述completablefuture技术的allof()接口,控制各所述子线程任务在相应的cpu单元中自动运行;29.所述获取子单元,用于调用所述completablefuture技术的aget()接口,获取各所述子线程任务查询得到的账户,从而获得所述目标用户的各所述账户。30.第三方面,一种计算机可读存储介质,其上存储有程序,所述程序被处理器执行时实现上述任一项所述的账户查询方法。31.第四方面,一种电子设备,所述电子设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如上述任一项所述的账户查询方法。32.借由上述技术方案,本发明提供的账户查询方法及相关装置,可以通过获得针对目标用户的账户列表查询请求,其中,所述账户列表查询请求涉及多种账户;基于completablefuture技术,创建所述账户列表查询请求对应的多个子线程任务,其中,一个所述子线程任务对应一种所述账户;调用所述completablefuture技术的编排线程api,将各所述子线程任务分别编排至不同的cpu单元中并行运行,从而通过各所述子线程任务查询获得所述目标用户的各所述账户,其中,一个所述cpu单元运行一个所述子线程任务。由此可以看出,本发明通过completablefuture技术构建并行执行的多个子线程任务,由多个子线程任务并行响应账户列表查询请求,查询效率较高。33.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明34.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:35.图1示出了本发明提供的第一种账户查询方法的流程图;36.图2示出了本发明提供的第二种账户查询方法的流程图;37.图3示出了本发明提供的第三种账户查询方法的流程图;38.图4示出了本发明提供的第四种账户查询方法的流程图;39.图5示出了本发明提供的一种账户查询装置的结构示意图;40.图6示出了本发明提供的一种电子设备的结构示意图。具体实施方式41.经本发明人研究发现:银行的后台系统复杂,用户的各类账户(借记卡、贷记卡和二类户等)被存储在不同的关联系统中,若需要在用户的所有账户在掌上银行客户端上统一展示,必须通过掌上银行客户端的后台通过接口依次查询各个关联系统,将查询到的结果去重后展示,查询效率低下。42.为此,本发明人提供了账户查询方法及相关装置,利用completablefuture技术,在掌上银行客户端后台实现对账户查询功能的快速加载,大大缩短了查询时间,实现了账户的快速加载。43.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。44.如图1所示,本发明提供了一种账户查询方法,包括:s100、s200和s300;45.s100、获得针对目标用户的账户列表查询请求,其中,所述账户列表查询请求涉及多种账户;46.可选的,作为银行的用户,在需要的时候可以通过掌上银行客户端查询用户的账户列表,包括借记卡账户、贷记卡账户、存折账户和二类户账户等,本发明对此不做限制。即,本发明的执行主体可以是掌上银行的后台,账户列表查询请求的发送方可以是掌上银行客户端,本发明对此不做限制。47.可选的,如前所述,一个账户列表查询请求可以是查询一个目标用户的多种账户。本发明的执行主体可以响应账户列表查询请求,返回目标用户的账户列表,账户列表中包括目标用户的多种账户,本发明对此不做限制。48.s200、基于completablefuture技术,创建所述账户列表查询请求对应的多个子线程任务;49.其中,一个所述子线程任务对应一种所述账户;50.可选的,completablefuture技术是java提供的异步编程技术,异步编程是编写非阻塞的代码,运行的线程任务在一个单独的线程,与主线程隔离,并且会通知主线程它的进度。需要说明的是:completablefuture技术是本领域的公知概念,本发明对此不做过多描述,具体请参见本领域的相关解释。51.可选的,如前所述,账户列表查询请求涉及查询多种账户,针对每一种账户均可以创建相应的子线程任务,以便于后续通过一个子线程任务查询一种账户,从而提高查询效率,本发明对此不做限制。52.可选的,本发明对于创建多个子线程任务的方式不做限制,任何可行的方式均属于本发明的保护范围。例如,如图2所示,结合图1所示的实施方式,在某些可选的实施方式中,所述s200,包括:s210和s220;53.s210、基于所述completablefuture技术,创建completablefuture实例;54.可选的,completablefuture实例属于本领域的公知概念,本发明对此不做过多描述,具体请参见本领域的相关说明。需要说明的是:本发明可以通过下述代码方式创建completablefuture实例:completablefuture《void》creditcardlistfuture=completablefuture.supplyasync(()-》{}),本发明对此不做限制。55.s220、在所述completablefuture实例的多个线程池中分别添加不同任务,从而创建各所述子线程任务,其中,一个所述线程池添加一个所述任务。56.可选的,每个子线程任务所对应的账户种类不同,所以需要查询其它关联系统(各账户保存在其它关联系统中,并由相应的接口对外提供查询服务)的接口也不同。因此,对应的子线程任务可以不同,各任务的添加过程如下代码所示:completablefuture《void》creditcardlistfuture=completablefuture.supplyasync(()-》{},executor),本发明对此不做限制。57.可选的,线程池是本领域的公知概念,本发明对此不做过多描述,具体请参见本领域的相关说明。58.s300、调用所述completablefuture技术的编排线程api,将各所述子线程任务分别编排至不同的cpu单元中并行运行,从而通过各所述子线程任务查询获得所述目标用户的各所述账户;59.其中,一个所述cpu单元运行一个所述子线程任务。60.可选的,如前所述completablefuture技术可以用于对各所述子线程任务进行异步编程。即,将各所述子线程任务分别编排至不同的cpu单元中并行运行。本发明对于调用所述completablefuture技术的编排线程api,将各所述子线程任务分别编排至不同的cpu单元中并行运行,从而通过各所述子线程任务查询获得所述目标用户的各所述账户的过程不做限制。例如,如图3所示,结合图1所示的实施方式,在某些可选的实施方式中,所述s300,包括:s310、s320和s330;61.s310、调用所述completablefuture技术的supplyasync()接口,将各所述子线程任务分别编排至各所述cpu单元中;62.可选的,completablefuture技术提供丰富的future的扩展功能,例如可以通过supplyasync()接口简化异步编程的复杂性并实现异步编程,本发明对此不做限制。63.s320、调用所述completablefuture技术的allof()接口,控制各所述子线程任务在相应的cpu单元中自动运行;64.s330、调用所述completablefuture技术的aget()接口,获取各所述子线程任务查询得到的账户,从而获得所述目标用户的各所述账户。65.可选的,本发明对获取各账户的实现方式不做限制。例如,通过下述代码实现获取各所述子线程任务查询得到的账户:completablefuture《void》allof=completablefuture.allof(creditcardlistfuture,debitcardlistfuture);66.allof.get();67.可选的,上述supplyasync()接口、allof()接口、aget()接口和cpu单元均是本领域的公知概念,本发明对此不做过多描述,具体请参见本领域的相关说明。68.可选的,本发明的执行主体可以从上述其他关联系统中获取目标用户的各种账户,本发明对此不做限制。69.可选的。如图4所示,结合图1所示的实施方式,在某些可选的实施方式中,在所述s300之后,所述方法还包括:s400;70.s400、将获得的各所述账户组合成账户列表发送给所述账户列表查询请求的发送方。71.可选的,将各账户组合成账户列表再进行发送,有利于用户查看,提高用户体验。72.可选的,结合图1所示的实施方式,在某些可选的实施方式中,在所述s100之后,所述方法还包括:步骤1.1和步骤1.2;73.步骤1.1、加载预先针对所述目标用户存储的历史查询结果信息,其中,所述历史查询结果信息中记录有最近一次针对所述目标用户的账户列表的查询结果;74.步骤1.2、将所述历史查询结果信息发送至所述账户列表查询请求的发送方。75.可选的,本发明的执行主体可以统计和记录各个目标用户的账户列表的查询结果,以便于在接收到新的账户列表查询请求时,可以先将最近一次查询得到的账户列表发送给发送方,再接着执行本次针对该目标用户的账户列表的查询过程,并将查询得到的结果发送给发送方,以便于发送方可以对比查看账户列表的变化。76.可选的,本发明的发送方,也就是掌上银行客户端每次接收到账户列表后,可以将该账户列表保存在本地。例如,通过localstorage技术保存在本地。当该掌上银行客户端发送新的账户列表查询请求后,可以根据该账户列表查询请求中携带的用户信息,确定对应的目标用户,并根据用户信息加载保存在本地的该目标用户的账户列表并展示,本发明对此不做限制。77.可选的,如前所述,掌上银行客户端在本地保存有账户列表,则在接收到某个用户的新的账户列表后,可以对比确定账户列表是否发送变化,若发生变化,则将最新的账户列表保存至本地,以提高本发明的失效性和准确率,本发明对此不做限制。78.如图5所示,一种账户查询装置,包括:查询请求获得单元100、线程创建单元200和编排查询单元300;79.所述查询请求获得单元100,用于获得针对目标用户的账户列表查询请求,其中,所述账户列表查询请求涉及多种账户;80.所述线程创建单元200,用于基于completablefuture技术,创建所述账户列表查询请求对应的多个子线程任务,其中,一个所述子线程任务对应一种所述账户;81.所述编排查询单元300,用于调用所述completablefuture技术的编排线程api,将各所述子线程任务分别编排至不同的cpu单元中并行运行,从而通过各所述子线程任务查询获得所述目标用户的各所述账户,其中,一个所述cpu单元运行一个所述子线程任务。82.结合图5所示的实施方式,在某些可选的实施方式中,所述线程创建单元200,包括:实例创建子单元和任务添加子单元;83.所述实例创建子单元,用于基于所述completablefuture技术,创建completablefuture实例;84.所述任务添加子单元,用于在所述completablefuture实例的多个线程池中分别添加不同任务,从而创建各所述子线程任务,其中,一个所述线程池添加一个所述任务。85.结合图5所示的实施方式,在某些可选的实施方式中,所述编排查询单元300,包括:编排子单元、运行子单元和获取子单元;86.所述编排子单元,用于调用所述completablefuture技术的supplyasync()接口,将各所述子线程任务分别编排至各所述cpu单元中;87.所述运行子单元,用于调用所述completablefuture技术的allof()接口,控制各所述子线程任务在相应的cpu单元中自动运行;88.所述获取子单元,用于调用所述completablefuture技术的aget()接口,获取各所述子线程任务查询得到的账户,从而获得所述目标用户的各所述账户。89.结合图5所示的实施方式,在某些可选的实施方式中,所述装置还包括:组合发送单元;90.所述组合发送单元,用于在所述调用所述completablefuture技术的编排线程api,将各所述子线程任务分别编排至不同的cpu单元中并行运行,从而通过各所述子线程任务查询获得所述目标用户的各所述账户之后,将获得的各所述账户组合成账户列表发送给所述账户列表查询请求的发送方。91.结合图5所示的实施方式,在某些可选的实施方式中,所述装置还包括:加载历史信息单元和历史信息发生单元;92.所述加载历史信息单元,用于在所述获得针对目标用户的账户列表查询请求之后,加载预先针对所述目标用户存储的历史查询结果信息,其中,所述历史查询结果信息中记录有最近一次针对所述目标用户的账户列表的查询结果;93.所述历史信息发生单元,用于将所述历史查询结果信息发送至所述账户列表查询请求的发送方。94.本发明提供了一种计算机可读存储介质,其上存储有程序,所述程序被处理器执行时实现上述任一项所述的账户查询方法。95.如图6所示,本发明提供了一种电子设备70,所述电子设备70包括至少一个处理器701、以及与所述处理器701连接的至少一个存储器702、总线703;其中,所述处理器701、所述存储器702通过所述总线703完成相互间的通信;所述处理器701用于调用所述存储器702中的程序指令,以执行上述任一项所述的账户查询方法。96.在本技术中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。97.本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。98.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。99.以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。当前第1页12当前第1页12
技术特征:1.一种账户查询方法,其特征在于,包括:获得针对目标用户的账户列表查询请求,其中,所述账户列表查询请求涉及多种账户;基于completablefuture技术,创建所述账户列表查询请求对应的多个子线程任务,其中,一个所述子线程任务对应一种所述账户;调用所述completablefuture技术的编排线程api,将各所述子线程任务分别编排至不同的cpu单元中并行运行,从而通过各所述子线程任务查询获得所述目标用户的各所述账户,其中,一个所述cpu单元运行一个所述子线程任务。2.根据权利要求1所述的方法,其特征在于,所述基于completablefuture技术,创建所述账户列表查询请求对应的多个子线程任务,包括:基于所述completablefuture技术,创建completablefuture实例;在所述completablefuture实例的多个线程池中分别添加不同任务,从而创建各所述子线程任务,其中,一个所述线程池添加一个所述任务。3.根据权利要求1所述的方法,其特征在于,所述调用所述completablefuture技术的编排线程api,将各所述子线程任务分别编排至不同的cpu单元中并行运行,从而通过各所述子线程任务查询获得所述目标用户的各所述账户,包括:调用所述completablefuture技术的supplyasync()接口,将各所述子线程任务分别编排至各所述cpu单元中;调用所述completablefuture技术的allof()接口,控制各所述子线程任务在相应的cpu单元中自动运行;调用所述completablefuture技术的aget()接口,获取各所述子线程任务查询得到的账户,从而获得所述目标用户的各所述账户。4.根据权利要求1所述的方法,其特征在于,在所述调用所述completablefuture技术的编排线程api,将各所述子线程任务分别编排至不同的cpu单元中并行运行,从而通过各所述子线程任务查询获得所述目标用户的各所述账户之后,所述方法还包括:将获得的各所述账户组合成账户列表发送给所述账户列表查询请求的发送方。5.根据权利要求1所述的方法,其特征在于,在所述获得针对目标用户的账户列表查询请求之后,所述方法还包括:加载预先针对所述目标用户存储的历史查询结果信息,其中,所述历史查询结果信息中记录有最近一次针对所述目标用户的账户列表的查询结果;将所述历史查询结果信息发送至所述账户列表查询请求的发送方。6.一种账户查询装置,其特征在于,包括:查询请求获得单元、线程创建单元和编排查询单元;所述查询请求获得单元,用于获得针对目标用户的账户列表查询请求,其中,所述账户列表查询请求涉及多种账户;所述线程创建单元,用于基于completablefuture技术,创建所述账户列表查询请求对应的多个子线程任务,其中,一个所述子线程任务对应一种所述账户;所述编排查询单元,用于调用所述completablefuture技术的编排线程api,将各所述子线程任务分别编排至不同的cpu单元中并行运行,从而通过各所述子线程任务查询获得所述目标用户的各所述账户,其中,一个所述cpu单元运行一个所述子线程任务。
7.根据权利要求6所述的装置,其特征在于,所述线程创建单元,包括:实例创建子单元和任务添加子单元;所述实例创建子单元,用于基于所述completablefuture技术,创建completablefuture实例;所述任务添加子单元,用于在所述completablefuture实例的多个线程池中分别添加不同任务,从而创建各所述子线程任务,其中,一个所述线程池添加一个所述任务。8.根据权利要求6所述的装置,其特征在于,所述编排查询单元,包括:编排子单元、运行子单元和获取子单元;所述编排子单元,用于调用所述completablefuture技术的supplyasync()接口,将各所述子线程任务分别编排至各所述cpu单元中;所述运行子单元,用于调用所述completablefuture技术的allof()接口,控制各所述子线程任务在相应的cpu单元中自动运行;所述获取子单元,用于调用所述completablefuture技术的aget()接口,获取各所述子线程任务查询得到的账户,从而获得所述目标用户的各所述账户。9.一种计算机可读存储介质,其上存储有程序,其特征在于,所述程序被处理器执行时实现如权利要求1至5中任一项所述的账户查询方法。10.一种电子设备,其特征在于,所述电子设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如权利要求1至5中任一项所述的账户查询方法。
技术总结本发明公开了账户查询方法及相关装置,可以通过获得针对目标用户的账户列表查询请求,其中,账户列表查询请求涉及多种账户;基于CompletableFuture技术,创建账户列表查询请求对应的多个子线程任务,其中,一个子线程任务对应一种账户;调用CompletableFuture技术的编排线程API,将各子线程任务分别编排至不同的CPU单元中并行运行,从而通过各子线程任务查询获得所述目标用户的各账户,其中,一个CPU单元运行一个子线程任务。本发明通过CompletableFuture技术构建并行执行的多个子线程任务,由多个子线程任务并行响应账户列表查询请求,查询效率较高。查询效率较高。查询效率较高。
技术研发人员:赵惊 王骏一
受保护的技术使用者:中国农业银行股份有限公司
技术研发日:2022.03.30
技术公布日:2022/7/5