CN113961176A - 一种实现客户端版本规则判定兼容性的方法及装置 - Google Patents
一种实现客户端版本规则判定兼容性的方法及装置 Download PDFInfo
- Publication number
- CN113961176A CN113961176A CN202010696453.8A CN202010696453A CN113961176A CN 113961176 A CN113961176 A CN 113961176A CN 202010696453 A CN202010696453 A CN 202010696453A CN 113961176 A CN113961176 A CN 113961176A
- Authority
- CN
- China
- Prior art keywords
- array set
- result
- version
- length
- array
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据处理技术领域,尤其涉及一种实现客户端版本规则判定兼容性的方法及装置,包括:定义枚举变量对客户端的不同版本号的比较结果的结果集进行封装,在枚举变量中定义私有变量,对客户端的第一版本号和第二版本号进行比较,通过拆分,获得第一数组集合和第二数组集合,获得对第一数组集合和第二数组集合的第一比对结果,在第一比对结果为等于时,获得第一数组集合与第二数组集合中的最大长度数组集合,为继续比较的数组集合,将继续比较的数组集合按照轮询分别与0比较,返回对第一数组集合与第二数组集合的第二比对结果,基于第二比对结果,获得第一版本号的版本类型和第二版本号的版本类型的比较结果,实现客户端版本规则判定的兼容性。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种实现客户端版本规则判定兼容性的方法及装置
背景技术
目前的应用程序会有多种版本号,距离当前时间出现的是最新版本,距离当前时间较远出现的是较旧版本,不同时期出现的版本分别对应不同的版本号,版本号是一个数据或者统一规则的一组数字组成的,由于其规则统一,且都是数字组成的,因此,可以通过对数字大小的比较从而判定其版本的高低,从而判定该应用是否需要升级,但是,实际的使用中,版本号并没有统一的规则逻辑,因此,对不同规则的版本号进行统一对比是目前亟待解决的技术问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的实现客户端版本规则判定兼容性的方法及装置。
第一方面,本发明提供了一种实现客户端版本规则判定兼容性的方法,包括:
通过定义枚举变量对客户端的不同版本号的比较结果的结果集进行封装,在所述枚举变量中定义私有变量,所述私有变量用于描述所述结果集的结果信息,所述结果集的枚举变量具体为如下任意一种:等于、大于和小于;
基于比对函数compareValue,对所述客户端的第一版本号的版本类型与所述客户端的第二版本号的版本类型进行比较,包括:
通过调用split函数分别对所述第一版本号和所述第二版本号进行拆分,获得第一数组集合和第二数组集合;
获取所述第一数组集合和所述第二数组集合中的最小长度的数组集合的第一长度值;
按照所述第一长度值,获得所述第一数组集合中与所述第一长度值相等的长度信息内的第一字符组,获得所述第二数组集合中与所述第一长度相等的长度信息内的第二字符组;
将所述第一字符组与所述第二字符组中相同位置的字符进行轮询比较,返回对所述第一数组集合与所述第二数组集合的第一对比结果;
在所述第一对比结果为等于时,获取所述第一数组集合与所述第二数组集合中的最大长度的数组集合,作为继续比较的数组集合;
对所述继续比较的数组集合构建轮询,以使该轮询的起始位置为所述第一长度值的末尾位置,所述轮询的结束位置为所述最大长度的结尾位置;
将所述继续比较的数组集合按照所述轮询分别与0进行比较,返回对所述第一数组集合与所述第二数组集合的第二对比结果;
基于所述第二对比结果,获得所述第一版本号的版本类型和所述第二版本号的版本类型的比较结果。
进一步地,在返回对所述第一数组集合与所述第二数组集合的第一对比结果之后,还包括:
在所述第一对比结果为大于或小于时,基于所述第一对比结果,获得所述第一版本号的版本类型和所述第二版本号的的版本类型的比较结果。
进一步地,所述将所述第一字符组与所述第二字符组中相同位置的字符进行轮询比较,包括:
调用Integer.parseInt函数对所述第一字符组中的每个字符转换为数字并赋值给第一整型变量,调用Integer.parseInt函数对所述第一字符组中的每个字符转换为数字并赋值给第二整型变量;
调用循环函数,将所述第一整型变量与所述第二整型变量中相同位置的整型变量进行轮询比较。
进一步地,所述通过调用split函数分别对所述第一版本号和所述第二版本号进行拆分,获得第一数组集合和第二数组集合,包括:
String[]currentArray=curVersion.split("\\.");
String[]nextArray=nextVersion.split("\\.");
其中,nextVersion为所述第一版本号,curVersion为所述第二版本号,\\.表示按照.对所述第一版本号和所述第二版本号进行拆分,currentArray为所述第一数组集合,nextArray为所述第二数组集合。
进一步地,所述提取所述第一数组集合和所述第二数组集合中的最小长度的数组集合的第一长度值,包括:
采用Math中的min函数提取所述第一数组集合和所述第二数组集合中的最小长度的数组集合的第一长度值:
int minLength=Math.min(currentArray.length,nextArray.length)
其中,minLength为所述第一长度值。
进一步地,所述获取所述第一数组集合与所述第二数组集合中的最大长度的数组集合,作为继续比较的数组集合,包括:
采用Math中的max函数获取所述第一数组集合与所述第二数组集合中的最大长度的数组集合,作为继续比较的字符组:
int maxLength=Math.max(currentArray.length,nextArray.length)
其中,所述maxLength为所述最大长度。
进一步地,所述通过定义枚举变量对客户端的不同版本号的比较结果的结果集进行封装,在所述枚举变量中定义私有变量,所述私有变量用于描述所述结果集的结果信息,所述结果集的枚举变量具体为如下任意一种:等于、大于和小于,包括:
通过定义枚举变量对所述结果集进行封装:
public enum VersionResult{}
其中,VersionResult为所述结果集,enum为所述枚举变量;
在所述枚举变量中定义私有变量:
private int result;
定义所述私有变量的get方法,以对所述私有变量result进行取值:
public int getResult(){
return result;
}
定义所述私有变量的set方法,以对所述私有变量result进行赋值:
public void setResult(int result){
this.result=result;
}。
第二方面,本发明还提供了一种实现客户端版本规则判定兼容性的装置,包括:
定义结果集模块,用于通过定义枚举变量对客户端的不同版本号的比较结果的结果集进行封装,在所述枚举变量中定义私有变量,所述私有变量用于描述所述结果集的结果信息,所述结果集的枚举变量具体为如下任意一种:等于、大于和小于;
第一比较模块,用于基于所述比对函数compareValue,对所述客户端的第一版本号的版本类型与所述客户端的第二版本号的版本类型进行比较,包括:
拆分单元,用于通过调用split函数分别对所述第一版本号和所述第二版本号进行拆分,获得第一数组集合和第二数组集合;
第一获取单元,用于获取所述第一数组集合和所述第二数组集合中的最小长度的数组集合的第一长度值;
第一获得单元,用于按照所述第一长度值,获得所述第一数组集合中与所述第一长度值相等的长度信息内的第一字符组,获得所述第二数组集合中与所述第一长度相等的长度信息内的第二字符组;
第一轮询比较单元,用于将所述第一字符组与所述第二字符组中相同位置的字符进行轮询比较,返回对所述第一数组集合与所述第二数组集合的第一对比结果;
第二获取单元,用于在所述第一对比结果为等于时,获取所述第一数组集合与所述第二数组集合中的最大长度的数组集合,作为继续比较的数组集合;
构建轮询单元,用于对所述继续比较的数组集合构建轮询,以使该轮询的起始位置为所述第一长度值的末尾位置,所述轮询的结束位置为所述最大长度的末尾位置;
第二轮询比较单元,用于将所述继续比较数组集合按照所述轮询分别与0进行比较,返回对所述第一数组集合与所述第二数组集合的第二对比结果;
第二获得单元,用于基于所述第二对比结果,获得所述第一版本号的版本类型和所述第二版本号的版本类型的比较结果。
第三方面,本发明还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的方法步骤。
第四方面,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,该程序被处理器执行时实现上述的方法步骤。
本发明实施例中的一个或多个技术方案,至少具有如下技术效果或优点:
本发明提供的实现客户端版本规则兼容性的方法,包括,通过定义枚举变量对客户端的不同版本号的比较结果的结果集进行封装,在枚举变量中定义私有变量,该私有变量用于描述该结果集的结果信息,该结果集的枚举变量具体为如下任意一种:等于、大于和小于;然后,定义比对函数,基于该比对函数,对客户端的第一版本号和第二版本号的版本类型进行比较,包括:通过调用split函数分别对第一版本号和第二版本号进行拆分,获得第一数组集合和第二数组集合,获得第一数组集合和第二数组集合中的最小长度的数组集合的第一长度值;按照第一长度值,获得第一数组集合中与第一长度值相等的长度信息内的第一字符组,获得第二数组集合中与第一长度相等的长度信息内的第二字符组,将第一字符组与第二字符组中相同位置的字符进行轮询比较,返回对第一数组集合与第二数组集合的第一对比结果;在第一对比结果为等于时,获取第一数组集合与第二数组集合中的最大长度的数组集合,作为继续比较的数组集合;对该继续比较的数组集合构建轮询,以使该轮询的起始位置为第一长度值的末尾位置,轮询的结束位置为最大长度的结尾位置;将该继续比较的数组集合按照轮询分别与0进行比较,返回对第一数组集合与第二数组集合的第二比对结果;基于该第二比对结果,获得第一版本号的版本类型和第二版本号的版本类型的比较结果,能够对不同规则的版本号进行统一对比,进而实现了客户端版本规则判定的兼容性。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考图形表示相同的部件。在附图中:
图1、图2示出了本发明实施例一中实现客户端版本规则判定兼容性的方法的步骤流程示意图;
图3、图4示出了本发明实施例二中实现客户端版本规则判定兼容性的装置的结构示意图;
图5示出了本发明实施例三中实现客户端版本规则判定兼容性的电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明的总体思路如下:
本发明提供的一种实现客户端版本规则判定兼容性的方法,包括:通过定义枚举变量对客户端的不同版本号的比较结果的结果集进行封装,该枚举结果具体为:等于、大于或者小于,该枚举变量中定义有私有变量,该私有变量用于描述该结果集的结果信息。然后,通过比对函数,对客户端的第一版本号的版本类型与客户端的第二版本号的版本类型进行比较,其中,先通过调用拆分函数,分别对第一版本号和第二版本号进行拆分,获得第一数组集合和第二数组集合,然后获取第一数组集合和第二数组集合中的最小长度的数组集合的第一长度值;按照该第一长度值,蝴蝶第一数组集合中与第一长度值相等的长度信息内的第一字符组,获得第二数组集合中与第一长度相等的长度信息内的第二字符组;将该第一字符组和第二字符组中相同位置的字符进行轮询比较,返回对第一数组集合与第二数组集合的第一对比结果;在该第一对比结果为等于时,获取第一数组集合与第二数组集合中的最大长度的数组集合,作为继续比较的数组集合;对该继续比较的数组集合构建轮询,以使该轮询的起始位置为第一长度值的末尾位置,该轮询的结束位置为最大长度的结尾位置,最后,将该继续比较数组集合按照轮询分别与0进行比较,返回对第一数组集合与第二数组集合的第二比对结果;基于该第二比对结果,获得第一版本号的版本类型和第二版本号的版本类型的比较结果,能够对不同规则的版本号进行统一对比,进而实现了客户端版本规则判定的兼容性。
实施例一
本发明提供的一种实现客户端版本规则判定兼容性的方法,如图1、图2所示,包括:
S101,通过定义枚举变量对客户端的不同版本号的比较结果的结果集进行封装,在枚举变量中定义私有变量,私有变量用于描述所述结果集的结果信息,结果集的枚举变量具体为如下任意一种:等于、大于和小于;
S102,基于比对函数compareValue,对客户端的第一版本号的版本类型与所述客户端的第二版本号的版本类型进行比较,包括:
S201通过调用split函数分别对第一版本号和所述第二版本号进行拆分,获得第一数组集合和第二数组集合;
S202,获取第一数组集合和第二数组集合中的最小长度的数组集合的第一长度值;
S203,按照该第一长度值,获得第一数组集合中与第一长度值相等的长度信息内的第一字符组,获得第二数组集合中与第一长度相等的长度信息内的第二字符组;
S204,将第一字符组与第二字符组中相同位置的字符进行轮询比较,返回对第一数组集合与第二数组集合的第一对比结果;
S205,在第一对比结果为等于时,获取第一数组集合与所述第二数组集合中的最大长度的数组集合,作为继续比较的数组集合;
S206,,继续比较的数组集合构建轮询,以使该轮询的起始位置为第一长度值的末尾位置,轮询的结束位置为最大长度的结尾位置;
S207,将继续比较数组集合按照轮询分别与0进行比较,返回对第一数组集合与第二数组集合的第二对比结果;
S208,基于第二对比结果,获得第一版本号的版本类型和所述第二版本号的版本类型的比较结果。
采用上述的方式,对不同规则的版本号进行比较,实现了客户端不同版本规则判定的兼容性,进而提高了判定效率。
在具体的实施方式中,目前,最常见的客户端版本号的版本规则有如下几种:
一种是以数字来标注的,比如,1,2,3等规则A。
一种是在有数字的基础上加上点用于区分小版本信息,例如,1.2,1.5等规则B。
一种是在数字的基础上有多个点用于区分多个子维度信息,例如,1.10.11,1.20.30等规则C。
在实际的使用过程中在维度过多时甚至会出现a,b,c等字母的情况,比如,1.f.a.10等。
由此可见,上述多种版本规则具有多样性,没有统一的规则逻辑。
因此,本发明提供的一种实现客户端版本规则判定兼容性的方法,首先,对版本对比结果集进行设计。
其中,对不同版本比对之后得到的结果,包括:等于、大于和小于。因此,设计一套结果集的方案:具体是S101,通过定义枚举变量对客户端的不同版本号的比较结果的结果集进行封装,在枚举变量中定义私有变量,私有变量用于描述结果集的结果信息,该结果集的枚举变量具体为如下任意一种:等于、大于和小于。
在一种可选的实施方式中,定义枚举变量VersionResult,对客户端的不同版本号的比较结果的结果集进行抽象封装。具体地定义方法如下:
public enum VersionResult{}
在该枚举变量中,定义一个私有变量result,该私有变量result用于描述结果集的结果信息,该私有变量result的定义方法如下:
private int result
接着定义该私有变量的get方法和set方法,该get方法用于对该私有变量result取值,该set方法用于对该私有变量result赋值。
具体地get方法如下:
public int getResult(){
return result;
}
具体地set方法如下:
public void setResult(int result){
this.result=result;
}
现有的方案中并不会定义该私有变量result,因此,现有的方案中在枚举的时候就不能根据私有变量的方式定义枚举常量值,而是只能默认的规定枚举常量且从1开始的正整数为对应枚举值的值信息,采用这样的方式无法实现自定义的枚举值情况。可见,本发明中采用该私有变量,能够对枚举值进行自定义。
本发明采用私有变量result对枚举信息进行自定义,具体有三种枚举结果,大于、等于和小于,采用如下的枚举信息来描述这三种情况:
大于:BIGGER(1),小于:SMALLER(-1),等于:EQUALS(0);
其中,枚举变量中的1、-1、0是该result变量的值,由此构建了一个私有变量result到枚举变量的映射关系,实现了结果集的三种枚举结果。
接着,执行S102,基于比对函数compareValue,对客户端的第一版本号的版本类型与客户端的第二版本号的版本类型进行比较。
首先,需要定义比对函数compareValue,具体地比对函数定义如下:
public static VersionResult compareValue(String nextVersion,StringcurVersion){}
其中,该函数是一个public类型且是static静态函数,其返回值是枚举类型VersionResult的一个结果信息,该比对函数的函数名为compareValue。设定两个比对参数,分别对应客户端的第一版本号nextVersion和该客户端的第二版本号curVersion。
如果第一版本号nextVersion的版本类型大于该第二版本号curVersion的版本类型,其返回值是BIGGER(1);如果第一版本号nextVersion的版本类型小于该第二版本号curVersion的版本类型,其返回值是SMALLER(-1),当然,如果相等,其返回值是EQUALS(0)。
在对这两个版本号的版本类型进行比较时,主要采用按位截取的方式实现,具体是获取两个版本号中位数较小的一个版本号,比如,一个版本号为2位,另一个版本号为3位,那么找到的较小的版本号的位数为2,然后,将为3位的版本号中截取2位,将截取出的2位的版本号与另一个2位的版本号进行比较,如果每一位都相等,则再将较长的版本号从2位后面开始的位置分别与0进行比较,若存在一个大于0则就表示该版本号大于位数较小的版本号,否则的话就是小于或者等于。
具体地,首先对相同位数进行比较。
执行S202,通过调用split函数分别对第一版本号和第二版本号进行拆分,获得第一数组集合和第二数组集合。
通过调用split函数对第一版本号进行拆分,具体是按照“.”来进行拆分,具体的拆分方法如下:
String[]currentArray=curVersion.split("\\.");
通过调用split函数对第二版本号进行拆分,具体是按照“.”来进行拆分,具体的拆分方法如下:
String[]nextArray=nextVersion.split("\\.");
其中,nextVersion为所述第一版本号,curVersion为所述第二版本号,\\.表示按照.对所述第一版本号和所述第二版本号进行拆分,currentArray为所述第一数组集合,nextArray为所述第二数组集合。
接下来,执行S202,获取第一数组集合与第二数组集合中的最小长度的数组集合的第一长度值。具体采用如下方法进行获取:
int minLength=Math.min(currentArray.length,nextArray.length);
其中,是采用Math中的min函数提取该第一数组集合和第二数组集合中的最小长度的数组集合的第一长度值,minLength为该第一长度值。
接下来,按照该最小长度值,即按照第一长度值进行逐位比较,
在一种可选的实施方式中,先截取这两个版本号的数组,再轮询比较。
具体地,执行S203,按照第一长度值,获得第一数组集合中与第一长度值相等的长度信息内的第一字符组,获得第二数组集合中与第一长度相等的长度信息内的第二字符组。
首先,采用for循环进行轮询,然后在每一次轮询中通过调用Integer.parseInt函数获得同一位置的数值,得到相同长度的字符组。
int curValue=Integer.parseInt(currentArray[i]);
int nextValue=Integer.parseInt(nextArray[i]);
其中,通过调用Integer.parseInt函数将第一版本号中的i位置对应的字符currentArray[i]转化成一个数字并赋值给整型变量curValue,通过调用Integer.parseInt函数将第二版本号中的i位置对应的字符nextArray[i]赋值给整型变量nextValue。这样,获得第一字符组curValue和第二字符组nextValue。
接着,按位进行比较,执行S204,将第一字符组与第二字符组中相同位置的字符进行轮询比较,返回对第一数组集合与第二数组集合的第一比较结果。
如果出现不相等的情况,则直接返回结果集。
具体地,在S204之后,在该第一对比结果为大于或小于时,基于第一对比结果,获得第一版本号的版本类型和第二版本号的版本类型的比较结果。
具体的比较方法如下:
if(nextValue<curValue){
return VersionResult.SMALLER;
}
可见,若第一字符组curValue大于第二字符组nextValue,比较结果直接返回结果集return VersionResult.SMALLER。
if(nextValue>curValue){
return VersionResult.BIGGER;
}
可见,若第一字符组curValue小于第二字符组nextValue,比较结果返回结果集return VersionResult.BIGGER。
比如,在获得该第一比较结果为第一字符组中的当前位置数值大于第二字符组中的相同位置数值时,确定第一版本号的版本类型高于第二版本号的版本类型。
除了上述大于和小于的情况,还存在等于的情况,此时,进行多余末位比较。
执行S205,在第一比对结果为等于时,获取第一数组集合与第二数组集合中的最大长度的数组集合,作为继续比较的数组集合。
在具体的实施方式中,判断第一数组集合和第二数组集合中哪个的位数较长。
具体地,采用Math中的max函数获取第一数组集合与第二数组集合中的最大长度的数组集合,作为继续比较的数组集合:
int maxLength=Math.max(currentArray.length,nextArray.length)
其中,该maxLength为最大长度。
然后,将第一数组集合的长度与第二数组集合的长度进行比较,比较方法如下:
if(currentArray.length>nextArray.length){}
如果第一数组集合currentArray的长度比第二数组集合nextArray的长度长,则需要对第一数组集合currentArray的多余末位进行比较,否则,需要对第二数组集合nextArray的多余末位进行比较。
接着,执行S206,对该继续比较的字符组构建轮询,以使该轮询的起始位置为第一长度值的末尾位置,轮询的结束位置为该最大长度的结尾位置。
通过对该继续比较的字符组构建轮询:
for(int i=minLength;i<maxLength;i++)
然后,在该轮询中依次取出每一位数据信息,其中,取出的方法通过如下方式获得:
Int restRes=Integer.parseInt(currentArray[i])
通过调用Integer.parseInt(currentArray[i])方法获取每一位数据信息并将其存放在restRes中。其中,以该继续比较的数组集合为第一数组集合为例。
接着,执行S207,将该继续比较的数组集合按照轮询分别与0进行比较,返回对第一数组集合和第二数组集合的第二比对结果。
具体地,如果任意依次轮询中出现restRes>0的情况,则说明该继续比较的数组集合的版本号大,即最新,则返回结果如下:
return VersionResult.SMALLER;
否则进行下一轮的轮询比较,此处判断与0的大小关系是由于短的版本号的补位为0,因此,这里只需要将轮询结果与0进行比较即可获得最终的比较结果。
由此,执行S208,基于该第二比对结果,获得第一版本号的版本类型和第二版本号的版本类型的比较结果。
同理,在该继续比较的数组集合为第二数组集合nextArray时,采用类型的方法进行判断和比较。具体的代码描述如下:
当然,还有可能是两个版本号的版本类型是一致的情况,具体地,通过如下代码实现:
return VersionResult.EQUALS。
由此,对不同规则的版本号进行统一对比,获得比对结果。
本发明实施例中的一个或多个技术方案,至少具有如下技术效果或优点:
本发明提供的实现客户端版本规则兼容性的方法,包括,通过定义枚举变量对客户端的不同版本号的比较结果的结果集进行封装,在枚举变量中定义私有变量,该私有变量用于描述该结果集的结果信息,该结果集的枚举变量具体为如下任意一种:等于、大于和小于;然后,定义比对函数,基于该比对函数,对客户端的第一版本号和第二版本号的版本类型进行比较,包括:通过调用split函数分别对第一版本号和第二版本号进行拆分,获得第一数组集合和第二数组集合,获得第一数组集合和第二数组集合中的最小长度的数组集合的第一长度值;按照第一长度值,获得第一数组集合中与第一长度值相等的长度信息内的第一字符组,获得第二数组集合中与第一长度相等的长度信息内的第二字符组,将第一字符组与第二字符组中相同位置的字符进行轮询比较,返回对第一数组集合与第二数组集合的第一对比结果;在第一对比结果为等于时,获取第一数组集合与第二数组集合中的最大长度的数组集合,作为继续比较的数组集合;对该继续比较的数组集合构建轮询,以使该轮询的起始位置为第一长度值的末尾位置,轮询的结束位置为最大长度的结尾位置;将该继续比较的数组按照轮询分别与0进行比较,返回对第一数组集合与第二数组集合的第二比对结果;基于该第二比对结果,获得第一版本号的版本类型和第二版本号的版本类型的比较结果,能够对不同规则的版本号进行统一对比,进而实现了客户端版本规则判定的兼容性。
实施例二
基于相同的发明构思,本发明提供了一种实现客户端版本规则判定兼容性的装置,如图3、图4所示,包括:
定义结果集模块301,用于通过定义枚举变量对客户端的不同版本号的比较结果的结果集进行封装,在所述枚举变量中定义私有变量,所述私有变量用于描述所述结果集的结果信息,所述结果集的枚举变量具体为如下任意一种:等于、大于和小于;
第一比较模块302,用于基于所述比对函数compareValue,对所述客户端的第一版本号的版本类型与所述客户端的第二版本号的版本类型进行比较,包括:
拆分单元401,用于通过调用split函数分别对所述第一版本号和所述第二版本号进行拆分,获得第一数组集合和第二数组集合;
第一获取单元402,用于获取所述第一数组集合和所述第二数组集合中的最小长度的数组集合的第一长度值;
第一获得单元403,用于按照所述第一长度值,获得所述第一数组集合中与所述第一长度值相等的长度信息内的第一字符组,获得所述第二数组集合中与所述第一长度相等的长度信息内的第二字符组;
第一轮询比较单元404,用于将所述第一字符组与所述第二字符组中相同位置的字符进行轮询比较,返回对所述第一数组集合与所述第二数组集合的第一对比结果;
第二获取单元405,用于在所述第一对比结果为等于时,获取所述第一数组集合与所述第二数组集合中的最大长度的数组集合,作为继续比较的数组集合;
构建轮询单元406,用于对所述继续比较的数组集合构建轮询,以使该轮询的起始位置为所述第一长度值的末尾位置,所述轮询的结束位置为所述最大长度的末尾位置;
第二轮询比较单元407,用于将所述继续比较数组集合按照所述轮询分别与0进行比较,返回对所述第一数组集合与所述第二数组集合的第二对比结果;
第二获得单元408,用于基于所述第二对比结果,获得所述第一版本号的版本类型和所述第二版本号的版本类型的比较结果。
在一种可选的实施方式中,所述第一比较模块302还包括:
第三获得单元409,用于在所述第一对比结果为大于或小于时,基于所述第一对比结果,获得所述第一版本号的版本类型和所述第二版本号的的版本类型的比较结果。
在一种可选的实施方式中,所述第一轮询比较单元404,包括:
第一调用子单元,用于调用Integer.parseInt函数对所述第一字符组中的每个字符转换为数字并赋值给第一整型变量,调用Integer.parseInt函数对所述第一字符组中的每个字符转换为数字并赋值给第二整型变量;
第二调用子单元,用于调用循环函数,将所述第一整型变量与所述第二整型变量中相同位置的整型变量进行轮询比较。
在一种可选的实施方式中,所述拆分单元401用于:
String[]currentArray=curVersion.split("\\.");
String[]nextArray=nextVersion.split("\\.");
其中,nextVersion为所述第一版本号,curVersion为所述第二版本号,\\.表示按照.对所述第一版本号和所述第二版本号进行拆分,currentArray为所述第一数组集合,nextArray为所述第二数组集合。
在一种可选的实施方式中,所述第一获取单元402用于:
采用Math中的mi n函数提取所述第一数组集合和所述第二数组集合中的最小长度的数组集合的第一长度值:
int minLength=Math.min(currentArray.length,nextArray.length)
其中,minLength为所述第一长度值。
在一种可选的实施方式中,所述第二获取单元405,用于:
采用Math中的max函数获取所述第一数组集合与所述第二数组集合中的最大长度的数组集合,作为继续比较的字符组:
int maxLength=Math.max(currentArray.length,nextArray.length)
其中,所述maxLength为所述最大长度。
在一种可选的实施方式中,所述定义结果集模块301包括:
定义枚举变量单元,用于通过定义枚举变量对所述结果集进行封装:
public enum VersionResult{}
其中,VersionResult为所述结果集,enum为所述枚举变量;
定义私有变量单元,用于在所述枚举变量中定义私有变量:
private int result;
定义私有变量的get方法,用于:
定义所述私有变量的get方法,以对所述私有变量result进行取值:
public int getResult(){
return result;
}
定义私有变量的set方法,用于:
定义所述私有变量的set方法,以对所述私有变量result进行赋值:
public void setResult(int result){
this.result=result;
}
实施例三
基于相同的发明构思,本发明第三实施例还提供了一种计算机设备,如图5所示,包括存储器504、处理器502及存储在存储器504上并可在处理器502上运行的计算机程序,所述处理器502执行所述程序时实现客户端版本规则判定兼容性的方法中的任一方法的步骤。
其中,在图5中,总线架构(用总线500来代表),总线500可以包括任意数量的互联的总线和桥,总线500将包括由处理器502代表的一个或多个处理器和存储器504代表的存储器的各种电路链接在一起。总线500还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口506在总线500和接收器501和发送器503之间提供接口。接收器501和发送器503可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器502负责管理总线500和通常的处理,而存储器504可以被用于存储处理器502在执行操作时所使用的数据。
实施例四
基于相同的发明构思,本发明第四实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文实现客户端版本规则判定兼容性的方法中的任一方法的步骤。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的实现客户端版本规则判定兼容性的装置、计算机设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (10)
1.一种实现客户端版本规则判定兼容性的方法,其特征在于,包括:
通过定义枚举变量对客户端的不同版本号的比较结果的结果集进行封装,在所述枚举变量中定义私有变量,所述私有变量用于描述所述结果集的结果信息,所述结果集的枚举变量具体为如下任意一种:等于、大于和小于;
基于比对函数compareValue,对所述客户端的第一版本号的版本类型与所述客户端的第二版本号的版本类型进行比较,包括:
通过调用split函数分别对所述第一版本号和所述第二版本号进行拆分,获得第一数组集合和第二数组集合;
获取所述第一数组集合和所述第二数组集合中的最小长度的数组集合的第一长度值;
按照所述第一长度值,获得所述第一数组集合中与所述第一长度值相等的长度信息内的第一字符组,获得所述第二数组集合中与所述第一长度相等的长度信息内的第二字符组;
将所述第一字符组与所述第二字符组中相同位置的字符进行轮询比较,返回对所述第一数组集合与所述第二数组集合的第一对比结果;
在所述第一对比结果为等于时,获取所述第一数组集合与所述第二数组集合中的最大长度的数组集合,作为继续比较的数组集合;
对所述继续比较的数组集合构建轮询,以使该轮询的起始位置为所述第一长度值的末尾位置,所述轮询的结束位置为所述最大长度的结尾位置;
将所述继续比较的数组集合按照所述轮询分别与0进行比较,返回对所述第一数组集合与所述第二数组集合的第二对比结果;
基于所述第二对比结果,获得所述第一版本号的版本类型和所述第二版本号的版本类型的比较结果。
2.如权利要求1所述的方法,其特征在于,在返回对所述第一数组集合与所述第二数组集合的第一对比结果之后,还包括:
在所述第一对比结果为大于或小于时,基于所述第一对比结果,获得所述第一版本号的版本类型和所述第二版本号的的版本类型的比较结果。
3.如权利要求1所述的方法,其特征在于,所述将所述第一字符组与所述第二字符组中相同位置的字符进行轮询比较,包括:
调用Integer.parseInt函数对所述第一字符组中的每个字符转换为数字并赋值给第一整型变量,调用Integer.parseInt函数对所述第一字符组中的每个字符转换为数字并赋值给第二整型变量;
调用循环函数,将所述第一整型变量与所述第二整型变量中相同位置的整型变量进行轮询比较。
4.如权利要求1所述的方法,其特征在于,所述通过调用split函数分别对所述第一版本号和所述第二版本号进行拆分,获得第一数组集合和第二数组集合,包括:
String[]currentArray=curVersion.split("\\.");
String[]nextArray=nextVersion.split("\\.");
其中,nextVersion为所述第一版本号,curVersion为所述第二版本号,\\.表示按照.对所述第一版本号和所述第二版本号进行拆分,currentArray为所述第一数组集合,nextArray为所述第二数组集合。
5.如权利要求1所述的方法,其特征在于,所述提取所述第一数组集合和所述第二数组集合中的最小长度的数组集合的第一长度值,包括:
采用Math中的min函数提取所述第一数组集合和所述第二数组集合中的最小长度的数组集合的第一长度值:
int minLength=Math.min(currentArray.length,nextArray.length)
其中,minLength为所述第一长度值。
6.如权利要求1所述的方法,其特征在于,所述获取所述第一数组集合与所述第二数组集合中的最大长度的数组集合,作为继续比较的数组集合,包括:
采用Math中的max函数获取所述第一数组集合与所述第二数组集合中的最大长度的数组集合,作为继续比较的字符组:
int maxLength=Math.max(currentArray.length,nextArray.length)
其中,所述maxLength为所述最大长度。
7.如权利要求1所述的方法,其特征在于,所述通过定义枚举变量对客户端的不同版本号的比较结果的结果集进行封装,在所述枚举变量中定义私有变量,所述私有变量用于描述所述结果集的结果信息,所述结果集的枚举变量具体为如下任意一种:等于、大于和小于,包括:
通过定义枚举变量对所述结果集进行封装:
public enum VersionResult{}
其中,VersionResult为所述结果集,enum为所述枚举变量;
在所述枚举变量中定义私有变量:
privateint result;
定义所述私有变量的get方法,以对所述私有变量result进行取值:
publicint getResult(){
return result;
}
定义所述私有变量的set方法,以对所述私有变量result进行赋值:
public void setResult(int result){
this.result=result;
}。
8.一种实现客户端版本规则判定兼容性的装置,其特征在于,包括:
定义结果集模块,用于通过定义枚举变量对客户端的不同版本号的比较结果的结果集进行封装,在所述枚举变量中定义私有变量,所述私有变量用于描述所述结果集的结果信息,所述结果集的枚举变量具体为如下任意一种:等于、大于和小于;
第一比较模块,用于基于所述比对函数compareValue,对所述客户端的第一版本号的版本类型与所述客户端的第二版本号的版本类型进行比较,包括:
拆分单元,用于通过调用split函数分别对所述第一版本号和所述第二版本号进行拆分,获得第一数组集合和第二数组集合;
第一获取单元,用于获取所述第一数组集合和所述第二数组集合中的最小长度的数组集合的第一长度值;
第一获得单元,用于按照所述第一长度值,获得所述第一数组集合中与所述第一长度值相等的长度信息内的第一字符组,获得所述第二数组集合中与所述第一长度相等的长度信息内的第二字符组;
第一轮询比较单元,用于将所述第一字符组与所述第二字符组中相同位置的字符进行轮询比较,返回对所述第一数组集合与所述第二数组集合的第一对比结果;
第二获取单元,用于在所述第一对比结果为等于时,获取所述第一数组集合与所述第二数组集合中的最大长度的数组集合,作为继续比较的数组集合;
构建轮询单元,用于对所述继续比较的数组集合构建轮询,以使该轮询的起始位置为所述第一长度值的末尾位置,所述轮询的结束位置为所述最大长度的末尾位置;
第二轮询比较单元,用于将所述继续比较数组集合按照所述轮询分别与0进行比较,返回对所述第一数组集合与所述第二数组集合的第二对比结果;
第二获得单元,用于基于所述第二对比结果,获得所述第一版本号的版本类型和所述第二版本号的版本类型的比较结果。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7中任一权利要求所述的方法步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一权利要求所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010696453.8A CN113961176A (zh) | 2020-07-20 | 2020-07-20 | 一种实现客户端版本规则判定兼容性的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010696453.8A CN113961176A (zh) | 2020-07-20 | 2020-07-20 | 一种实现客户端版本规则判定兼容性的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113961176A true CN113961176A (zh) | 2022-01-21 |
Family
ID=79459447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010696453.8A Pending CN113961176A (zh) | 2020-07-20 | 2020-07-20 | 一种实现客户端版本规则判定兼容性的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113961176A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115617392A (zh) * | 2022-12-19 | 2023-01-17 | 北京赛目科技股份有限公司 | 一种版本号的确定方法及装置 |
-
2020
- 2020-07-20 CN CN202010696453.8A patent/CN113961176A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115617392A (zh) * | 2022-12-19 | 2023-01-17 | 北京赛目科技股份有限公司 | 一种版本号的确定方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110750341B (zh) | 任务调度方法、装置、系统、终端设备及存储介质 | |
CN107147704A (zh) | 一种面向区块链的通用服务中间件系统 | |
US20140189179A1 (en) | System on chip and method for accessing device on bus | |
CN103595770A (zh) | Sdk实现文件下载的方法与装置 | |
CN110647316A (zh) | 通用业务对象的生成方法、装置、计算机设备及存储介质 | |
CN113961176A (zh) | 一种实现客户端版本规则判定兼容性的方法及装置 | |
CN114117992B (zh) | 一种序列化和反序列化方法、装置和电子设备 | |
CN109976751B (zh) | 模型操作方法、相关装置及计算机可读存储介质 | |
CN104645610A (zh) | 一种游戏对象标识码的编码方法及系统 | |
CN107562428A (zh) | 基于规则的自适应软件界面布局方法及系统 | |
CN108776665B (zh) | 一种数据处理方法及装置 | |
CN104143110A (zh) | 带网址信息的二维码生成方法 | |
CN105471703A (zh) | 一种消息发送方法及装置 | |
CN109639555B (zh) | 链路层报文生成方法、链路层报文生成装置及终端设备 | |
CN105138342A (zh) | 一种服务开发方法和装置 | |
CN113220869A (zh) | 银行外围系统的文本处理装置及方法 | |
CN114513504A (zh) | 消息队列多云适配的方法、装置、设备及可读存储介质 | |
CN112416619A (zh) | 一种接口配置方法、设备、终端及存储介质 | |
CN110399161A (zh) | 一种映射关系的生成方法、调用方法及装置 | |
CN102546557A (zh) | 一种协议定制方法及装置 | |
CN109068170A (zh) | 一种弹幕消息的存储方法、装置、终端和存储介质 | |
CN114168652A (zh) | 一种智能合约交互方法、装置、设备以及存储介质 | |
US11914564B1 (en) | Merkle tree-based data management method and apparatus | |
US20210064990A1 (en) | Method for machine learning deployment | |
CN116360708B (zh) | 数据写入方法及装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |