掌桥专利:专业的专利平台
掌桥专利
首页

任务调度的方法、装置、设备及计算机可读存储介质

文献发布时间:2023-06-19 09:27:35


任务调度的方法、装置、设备及计算机可读存储介质

技术领域

本申请涉及计算机技术领域,具体而言,本申请涉及一种任务调度的方法、装置、设备及计算机可读存储介质。

背景技术

现有技术中任务调度是操作系统的重要组成部分,而对于实时操作系统,任务调度直接影响操作系统的实时性能。任务调度通过时间驱动和时间轮询的方式来判断任务是否满足条件,进而对任务进行触发。例如,时间片轮询法对于操作系统中的任务调度算法是分时处理,将处理器CPU的时间分时给各个任务使用,常用的定时方法是定时器,将调度器放在定时器中,可以实现时间片轮询法。但是时间驱动和时间轮询增加了额外资源开销,存在任务处理延迟和资源空闲浪费的情况。

发明内容

本申请针对现有的方式的缺点,提出一种任务调度的方法、装置、电子设备及计算机可读存储介质,用以解决如何提高任务调度的及时性和资源使用效率的问题。

第一方面,本申请提供了一种任务调度的方法,应用于第一服务器,包括:

接收第二服务器发送的第一消息,第一消息包括目标数据的标识;

若在预设的任务配置信息中匹配到目标数据的标识,则将任务配置信息包括的任务属性对应的目标任务进行调度,任务属性包括目标数据的标识。

可选地,目标数据的标识包括以下至少一项:

目标数据的名称、目标数据包括的订阅字段的名称、订阅字段的值。

可选地,第一消息还包括以下至少一项:

第二服务器发送第一消息的时间、目标数据的数据类型、第一消息的版本号。

可选地,目标数据的数据类型包括以下至少一项:

文件中的数据、内存中的数据、数据表中的数据。

可选地,任务属性还包括以下至少一项:

任务名称、任务描述、任务优先级、目标数据的数据类型。

可选地,任务配置信息按照下述方式设置:

确定预设的各原始数据的数据名称和各原始数据的数据类型;

若对各原始数据进行字段订阅,则确定各原始数据对应的订阅字段的名称和各原始数据对应的订阅字段的值;

根据各原始数据的数据名称、各原始数据的数据类型、各原始数据对应的订阅字段的名称和各原始数据对应的订阅字段的值,设置各原始数据对应的任务配置信息。

第二方面,本申请提供了一种任务调度的方法,应用于第二服务器,包括:

获取目标数据;

生成第一消息,第一消息包括目标数据的标识;

发送第一消息给第一服务器,第一服务器用于若在预设的任务配置信息中匹配到目标数据的标识,则使第一服务器将任务配置信息包括的任务属性对应的目标任务进行调度,任务属性包括目标数据的标识。

可选地,任务配置信息按照下述方式设置:

确定预设的各原始数据的数据名称和各原始数据的数据类型;

若对各原始数据进行字段订阅,则确定各原始数据对应的订阅字段的名称和各原始数据对应的订阅字段的值;

根据各原始数据的数据名称、各原始数据的数据类型、各原始数据对应的订阅字段的名称和各原始数据对应的订阅字段的值,设置各原始数据对应的任务配置信息。

第三方面,本申请提供了一种任务调度的装置,应用于第一服务器,包括:

第一处理模块,用于接收第二服务器发送的第一消息,第一消息包括目标数据的标识;

第二处理模块,用于若在预设的任务配置信息中匹配到目标数据的标识,则将任务配置信息包括的任务属性对应的目标任务进行调度,任务属性包括目标数据的标识。

可选地,目标数据的标识包括以下至少一项:

目标数据的名称、目标数据包括的订阅字段的名称、订阅字段的值。

可选地,第一消息还包括以下至少一项:

第二服务器发送第一消息的时间、目标数据的数据类型、第一消息的版本号。

可选地,目标数据的数据类型包括以下至少一项:

文件中的数据、内存中的数据、数据表中的数据。

可选地,任务属性还包括以下至少一项:

任务名称、任务描述、任务优先级、目标数据的数据类型。

可选地,任务配置信息按照下述方式设置:

确定预设的各原始数据的数据名称和各原始数据的数据类型;

若对各原始数据进行字段订阅,则确定各原始数据对应的订阅字段的名称和各原始数据对应的订阅字段的值;

根据各原始数据的数据名称、各原始数据的数据类型、各原始数据对应的订阅字段的名称和各原始数据对应的订阅字段的值,设置各原始数据对应的任务配置信息。

