System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及计算机,具体涉及一种指令转换方法、装置、计算机设备及存储介质。
技术介绍
1、随着微服务架构的流行,微服务之间需要频繁进行指令转换,例如:多个独立的微服务之间通过网络通信进行指令交互,其中,一个微服务与另一个微服务的指令格式不同,会导致一个微服务与另一个微服务在指令交互时需要进行指令格式转换。
2、面对上述问题,相关技术中一般采取对每个交互点编写定制化代码的方式来进行指令格式转换。但这种方式的转换效率低、难以维护,并且需要对源代码采取大量改造,不仅出错率高,而且人力成本也很高。
技术实现思路
1、有鉴于此,本公开提出了一种指令转换方法、装置、计算机设备及存储介质,以解决相关技术中存在的指令格式转换效率低、难以维护,并且需要对源代码采取大量改造,不仅出错率高,而且人力成本也很高的问题。
2、本公开第一方面实施例提出了一种指令转换方法,所述方法应用于注解处理器,所述方法包括:
3、生成与待转换的指令集对应的待处理抽象语法树;
4、从所述待处理抽象语法树中确定出包含第一注解的目标指令的程序段;所述第一注解是为待转换的程序段添加的标记;
5、基于所述第一注解的目标类型属性,确定目标转换规则;
6、基于所述目标转换规则,对所述待处理抽象语法树中的所述目标指令的程序段进行指令转换,得到修改后的抽象语法树;所述修改后的抽象语法树对应转换后的所述待转换的指令集。
7、本公开实施例,从待处理抽象语法树中确定
8、在本公开实施例中,所述第一注解的目标类型属性对应至少一种目标格式;所述目标转换规则包括与所述至少一种目标格式对应的至少一个协议转换接口;基于所述目标转换规则,对所述待处理抽象语法树中的所述目标指令的程序段进行指令转换,包括:
9、根据所述目标格式确定是否为目标指令的程序段上添加与所述目标格式对应的至少一个协议转换接口,根据所述添加的至少一个协议转换接口对目标指令的程序段进行指令转换。
10、本公开实施例,能够根据第一注解的目标类型属性的目标格式确定是否为目标指令的程序段上添加与目标格式对应的至少一个协议转换接口,无须对已存在的接口进行大量侵入式改造,即可实现不同接口协议的兼容性,通用性强。
11、在本公开实施例中,所述目标转换规则还包括与至少一种目标格式对应的至少一个预先建立的协议转换器;
12、基于所述目标转换规则,对所述待处理抽象语法树中的所述目标指令的程序段进行指令转换,还包括:
13、所述至少一个预先建立的协议转换器自动扫描包含第一注解的目标指令的程序段;
14、根据所述至少一个预先建立的协议转换器定位到根据所述目标格式添加的至少一个协议转换接口;
15、基于所述至少一个预先建立的协议转换器和所述添加的至少一个协议转换接口对所述目标指令的程序段进行指令转换。
16、在本公开实施例中,所述基于所述至少一个预先建立的协议转换器和所述添加的至少一个协议转换接口对所述目标指令的程序段进行指令转换,包括:
17、所述注解处理器对目标指令的程序段进行复制,生成复制的目标指令的程序段;
18、所述至少一个预先建立的协议转换器根据所述目标格式将复制的目标指令的程序段中的请求参数和返回参数进行替换,生成能够支持所述添加的至少一个协议转换接口的至少一个协议支持方法;根据所述至少一个协议支持方法对所述目标指令的程序段进行指令转换。
19、在本公开实施例中,在从所述待处理抽象语法树中确定出包含第一注解的目标指令的程序段之后,所述方法还包括:
20、如果存在多个第一程序段,则从所述多个第一程序段中确定出第二程序段,对所述第二程序段优先进行指令转换处理;其中,所述第一程序段为包含第一注解的目标指令的程序段,所述第二程序段为包含第二注解的第一程序段。
21、本公开实施例中,通过从所述多个第一程序段中确定出包含第二程序段,即包含第二注解的第一程序段;能够根据第二注解,选择优选进行指令转换的程序段进行指令转换,例如:当存在第一程序段1、第一程序段2以及第一程序段3时,用户想要优先对第一程序段1进行指令转换,则可以预先第一程序段1上标注第二注解,通过这种方式就可以在源代码进行编译时,优选对第一程序段1进行指令转换,进而提高用户体验。
22、在本公开实施例中,所述根据所述至少一个协议支持方法对所述目标指令的程序段进行指令转换,还包括:
23、所述目标指令的程序段中包含第三注解,所述第三注解用于指定所述目标格式和所述目标格式对应的实体类之间的映射关系;
24、基于所述映射关系,通过所述至少一个预先建立的协议转换器将所述目标指令的程序段中的实体类转换成与所述目标格式对应的协议转换实体类;
25、通过所述至少一个协议支持方法和所述协议转换实体类对所述待处理抽象语法树中的所述目标指令的程序段进行指令转换。
26、本公开实施例中,通过第三注解指定目标格式和目标格式对应的实体类之间的映射关系,基于该映射关系,通过至少一个预先建立的协议转换器将目标指令的程序段中的实体类转换成与目标格式对应的协议转换实体类,由此能够保证源代码在编译时不会因为属性信息不一致而出现编译错误,达到了降低出错率的目的。
27、在本公开实施例中,所述目标格式为probuf、avro或json。
28、本公开第二方面的实施例提供了一种指令转换装置,所述装置包括:
29、待处理抽象语法树生成模块,用于生成与待转换的指令集对应的待处理抽象语法树;
30、目标指令的程序段确定模块,用于从所述待处理抽象语法树中确定出包含第一注解的目标指令的程序段;所述第一注解是为待转换的程序段添加的标记;
31、目标转换规则确定模块,用于基于所述第一注解的目标类型属性,确定目标转换规则;
32、指令转换模块,用于基于所述目标转换规则,对所述待处理抽象语法树中的所述目标指令的程序段进行指令转换,得到修改后的抽象语法树;所述修改后的抽象语法树对应转换后的所述待转换的指令集。
33、本公开第三方面的实施例提供了一种电子设备,该电子设备包括存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行上述第一方面所述的指令转换方法。
34本文档来自技高网...
【技术保护点】
1.一种指令转换方法,其特征在于,所述方法应用于注解处理器,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述第一注解的目标类型属性对应至少一种目标格式;所述目标转换规则包括与所述至少一种目标格式对应的至少一个协议转换接口;基于所述目标转换规则,对所述待处理抽象语法树中的所述目标指令的程序段进行指令转换,包括:
3.根据权利要求2所述的方法,其特征在于,所述目标转换规则还包括与至少一种目标格式对应的至少一个预先建立的协议转换器;
4.根据权利要求3所述的方法,所述基于所述至少一个预先建立的协议转换器和所述添加的至少一个协议转换接口对所述目标指令的程序段进行指令转换,包括:
5.根据权利要求1所述的方法,其特征在于,在从所述待处理抽象语法树中确定出包含第一注解的目标指令的程序段之后,所述方法还包括:
6.根据权利要求4所述的方法,其特征在于,所述根据所述至少一个协议支持方法对所述目标指令的程序段进行指令转换,还包括:
7.根据权利要求2所述的方法,其特征在于,所述目标格式为Probuf、Avro或J
8.一种指令转换装置,其特征在于,所述装置包括:
9.一种计算机设备,其特征在于,包括:
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令用于使计算机执行权利要求1至7中任一项所述的指令转换方法。
...【技术特征摘要】
1.一种指令转换方法,其特征在于,所述方法应用于注解处理器,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述第一注解的目标类型属性对应至少一种目标格式;所述目标转换规则包括与所述至少一种目标格式对应的至少一个协议转换接口;基于所述目标转换规则,对所述待处理抽象语法树中的所述目标指令的程序段进行指令转换,包括:
3.根据权利要求2所述的方法,其特征在于,所述目标转换规则还包括与至少一种目标格式对应的至少一个预先建立的协议转换器;
4.根据权利要求3所述的方法,所述基于所述至少一个预先建立的协议转换器和所述添加的至少一个协议转换接口对所述目标指令的程序段进行指令转换,包括:
5....
【专利技术属性】
技术研发人员:孟浩,夏曙东,
申请(专利权)人:北京中交兴路车联网科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。