CN113835717A - 一种安装包获取方法、装置、设备及存储介质 - Google Patents

一种安装包获取方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN113835717A
CN113835717A CN202010582394.1A CN202010582394A CN113835717A CN 113835717 A CN113835717 A CN 113835717A CN 202010582394 A CN202010582394 A CN 202010582394A CN 113835717 A CN113835717 A CN 113835717A
Authority
CN
China
Prior art keywords
installation package
query
parameter
function
obtaining
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
Application number
CN202010582394.1A
Other languages
English (en)
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.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN202010582394.1A priority Critical patent/CN113835717A/zh
Publication of CN113835717A publication Critical patent/CN113835717A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明实施例公开了一种安装包获取方法、装置、设备及存储介质。该方法包括:在监测到获取安装包的触发事件时,获取与触发事件对应的安装包获取参数;以安装包获取参数为入参参数,调用已构建完成的安装包获取函数,以使安装包获取函数对安装包查询参数进行解密,根据解密结果更新安装包查询参数;将安装包获取参数传递至已构建完成的签名校验函数中,根据签名校验函数的输出结果,判断签名校验是否成功;若是,以安装包查询参数为入参参数,调用已构建完成的安装包查询函数,根据安装包查询函数的输出结果,得到待获取安装包;根据安装包获取函数的输出结果,得到待获取安装包。本发明实施例的技术方案,解决了安装包的获取效率低下的问题。

Description