第四方面,本申请提供了一种任务调度的装置,应用于第二服务器,包括:

第三处理模块,用于获取目标数据;

第四处理模块,用于生成第一消息,第一消息包括目标数据的标识;

第五处理模块,用于发送第一消息给第一服务器,第一服务器用于若在预设的任务配置信息中匹配到目标数据的标识,则使第一服务器将任务配置信息包括的任务属性对应的目标任务进行调度,任务属性包括目标数据的标识。

可选地,任务配置信息按照下述方式设置:

确定预设的各原始数据的数据名称和各原始数据的数据类型;

若对各原始数据进行字段订阅,则确定各原始数据对应的订阅字段的名称和各原始数据对应的订阅字段的值;

根据各原始数据的数据名称、各原始数据的数据类型、各原始数据对应的订阅字段的名称和各原始数据对应的订阅字段的值,设置各原始数据对应的任务配置信息。

第五方面,本申请提供了一种电子设备,包括:处理器、存储器和总线;

总线,用于连接处理器和存储器;

存储器,用于存储操作指令;

处理器,用于通过调用操作指令,执行本申请第一方面和第二方面的任务调度的方法。

第六方面,本申请提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被用于执行本申请第一方面和第二方面的任务调度的方法。

本申请实施例提供的技术方案,至少具有如下有益效果:

第一服务器若在预设的任务配置信息中匹配到第二服务器发送的第一消息包括的目标数据的标识,则将任务配置信息包括的任务属性对应的目标任务进行调度,如此,实现了通过目标数据来调度任务,提高了任务调度的及时性,任务可以分散执行,避免在某个时间点批量执行,避免了任务积压,使得计算资源使用更加平缓,减少计算资源使用波动,提高了计算资源的使用效率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。

图1为本申请实施例提供的一种任务调度的方法的流程示意图;

图2为本申请实施例提供的另一种任务调度的方法的流程示意图;

图3为本申请实施例提供的一种任务调度的装置的结构示意图;

图4为本申请实施例提供的另一种任务调度的装置的结构示意图;

图5为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

为使得本申请的发明目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

下面详细描述本申请的实施例,该实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

下面以具体的实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。

本申请实施例中提供了一种任务调度的方法,应用于第一服务器,该方法的流程示意图如图1所示,该方法包括:

S101,接收第二服务器发送的第一消息,第一消息包括目标数据的标识。

可选地,第一服务器接收第二服务器发送的第一消息,其中,第一消息用于使第一服务器根据第一消息,对目标数据的标识对应的任务进行触发调度。

例如,第一消息如下所示:

【{"dataSet":[{"subscribe":[{"timeslice":"20200628","area_id":"811"}],"setBlock":["prov_id:811","day_id:20200628","hour_id:20"],"tableName":"DWD.USERTABLE","storage":"table"}],"version":"1.1"}】

其中,目标数据的名称tableName为DWD.USERTABLE,目标数据包括的订阅字段的名称为prov_id,订阅字段的值为811。

可选地,目标数据的标识包括以下至少一项:

目标数据的名称、目标数据包括的订阅字段的名称、订阅字段的值。

可选地,目标数据的标识包括目标数据的名称、目标数据包括的订阅字段的名称和订阅字段的值;例如,目标数据的名称为DWD.USERTABLE,目标数据包括的订阅字段的名称为prov_id,订阅字段的值为811,订阅字段的值可以为省份值;订阅字段的值811,即省份值811代表河北。

可选地,第一消息还包括以下至少一项:

第二服务器发送第一消息的时间、目标数据的数据类型、第一消息的版本号。

例如,第二服务器发送第一消息的时间day_id为2020年06月28日,目标数据的数据类型storage为数据表中的数据table,第一消息的版本号version为1.1。

可选地,目标数据的数据类型包括以下至少一项:

文件中的数据、内存中的数据、数据表中的数据。

可选地,文件中的数据为文件里的内容,即存储于文件中的业务数据,业务数据的数据量大,可以按照预设的数据格式进行存储。

例如,文件中的数据及数据格式如下所示:

20190609|北京|103064295646|01012125193|20|4096|51200||99|13|2|0|1|0|1

20190609|北京|103064727765|01012139588|20|4096|102400||12|13|2|0|12|0|1

20190609|北京|103045354203|01011670966|20|4096|102400||12|13|2|0|12|0|1

20190609|北京|103058784652|01011967393|20|4096|102400||12|13|2|0|12|0|1

