CN115617392B - 一种版本号的确定方法及装置 - Google Patents

一种版本号的确定方法及装置 Download PDF

Info

Publication number
CN115617392B
CN115617392B CN202211629241.3A CN202211629241A CN115617392B CN 115617392 B CN115617392 B CN 115617392B CN 202211629241 A CN202211629241 A CN 202211629241A CN 115617392 B CN115617392 B CN 115617392B
Authority
CN
China
Prior art keywords
version number
digital
determining
target
stack
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.)
Active
Application number
CN202211629241.3A
Other languages
English (en)
Other versions
CN115617392A (zh
Inventor
何丰
周放
王铁锋
薛晓卿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Saimu Technology Co ltd
Original Assignee
Beijing Saimu Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Saimu Technology Co ltd filed Critical Beijing Saimu Technology Co ltd
Priority to CN202211629241.3A priority Critical patent/CN115617392B/zh
Publication of CN115617392A publication Critical patent/CN115617392A/zh
Application granted granted Critical
Publication of CN115617392B publication Critical patent/CN115617392B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供了一种版本号的确定方法及装置,其中,该方法包括:确定最新版本号和本地软件的目标版本号的解析结果,解析结果包括版本号的每个数字位和每个数字位对应的数值;确定最新版本号和目标版本号分别对应的数字位数量是否相同;若最新版本号和目标版本号分别对应的数字位数量不相同,则在最新版本号和目标版本号中确定出补齐版本号以及补齐版本号的补齐数字位,将补齐版本号的补齐数字位和补齐数字位对应的数值补齐;将目标版本号和最新版本号中每个数字位分别对应的数值逐个比较,依据比较结果确定目标版本号是否为最新版本号。本申请解决了现有技术中确定目标版本号是否为最新版本号不准确的技术问题。

Description

一种版本号的确定方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种版本号的确定方法及装置。
背景技术
现有技术中,通过比较最新版本号与最新版本号的大小,来确定软件是否更新。而对版本号的大小进行比较时,需要分别解析最新版本号与最新版本号,并将最新版本号与最新版本号分别解析得到的数字从左到右逐个比对。
以版本号“V3.6.12”与版本号“V3.6.2”为例,将“V3.6.12”中的1与“V3.6.2”中的2比较,由于1小于2,则认为版本号“V3.6.12”小于版本号“V3.6.2”。但是,实际上版本号“V3.6.12”大于版本号“V3.6.2”,进而,对版本号进行解析并对解析后的版本号进行比较得到的结果准确率较低。
发明内容
有鉴于此,本申请的目的在于至少提供一种版本号的确定方法及装置,通过比较最新版本号和目标版本号的数字位数量,确定最新版本号和目标版本号是否存在补充版本号,对补充版本号进行补充后再确定目标版本号是否为最新版本号,解决了现有技术中确定目标版本号是否为最新版本号不准确的技术问题,达到提高确定目标版本号是否为最新版本号的准确率进而提高了软件更新的使用体验的技术效果。
本申请主要包括以下几个方面:
第一方面,本申请实施例提供一种版本号的确定方法,版本号的确定方法包括:确定最新版本号和本地软件的目标版本号的解析结果,解析结果包括版本号的每个数字位和每个数字位对应的数值;确定最新版本号和目标版本号分别对应的数字位数量是否相同;若最新版本号和目标版本号分别对应的数字位数量不相同,则在最新版本号和目标版本号中确定出补齐版本号以及补齐版本号的补齐数字位,将补齐版本号的补齐数字位和补齐数字位对应的数值补齐;将目标版本号和最新版本号中每个数字位分别对应的数值逐个比较,依据比较结果确定目标版本号是否为最新版本号。
可选地,确定最新版本号和目标版本号分别对应的数字位数量是否相同之后,方法还包括:若最新版本号和目标版本号分别对应的数字位数量相同,则将目标版本号和最新版本号中每个数字位分别对应的数值逐个比较,依据比较结果确定目标版本号是否为最新版本号。
可选地,若最新版本号和目标版本号分别对应的数字位数量不相同,则在最新版本号和目标版本号中确定出补齐版本号以及补齐版本号的补齐数字位,将补齐数字位和补齐数字位对应的数值补齐,包括:确定最新版本号的数字位数量是否小于或者大于目标版本号的数字位数量;若最新版本号的数字位数量小于目标版本号的数字位数量,则将最新版本号作为补齐版本号,将目标版本号的数字位逐个与最新版本号的数字位进行匹配;将目标版本号未匹配上的数字位作为最新版本号的补充数字位,将预设数值作为最新版本号的补充数字位对应的数值;若最新版本号的数字位数量大于目标版本号的数字位数量,则将目标版本号作为补齐版本号,将最新版本号的数字位逐一与目标版本号的数字位进行匹配;将最新版本号未匹配上的数字位作为目标版本号的补充数字位,将预设数值作为目标版本号的补充数字位对应的数值。
可选地,将目标版本号和最新版本号中每个数字位分别对应的数值逐个比较,依据比较结果确定目标版本号是否为最新版本号,包括:将目标版本号和最新版本号中每个数字位分别对应的数值逐个比较,确定目标版本号和最新版本号中每个数字位分别对应的数值是否均相同;若目标版本号和最新版本号中每个数字位分别对应的数值均相同,则确定目标版本号为最新版本号;若目标版本号和最新版本号中存在任一个数字位分别对应的数值不相同,则确定目标版本号不是最新版本号。
可选地,通过以下方式确定版本号的解析结果:对版本号的字符串中的字符进行逐个识别,确定当前字符是否为数字;若当前字符是数字,则将数字压入数字栈;若当前字符不是数字,则确定数字栈是否为空;若数字栈不为空,则弹出输出数字栈中的数值并将弹出输出次数加一,将弹出输出次数确定为数值对应的数字位;若数字栈为空,则将识别次数加一,并确定识别次数是否等于版本号的字符串长度;若识别次数不等于版本号的字符串长度,则将当前字符的下一个字符确定为新的当前字符;若识别次数等于版本号的字符串长度,确定版本号的解析结果。
可选地,确定版本号的解析结果包括:确定数字栈是否为空;若数字栈为空,则将数字栈输出的所有数值和所有数值中每个数值对应的数字位,确定为版本号的解析结果;若数字栈不为空,则输出数字栈中的数值并将输出次数加一,将输出次数确定为数值对应的数字位,并将数字栈输出的所有数值和所有数值中每个数值对应的数字位,确定为版本号的解析结果。
可选地,若数字栈不为空,则输出数字栈中的数值,包括:确定数字栈中每个元素的出栈顺序;针对数字栈中每个元素,将该元素的出栈顺序减一作为该元素对应的次幂数,将该元素与十的次幂数相乘,得到该元素的出栈值;将数字栈中每个元素的出栈值相加,得到数字栈输出的数值。
第二方面,本申请实施例还提供一种版本号的确定装置,版本号的确定装置包括:第一确定模块,用于确定最新版本号和本地软件的目标版本号的解析结果,解析结果包括版本号的每个数字位和每个数字位对应的数值;第二确定模块,用于确定最新版本号和目标版本号分别对应的数字位数量是否相同;补齐模块,用于若最新版本号和目标版本号分别对应的数字位数量不相同,则在最新版本号和目标版本号中确定出补齐版本号以及补齐版本号的补齐数字位,将补齐版本号的补齐数字位和补齐数字位对应的数值补齐;比较模块,用于将目标版本号和最新版本号中每个数字位分别对应的数值逐个比较,依据比较结果确定目标版本号是否为最新版本号。
第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,存储器存储有处理器可执行的机器可读指令,当电子设备运行时,处理器与存储器之间通过总线进行通信,机器可读指令被处理器运行时执行上述第一方面或第一方面中任一种可能的实施方式中的版本号的确定方法的步骤。
第四方面,本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述第一方面或第一方面中任一种可能的实施方式中的版本号的确定的步骤。
本申请实施例提供的一种版本号的确定方法及装置,其中,该方法包括:确定最新版本号和本地软件的目标版本号的解析结果,解析结果包括版本号的每个数字位和每个数字位对应的数值;确定最新版本号和目标版本号分别对应的数字位数量是否相同;若最新版本号和目标版本号分别对应的数字位数量不相同,则在最新版本号和目标版本号中确定出补齐版本号以及补齐版本号的补齐数字位,将补齐版本号的补齐数字位和补齐数字位对应的数值补齐;将目标版本号和最新版本号中每个数字位分别对应的数值逐个比较,依据比较结果确定目标版本号是否为最新版本号。本申请通过比较最新版本号和目标版本号的数字位数量,确定最新版本号和目标版本号是否存在补充版本号,对补充版本号进行补充后再确定目标版本号是否为最新版本号,解决了现有技术中确定目标版本号是否为最新版本号不准确的技术问题,达到提高确定目标版本号是否为最新版本号的准确率进而提高了软件更新的使用体验的技术效果。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例所提供的一种版本号的确定方法的流程图。
图2示出了本申请实施例所提供的在最新版本号和目标版本号中确定出补齐版本号以及补齐版本号的补齐数字位将补齐数字位和补齐数字位对应的数值补齐的步骤的流程图。
图3示出了本申请实施例所提供的确定版本号的解析结果的步骤的流程图。
图4示出了本申请实施例所提供的一种版本号的确定装置的功能模块图。
图5示出了本申请实施例所提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中的附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应当理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的全部其他实施例,都属于本申请保护的范围。
现有技术中,在确定本地软件的版本号是否为最新版本号时,将本地软件的版本号与最新版本号的字符串进行逐个比对,导致确定本地软件的版本号是否为最新版本号的准确率较低。
基于此,本申请实施例提供了一种版本号的确定方法及装置,通过比较最新版本号和目标版本号的数字位数量,确定最新版本号和目标版本号是否存在补充版本号,对补充版本号进行补充后再确定目标版本号是否为最新版本号,解决了现有技术中确定目标版本号是否为最新版本号不准确的技术问题,达到提高确定目标版本号是否为最新版本号的准确率进而提高了软件更新的使用体验的技术效果,具体如下:
请参阅图1,图1为本申请实施例所提供的一种版本号的确定方法的流程图。如图1所示,本申请实施例所提供的版本号的确定方法,包括以下步骤:
S101:确定最新版本号和本地软件的目标版本号的解析结果。
本申请实施例所提供的版本号的确定方法应用于本地软件的客户端,也就是说,本地软件的客户端接收到服务器下发的最新版本号,客户端确定自身的版本号(即,目标版本号)是否是最新版本号。
解析结果包括版本号的每个数字位和每个数字位对应的数值。
示例性的,版本号的字符串包好数字位和非数字位,若版本号为V.2.3.12,则‘V’以及‘.’对应的是非数字位,‘2’对应的是第一数字位,‘3’对应的是第二数字位,“12”对应的是第三数字位。也就是说,若相邻的两个非数字位之间包含数字字符,则相邻的两个非数字位之间的数字字符对应一个数值和一个数字位,或者若最后一个非数字位和结尾字符之间包含数字字符,则最后一个非数字位和结尾字符之间的数字字符对应一个数值和一个数字位。
S102:确定最新版本号和目标版本号分别对应的数字位数量是否相同。
也就是说,确定最新版本号的数字位数量与目标版本号的数字位数量是否相同。
示例性的,若最新版本号为V.2.3.12,目标版本号为V.2.3.4,则最新版本号的数字位数量为3,目标版本号的数字位数量也是3,进而确定最新版本号的数字位数量与目标版本号的数字位数量相同;若最新版本号为V.2.3.12,目标版本号为V.2.3.4.1,则最新版本号的数字位数量为3,目标版本号的数字位数量是4,进而确定最新版本号的数字位数量与目标版本号的数字位数量不相同。
若最新版本号和目标版本号分别对应的数字位数量相同,则执行步骤S104:将目标版本号和最新版本号中每个数字位分别对应的数值逐个比较,依据比较结果确定目标版本号是否为最新版本号。
S103:在最新版本号和目标版本号中确定出补齐版本号以及补齐版本号的补齐数字位,将补齐版本号的补齐数字位和补齐数字位对应的数值补齐。
若最新版本号和目标版本号分别对应的数字位数量不相同,则在最新版本号和目标版本号中确定出补齐版本号以及补齐版本号的补齐数字位,将补齐版本号的补齐数字位和补齐数字位对应的数值补齐。
也就是说,将最新版本号和目标版本号中选择数字位数量较少的版本号作为补齐版本号,将补齐版本号中缺少的数字位补齐,在补齐后再执行步骤S104:将目标版本号和最新版本号中每个数字位分别对应的数值逐个比较,依据比较结果确定目标版本号是否为最新版本号。
请参阅图2,图2为本申请实施例所提供的在最新版本号和目标版本号中确定出补齐版本号以及补齐版本号的补齐数字位将补齐数字位和补齐数字位对应的数值补齐的步骤的流程图。
如图2所示,若最新版本号和目标版本号分别对应的数字位数量不相同,则在最新版本号和目标版本号中确定出补齐版本号以及补齐版本号的补齐数字位,将补齐数字位和补齐数字位对应的数值补齐,包括:
S1031:确定最新版本号的数字位数量是否小于或者大于目标版本号的数字位数量。
S1032:若最新版本号的数字位数量小于目标版本号的数字位数量,则将最新版本号作为补齐版本号,将目标版本号的数字位逐个与最新版本号的数字位进行匹配。
S1033:将目标版本号未匹配上的数字位作为最新版本号的补充数字位,将预设数值作为最新版本号的补充数字位对应的数值。
预设数值设置为0。也就是说,在目标版本号的所有数字位中确定最新版本号缺失的数字位,将缺失的数字位作为最新版本号的补充数字位,将预设数值作为补充数字位对应的数值。进而,在对最新版本号进行补充后,最新版本号和目标版本号的数字位数量相同。
示例性的,若最新版本号为V.2.3.12,目标版本号为V.2.3.4.1,最新版本号的数字位包含第一数字位2、第二数字位3和第三数字位12,数字位数量为3;目标版本号的数字位包含第一数字位2、第二数字位3、第三数字位4和第四数字位1,数字位数量为4;最新版本号的数字位数量小于目标版本号的数字位数量,将最新版本号作为补充版本号;目标版本号与最新版本号未匹配上的数字位为第四数字位,在最新数字位中增加第四数字位和第四数字位对应的数值为0。在补齐后,最新版本号包含第一数字位2、第二数字位3、第三数字位12和第四数字位0。
S1034:若最新版本号的数字位数量大于目标版本号的数字位数量,则将目标版本号作为补齐版本号,将最新版本号的数字位逐一与目标版本号的数字位进行匹配。
S1035:将最新版本号未匹配上的数字位作为目标版本号的补充数字位,将预设数值作为目标版本号的补充数字位对应的数值。
也就是说,在最新版本号的所有数字位中确定目标版本号缺失的数字位,将缺失的数字位作为目标版本号的补充数字位,将预设数值作为补充数字位对应的数值。进而,在对目标版本号进行补充后,最新版本号和目标版本号的数字位数量相同。
示例性的,若最新版本号为V.2.3.12.1,目标版本号为V.2.3,最新版本号的数字位包含第一数字位2、第二数字位3、第三数字位12和第四数字位1,数字位数量为4;目标版本号的数字位包含第一数字位2、第二数字位3,数字位数量为2;目标版本号的数字位数量小于最新版本号的数字位数量,将目标版本号作为补充版本号;目标版本号与最新版本号未匹配上的数字位为第三数字位和第四数字位,在目标数字位中增加第三数字位和第四数字位,第三数字位和第四数字位对应的数值均为0。在补齐后,目标版本号包含第一数字位2、第二数字位3、第三数字位0和第四数字位0。
返回图1,S104:将目标版本号和最新版本号中每个数字位分别对应的数值逐个比较,依据比较结果确定目标版本号是否为最新版本号。
将目标版本号和最新版本号中每个数字位分别对应的数值逐个比较,依据比较结果确定目标版本号是否为最新版本号,包括:将目标版本号和最新版本号中每个数字位分别对应的数值逐个比较,确定目标版本号和最新版本号中每个数字位分别对应的数值是否均相同;若目标版本号和最新版本号中每个数字位分别对应的数值均相同,则确定目标版本号为最新版本号;若目标版本号和最新版本号中存在任一个数字位分别对应的数值不相同,则确定目标版本号不是最新版本号。
示例性的,若最新版本号为V.2.3.12.1,目标版本号为V.2.3,最新版本号的数字位包含第一数字位2、第二数字位3、第三数字位12和第四数字位1,目标版本号补齐后包含第一数字位2、第二数字位3、第三数字位0和第四数字位0。将目标版本号与最新版本号在每个数字位分别对应的数值进行比较,确定目标版本号和最新版本号的第一数字位和第二数字位相同、第三数字位和第四数字位不同,进而确定目标版本号不是最新版本号。
请参阅图3,图3为本申请实施例所提供的确定版本号的解析结果的步骤的流程图。如图3所示,通过以下方式确定版本号的解析结果:
S201:对版本号的字符串中的字符进行逐个识别,确定当前字符是否为数字。
S202:将数字压入数字栈。
若当前字符是数字,则将数字压入数字栈。将数字压入数字栈之后,执行步骤S205:将识别次数加一,并确定识别次数是否小于版本号的字符串长度。
S203:确定数字栈是否为空。
若当前字符不是数字,则确定数字栈是否为空。
S204:输出数字栈中的数值并将输出次数加一,将输出次数确定为数值对应的数字位。
若数字栈不为空,则输出数字栈中的数值并将输出次数加一,将输出次数确定为数值对应的数字位。
在输出数字栈中的数值并将输出次数加一,将输出次数确定为数值对应的数字位之后,执行步骤S205:将识别次数加一,并确定识别次数是否小于版本号的字符串长度。
若数字栈不为空,则输出数字栈中的数值,包括:确定数字栈中每个元素的出栈顺序;针对数字栈中每个元素,将该元素的出栈顺序减一作为该元素对应的次幂数,将该元素与十的次幂数相乘,得到该元素的出栈值;将数字栈中每个元素的出栈值相加,得到数字栈输出的数值。
一个元素可以是一个数字,也就是说,数字是逐个压入数字栈中,成为数字栈中的每个元素。数字栈的出栈原则为先进后出,进而先压入数字栈中的数字会后从数字栈中弹出,后进入数字栈中的数字会先从数字栈中弹出。
S205:将识别次数加一,并确定识别次数是否等于版本号的字符串长度。
若数字栈为空,则执行步骤S205:将识别次数加一,并确定识别次数是否等于版本号的字符串长度。
识别次数指的是识别版本号的字符串中字符的次数,也就是说,识别次数等于已经识别的字符串长度。字符串长度为从字符串的第一个字符开始,到字符串的结尾字符(一般为‘\0’)结束,所有字符的个数,但是不包括结尾字符本身。
示例性的,若版本号为V.2.3,其包含的字符分别为‘V’、‘.’、‘2’、‘.’、‘3’字符串长度为5。
S206:将当前字符的下一个字符确定为新的当前字符。
若识别次数不等于版本号的字符串长度,则将当前字符的下一个字符确定为新的当前字符。将当前字符的下一个字符确定为新的当前字符之后,执行步骤S201:对版本号的字符串中的字符进行逐个识别,确定当前字符是否为数字。
识别次数不等于版本号的字符串长度必然是识别次数小于版本号的字符串长度,不可能存在识别次数大于字符串长度的情况。
S207:确定版本号的解析结果。
若识别次数等于版本号的字符串长度,则确定版本号的解析结果。
确定版本号的解析结果包括:确定数字栈是否为空;若数字栈为空,则将数字栈输出的所有数值和所有数值中每个数值对应的数字位,确定为版本号的解析结果;若数字栈不为空,则输出数字栈中的数值并将输出次数加一,将输出次数确定为数值对应的数字位,并将数字栈输出的所有数值和所有数值中每个数值对应的数字位,确定为版本号的解析结果。
示例性的,若版本号为V.2.10,其字符串为“V.2.10\0”从左到右逐个识别“V.2.10\0”,字符串长度为6,‘\0’为结尾字符;确定当前字符‘V’不是数字,确定数字栈为空,将识别次数加一,并确定识别次数为1小于字符串长度,将‘.’确定为新的当前字符;确定‘.’不是数字,确定数字栈为空,将识别次数加一,并确定识别次数为2小于字符串长度,将‘2’确定为新的当前字符;确定‘2’是数字,则将2压入至数字栈中,将识别次数加一,并确定识别次数为3小于字符串长度,将‘.’确定为新的当前字符;确定‘.’不是数字,确定数字栈不为空,将数字栈中的‘2’弹出,此时数字栈的输出次数为1,数字栈输出的数值为2(即,只弹出输出数字2,弹出输出数字2后数字栈为空),版本号的第一数字位对应的数值为2,将识别次数加一,并确定识别次数为4小于字符串长度,将‘1’确定为新的当前字符;确定‘1’为数字,将‘1’压入至数字栈中,将识别次数加一,并确定识别次数为5小于字符串长度,将‘0’确定为新的当前字符;确定‘0’是数字,将‘0’压入至数字栈中,将识别次数加一,并确定识别次数为6等于字符串长度,确定数字栈不为空,将数字栈中的‘0’、‘1’依次弹出,数字栈输出的数值10,数字栈的输出次数为2,版本号的第二数字位对应的数值为10,则将第一数字位2和第二数字位10确定为字符串的解析结果。
示例性的,将数字栈中的数值10输出的过程为:数字栈中的元素为“1”和“0”,由于数字栈的出栈顺序为先进后出,进而数字栈中元素“0”为第一个出栈,元素“1”为第二个出栈,进而确定元素“0”对应的次幂数为0,元素“1”对应的次幂数为1,从而计算1×101+0×100,得到数字栈输出的数值为10。
示例性的,本申请实施例还提供一种解析版本号的方法,该方法利用DeterministicFiniteAutomation(DFA,确定有限状态自动机)技术。将DFA的输入定义了两个状态,分别是数字状态和非数字状态。DFA包括三个状态,分别是等待状态、数字状态和终止状态。并将DFA的初始状态定义为等待状态,当DFA处于等待状态时,将版本号的字符串的字符逐个输入DFA;DFA确定当前字符的输入状态,若当前字符的输入状态为数字状态,则进入数字状态,将数字压入数字栈;若当前字符的输入状态为非数字状态,则进入等待状态并确定数字栈是否为空;若数字栈为空,则将识别次数加一,确定识别次数是否等于版本号的字符串长度;若数字栈不为空则输出数字栈中的数字并记录数字对应的输出次数;若确定识别次数等于版本号的字符串长度,则确定版本号的解析结果;若确定识别次数不等于版本号的字符串长度,则将当前字符的下一个字符作为新的当前字符输入DFA。
现有技术中对于版本号的解析办法不适用于版本号的位数较多的情况,会产生数字溢出的问题。由于本申请中是将数字压入数字栈并定期将数字栈中的数字输出,从而本申请可以解析位数过多的版本号,并且无论版本号中的间隔符如何变化(间隔符指的是版本号中数字或字母之间的连接符,例如V.2.10中的‘.’、V/2/10中的‘/’),均可以采用本申请的解析方法。
基于同一申请构思,本申请实施例中还提供了与上述实施例提供的版本号的确定方法对应的版本号的确定装置,由于本申请实施例中的装置解决问题的原理与本申请上述实施例的版本号的确定方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
如图4所示,图4为本申请实施例提供的一种版本号的确定装置的功能模块图。版本号的确定装置10包括:第一确定模块101、第二确定模块102、补齐模块103和比较模块104。第一确定模块101,用于确定最新版本号和本地软件的目标版本号的解析结果,解析结果包括版本号的每个数字位和每个数字位对应的数值;第二确定模块102,用于确定最新版本号和目标版本号分别对应的数字位数量是否相同;补齐模块103,用于若最新版本号和目标版本号分别对应的数字位数量不相同,则在最新版本号和目标版本号中确定出补齐版本号以及补齐版本号的补齐数字位,将补齐版本号的补齐数字位和补齐数字位对应的数值补齐;比较模块104,用于将目标版本号和最新版本号中每个数字位分别对应的数值逐个比较,依据比较结果确定目标版本号是否为最新版本号。
基于同一申请构思,参见图5所示,为本申请实施例提供的一种电子设备的结构示意图,电子设备20包括:处理器201、存储器202和总线203,所述存储器202存储有所述处理器201可执行的机器可读指令,当电子设备20运行时,所述处理器201与所述存储器202之间通过所述总线203进行通信,所述机器可读指令被所述处理器201运行时执行如上述实施例中任一所述的版本号的确定方法的步骤。
具体地,所述机器可读指令被所述处理器201执行时可以执行如下处理:确定最新版本号和本地软件的目标版本号的解析结果,解析结果包括版本号的每个数字位和每个数字位对应的数值;确定最新版本号和目标版本号分别对应的数字位数量是否相同;若最新版本号和目标版本号分别对应的数字位数量不相同,则在最新版本号和目标版本号中确定出补齐版本号以及补齐版本号的补齐数字位,将补齐版本号的补齐数字位和补齐数字位对应的数值补齐;将目标版本号和最新版本号中每个数字位分别对应的数值逐个比较,依据比较结果确定目标版本号是否为最新版本号。
基于同一申请构思,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述实施例提供的版本号的确定方法的步骤。
具体地,所述存储介质能够为通用的存储介质,如移动磁盘、硬盘等,所述存储介质上的计算机程序被运行时,能够执行上述版本号的确定方法,通过比较最新版本号和目标版本号的数字位数量,确定最新版本号和目标版本号是否存在补充版本号,对补充版本号进行补充后再确定目标版本号是否为最新版本号,解决了现有技术中确定目标版本号是否为最新版本号不准确的技术问题,达到提高确定目标版本号是否为最新版本号的准确率进而提高了软件更新的使用体验的技术效果。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应所述理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者所述技术方案的部分可以以软件产品的形式体现出来,所述计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (8)

1.一种版本号的确定方法,其特征在于,所述版本号的确定方法包括:
确定最新版本号和本地软件的目标版本号的解析结果,所述解析结果包括版本号的每个数字位和每个数字位对应的数值;
确定所述最新版本号和所述目标版本号分别对应的数字位数量是否相同;
若所述最新版本号和所述目标版本号分别对应的数字位数量不相同,则在所述最新版本号和所述目标版本号中确定出补齐版本号以及所述补齐版本号的补齐数字位,将所述补齐版本号的所述补齐数字位和所述补齐数字位对应的数值补齐;
将所述目标版本号和所述最新版本号中每个数字位分别对应的数值逐个比较,依据比较结果确定所述目标版本号是否为最新版本号;
通过以下方式确定版本号的解析结果:对版本号的字符串中的字符进行逐个识别,确定当前字符是否为数字;若所述当前字符是数字,则将所述数字压入数字栈;若所述当前字符不是数字,则确定数字栈是否为空;若数字栈不为空,则弹出输出数字栈中的数值并将弹出输出次数加一,将弹出输出次数确定为数值对应的数字位;若所述数字栈为空,则将识别次数加一,并确定所述识别次数是否等于版本号的字符串长度;若所述识别次数不等于版本号的字符串长度,则将当前字符的下一个字符确定为新的当前字符;若所述识别次数等于版本号的字符串长度,则确定版本号的解析结果;
所述确定版本号的解析结果包括:确定所述数字栈是否为空;若所述数字栈为空,则将数字栈输出的所有数值和所有数值中每个数值对应的数字位,确定为版本号的解析结果;若所述数字栈不为空,则弹出输出数字栈中的数值并将弹出输出次数加一,将弹出输出次数确定为数值对应的数字位,并将数字栈输出的所有数值和所有数值中每个数值对应的数字位,确定为版本号的解析结果。
2.根据权利要求1所述的版本号的确定方法,其特征在于,所述确定所述最新版本号和所述目标版本号分别对应的数字位数量是否相同之后,所述方法还包括:
若所述最新版本号和所述目标版本号分别对应的数字位数量相同,则将所述目标版本号和所述最新版本号中每个数字位分别对应的数值逐个比较,依据比较结果确定所述目标版本号是否为最新版本号。
3.根据权利要求1所述的版本号的确定方法,其特征在于,所述若所述最新版本号和所述目标版本号分别对应的数字位数量不相同,则在所述最新版本号和所述目标版本号中确定出补齐版本号以及所述补齐版本号的补齐数字位,将所述补齐数字位和所述补齐数字位对应的数值补齐,包括:
确定所述最新版本号的数字位数量是否小于或者大于所述目标版本号的数字位数量;
若所述最新版本号的数字位数量小于所述目标版本号的数字位数量,则将所述最新版本号作为补齐版本号,将所述目标版本号的数字位逐个与所述最新版本号的数字位进行匹配;
将所述目标版本号未匹配上的数字位作为所述最新版本号的补充数字位,将预设数值作为所述最新版本号的所述补充数字位对应的数值;
若所述最新版本号的数字位数量大于所述目标版本号的数字位数量,则将所述目标版本号作为补齐版本号,将所述最新版本号的数字位逐一与所述目标版本号的数字位进行匹配;
将所述最新版本号未匹配上的数字位作为所述目标版本号的补充数字位,将预设数值作为所述目标版本号的所述补充数字位对应的数值。
4.根据权利要求1或2所述的版本号的确定方法,其特征在于,所述将所述目标版本号和所述最新版本号中每个数字位分别对应的数值逐个比较,依据比较结果确定所述目标版本号是否为最新版本号,包括:
将所述目标版本号和所述最新版本号中每个数字位分别对应的数值逐个比较,确定所述目标版本号和所述最新版本号中每个数字位分别对应的数值是否均相同;
若所述目标版本号和所述最新版本号中每个数字位分别对应的数值均相同,则确定目标版本号为最新版本号;
若所述目标版本号和所述最新版本号中存在任一个数字位分别对应的数值不相同,则确定所述目标版本号不是最新版本号。
5.根据权利要求1所述的版本号的确定方法,其特征在于,所述若所述数字栈不为空,则输出所述数字栈中的数值,包括:
确定所述数字栈中每个元素的出栈顺序;
针对所述数字栈中每个元素,将该元素的出栈顺序减一作为该元素对应的次幂数,将该元素与十的所述次幂数相乘,得到该元素的出栈值;
将所述数字栈中每个元素的所述出栈值相加,得到所述数字栈输出的数值。
6.一种版本号的确定装置,其特征在于,所述版本号的确定装置包括:
第一确定模块,用于确定最新版本号和本地软件的目标版本号的解析结果,所述解析结果包括版本号的每个数字位和每个数字位对应的数值;
第二确定模块,用于确定所述最新版本号和所述目标版本号分别对应的数字位数量是否相同;
补齐模块,用于若所述最新版本号和所述目标版本号分别对应的数字位数量不相同,则在所述最新版本号和所述目标版本号中确定出补齐版本号以及所述补齐版本号的补齐数字位,将所述补齐版本号的所述补齐数字位和所述补齐数字位对应的数值补齐;
比较模块,用于将所述目标版本号和所述最新版本号中每个数字位分别对应的数值逐个比较,依据比较结果确定所述目标版本号是否为最新版本号;
第一确定模块,还用于对版本号的字符串中的字符进行逐个识别,确定当前字符是否为数字;若所述当前字符是数字,则将所述数字压入数字栈;若所述当前字符不是数字,则确定数字栈是否为空;若数字栈不为空,则弹出输出数字栈中的数值并将弹出输出次数加一,将弹出输出次数确定为数值对应的数字位;若所述数字栈为空,则将识别次数加一,并确定所述识别次数是否等于版本号的字符串长度;若所述识别次数不等于版本号的字符串长度,则将当前字符的下一个字符确定为新的当前字符;若所述识别次数等于版本号的字符串长度,则确定版本号的解析结果;
第一确定模块,还用于确定所述数字栈是否为空;若所述数字栈为空,则将数字栈输出的所有数值和所有数值中每个数值对应的数字位,确定为版本号的解析结果;若所述数字栈不为空,则弹出输出数字栈中的数值并将弹出输出次数加一,将弹出输出次数确定为数值对应的数字位,并将数字栈输出的所有数值和所有数值中每个数值对应的数字位,确定为版本号的解析结果。
7.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过所述总线进行通信,所述机器可读指令被所述处理器运行时执行如权利要求1至5任一所述的版本号的确定方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至5任一所述的版本号的确定方法的步骤。
CN202211629241.3A 2022-12-19 2022-12-19 一种版本号的确定方法及装置 Active CN115617392B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211629241.3A CN115617392B (zh) 2022-12-19 2022-12-19 一种版本号的确定方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211629241.3A CN115617392B (zh) 2022-12-19 2022-12-19 一种版本号的确定方法及装置

Publications (2)

Publication Number Publication Date
CN115617392A CN115617392A (zh) 2023-01-17
CN115617392B true CN115617392B (zh) 2023-03-14

Family

ID=84880935

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211629241.3A Active CN115617392B (zh) 2022-12-19 2022-12-19 一种版本号的确定方法及装置

Country Status (1)

Country Link
CN (1) CN115617392B (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110109699A (zh) * 2019-05-06 2019-08-09 重庆天蓬网络有限公司 一种漏洞组件查找方法、系统、介质和电子设备
CN111580822A (zh) * 2020-04-22 2020-08-25 中国科学院信息工程研究所 基于vex中间语言的物联网设备组件版本信息提取方法
CN111381866A (zh) * 2020-05-29 2020-07-07 支付宝(杭州)信息技术有限公司 区块链系统的版本升级方法、系统、及装置
CN113961176A (zh) * 2020-07-20 2022-01-21 武汉斗鱼网络科技有限公司 一种实现客户端版本规则判定兼容性的方法及装置
US11429378B1 (en) * 2021-05-10 2022-08-30 Microsoft Technology Licensing, Llc Change estimation in version control system
CN115237444A (zh) * 2022-07-28 2022-10-25 深圳壹账通智能科技有限公司 基于版本号的并发控制方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN115617392A (zh) 2023-01-17

Similar Documents

Publication Publication Date Title
CN112434188B (zh) 一种异构数据库的数据集成方法、装置及存储介质
CN109150886B (zh) 结构化查询语言注入攻击检测方法及相关设备
CN110689084A (zh) 一种异常用户识别方法及装置
CN114817651B (zh) 数据存储方法、数据查询方法、装置和设备
CN114218931A (zh) 信息抽取方法、装置、电子设备和可读存储介质
CN110580337A (zh) 一种基于实体相似度计算的专业实体消歧实现方法
CN112395880B (zh) 结构化三元组的纠错方法、装置、计算机设备及存储介质
CN115617392B (zh) 一种版本号的确定方法及装置
CN109857816B (zh) 测试样本的选取方法及装置、存储介质、电子设备
CN111177362A (zh) 一种信息处理方法、装置、服务器及介质
CN113869046B (zh) 一种自然语言文本的处理方法、装置、设备及存储介质
CN114462381A (zh) 数据处理方法、装置、设备及存储介质
CN115906064A (zh) 一种检测方法、装置、电子设备、计算机可读介质
CN115936802A (zh) 基于用户画像和序列建模的个性化营销方法、装置、设备和存储介质
CN115577149A (zh) 一种数据处理方法、装置、设备及可读存储介质
CN115827612A (zh) 一种数据属性的生成方法、装置以及电子设备
CN112231454B (zh) 提问预测及回答反馈方法、装置、计算机设备及存储介质
CN114490969A (zh) 基于表格的问答方法、装置以及电子设备
CN112232025B (zh) 一种字符串存储方法、装置及电子设备
CN110287147B (zh) 一种字符串排序方法及装置
CN113821211A (zh) 命令解析方法、装置、存储介质和计算机设备
CN113449062A (zh) 轨迹处理方法、装置、电子设备和存储介质
CN115718696B (zh) 源码密码学误用检测方法、装置、电子设备和存储介质
CN116910756B (zh) 一种恶意pe文件的检测方法
CN114359904B (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
GR01 Patent grant
GR01 Patent grant