一种安装包获取方法、装置、设备及存储介质
技术领域
本发明实施例涉及计算机应用技术领域,尤其涉及一种安装包获取方法、装置、设备及存储介质。
背景技术
在Android***中,某应用程序的已经安装过的全部安装包通常存储于本地的一个文件夹中,当需要获取某个特定的安装包时,现有技术需要用户在该文件夹内进行手动查找,安装包的获取效率较为低下。
发明内容
本发明实施例提供了一种安装包获取方法、装置、设备及存储介质,解决了安装包的获取效率较为低下的问题。
第一方面,本发明实施例提供了一种安装包获取方法,可以包括:
在监测到获取安装包的触发事件时,获取与触发事件对应的安装包获取参数,其中,安装包获取参数包括待获取安装包的安装包查询参数和安装包获取对象的对象签名参数;
以安装包获取参数为入参参数,调用已构建完成的安装包获取函数,根据安装包获取函数的输出结果,得到待获取安装包;
其中,安装包获取函数通过如下步骤实现安装包获取功能:
对安装包查询参数进行解密,根据解密结果更新安装包查询参数;
将安装包获取参数传递至已构建完成的签名校验函数中,根据签名校验函数的输出结果,判断签名校验是否成功;
若是,则以安装包查询参数为入参参数,调用已构建完成的安装包查询函数,根据安装包查询函数的输出结果,得到待获取安装包。
第二方面,本发明实施例还提供了一种安装包获取装置,该装置可以包括:
安装包获取参数获取模块,用于在监测到获取安装包的触发事件时,获取与触发事件对应的安装包获取参数,其中,安装包获取参数包括待获取安装包的安装包查询参数和安装包获取对象的对象签名参数;
待获取安装包得到模块,用于以安装包获取参数为入参参数,调用已构建完成的安装包获取函数,根据安装包获取函数的输出结果,得到待获取安装包;
其中,安装包获取函数通过如下单元实现安装包获取功能:
安装包查询参数解密单元,用于获取访问令牌信息,基于访问令牌信息对安装包查询参数进行解密,根据解密结果更新安装包查询参数;
签名校验判断单元,用于将安装包获取参数传递至已构建完成的签名校验函数中,根据签名校验函数的输出结果,判断签名校验是否成功;
待获取安装包得到单元,用于若是,则以安装包查询参数为入参参数,调用已构建完成的安装包查询函数,根据安装包查询函数的输出结果,得到待获取安装包。
第三方面,本发明实施例还提供了一种设备,该设备可以包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本发明任意实施例所提供的安装包获取方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例所提供的安装包获取方法。
本发明实施例的技术方案,在监测到获取安装包的触发事件时,通过以与触发事件对应的安装包获取参数为入参参数,调用已构建完成的安装包获取函数,以使安装包获取函数对安装包查询参数进行解密,根据解密结果更新安装包查询参数,进而,将安装包获取参数传递至已构建完成的签名校验函数中,并在根据签名校验函数的输出结果确定签名校验成功时,将安装包查询参数传递至已构建完成的安装包查询函数,此时,安装包查询函数的输出结果即为安装包获取函数的输出结果;由此,根据安装包获取函数的输出结果,可以得到相应的待获取安装包。上述技术方案,基于安装包获取函数自动获取与安装包获取参数匹配的待获取安装包,解决了安装包的获取效率较为低下的问题,达到了安装包的自动且快速获取的效果。
附图说明
图1是本发明实施例一中的一种安装包获取方法的流程图;
图2是本发明实施例二中的一种安装包获取方法的流程图;
图3是本发明实施例三中的一种安装包获取方法的流程图;
图4是本发明实施例四中的一种安装包获取装置的结构框图;
图5是本发明实施例五中的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1是本发明实施例一中提供的一种安装包获取方法的流程图。本实施例可适用于获取安装包的情况,尤其适用于从某应用程序的已经安装过的全部安装包中获取与安装包查询参数匹配的安装包的情况。该方法可以由本发明实施例提供的安装包获取装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在各种用户终端或服务器上。
参见图1,本发明实施例的方法具体包括如下步骤:
S110、在监测到获取安装包的触发事件时,获取与触发事件对应的安装包获取参数,其中,安装包获取参数包括待获取安装包的安装包查询参数和安装包获取对象的对象签名参数。
其中,触发事件可以是某安装包获取对象触发的用于获取某待获取安装包的事件,该安装包获取对象可以是预获取该待获取安装包的对象,该待获取安装包可以是某应用程序的已经安装过的全部安装包中的某安装包,该全部安装包中的各安装包可能具有不同的版本号、可能来源于不同的渠道等等,这样的待获取安装包可以称为历史安装包。
安装包获取参数可以包括待获取安装包的安装包查询参数和安装包获取对象的对象签名参数。具体的,安装包查询参数可以是待获取安装包需要满足的查询条件,其可以是应用名称、应用版本号和应用渠道中的至少一个,也可以是其余的应用信息,在此未做具体限定。例如,安装包查询参数可以是应用名称+应用版本号,可以是应用名称+应用渠道,也可以是应用名称+应用版本号+应用渠道等等。对象签名参数是安装包获取对象在预获取安装包时提供的签名,其可以证明安装包获取对象是合法性对象还是非合法对象。
在实际应用中,可选的,对象签名参数的类型可以是String类型,安装包查询参数的类型可以是PageParam类型,其中,PageParam是自定义类型,其描述信息可以包括数据库页数、每页条目数和数据库分页参数中的至少一个,示例性的,PageParam的描述信息如下所示:
Figure BDA0002552842570000051
S120、以安装包获取参数为入参参数,调用已构建完成的安装包获取函数,以使安装包获取函数根据安装包获取参数执行S130-S150。
其中,安装包获取函数以安装包获取参数为入参参数,根据安装包获取参数可以得到相应的待获取安装包。在实际应用中,可选的,安装包获取函数的出参参数的类型可以是CommonResult<ListRes<AppPageVo>>类型,其中,ListRes<AppPageVo>是CommonResult的泛型参数,AppPageVo是ListRes的泛型参数,多级泛化的组合设置可以在一个结果集上返回多条数据,这极大地提高了数据返回的容量。需要说明的是,AppPageVo是自定义类型,其描述信息可以包括身份标识信息、标题、包名、支持平台、创建时间、更新时间、标记号和操作者中的至少一个,也可以包括其余信息,在此未做具体限定。示例性的,AppPageVo的描述信息如下所示:
Figure BDA0002552842570000061
在此基础上,示例性的,安装包获取函数的具体形式如下所示:publicCommonResult<ListRes<AppPageVo>>pagelist(PageParam appQueryReq,String sign)throws VenusException,其中,pagelist是安装包获取函数的函数名称,appQueryReq是安装包查询参数,sign是对象签名参数,该安装包获取函数可以抛出自定义异常,该自定义异常的名称为VenusException,其可以通过throws VenusException将该自定义异常继续对外抛出。
再可选的,在安装包获取函数内可以设置有@RequestMapping(value="/applist",method={RequestMethod.POST})的预设请求注解,其描述了安装包获取函数的请求方式,这说明请求方式只能是POST请求,且请求路径必须是"/applist",当然,这一设置是可选设置,并非是具体限定。
再可选的,在安装包获取函数内还可以设置有预设序列化注解,该预设序列化注解可以是@ResponseBody,通过@ResponseBody可以实现对安装包获取函数的输出结果的自动序列化功能,其可以将输出结果自动序列化为预设格式的数据,该预设格式可以是JSON格式,由此提高了数据传输的便捷性和前端对数据的解析效率。在实际应用中,可选的,该预设序列化注解可以设置于安装包获取函数中的安装包查询函数内。
S130、对安装包查询参数进行解密,根据解密结果更新安装包查询参数。
其中,安装包查询参数可以认为是经过加密处理后的一串乱码,由此,可以先基于校验秘钥对其进行解密处理,该校验秘钥可以是前端和后端各自持有的秘钥。也就是说,前端基于校验秘钥对安装包查询参数进行加密处理,并将经过加密处理后的安装包查询参数发送至后端;然后,后端基于校验秘钥对其进行解密处理,并根据解密处理结果更新安装包查询参数,此时的安装包查询参数不再是一串乱码,而是具有实质含义的一串字符串。
S140、将安装包获取参数传递至已构建完成的签名校验函数中,根据签名校验函数的输出结果,判断签名校验是否成功。
其中,安装包获取参数可以包括安装包查询参数和对象签名参数,签名校验函数可以根据安装包查询参数生成签名校验结果,当签名校验结果和对象签名参数一致时,这说明安装包获取对象是合法对象,签名校验成功;否则,安装包获取对象是非法对象,签名校验失败,此时可以返回错误代码以告知安装包获取对象这是一个非法请求。
在此基础上,可选的,签名校验函数在校验安装包获取对象是否为合法对象之前,还可以对安装包查询参数是否为异常数据进行校验,通常情况下,若安装包查询参数中仅包括应用版本号和/或应用渠道,而未包括应用名称时,这是无法准确定位到与该安装包查询参数匹配的待获取安装包。
S150、若是,则以安装包查询参数为入参参数,调用已构建完成的安装包查询函数,根据安装包查询函数的输出结果,得到待获取安装包。
其中,在签名校验成功之后,将安装包查询参数传递至已构建完成的安装包查询函数中,该安装包查询函数可以查询到与安装包查询参数匹配的待获取安装包。在实际应用中,可选的,各应用程序的已经安装过的全部安装包的存储路径可以存储在一张已创建列表中,各安装包的存储路径可以相同也可以不同,在此未做具体限定。由此,根据安装包查询参数可以从已创建列表中搜寻到与其匹配的应用条目,进而,根据该应用条目中的存储路径即可获取到与安装包查询参数匹配的待获取安装包。
S160、根据安装包获取函数的输出结果,得到待获取安装包。
本发明实施例的技术方案,在监测到获取安装包的触发事件时,通过以与触发事件对应的安装包获取参数为入参参数,调用已构建完成的安装包获取函数,以使安装包获取函数对安装包查询参数进行解密,根据解密结果更新安装包查询参数,进而,将安装包获取参数传递至已构建完成的签名校验函数中,并在根据签名校验函数的输出结果确定签名校验成功时,将安装包查询参数传递至已构建完成的安装包查询函数,此时,安装包查询函数的输出结果即为安装包获取函数的输出结果;由此,根据安装包获取函数的输出结果,可以得到相应的待获取安装包。上述技术方案,基于安装包获取函数自动获取与安装包获取参数匹配的待获取安装包,解决了安装包的获取效率较为低下的问题,达到了安装包的自动且快速获取的效果。
在此基础上,一种可选的技术方案,安装包获取函数可以设置于安装包获取类中,该安装包获取类是自定义类,其中可以设置有下述预设注解中的至少一个:用于表示安装包获取类是控制类的第一预设注解、用于表示对安装包获取类进行访问的路径信息的第二预设注解、用于表示安装包获取类以预设速度实现日志注入的第三预设注解、以及用于表示安装包获取类实现跨服务访问的第四预设注解,这些预设注解是功能注解,其能够对安装包获取类进行自动增强功能。示例性的,安装获取类的具体形式如下所示:
@RestController
@Slf4j
@RequestMapping("/venus/luban/android/pkg")
@NotValid
public class AppPkgController{}
其中,AppPkgController是安装包获取类的类名;@RestController是第一预设注解,其表示安装包获取类是用于实现具体业务逻辑的类;RequestMapping("/venus/luban/android/pkg")是第二预设注解,其表示访问该安装包获取类的业务功能函数的路径信息;@Slf4j是第三预设注解,其表示安装包获取类能够快速实现日志注入,由此提高了日志输的效率;@NotValid是第四预设注解,其表示安装包获取类能够实现多个服务器间的跨服务调用,由此调高了待获取安装包的获取效率。
实施例二
图2是本发明实施例二中提供的一种安装包获取方法的流程图。本实施例以上述各技术方案为基础进行优化。在本实施例中,可选的,安装包查询函数通过如下步骤实现安装包查询功能:根据安装包查询参数确定待获取安装包的安装包数量,且从已创建列表中筛选出与安装包查询参数匹配的应用条目,其中,应用条目中记录有待获取安装包的存储路径和配置信息;若应用条目的数量和安装包数量相一致,则从应用条目中获取到待获取安装包的身份标识信息;根据身份标识信息确定安装包查询信息,并根据安装包查询信息从应用条目中获取到配置信息和存储路径;基于存储路径从数据库中获取到待获取安装包,对待获取安装包和配置信息进行转换,并对转换结果进行封装。其中,与上述各实施例相同或相应的术语的解释在此不再赘述。
参见图2,本实施例的方法具体可以包括如下步骤:
S210、在监测到获取安装包的触发事件时,获取与触发事件对应的安装包获取参数,其中,安装包获取参数包括待获取安装包的安装包查询参数和安装包获取对象的对象签名参数。
S220、以安装包获取参数为入参参数,调用已构建完成的安装包获取函数,以使安装包获取函数根据安装包获取参数执行S230-S270。
S230、对安装包查询参数进行解密,根据解密结果更新安装包查询参数。
S240、将安装包获取参数传递至已构建完成的签名校验函数中,根据签名校验函数的输出结果,判断签名校验是否成功。
S250、若是,则根据安装包查询参数确定待获取安装包的安装包数量,且从已创建列表中筛选出与安装包查询参数匹配的应用条目,其中,应用条目中记录有待获取安装包的存储路径和配置信息。
其中,根据安装包查询参数可以得到待获取安装包的安装包数量,在实际应用中,可选的,经过解密处理后的安装包查询参数是具有实质含义的字符串,那么,字符串的串数即为待获取安装包的安装包数量,该安装包数量可以是一个、两个或是多个,在此未做具体限定。
已创建列表是预先创建的应用列表,该应用列表中的每个应用条目记录有某应用程序的已经安装过的某安装包的存储路径和配置信息,该配置信息可以是包名、应用名称、当前版本号等等。由此,根据安装包查询参数可以从已创建列表中筛选出与其匹配的应用条目,这样的应用条目记录有待获取安装包的存储路径和配置信息。例如,若安装包查询参数是XX应用+XX版本号+XX渠道,则从一创建列表中可以搜寻到与该安装包查询参数对应的配置信息,该配置信息所在的应用条目是与该安装包查询参数对应的应用条目。
S260、若应用条目的数量和安装包数量相一致,则从应用条目中获取到待获取安装包的身份标识信息,并根据身份标识信息确定安装包查询信息,根据安装包查询信息从应用条目中获取到配置信息和存储路径。
其中,若应用条目的数量和安装包数量相一致,这说明此时的安装包查询参数是有效参数,由此,从已筛选的应用条目中可以获取到待获取安装包的身份标识信息(identification,id),根据该身份标识信息可以构建出安装包查询信息,以便根据已构建的安装包查询信息从满足查询条件(即,安装包查询参数)的应用条目中获取到待获取安装包的配置信息和存储路径。
S270、基于存储路径从数据库中获取到待获取安装包,对待获取安装包和配置信息进行转换,并对转换结果进行封装。
其中,在获取到待获取安装包的存储路径之后,可以根据该存储路径从数据库中获取到待获取安装包。在此基础上,可以对待获取安装包及其配置信息进行转换,并将转换结果进行封装后输出。在此基础上,可选的,在对转换结果进行封装后,还可以基于设置于安装包查询函数内的预设序列化注解,将封装结果自动序列化为JSON格式的数据,再将JSON格式的数据进行输出。
S280、根据安装包获取函数的输出结果,得到待获取安装包。
本发明实施例的技术方案,通过安装包查询参数确定待获取安装包的安装包数量,且从已创建列表中筛选出与安装包查询参数匹配的应用条目;在应用条目的数量和安装包数量相一致时,这说明安装包查询参数是有效参数,可以从应用条目中获取到待获取安装包的身份标识信息,以便根据身份标识信息确定安装包查询信息,并根据安装包查询信息从应用条目中获取到配置信息和存储路径;由此,基于存储路径可以从数据库中获取到待获取安装包,对待获取安装包和配置信息进行转换,并对转换结果进行封装,达到了与安装包查询参数匹配的待获取安装包的有效查询的效果。
实施例三
图3是本发明实施例三中提供的一种安装包获取方法的流程图。本实施例以上述各技术方案为基础进行优化。在本实施例中,可选的,签名校验函数通过如下步骤实现签名校验功能:将安装包查询参数转换为第一查询参数,并将第一查询参数转换为第二查询参数,其中,安装包查询参数的类型是Object,第一查询参数的类型是Map,第二查询参数的类型是List<String>;基于预设排序函数对第二查询参数进行排序,并将排序结果封装到预设封装对象中,其中,预设封装对象的类型包括StringBuilder;经由消息摘要算法,基于预设封装对象生成签名校验结果,并判断签名校验结果和对象签名参数是否一致;若是,则签名校验成功;否则,签名校验失败。其中,与上述各实施例相同或相应的术语的解释在此不再赘述。
参见图3,本实施例的方法具体可以包括如下步骤:
S310、在监测到获取安装包的触发事件时,获取与触发事件对应的安装包获取参数,其中,安装包获取参数包括待获取安装包的安装包查询参数和安装包获取对象的对象签名参数。
S320、以安装包获取参数为入参参数,调用已构建完成的安装包获取函数,以使安装包获取函数根据安装包获取参数执行S330-S360。
S330、对安装包查询参数进行解密,根据解密结果更新安装包查询参数。
S340、将安装包查询参数转换为第一查询参数,并将第一查询参数转换为第二查询参数,基于预设排序函数对第二查询参数进行排序,并将排序结果封装到预设封装对象中。
其中,安装包查询参数的类型是Object,且第一查询参数的类型是Map,将安装包查询参数转换为第一查询参数的目的在于,Map类型的第一查询参数对数据的移除效率更高,能够有效提高程序的执行效率。在此基础上,可选的,考虑到安装包查询参数中可能涉及到一些与签名校验无关的待移除参数,由此,可以对第一查询参数中的待移除参数进行移除,待移除参数的有效移除提高了后续签名校验的精准性,进而根据移除结果更新第一查询参数。
进一步,将第一查询参数转化为类型为List<String>的第二查询参数,这样设置的目的在于,数据排序是签名校验前必须执行的步骤,Map类型的第一查询参数的排序效率非常低下,List<String>类型的第二查询参数可以有效提高排序效率,为后续的签名校验做好准备条件。在此基础上,可选的,基于预设排空处理函数对第二查询参数进行排空处理,并根据排空处理结果更新第二查询参数,经由排空处理后的第二查询参数提高了后续签名校验的精准性。再进一步,将排序结果封装到类型是StringBuilder的预设封装对象中。
S350、经由消息摘要算法,基于预设封装对象生成签名校验结果,在签名校验结果和对象签名参数一致时,签名校验成功,否则签名校验失败。
其中,基于消息摘要算法(Message Digest Algorithm,MD)对预设封装对象进行计算,生成签名校验结果,并根据签名校验结果和对象签名参数是否一致来确定签名校验是否成功。在此基础上,可选的,该消息摘要算法可以是消息摘要算法第五版(MD5)。
S360、若签名校验成功,则以安装包查询参数为入参参数,调用已构建完成的安装包查询函数,根据安装包查询函数的输出结果,得到待获取安装包。
S370、根据安装包获取函数的输出结果,得到待获取安装包。
本发明实施例的技术方案,通过将类型是Object的安装包查询参数转换为类型是Map的第一查询参数,再将第一查询参数转换为类型是List<String>的第二查询参数,由此,可以基于预设排序函数对第二查询参数进行排序,并将排序结果封装到类型是StringBuilder的预设封装对象中;进而,经由消息摘要算法,基于预设封装对象可以生成签名校验结果,并根据签名校验结果和对象签名参数是否一致确定签名校验是否成功,达到了签名精准校验的效果。
为了更好地理解上述步骤的具体实现过程,下面结合具体示例,对本实施例的安装包获取方法进行示例性的说明。示例性的,安装包获取函数的具体形式如下所示:publicCommonResult<ListRes<AppPageVo>>pagelist(PageParam appQueryReq,String sign)throws VenusException,其中,pagelist是安装包获取函数的函数名称,appQueryReq是安装包查询参数,sign是对象签名参数。pagelist的内部实现过程如下所述:
在实现安装包获取功能之前,先对调用方(即,安装包获取对象)进行自定义双方的合法的签名校验,这可以有效保证数据的安全性。具体的,为了实现签名校验,可以自定义一个如下所示的签名校验函数:private boolean checkAuth(Object dto,Stringsecret,String accessToken)throws VenusException,其中,dto是待校验的安装包获取对象,secret是校验秘钥,accessToken是安装包获取对象携带的token数据,签名校验函数的返回值是boolean类型的变量,true表示校验成功,且false表示校验失败。签名校验函数的具体实现过程如下所示:
首先定义一个Map<String,String>params;对象来接收安装包获取参数,再通过调用params=org.apache.commons.beanutils.BeanUtils.describe(dto);将dto对象转换成params对象。考虑到安装包获取参数中可能携带一些与签名校验无关的待移除参数,可以对这些待移除参数进行移除处理,移除逻辑如下所述:
params.remove("access_token");
params.remove("class");
params.remove("operatorId");
params.remove("operatorName");
params.remove("sign");
params.remove("page");
params.remove("numPerPage");
params.remove("pageStartNum");
params.remove("accessDataSql");
接下来通过调用List<String>signParams=params.entrySet().stream().filter(e->Objects.nonNull(e.getKey())&&Objects.nonNull(e.getValue()))
.map(e->e.getKey()).collect(Collectors.toList());将params中的对象进行排空处理,再通过调用Collectors.toList()将其转换成一个List<String>signParams对象。这样设置的好处在于,params是一个map类型的对象,其对数据的移除效率更高;将param对象转换成signParams对象的主要目标是移除全部的空数据,且为后续的签名校验做好排序的准备条件。Map的排序效率非常低下,因此转成signParams后能够有效提高排序的效率。
接下来通过调用signParams.sort(Comparator.naturalOrder());对signParams集合进行自然排序,该自然排序是按照字母顺序进行排序。接下来通过调用
Figure BDA0002552842570000161
将排序后的数据封装到stringBuilder对象中,这不会造成额外内存够开销。
接下来通过调用String realAuth=DigestUtils.md5Hex(stringBuilder.toString()).toLowerCase();计算MD5信息,生成最终的签名校验结果realAuth。通过调用return StringUtils.equals(realAuth.toLowerCase(),accessToken.toLowerCase());进行判定realAuth与accessToken是否相等,若相等则校验成功,否则校验失败。
回到pagelist函数的实现中,首先通过调用自定义的签名校验函数booleansignResult=checkAuth(appQueryReq,SIGN_KEY,sign);实现合法性检测,然后通过如下函数对检测结果进行判定:if(!signResult){throw new VenusException(ERROR_SIGN_ERROR,"签名失败");}若失败则抛出异常,结束后续流程;若成功则执行后续流程。
接下来通过调用安装包查询函数获取待获取安装包,安装包查询函数的具体形式为ListRes<AppPageVo>res=appService.pageList(appQueryReq);其中,appService.pageList(appQueryReq)的具体实现过程如下所述:首先通过调用int count=appMapper.count(appQueryReq);得到待获取安装包的安装包数量count;再通过调用List<App>apps=appMapper.pageList(appQueryReq);获取到全部的应用条目apps;通过调用if(CollectionUtils.isEmpty(apps)){
return new ListRes(appQueryReq,count,Lists.newArrayList());
}确定安装包查询参数是否异常数据。接着通过调用List<Integer>ids=apps.stream().map(x->{return x.getId();}).collect(Collectors.toList());将app中的全部身份标识信息(id)获取得到,再通过如下内容构建安装包查询信息:
Map<String,Object>params=new HashMap<>();
params.put("ids",ids);
params.put("confKey",
AppConfKeyEnum.SILENCE_UPGRADE.getKey());
接着通过调用List<AppConf>appConfs=appConfMapper.selectByAppIds(params);获取到app的配置信息,如通过id获取到其余的配置信息)。通过调用
List<AppPageVo>appVos=apps.stream().map(x->{
return convert2Vo(x,appConfs);
}).collect(Collectors.toList())
实现数据转换,然后再通过调用return new ListRes(appQueryReq,count,appVos);将转后换的数据进行封装后并返回。最后通过调用return new CommonResult<>(Constant.SUC_CODE,Constant.SUC_MSG,res);对安装包查询函数输出的数据进行封装后进行返回。
实施例四
图4为本发明实施例四提供的安装包获取装置的结构框图,该装置用于执行上述任意实施例所提供的安装包获取方法。该装置与上述各实施例的安装包获取方法属于同一个发明构思,在安装包获取装置的实施例中未详尽描述的细节内容,可以参考上述安装包获取方法的实施例。参见图4,该装置具体可包括:安装包获取参数获取模块410和待获取安装包得到模块420。
其中,安装包获取参数获取模块410,用于在监测到获取安装包的触发事件时,获取与触发事件对应的安装包获取参数,其中,安装包获取参数包括待获取安装包的安装包查询参数和安装包获取对象的对象签名参数;
待获取安装包得到模块420,用于以安装包获取参数为入参参数,调用已构建完成的安装包获取函数,根据安装包获取函数的输出结果,得到待获取安装包;其中,安装包获取函数通过如下子模块实现安装包获取功能:
安装包查询参数解密子模块4201,用于获取访问令牌信息,基于访问令牌信息对安装包查询参数进行解密,根据解密结果更新安装包查询参数;
签名校验判断子模块4202,用于将安装包获取参数传递至已构建完成的签名校验函数中,根据签名校验函数的输出结果,判断签名校验是否成功;
待获取安装包得到子模块4203,用于若是,则以安装包查询参数为入参参数,调用已构建完成的安装包查询函数,根据安装包查询函数的输出结果,得到待获取安装包。
可选的,安装包查询函数通过如下单元实现安装包查询功能:
应用条目筛选单元,用于根据安装包查询参数确定待获取安装包的安装包数量,且从已创建列表中筛选出与安装包查询参数匹配的应用条目,其中,应用条目中记录有待获取安装包的存储路径和配置信息;
身份标识信息获取单元,用于若应用条目的数量和安装包数量相一致,则从应用条目中获取到待获取安装包的身份标识信息;
存储路径获取单元,用于根据身份标识信息确定安装包查询信息,并根据安装包查询信息从应用条目中获取到配置信息和存储路径;
第一封装单元,用于基于存储路径从数据库中获取到待获取安装包,对待获取安装包和配置信息进行转换,并对转换结果进行封装。
可选的,上述安装包查询函数还可以通过如下单元实现安装包查询功能:
序列化单元,用于基于设置于安装包查询函数内的预设序列化注解,将封装结果自动序列化为预设格式的数据,其中,预设格式包括JSON格式。
可选的,签名校验函数可以通过如下单元实现签名校验功能:
参数转换单元,用于将安装包查询参数转换为第一查询参数,并将第一查询参数转换为第二查询参数,其中,安装包查询参数的类型是Object类型,第一查询参数的类型是Map类型,第二查询参数的类型是List<String>类型;
第二封装单元,用于基于预设排序函数对第二查询参数进行排序,并将排序结果封装到预设封装对象中,预设封装对象的类型包括StringBuilder类型;
签名校验单元,用于经由消息摘要算法,基于预设封装对象生成签名校验结果,并判断签名校验结果和对象签名参数是否一致;若是,则签名校验成功;否则,签名校验失败。
可选的,上述签名校验函数可以通过如下单元实现签名校验功能:
移除单元,用于对第一查询参数中的待移除参数进行移除,并根据移除结果更新第一查询参数,其中,待移除参数是与消息摘要算法无关的参数;
排空单元,用于基于预设排空处理函数对第二查询参数进行排空处理,并根据排空处理结果更新第二查询参数。
可选的,安装包查询参数的类型包括PageParam类型,其中,PageParam的描述信息包括数据库页数、每页条目数和数据库分页参数中的至少一个;和/或,安装包查询参数包括应用名称、以及应用渠道和/或应用版本号;和/或,安装包获取函数的出参参数的类型包括CommonResult<ListRes<AppPageVo>>类型,其中,ListRes<AppPageVo>是CommonResult的泛型参数,AppPageVo是ListRes的泛型参数。
可选的,安装包获取函数可以设置于安装包获取类中,安装包获取类上可设置有下述预设注解中的至少一个:
用于表示安装包获取类是控制类的第一预设注解;
用于表示对安装包获取类进行访问的路径信息的第二预设注解;
用于表示安装包获取类以预设速度实现日志注入的第三预设注解;及
用于表示安装包获取类实现跨服务访问的第四预设注解。
本发明实施例四提供的安装包获取装置,在监测到获取安装包的触发事件时,通过安装包获取参数获取模块和待获取安装包得到模块相互配合,以与触发事件对应的安装包获取参数为入参参数,调用已构建完成的安装包获取函数,以使安装包获取函数对安装包查询参数进行解密,根据解密结果更新安装包查询参数,进而,将安装包获取参数传递至已构建完成的签名校验函数中,并在根据签名校验函数的输出结果确定签名校验成功时,将安装包查询参数传递至已构建完成的安装包查询函数,此时,安装包查询函数的输出结果即为安装包获取函数的输出结果;由此,根据安装包获取函数的输出结果,可以得到相应的待获取安装包。上述装置,基于安装包获取函数自动获取与安装包获取参数匹配的待获取安装包,解决了安装包的获取效率较为低下的问题,达到了安装包的自动且快速获取的效果。
本发明实施例所提供的安装包获取装置可执行本发明任意实施例所提供的安装包获取方法,具备执行方法相应的功能模块和有益效果。
值得注意的是,上述安装包获取装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
实施例五
图5为本发明实施例五提供的一种设备的结构示意图,如图5所示,该设备包括存储器510、处理器520、输入装置530和输出装置540。设备中的处理器520的数量可以是一个或多个,图5中以一个处理器520为例;设备中的存储器510、处理器520、输入装置530和输出装置540可以通过总线或其它方式连接,图5中以通过总线550连接为例。
存储器510作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的安装包获取方法对应的程序指令/模块(例如,安装包获取装置中的安装包获取参数获取模块410和待获取安装包得到模块420)。处理器520通过运行存储在存储器510中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的安装包获取方法。
存储器510可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器510可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器510可进一步包括相对于处理器520远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置530可用于接收输入的数字或字符信息,以及产生与装置的用户设置以及功能控制有关的键信号输入。输出装置540可包括显示屏等显示设备。
实施例六
本发明实施例六提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种安装包获取方法,包括:
在监测到获取安装包的触发事件时,获取与触发事件对应的安装包获取参数,其中,安装包获取参数包括待获取安装包的安装包查询参数和安装包获取对象的对象签名参数;
以安装包获取参数为入参参数,调用已构建完成的安装包获取函数,根据安装包获取函数的输出结果,得到待获取安装包;
其中,安装包获取函数通过如下步骤实现安装包获取功能:
对安装包查询参数进行解密,根据解密结果更新安装包查询参数;
将安装包获取参数传递至已构建完成的签名校验函数中,根据签名校验函数的输出结果,判断签名校验是否成功;
若是,则以安装包查询参数为入参参数,调用已构建完成的安装包查询函数,根据安装包查询函数的输出结果,得到待获取安装包。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的安装包获取方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。依据这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种安装包获取方法,其特征在于,包括:
在监测到获取安装包的触发事件时,获取与所述触发事件对应的安装包获取参数,其中,所述安装包获取参数包括待获取安装包的安装包查询参数和安装包获取对象的对象签名参数;
以所述安装包获取参数为入参参数,调用已构建完成的安装包获取函数,根据所述安装包获取函数的输出结果,得到所述待获取安装包;
其中,所述安装包获取函数通过如下步骤实现安装包获取功能:
对所述安装包查询参数进行解密,根据解密结果更新所述安装包查询参数;
将所述安装包获取参数传递至已构建完成的签名校验函数中,根据所述签名校验函数的输出结果,判断签名校验是否成功;
若是,则以所述安装包查询参数为入参参数,调用已构建完成的安装包查询函数,根据所述安装包查询函数的输出结果,得到所述待获取安装包。
2.根据权利要求1所述的方法,其特征在于,所述安装包查询函数通过如下步骤实现安装包查询功能:
根据所述安装包查询参数确定所述待获取安装包的安装包数量,且从已创建列表中筛选出与所述安装包查询参数匹配的应用条目,其中,所述应用条目中记录有所述待获取安装包的存储路径和配置信息;
若所述应用条目的数量和所述安装包数量相一致,则从所述应用条目中获取到所述待获取安装包的身份标识信息;
根据所述身份标识信息确定安装包查询信息,并根据所述安装包查询信息从所述应用条目中获取到所述配置信息和所述存储路径;
基于所述存储路径从数据库中获取到所述待获取安装包,对所述待获取安装包和所述配置信息进行转换,并对转换结果进行封装。
3.根据权利要求2所述的方法,其特征在于,还包括:
基于设置于所述安装包查询函数内的预设序列化注解,将封装结果自动序列化为预设格式的数据,其中,所述预设格式包括JSON格式。
4.根据权利要求1所述的方法,其特征在于,所述签名校验函数通过如下步骤实现签名校验功能:
将所述安装包查询参数转换为第一查询参数,并将所述第一查询参数转换为第二查询参数,其中,所述安装包查询参数的类型是Object类型,所述第一查询参数的类型是Map类型,所述第二查询参数的类型是List<String>类型;
基于预设排序函数对所述第二查询参数进行排序,并将排序结果封装到预设封装对象中,其中,所述预设封装对象的类型包括StringBuilder类型;
经由消息摘要算法,基于所述预设封装对象生成签名校验结果,并判断所述签名校验结果和所述对象签名参数是否一致;
若是,则签名校验成功;否则,签名校验失败。
5.根据权利要求4所述的方法,其特征在于,在所述将所述安装包查询参数转换为第一查询参数之后,还包括:
对所述第一查询参数中的待移除参数进行移除,并根据移除结果更新所述第一查询参数,其中,所述待移除参数是与所述消息摘要算法无关的参数;
基于预设排空处理函数对所述第二查询参数进行排空处理,并根据排空处理结果更新所述第二查询参数。
6.根据权利要求1所述的方法,其特征在于,所述安装包查询参数的类型包括PageParam类型,其中,所述PageParam的描述信息包括数据库页数、每页条目数和数据库分页参数中的至少一个;和/或,
所述安装包获取函数的出参参数的类型包括CommonResult<ListRes<AppPageVo>>类型,其中,ListRes<AppPageVo>是CommonResult的泛型参数,AppPageVo是ListRes的泛型参数;和/或,
所述安装包查询参数包括应用名称、以及应用渠道和/或应用版本号。
7.根据权利要求1所述的方法,其特征在于,所述安装包获取函数设置于安装包获取类中,所述安装包获取类上设置有下述预设注解中的至少一个:
用于表示所述安装包获取类是控制类的第一预设注解;
用于表示对所述安装包获取类进行访问的路径信息的第二预设注解;
用于表示所述安装包获取类以预设速度实现日志注入的第三预设注解;及
用于表示所述安装包获取类实现跨服务访问的第四预设注解。
8.一种安装包获取装置,其特征在于,包括:
安装包获取参数获取模块,用于在监测到获取安装包的触发事件时,获取与所述触发事件对应的安装包获取参数,其中,所述安装包获取参数包括待获取安装包的安装包查询参数和安装包获取对象的对象签名参数;
待获取安装包得到模块,用于以所述安装包获取参数为入参参数,调用已构建完成的安装包获取函数,根据所述安装包获取函数的输出结果,得到所述待获取安装包;
其中,所述安装包获取函数通过如下子模块实现安装包获取功能:
安装包查询参数解密子模块,用于获取访问令牌信息,基于所述访问令牌信息对所述安装包查询参数进行解密,根据解密结果更新所述安装包查询参数;
签名校验判断子模块,用于将所述安装包获取参数传递至已构建完成的签名校验函数中,根据所述签名校验函数的输出结果,判断签名校验是否成功;
待获取安装包得到子模块,用于若是,则以所述安装包查询参数为入参参数,调用已构建完成的安装包查询函数,根据所述安装包查询函数的输出结果,得到所述待获取安装包。
9.一种设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的安装包获取方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7任一所述的安装包获取方法。
CN202010582394.1A 2020-06-23 2020-06-23 一种安装包获取方法、装置、设备及存储介质 Pending CN113835717A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010582394.1A CN113835717A (zh) 2020-06-23 2020-06-23 一种安装包获取方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010582394.1A CN113835717A (zh) 2020-06-23 2020-06-23 一种安装包获取方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN113835717A true CN113835717A (zh) 2021-12-24