20190609|北京|103068303452|01012247644|20|1024|204800||12|13|2|0|1|0|1

20190609|北京|103060187881|01011996741|20|4096|102400||12|13|2|0|12|0|1

20190609|北京|103055749863|01011909004|20|4096|102400||12|13|2|0|12|0|1

20190609|北京|103059950157|01011990619|20|1024|204800||12|13|2|0|1|0|1

可选地,内存中的数据为内存中的信息,即存储于内存中的数据,内存中的数据的数据量不大,内存中的数据读取比较频繁,内存中的数据的存储方式是K-V(key-value,关键字-值)。

例如:

1)"tenantId"

2)"xxx.xx"

3)"taskFlowId"

4)"NO.111"

5)"roleId"

6)"1"

7)"operationId"

8)"-1"

9)"projectId"

10)"P201905290016460005"

可选地,数据表中的数据是存储于关系型数据库中的数据,例如,汇总性数据,如表1所示:

表1汇总性数据

需要说明的是,目标数据的数据类型的多样性可以增加任务的多样性,使得基于目标数据驱动的任务调度可以在更多的场景中得到使用。

S102,若在预设的任务配置信息中匹配到目标数据的标识,则将任务配置信息包括的任务属性对应的目标任务进行调度,任务属性包括目标数据的标识。

可选地,在第一服务器接收到第二服务器发送的第一消息之后,第一服务器对第一消息进行解析,得到第一消息包括的目标数据的标识;将第一消息包括的目标数据的标识与预设的任务配置信息进行匹配,当任务配置信息包括的任务属性中存在第一消息包括的目标数据的标识,则将该任务属性对应的目标任务进行调度。

例如,第一消息包括的目标数据的标识包括目标数据的名称DWD.USERTABLE、目标数据包括的订阅字段的名称prov_id和订阅字段的值811;当任务属性包括DWD.USERTABLE、prov_id和811时,则将该任务属性对应的目标任务进行调度。当目标数据的名称DWD.USERTABLE表示数据加工测试任务,并进行目标任务调度时,则进行数据加工测试。

可选地,任务属性还包括以下至少一项:

任务名称、任务描述、任务优先级、目标数据的数据类型。

例如,任务名称为数据加工测试任务,任务描述为数据加工,任务优先级为立即执行,目标数据的数据类型为数据表中的数据。

可选地,任务配置信息按照下述方式设置:

确定预设的各原始数据的数据名称和各原始数据的数据类型;

若对各原始数据进行字段订阅,则确定各原始数据对应的订阅字段的名称和各原始数据对应的订阅字段的值;

根据各原始数据的数据名称、各原始数据的数据类型、各原始数据对应的订阅字段的名称和各原始数据对应的订阅字段的值,设置各原始数据对应的任务配置信息。

例如,预先将原始数据的数据名称设置为DWD.USERTABLE,DWD.USERTABLE表示数据加工测试任务,将原始数据的数据类型设置为数据表中的数据。判断是否对原始数据进行字段订阅,若对原始数据进行字段订阅,则设置原始数据对应的订阅字段的名称prov_id和原始数据对应的订阅字段的值811。在任务配置信息中设置原始数据的数据名称DWD.USERTABLE、原始数据的数据类型、原始数据对应的订阅字段的名称prov_id、原始数据对应的订阅字段的值811、任务名称、任务描述、任务优先级和应用程序(datawork.jar)等,其中,应用程序用于执行任务调度。

可选地,第一服务器对任务配置信息进行设置,也可以是第二服务器对任务配置信息进行设置,也可以是除第一服务器和第二服务器之外的服务器对任务配置信息进行设置。

需要说明的是,字段订阅可以减少任务触发时自身的判断,在目标数据驱动任务调度时,就可以根据订阅字段的名称和订阅字段的值去调度任务。

本申请实施例中,第一服务器若在预设的任务配置信息中匹配到第二服务器发送的第一消息包括的目标数据的标识,则将任务配置信息包括的任务属性对应的目标任务进行调度,如此,实现了通过目标数据来调度任务,提高了任务调度的及时性,任务可以分散执行,避免在某个时间点批量执行,避免了任务积压,使得计算资源使用更加平缓,减少计算资源使用波动,提高了计算资源的使用效率。

本申请实施例中提供了另一种任务调度的方法,应用于第二服务器,该方法的流程示意图如图2所示,该方法包括:

S201,获取目标数据。

