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

基于异步编程在项目中的编码方法、系统、设备及介质与流程

2022-07-30 08:03:10 来源:中国专利 TAG:
1.本发明涉及异步编程技术,尤其涉及一种基于异步编程在项目中的编码方法、系统、设备及介质。
背景技术
::2.异步是一种程序设计的思想,使用异步模式设计的程序可以显著减少线程等待,从而在高吞吐量的场景中,极大提升系统的整体性能,显著降低时延。异步编程是一种并发编程的模式,其关注点是通过调度不同任务之间执行和等待的时间,通过减少处理器的闲置时间来达到减少整个程序的执行时间。3.现有的completablefuture(组合式异步编程)和reactor(异步应用程序库)异步编程框架存在上下文数据传递复杂,聚合操作部分框架不支持数据传递的缺陷;服务编排代码会随着业务规模迅速膨胀,造成编排代码难以开发和维护。技术实现要素: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.图1为本发明实施例1的基于异步编程在项目中的编码方法的流程图。38.图2为本发明实施例1的基于异步编程在项目中的编码方法的项目结构示意图。39.图3为本发明实施例2的基于异步编程在项目中的编码系统的模块示意图。40.图4为本发明实施例3的电子设备的硬件结构示意图。具体实施方式41.下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。42.实施例143.如图1所示,本发明实施例中一种基于异步编程在项目中的编码方法的流程图,具体可以包括如下步骤:44.s1、获取目标项目数据;目标项目数据包括多个第一数据模块,不同的第一数据模块对应不同类型的项目子数据,第一数据模块包括类属性标识。45.s2、确定目标项目数据对应的数据结构图;数据结构图用于表征由第一数据模块和依赖于第一数据模块而生成的第二数据模块构成的树型结构。46.s3、执行根据第一数据模块和第二数据模块而设定的处理线程。47.s4、检测当前执行的处理线程中待处理的第二数据模块是否为根节点,若否,则执行步骤s51,若是,则执行步骤s52。48.s51、继续执行处理线程中依赖于第二数据模块的其他的第二数据模块的数据处理运算。49.s52、结束线程。50.针对上述步骤s1,可以通过网站或者应用(application;app)进行埋点,获取用户的行为数据和订单请求数据构成的目标项目数据。如图2所示,目标项目数据为查询订单退改信息,该项目包括三个第一数据模块,每个第一数据模块中存储的项目子数据不同。51.针对上述步骤s2,获取该目标项目数据在执行的过程中所需的数据结构图。如图2所示,为由第一数据模块和第二数据模块构成的树型结构图。该图中collector1数据模块、collector2数据模块和collector3数据模块为第一数据模块。collector4数据模块、collector5数据模块、builder1数据模块、builder2数据模块和responsebuilder数据模块为第二数据模块。52.针对上述步骤s3,在执行处理线程的过程中,collector4数据模块访问collector1数据模块的机票订单详情数据,和collector2数据模块的机票退票数据,计算是否还有未退票的航班,获取未退票航班的航班改签政策数据。collector5数据模块访问collector1数据模块的机票订单详情数据,和collector2数据模块的机票退票数据,计算是否还有未退票的航班,获取剩余未退票的航班退票政策数据。53.builder1数据模块聚合collector4数据模块和collector5数据模块的剩余未退票航班的退改签政策数据,builder2数据模块聚合collector5数据模块的剩余未退票航班的退票政策数据,collector3数据模块的机票订单附属产品(比如保险,休息室等)的数据,计算此订单剩余可退金额。responsebuilder数据模块将builder1数据模块和builder2数据模块中存储的数据进行聚合,将聚合后的结果返回给用户端。54.针对上述步骤s4,处理线程运行的过程中,实时检测待处理的第二数据模块是否为responsebuilder数据模块(根节点),若不是,表明该处理线程未运行完毕,继续自动执行步骤s51,若是,表明该处理线程已经运行完毕了,则自动执行步骤s52。55.在一种可能实现的方案中,步骤s3包括:56.s31、针对第一数据模块,使用多线程并发运行以获取第一数据模块中存储的项目子数据;57.s32、当获取到项目子数据后,以后序遍历的顺序执行第二数据模块中的数据处理运算。58.针对上述步骤s31,对于与其他数据模块不存在依赖关系的第一数据模块,使用多线程的方式,同时获取每个第一数据模块中预先存储的项目子数据。例如,图2的项目结构图中利用多线程同时获取collector1数据模块、collector2数据模块和collector3数据模块中显示存储的项目子数据分别为机票订单详情数据、机票退票数据和机票订单附属产品(比如保险、休息室等)详情数据,59.针对上述步骤s32,当获取到项目子数据后,按照图2中箭头所指的方向继续执行后续的线程。例如,collector4数据模块访问collector1数据模块中的机票订单详情数据,并且访问collector2数据模块中的机票退票数据,计算是否还有未退票的航班,获取未退票航班的航班改签政策数据。60.在一种可能实现的方案中,步骤s32包括:61.s321、根据类属性标识,调用与每个第二数据模块相关联的项目子数据并执行预设的逻辑运算。62.s322、将每个第二数据模块的逻辑运算结果存储于目标位置。63.具体地,collector5数据模块通过第一数据模块中标注的类属性标识,利用getarrivecityid方法访问collector1数据模块中的机票订单详情数据,并且访问collector2数据模块中的机票退票数据,计算是否还有未退票的航班,获取剩余未退票的航班退票政策数据。将需要保存和传出数据的类中,将此类设置为跨线程的requestscope生命周期,将数据赋值于类属性,并设置类属性的访问权限。其次,collector2数据模块将剩余未退票的航班退票政策数据保存至在本模块中,以供剩余的其他的第二数据模块执行后续的线程时,实现数据访问。64.本实施例中,提供一种基于异步编程在项目中的编码方法,确定目标项目数据对应的数据结构图;执行根据第一数据模块和第二数据模块而设定的处理线程;根据当前执行的处理线程中待处理的第二数据模块是否为根节点的判断结果,确定继续执行或者暂停线程。本发明通过对象属性存储数据,一方面实现了高内聚的模块化,另一方面实现了灵活高效的跨模块数据访问功能;基于模块化实现的自动服务编排,实现了模块之间数据灵活的上下传递,节省了服务编排的硬编码与维护工作。65.实施例266.如图3所示,本发明实施例中一种基于异步编程在项目中的编码系统的模块示意图,具体可以包括如下步骤:获取模块210、确定模块220、执行模块230、检测模块240、第一处理模块251和第二处理模块252。67.其中,获取模块210,用于获取目标项目数据;目标项目数据包括多个第一数据模块,不同的第一数据模块对应不同类型的项目子数据,第一数据模块包括类属性标识。68.确定模块220,用于确定目标项目数据对应的数据结构图;数据结构图用于表征由第一数据模块和依赖于第一数据模块而生成的第二数据模块构成的树型结构。69.执行模块230,用于执行根据第一数据模块和第二数据模块而设定的处理线程。70.检测模块240,用于检测当前执行的处理线程中待处理的第二数据模块是否为根节点,若否,则调用第一处理模块251;若是,则调用第二处理模块252;71.第一处理模块251,用于继续执行处理线程中依赖于第二数据模块的其他的第二数据模块的数据处理运算。72.第二处理模块252,用于结束线程。73.可以通过网站或者应用(application;app)进行埋点,获取模块210获取用户的行为数据和订单请求数据构成的目标项目数据。如图2所示,目标项目数据为查询订单退改信息,该项目包括三个第一数据模块,每个第一数据模块中存储的项目子数据不同。74.确定模块220获取该目标项目数据在执行的过程中所需的数据结构图。如图2所示,为由第一数据模块和第二数据模块构成的树型结构图。该图中collector1数据模块、collector2数据模块和collector3数据模块为第一数据模块。collector4数据模块、collector5数据模块、builder1数据模块、builder2数据模块和responsebuilder数据模块为第二数据模块。75.执行模块230在执行处理线程的过程中,collector4数据模块访问collector1数据模块的机票订单详情数据,和collector2数据模块的机票退票数据,计算是否还有未退票的航班,获取未退票航班的航班改签政策数据。collector5数据模块访问collector1数据模块的机票订单详情数据,和collector2数据模块的机票退票数据,计算是否还有未退票的航班,获取剩余未退票的航班退票政策数据。76.builder1数据模块聚合collector4数据模块和collector5数据模块的剩余未退票航班的退改签政策数据,builder2数据模块聚合collector5数据模块的剩余未退票航班的退票政策数据,collector3数据模块的机票订单附属产品(比如保险,休息室等)的数据,计算此订单剩余可退金额。responsebuilder数据模块将builder1数据模块和builder2数据模块中存储的数据进行聚合,将聚合后的结果返回给用户端。77.处理线程运行的过程中,检测模块240实时检测待处理的第二数据模块是否为responsebuilder数据模块(根节点),若不是,表明该处理线程未运行完毕,继续自动调用第一处理模块251,若是,表明该处理线程已经运行完毕了,则自动调用第二处理模块252。78.在一种可能实现的方案中,该执行模块230包括:79.获取单元231,用于针对第一数据模块,使用多线程并发运行以获取第一数据模块中存储的项目子数据;80.执行单元232,用于当获取到项目子数据后,以后序遍历的顺序执行所第二数据模块中的数据处理运算。81.对于与其他数据模块不存在依赖关系的第一数据模块,获取单元231使用多线程的方式,同时获取每个第一数据模块中预先存储的项目子数据。例如,图2的项目结构图中利用多线程同时获取collector1数据模块、collector2数据模块和collector3数据模块中显示存储的项目子数据分别为机票订单详情数据、机票退票数据和机票订单附属产品(比如保险、休息室等)详情数据,82.当获取到项目子数据后,执行单元232按照图2中箭头所指的方向继续执行后续的线程。例如,collector4数据模块访问collector1数据模块中的机票订单详情数据,并且访问collector2数据模块中的机票退票数据,计算是否还有未退票的航班,获取未退票航班的航班改签政策数据。83.在一种可能实现的方案中,执行单元232具有用于:84.根据类属性标识,调用与每个第二数据模块相关联的项目子数据并执行预设的逻辑运算。85.将每个第二数据模块的逻辑运算结果存储于目标位置。86.例如,执行单元232具有利用collector5数据模块通过第一数据模块中标注的类属性标识,利用getarrivecityid方法访问collector1数据模块中的机票订单详情数据,并且访问collector2数据模块中的机票退票数据,计算是否还有未退票的航班,获取剩余未退票的航班退票政策数据。将需要保存和传出数据的类中,将此类设置为跨线程的requestscope生命周期,将数据赋值于类属性,并设置类属性的访问权限。其次,collector2数据模块将剩余未退票的航班退票政策数据保存至在本模块中,以供剩余的其他的第二数据模块执行后续的线程时,实现数据访问。87.本实施例中,提供一种基于异步编程在项目中的编码系统,确定模块确定目标项目数据对应的数据结构图;执行模块执行根据第一数据模块和第二数据模块而设定的处理线程;第一检测模块根据当前执行的处理线程中待处理的第二数据模块是否为根节点的判断结果,确定继续执行或者暂停线程。本发明通过对象属性存储数据,一方面实现了高内聚的模块化,另一方面实现了灵活高效的跨模块数据访问功能;基于模块化实现的自动服务编排,实现了模块之间数据灵活的上下传递,节省了服务编排的硬编码与维护工作。88.实施例389.图4为本实施例提供的一种电子设备的结构示意图。所述电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现实施例1的基于异步编程在项目中的编码方法,图4显示的电子设备30仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。90.电子设备30可以以通用计算设备的形式表现,例如其可以为服务器设备。电子设备30的组件可以包括但不限于:上述至少一个处理器31、上述至少一个存储器32、连接不同系统组件(包括存储器32和处理器31)的总线33。91.总线33包括数据总线、地址总线和控制总线。92.存储器32可以包括易失性存储器,例如随机存取存储器(ram)321和/或高速缓存存储器322,还可以进一步包括只读存储器(rom)323。93.存储器32还可以包括具有一组(至少一个)程序模块324的程序/实用工具325,这样的程序模块324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。94.处理器31通过运行存储在存储器32中的计算机程序,从而执行各种功能应用以及数据处理,例如本发明实施例1的基于异步编程在项目中的编码方法。95.电子设备30也可以与一个或多个外部设备34(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(i/o)接口35进行。并且,模型生成的设备30还可以通过网络适配器36与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器36通过总线33与模型生成的设备30的其它模块通信。应当明白,尽管图中未示出,可以结合模型生成的设备30使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。96.应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。97.实施例498.本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现实施例1的基于异步编程在项目中的编码方法的步骤。99.其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。100.在可能的实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行实现实施例1的基于异步编程在项目中的编码方法的步骤。101.其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的程序代码,所述程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。102.虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。当前第1页12当前第1页12
再多了解一些

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

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

相关文献