Family

ID=78964150

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010582394.1A Pending CN113835717A (zh) 2020-06-23 2020-06-23 一种安装包获取方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113835717A (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103019722A (zh) * 2012-12-14 2013-04-03 北京中电普华信息技术有限公司 一种抽取Java网络应用升级包的方法及装置
CN105740093A (zh) * 2014-11-10 2016-07-06 财团法人资讯工业策进会 备份方法、环境更新预先检测方法及其***
CN106293779A (zh) * 2015-05-11 2017-01-04 广州爱九游信息技术有限公司 一种识别应用安装包的方法及装置
CN106453448A (zh) * 2015-08-06 2017-02-22 北京奇虎科技有限公司 用于下载目标文件的方法及装置
WO2018072430A1 (zh) * 2016-10-20 2018-04-26 广州优视网络科技有限公司 安装包的扫描解析方法、装置、移动终端及机器可读存储介质
CN109343968A (zh) * 2018-08-02 2019-02-15 武汉斗鱼网络科技有限公司 一种获取数据的方法和相关装置
CN110298018A (zh) * 2019-05-14 2019-10-01 深圳市雄帝科技股份有限公司 文本数据处理方法、装置、计算机设备及存储介质
CN110516172A (zh) * 2019-07-31 2019-11-29 深圳市随手科技有限公司 资源调用方法、装置、计算机设备和存储介质
CN110830559A (zh) * 2019-10-24 2020-02-21 北京城市网邻信息技术有限公司 渠道包自动化批量处理方法、装置、设备及存储介质
US20200133949A1 (en) * 2018-10-26 2020-04-30 Alibaba Group Holding Limited Data processing method, apparatus, and device

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103019722A (zh) * 2012-12-14 2013-04-03 北京中电普华信息技术有限公司 一种抽取Java网络应用升级包的方法及装置
CN105740093A (zh) * 2014-11-10 2016-07-06 财团法人资讯工业策进会 备份方法、环境更新预先检测方法及其***
CN106293779A (zh) * 2015-05-11 2017-01-04 广州爱九游信息技术有限公司 一种识别应用安装包的方法及装置
CN106453448A (zh) * 2015-08-06 2017-02-22 北京奇虎科技有限公司 用于下载目标文件的方法及装置
WO2018072430A1 (zh) * 2016-10-20 2018-04-26 广州优视网络科技有限公司 安装包的扫描解析方法、装置、移动终端及机器可读存储介质
CN109343968A (zh) * 2018-08-02 2019-02-15 武汉斗鱼网络科技有限公司 一种获取数据的方法和相关装置
US20200133949A1 (en) * 2018-10-26 2020-04-30 Alibaba Group Holding Limited Data processing method, apparatus, and device
CN110298018A (zh) * 2019-05-14 2019-10-01 深圳市雄帝科技股份有限公司 文本数据处理方法、装置、计算机设备及存储介质
CN110516172A (zh) * 2019-07-31 2019-11-29 深圳市随手科技有限公司 资源调用方法、装置、计算机设备和存储介质
CN110830559A (zh) * 2019-10-24 2020-02-21 北京城市网邻信息技术有限公司 渠道包自动化批量处理方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
US11188635B2 (en) File authentication method and apparatus
CN108243188B (zh) 一种接口访问、接口调用和接口验证处理方法及装置
CN112788036B (zh) 身份验证方法及装置
CN113379420B (zh) 区块链的执行智能合约方法、计算机设备及区块链***
EP3921989A1 (en) Method and system for processing data packages
WO2020093723A1 (zh) 一种基于区块链的健康数据校验方法、设备及服务器
CN109614789B (zh) 一种终端设备的验证方法及设备
CN115884110B (zh) 短信验证码的判断方法及***
CN112232957A (zh) 交易共识方法、装置和电子设备
JP2019519849A (ja) サーバへの攻撃を防ぐ方法及びデバイス
CN111324912B (zh) 文件校验方法、***及计算机可读存储介质
CN114239072A (zh) 区块链节点管理方法及区块链网络
CN110602051B (zh) 基于共识协议的信息处理方法及相关装置
CN113835717A (zh) 一种安装包获取方法、装置、设备及存储介质
CN111371811A (zh) 一种资源调用方法、资源调用装置、客户端及业务服务器
CN115118504B (zh) 知识库更新方法、装置、电子设备及存储介质
CN107623679B (zh) 一种数据标记化处理方法、装置及存储介质
CN114567678B (zh) 一种云安全服务的资源调用方法、装置及电子设备
CN113922952B (zh) 访问请求响应方法、装置、计算机设备和存储介质
CN111786938B (zh) 防止恶意获取资源的方法、***和电子设备
CN111324914B (zh) 文件的传输方法、装置、服务器、设备和介质
CN114978646A (zh) 一种访问权限确定方法、装置、设备和存储介质
CN114866532A (zh) 端点文件安全检查结果信息上传方法、装置、设备及介质
CN110958267B (zh) 一种虚拟网络内部威胁行为的监测方法及***
CN115391795A (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