可选地,目标数据为当前任务调度所需要的数据。例如,当前任务为数据加工测试任务,目标数据包括了数据加工测试所需的数据。

S202,生成第一消息,第一消息包括目标数据的标识。

可选地,第二服务器将目标数据加载完成后,生成数据加载完成消息,其中,数据加载完成消息包括目标数据的标识;将数据加载完成消息进行拼接,得到第一消息,第一消息包括目标数据的标识,其中,目标数据的标识包括目标数据的名称、目标数据包括的订阅字段的名称和订阅字段的值。

例如,目标数据的名称为DWD.USERTABLE,目标数据包括的订阅字段的名称为prov_id,订阅字段的值为811,第一消息如下所示:

【{"dataSet":[{"subscribe":[{"timeslice":"20200628","area_id":"811"}],"setBlock":["prov_id:811","day_id:20200628","hour_id:20"],"tableName":"DWD.USERTABLE","storage":"table"}],"version":"1.1"}】

S203,发送第一消息给第一服务器,第一服务器用于若在预设的任务配置信息中匹配到目标数据的标识,则使第一服务器将任务配置信息包括的任务属性对应的目标任务进行调度,任务属性包括目标数据的标识。

可选地,第二服务器将第一消息发送给第一服务器,在第一服务器接收到第二服务器发送的第一消息之后,第一服务器对第一消息进行解析,得到第一消息包括的目标数据的标识;将第一消息包括的目标数据的标识与预设的任务配置信息进行匹配,当任务配置信息包括的任务属性中存在第一消息包括的目标数据的标识,则将该任务属性对应的目标任务进行调度。

可选地,任务配置信息按照下述方式设置:

确定预设的各原始数据的数据名称和各原始数据的数据类型;

若对各原始数据进行字段订阅,则确定各原始数据对应的订阅字段的名称和各原始数据对应的订阅字段的值;

根据各原始数据的数据名称、各原始数据的数据类型、各原始数据对应的订阅字段的名称和各原始数据对应的订阅字段的值,设置各原始数据对应的任务配置信息。

可选地,第二服务器对任务配置信息进行设置的方式与第一服务器对任务配置信息进行设置的方式相同。

例如,在进行任务配置信息设置时,可以指定原始数据中的一个数据块,该数据块包括原始数据的数据名称DWD.USERTABLE、原始数据对应的订阅字段的名称prov_id和原始数据对应的订阅字段的值811,其中,订阅字段的值811代表河北省。目标数据的标识包括目标数据的名称DWD.USERTABLE、目标数据包括的订阅字段的名称prov_id和订阅字段的值811,其中,订阅字段的值811代表河北省。第一服务器判断目标数据的标识与任务配置信息设置的DWD.USERTABLE、prov_id和811是否匹配,由于目标数据的标识与任务配置信息设置的DWD.USERTABLE、prov_id和811相同,即目标数据的标识与任务配置信息设置的DWD.USERTABLE、prov_id和811相互匹配,则第一服务器将目标任务进行触发调度。

本申请实施例中,第二服务器发送第一消息给第一服务器,第一服务器用于若在预设的任务配置信息中匹配到目标数据的标识,则使第一服务器将任务配置信息包括的任务属性对应的目标任务进行调度,如此,实现了通过目标数据来调度任务,提高了任务调度的及时性,任务可以分散执行,避免在某个时间点批量执行,避免了任务积压,使得计算资源使用更加平缓,减少计算资源使用波动,提高了计算资源的使用效率。

基于相同的发明构思,本申请实施例还提供了一种任务调度的装置,该装置应用于第一服务器,该装置的结构示意图如图3所示,任务调度的装置30,包括第一处理模块301和第二处理模块302。

第一处理模块301,用于接收第二服务器发送的第一消息,第一消息包括目标数据的标识;

第二处理模块302,用于若在预设的任务配置信息中匹配到目标数据的标识,则将任务配置信息包括的任务属性对应的目标任务进行调度,任务属性包括目标数据的标识。

可选地,目标数据的标识包括以下至少一项:

目标数据的名称、目标数据包括的订阅字段的名称、订阅字段的值。

可选地,第一消息还包括以下至少一项:

第二服务器发送第一消息的时间、目标数据的数据类型、第一消息的版本号。

可选地,目标数据的数据类型包括以下至少一项:

文件中的数据、内存中的数据、数据表中的数据。

可选地,任务属性还包括以下至少一项:

任务名称、任务描述、任务优先级、目标数据的数据类型。

可选地,任务配置信息按照下述方式设置:

确定预设的各原始数据的数据名称和各原始数据的数据类型;

若对各原始数据进行字段订阅,则确定各原始数据对应的订阅字段的名称和各原始数据对应的订阅字段的值;

根据各原始数据的数据名称、各原始数据的数据类型、各原始数据对应的订阅字段的名称和各原始数据对应的订阅字段的值,设置各原始数据对应的任务配置信息。

应用本申请实施例,至少具有如下有益效果:

第一服务器若在预设的任务配置信息中匹配到第二服务器发送的第一消息包括的目标数据的标识,则将任务配置信息包括的任务属性对应的目标任务进行调度,如此,实现了通过目标数据来调度任务,提高了任务调度的及时性,任务可以分散执行,避免在某个时间点批量执行,避免了任务积压,使得计算资源使用更加平缓,减少计算资源使用波动,提高了计算资源的使用效率。

基于相同的发明构思,本申请实施例还提供了另一种任务调度的装置,该装置应用于第二服务器,该装置的结构示意图如图4所示,任务调度的装置40,包括第三处理模块401、第四处理模块402和第五处理模块403。

第三处理模块401,用于获取目标数据;

第四处理模块402,用于生成第一消息,第一消息包括目标数据的标识;

第五处理模块403,用于发送第一消息给第一服务器,第一服务器用于若在预设的任务配置信息中匹配到目标数据的标识,则使第一服务器将任务配置信息包括的任务属性对应的目标任务进行调度,任务属性包括目标数据的标识。

可选地,任务配置信息按照下述方式设置:

确定预设的各原始数据的数据名称和各原始数据的数据类型;

若对各原始数据进行字段订阅,则确定各原始数据对应的订阅字段的名称和各原始数据对应的订阅字段的值;

根据各原始数据的数据名称、各原始数据的数据类型、各原始数据对应的订阅字段的名称和各原始数据对应的订阅字段的值,设置各原始数据对应的任务配置信息。

应用本申请实施例,至少具有如下有益效果:

第二服务器发送第一消息给第一服务器,第一服务器用于若在预设的任务配置信息中匹配到目标数据的标识,则使第一服务器将任务配置信息包括的任务属性对应的目标任务进行调度,如此,实现了通过目标数据来调度任务,提高了任务调度的及时性,任务可以分散执行,避免在某个时间点批量执行,避免了任务积压,使得计算资源使用更加平缓,减少计算资源使用波动,提高了计算资源的使用效率。

基于相同的发明构思,本申请实施例还提供了一种电子设备,该电子设备的结构示意图如图5所示,该电子设备5000包括至少一个处理器5001、存储器5002和总线5003,至少一个处理器5001均与存储器5002电连接;存储器5002被配置用于存储有至少一个计算机可执行指令,处理器5001被配置用于执行该至少一个计算机可执行指令,从而执行如本申请实施例中任意一个实施例或任意一种可选实施方式提供的任意一种任务调度的方法的步骤。

进一步,处理器5001可以是FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其它具有逻辑处理能力的器件,如MCU(Microcontroller Unit,微控制单元)、CPU(Central Process Unit,中央处理器)。

应用本申请实施例,至少具有如下有益效果:

实现了通过目标数据来调度任务,提高了任务调度的及时性,任务可以分散执行,避免在某个时间点批量执行,避免了任务积压,使得计算资源使用更加平缓,减少计算资源使用波动,提高了计算资源的使用效率。

基于相同的发明构思,本申请实施例还提供了另一种计算机可读存储介质,存储有计算机程序,该计算机程序用于被处理器执行时实现本申请实施例中任意一个实施例或任意一种可选实施方式提供的任意一种任务调度的方法的步骤。

本申请实施例提供的计算机可读存储介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(RandomAccess Memory,随即存储器)、EPROM(Erasable Programmable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读存储介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。

应用本申请实施例,至少具有如下有益效果:

实现了通过目标数据来调度任务,提高了任务调度的及时性,任务可以分散执行,避免在某个时间点批量执行,避免了任务积压,使得计算资源使用更加平缓,减少计算资源使用波动,提高了计算资源的使用效率。

本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本申请公开的结构图和/或框图和/或流图的框或多个框中指定的方案。

本技术领域技术人员可以理解,本申请中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本申请中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本申请中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。

以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

相关技术
  • 任务调度方法、装置、计算机设备和计算机可读存储介质
  • 任务调度方法和装置、电子设备以及计算机可读存储介质
技术分类

06120112169282