一种弹幕数据的完整性校验方法、装置、终端及存储介质与流程

文档序号:17009316发布日期:2019-03-02 02:10阅读:200来源:国知局
一种弹幕数据的完整性校验方法、装置、终端及存储介质与流程

本发明实施例涉及弹幕技术领域,尤其涉及一种弹幕数据的完整性校验方法、装置、终端及存储介质。



背景技术:

随着智能终端的快速发展,各种应用软件被开发应用于智能终端中。一些应用软件比如直播软件、视频播放软件中往往具有弹幕接收、解析和推送等弹幕功能。在开发这些应用软件的过程中,需要对服务器下发的弹幕数据进行相关测试,以确定弹幕功能是否正常运行。

目前,基于android操作系统的应用软件开发中,服务器在根据预设弹幕协议构建完成弹幕数据之后,往往直接将构建的弹幕数据下发至客户端,并且客户端在接收到弹幕数据时,也是直接对弹幕数据进行解析和分发处理。

可见,在现有的弹幕数据下发过程以及接收过程中,服务器和客户端均未对弹幕数据进行任何校验,从而当弹幕数据存在异常情况时,便会导致弹幕测试流程出现错误,甚至导致客户端出现系统崩溃等问题,严重影响了弹幕测试效率。



技术实现要素:

本发明实施例提供了一种弹幕数据的完整性校验方法、装置、终端及存储介质,以对弹幕数据进行完整性校验,从而保证弹幕数据可以被正常解析,避免导致客户端出现系统崩溃等问题。

第一方面,本发明实施例提供了一种弹幕数据的完整性校验方法,包括:

获取预设字符串结构的目标弹幕数据,其中所述目标弹幕数据包括预设分隔符和预设连接符;

调用存储所述目标弹幕数据的弹幕数据对象中的字符串转换函数,将所述目标弹幕数据转换为目标字符数组,并将所述目标字符数组中的第一个字符元素确定为当前字符元素,以及将所述第一个字符元素对应的元素位置确定为当前结束位置;

检测当前字符元素是否为所述预设分隔符;

若是,则将当前结束位置确定为当前开始位置,以及将当前字符元素对应的元素位置确定为当前结束位置,并对所述目标弹幕数据中当前开始位置与当前结束位置之间的第一字符串进行预设连接符数量的校验;

若否,或者所述第一字符串校验成功,则在当前字符元素不是所述目标字符数组中的最后一个字符元素时,更新当前字符元素为当前字符元素的下一字符元素,并返回执行所述检测当前字符元素是否为所述预设分隔符的操作;

若否,或者所述第一字符串校验成功,则在当前字符元素是所述目标字符数组中的最后一个字符元素时,确定所述目标弹幕数据校验成功。

第二方面,本发明实施例还提供了一种弹幕数据的完整性校验装置,包括:

目标弹幕数据获取模块,用于获取预设字符串结构的目标弹幕数据,其中所述目标弹幕数据包括预设分隔符和预设连接符;

目标弹幕数据转换模块,用于调用存储所述目标弹幕数据的弹幕数据对象中的字符串转换函数,将所述目标弹幕数据转换为目标字符数组,并将所述目标字符数组中的第一个字符元素确定为当前字符元素,以及将所述第一个字符元素对应的元素位置确定为当前结束位置;

当前字符元素检测模块,用于检测当前字符元素是否为所述预设分隔符;

第一字符串校验模块,用于若是,则将当前结束位置确定为当前开始位置,以及将当前字符元素对应的元素位置确定为当前结束位置,并对所述目标弹幕数据中当前开始位置与当前结束位置之间的第一字符串进行预设连接符数量的校验;

当前字符元素更新模块,用于若否,或者所述第一字符串校验成功,则在当前字符元素不是所述目标字符数组中的最后一个字符元素时,更新当前字符元素为当前字符元素的下一字符元素,并返回执行所述检测当前字符元素是否为所述预设分隔符的操作;

目标弹幕数据校验成功模块,用于若否,或者所述第一字符串校验成功,则在当前字符元素是所述目标字符数组中的最后一个字符元素时,确定所述目标弹幕数据校验成功。

第三方面,本发明实施例还提供了一种终端,所述终端包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所提供的弹幕数据的完整性校验方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的弹幕数据的完整性校验方法。

本发明实施例通过循环校验的方式,对目标弹幕数据中第一个预设分隔符之前的第一字符串,以及任意相邻的两个预设分隔符之间的第一字符串逐个进行预设连接符数量的校验,并在各个第一字符串校验成功时,确定目标弹幕数据校验成功,从而实现了对预设字符串结构的目标弹幕数据的完整性校验,进而在目标弹幕数据校验成功后,可以对目标弹幕数据进行正常解析,避免了因弹幕数据异常而导致客户端出现系统崩溃等问题,提高了弹幕测试效率。

附图说明

图1是本发明实施例一提供的一种弹幕数据的完整性校验方法的流程图;

图2是本发明实施例二提供的一种弹幕数据的完整性校验方法的流程图;

图3是本发明实施例三提供的一种弹幕数据的完整性校验方法的流程图;

图4是本发明实施例四提供的一种弹幕数据的完整性校验装置的结构示意图;

图5是本发明实施例五提供的一种终端的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的一种弹幕数据的完整性校验方法的流程图,本实施例可适用于对包含预设分隔符和预设连接符的预设字符串结构的弹幕数据进行完整性校验的情况,尤其可以用于弹幕服务器中根据预设弹幕协议生成弹幕数据后,对生成的弹幕数据进行校验的应用场景中,同时也可以用于android客户端中对弹幕服务器下发的弹幕数据进行校验的应用场景中。该方法可以由弹幕数据的完整性校验装置来执行,该装置可以由软件和/或硬件的方式来实现,可集成于弹幕服务器或者搭载了android系统的具有弹幕功能的终端中,比如智能手机、平板电脑、智能电视或者笔记本电脑等智能终端。如图1所示,该方法具体包括以下步骤:

s110、获取预设字符串结构的目标弹幕数据,其中目标弹幕数据包括预设分隔符和预设连接符。

其中,弹幕数据可以是指将弹幕参数信息按照预设弹幕协议进行封装后获得的字符串string类型的数据。预设弹幕协议可以根据实际情况和用户需求进行预先设置,用于规定弹幕数据的传输数据结构,以使弹幕服务器与客户端之间可以进行数据传输。预设弹幕协议可以规定一种或多种数据结构。预设字符串结构可以是预设弹幕协议中规定的一种数据结构。预设字符串结构与预设弹幕协议相对应。目标弹幕数据可以是指待校验的预设字符串结构的弹幕数据。预设分隔符和预设连接符均是基于预设弹幕协议规定的预设字符串结构中具有特定含义的字符或字符串。预设分隔符可以用于划分弹幕参数信息,预设连接符可以用于连接弹幕参数信息。预设分隔符和预设连接符均可以包括一个预设字符,也可以包括多个预设字符,其中,预设字符可以是预先定义的一种数字、字母或特殊符号等。示例性地,预设分隔符可以用于划分预设字符串结构中每个键值对信息,比如单斜杠“\”、“/”、双斜杠“\\”和“//”等。预设连接符可以用于连接键值对信息中的键信息和值信息,比如“-”、“@”、“,”“==”和“@=”等。

可选地,s110包括:获取待校验弹幕数据以及待校验弹幕数据对应的待校验数据标识;将待校验数据标识与预设字符串结构对应的标识集合中的数据标识进行匹配;若匹配成功,则将待校验弹幕数据确定为目标弹幕数据。

其中,待校验弹幕数据可以是将弹幕参数信息按照预设弹幕协议进行封装后获得的任一数据结构的弹幕数据。每个待校验弹幕数据均对应一个待校验数据标识。待校验数据标识用于对待校验弹幕数据进行唯一标识,以通过待校验数据标识可以确定待校验弹幕数据的数据结构。预设字符串结构对应的标识集合可以包括:数据结构为预设字符串结构的所有弹幕数据对应的数据标识。

具体地,若预设弹幕协议规定了多种数据结构,则在生成某个弹幕数据时,可以预先检测生成的弹幕数据的数据结构是否为预设字符串结构,若是,则将该弹幕数据对应的数据标识添加至预设字符串结构对应的标识集合中,从而将生成的数据结构为预设字符串结构的弹幕数据对应的数据标识均添加至该标识集合中,以便进行后续的校验操作。在获取待校验弹幕数据对应的待校验数据标识后,可以将待校验数据标识与预设字符串结构对应的标识集合中的数据标识进行逐一匹配,若待校验数据标识与标识集合中的任一数据标识匹配成功,则表明该待校验弹幕数据的数据结构为预设字符串结构,此时可以将该待校验弹幕数据确定为目标弹幕数据,以便对目标弹幕数据进行完整性校验。若待校验数据标识与标识集合中的每个数据标识均匹配失败,则表明该待校验弹幕数据的数据结构不是预设字符串结构,此时可以对下一待校验弹幕数据进行标识匹配,直至获取预设字符串结构的目标弹幕数据。

s120、调用存储目标弹幕数据的弹幕数据对象中的字符串转换函数,将目标弹幕数据转换为目标字符数组,并将目标字符数组中的第一个字符元素确定为当前字符元素,以及将第一个字符元素对应的元素位置确定为当前结束位置。

其中,弹幕数据对象是一个用于存储目标弹幕数据的对象。本实施例中的目标弹幕数据是一个string类型的数据,从而弹幕数据对象为一个string对象。字符串转换函数是预先定义的,用于将目标弹幕数据转换为一个字符数组的函数。目标字符数组中的字符元素顺序与目标弹幕数据中的字符顺序保持一致。示例性地,若将弹幕数据对象标记为danmustr,则danmustr中的字符串转换函数可以为:danmustr.tochararray(),从而可以将danmustr中存储的目标弹幕数据转换为目标字符数组。当前字符元素是指当前时刻目标字符数组中的一个字符元素。当前结束位置是指当前时刻对应的结束位置。

具体地,假设弹幕数据对象danmustr中存储的目标弹幕数据为:abcd,通过调用danmustrchar=danmustr.tochararray(),则将danmustr的每一个下标位的对象保存在目标字符数组danmustrchar中,即danmustrchar为:{‘a’,‘b’,‘c’,‘d’}。本实施例可以对第一字符数组中的字符元素进行循环遍历,以提升计算速度。在第一次循环周期内,将目标字符数组中的第一个字符元素作为当前字符元素,将目标字符数组中第一个字符元素对应的元素位置作为当前结束位置,此时的当前结束位置为danmustrchar[0]对应的位置。

s130、检测当前字符元素是否为预设分隔符,若是,则进入步骤s140,若否,则进入步骤s150。

具体地,通过检测当前字符元素是否为预设分隔符,来确定目标弹幕数据中每个预设分隔符的位置,以便获得目标弹幕数据中第一个预设分隔符之前的弹幕数据以及每两个相邻的预设分隔符之间的弹幕数据。

s140、将当前结束位置确定为当前开始位置,以及将当前字符元素对应的元素位置确定为当前结束位置,并对目标弹幕数据中当前开始位置与当前结束位置之间的第一字符串进行预设连接符数量的校验,在第一字符串校验成功时,进入步骤s150。

其中,当前开始位置和当前结束位置是指当前时刻目标弹幕数据中的两个提取点位置,以提取目标弹幕数据中第一个预设分隔符之前的弹幕数据(即第一字符串)或者相邻的两个预设分隔符之间的弹幕数据(即第一字符串)。

具体地,在当前字符元素是预设分隔符时,将当前结束位置作为当前开始位置,以更新当前开始位置,然后将当前字符元素对应的元素位置作为当前结束位置,以更新当前结束位置。根据更新后的当前开始位置和当前结束位置,提取目标弹幕数据中当前开始位置和当前结束位置之间的第一字符串。示例性地,在第一个循环周期内,更新后的当前开始位置为目标字符数组中第一个字符元素,更新后的当前结束位置为目标字符数组中第一个预设分隔符对应的元素位置,从而提取的第一字符串为目标弹幕数据中第一个预设分隔符之前的弹幕数据。在第二个个循环周期内,更新后的当前开始位置为目标字符数组中第一个预设分隔符对应的元素位置,更新后的当前结束位置为目标字符数组中第二个预设分隔符对应的元素位置,从而提取的第一字符串为目标弹幕数据中第一个预设分隔符与第二个预设分隔符之间的弹幕数据;同理,在后续的循环周期内,提取的第一字符串均为目标弹幕数据中相邻两个预设分隔符之间的弹幕数据。

本实施例在获得第一字符串后,需要对第一字符串中的预设连接符数量进行校验,以检测第一字符串是否符合预设弹幕协议的规定。若第一字符串校验成功,则表明目标弹幕数据中的第一字符串是一条完整准确的数据,此时可以进行后续地校验操作。若第一字符串校验失败,则表明该第一字符串是一条不完整数据,也就是说目标弹幕数据是一条非法数据,此时可以直接确定目标弹幕数据校验失败,从而可以快速地确定出预设连接符数量不符合规定的目标弹幕数据,提高弹幕校验效率。

s150、检测当前字符元素是否为目标字符数组中的最后一个字符元素,若否,则进入步骤s160,若是,则进入步骤s170。

具体地,通过检测当前字符元素是否为目标字符数组中的最后一个字符元素,来确定循环遍历是否结束。示例性地,当前字符元素danmustrchar[index]中数组索引号index的取值范围为:0≤index≤danmustrchar.length-1,其中danmustrchar.length表示目标字符数组的长度。

s160、更新当前字符元素为当前字符元素的下一字符元素,并进入步骤s130。

具体地,在当前字符元素不是目标字符数组中的最后一个字符元素时,表明循环遍历还未结束,此时基于目标字符数组中的元素顺序,将当前字符元素的下一个字符元素更新为当前字符元素,通过返回步骤s130,以检测下一个字符元素是否为预设分隔符。

s170、确定目标弹幕数据校验成功。

具体地,在当前字符元素是目标字符数组中的最后一个字符元素时,表明循环遍历结束,并且目标弹幕数据中的每个第一字符串均校验成功,也就是说,目标弹幕数据是一条完整准确的数据,此时可以确定目标弹幕数据校验成功。

需要注意的是,本实施例可以将步骤s120-s170所提供的功能进行封装为一个弹幕校验函数,从而只需将弹幕数据对象作为弹幕校验函数的输入对象,通过调用弹幕校验函数,即可实现目标弹幕数据的校验过程,使得弹幕校验更加便捷。示例性地,弹幕校验函数可以定义为:publisstaticbooleancheckdanminfo(stringdanmustr)。其中,checkdanminfo是弹幕校验函数的函数名称,danmustr是字符串string类型的弹幕数据对象,弹幕校验函数checkdanminfo的返回值是一个布尔boolean类型的对象。若目标弹幕数据校验成功,则弹幕校验函数checkdanminfo可以通过调用returntrue返回true,若目标弹幕数据校验失败,则弹幕校验函数checkdanminfo可以调用returnfalse返回false。弹幕校验函数checkdanminfo具有公有权限修饰符public和静态类型修饰符static,以便可以直接通过类调用checkdanminfo,提高了弹幕校验函数调用的便捷性。

可选地,在弹幕服务器向android客户端下发目标弹幕数据之前,可以利用本实施例所提供的弹幕数据的完整性校验方法进行校验,并在目标弹幕数据校验成功后,再进行目标弹幕数据的下发操作,以保证弹幕服务器下发的目标弹幕数据为准确完整的数据。android客户端接收下发的目标弹幕数据后,可以利用本实施例所提供的弹幕数据的完整性校验方法进行再次校验,并在目标弹幕数据校验成功后,再对目标弹幕数据进行解析处理,从而可以避免因弹幕数据异常而导致客户端出现系统崩溃等问题,提高了弹幕测试效率。

本发明实施例通过循环校验的方式,对目标弹幕数据中第一个预设分隔符之前的第一字符串,以及任意相邻的两个预设分隔符之间的第一字符串逐个进行预设连接符数量的校验,并在各个第一字符串校验成功时,确定目标弹幕数据校验成功,从而实现了对预设字符串结构的目标弹幕数据的完整性校验,进而在目标弹幕数据校验成功后,可以对目标弹幕数据进行正常解析,避免了因弹幕数据异常而导致客户端出现系统崩溃等问题,提高了弹幕测试效率。

实施例二

图2为本发明实施例二提供的一种弹幕数据的完整性校验方法的流程图,本实施例在上述实施例的基础上,“对目标弹幕数据中当前开始位置与当前结束位置之间的第一字符串进行预设连接符数量的校验”进行了优化。其中与上述实施例相同或相应的术语的解释在此不再赘述。

参见图2,本实施例提供的弹幕数据的完整性校验方法包括以下步骤:

s210、获取预设字符串结构的目标弹幕数据。

其中,预设字符串结构为:以预设开始符作为首位字符,以预设分隔符划分各键值对信息,以预设连接符连接键值对信息中的键信息和值信息,以预设结束符作为末位字符,其中,值信息不包含与预设分隔符相同的分隔字符串;当值信息包含至少一个与预设连接符相同的连接字符串时,连接字符串的前一字符为预设标识符。

在本实施例中,准确完整的目标弹幕数据中的首位字符为预设开始符,末位字符为预设结束符,并且弹幕参数信息以键值对的形式存在,即首位字符与末位字符之间包括多个键值对信息。示例性地,预设开始符可以是但不限于为左花括号“{”、左圆括号“(”或左中括号“[”。为了增加与字符串本体内容之间的区分度,优选为左花括号“{”。预设结束符可以是但不限于右花括号“}”、右圆括号“)”或右中括号“]”,优选为右花括号“}”。预设字符串结构中的预设分隔符用于划分弹幕数据中的每个键值对信息,预设连接符用于连接键值对信息中的键信息和值信息。目标弹幕数据中最后一个键值对信息中的值信息与预设结束符也可以利用预设分隔符进行划分,以便区分值所包含的内容。本实施例中的预设字符串结构的规定方式可以更加便于数据传输。

需要注意的是,键值对信息可以包含英文字符、中文字符和/或某些特殊字符。根据预设弹幕协议的规定,每个键值对信息中的值信息和键信息均不会包含与预设分隔符相同的分隔字符串,而每个键值对信息中的值信息可以不包含与预设连接符相同的连接字符串,也可以包含与预设连接符相同的连接字符串,并且在值信息包含至少一个与预设连接符相同的连接字符串时,每个连接字符串的前一字符均为预设标识符。本实施例中的预设标识符用于标识值信息中连接字符串的一个特殊字符,并且预设标识符位于连接字符串的前一位置。示例性地,预设标识符可以是但不限于美元符号“$”或人民币符号“¥”。每个值信息中的连接字符串数量与预设标识符数量相等。

示例性地,若以“{”为预设开始符,以“}”为预设结束符,以“/”为预设分隔符,以“@=”为预设连接符,以“$”为预设标识符,则预设字符串结构的目标弹幕数据可以为:{type@=uenter/rid@=104838/uid@=20080138/wgei@=0/},其中包括四个键值对信息,第一键值对信息中的键信息为“type”,对应的值信息为“uenter”;第二键值对信息中的键信息为“rid”,对应的值信息为“104838”;第三键值对信息中的键信息为“uid”,对应的值信息为“20080138”;第四键值对信息中的键信息为“wgei”,对应的值信息为“0”,可见,每个键值对信息中均不包含与预设连接符相同的连接字符串。预设字符串结构的目标弹幕数据也可以为:{type@=uenter/rid@=104838/uid@=20088/avater@=www@douyu$@=tv@com/},其中第四个键值对信息中的键信息为“avater”,对应的值信息为“www@douyu$@=tv@com”,该值信息包含一个与预设连接符相同的连接字符串“@=”和一个预设标识符“$”。

s220、调用存储目标弹幕数据的弹幕数据对象中的字符串转换函数,将目标弹幕数据转换为目标字符数组,并将目标字符数组中的第一个字符元素确定为当前字符元素,以及将第一个字符元素对应的元素位置确定为当前结束位置。

s230、检测当前字符元素是否为预设分隔符,若是,则进入步骤s240,若否,则进入步骤s270。

s240、将当前结束位置确定为当前开始位置,以及将当前字符元素对应的元素位置确定为当前结束位置,并调用弹幕数据对象中的第一字符串提取函数,提取目标弹幕数据中当前开始位置与当前结束位置之间的第一字符串。

其中,第一字符串提取函数是弹幕数据对象中预先定义的,用于提取目标弹幕数据中当前开始位置与当前结束位置之间的第一字符串的函数。示例性地,第一字符串提取函数可以是danmustr.substring(startpos,endpos),表示提取的字符串中的第一个字符的位置为startpos,最后一个字符的位置为endpos-1。

具体地,本实施例提取的是目标弹幕数据中当前开始位置startpos与当前结束位置endpos之间的第一字符串,从而第一字符串提取函数中的提取范围应为(startpos+1,endpos),使得提取的第一字符串中不包含当前开始位置以及当前结束位置对应的字符。

示例性地,若目标弹幕数据danmustr为:{type@=uenter/rid@=104838/uid@=20080138/wgei@=0/},在第一次循环周期内,更新后的当前开始位置对应的索引号为0,当前结束位置对应的索引号为13,则通过调用danmustr1=danmustr.substring(1,13),提取的第一字符串danmustr1为目标弹幕数据中的第一个键值对信息“type@=uenter”。

s250、以单个字符为校验步长,将第一字符串中每预设个数的相邻的字符分别确定为第二字符串,并根据各第二字符串确定第一字符串中的预设连接符数量。

其中,预设个数是指第一字符串中相邻的字符数量,也就是第二字符串中的字符数量。预设个数根据预设连接符及预设标识符包含的预设字符的总数确定。示例性地,若预设字符串结构中预设连接符包含x个预设字符,预设标识符包含y个预设字符,则预设个数为x+y。

具体地,基于第一字符串中的字符顺序,以单个字符为校验步长,提取第一字符串中相邻的预设个数的字符,并将提取的字符基于第一字符串的字符顺序组成一个字符串(即第二字符串)。同理,可以获得第一字符串对应的所有的第二字符串。示例性地,若第一字符串为:abcd,预设个数为2,则该第一字符串对应的三个第二字符串,分别为:ab、bc和cd。本实施例可以根据每个第二字符串中的预设连接符数量来确定第一字符串中的预设连接符数量。示例性地,将每个第二字符串与预设连接符和预设标识符进行匹配,若某个第二字符串中包含预设连接符,并且在预设连接符的前面是预设标识符,则表明该第二字符串中的预设连接符不是真正的预设连接符,而是值信息中与预设连接符相同的连接字符串;若第二字符串中的预设连接符的前面不是预设标识符,则表明该第二字符串中的预设连接符是用于连接键信息和值信息真正的预设连接符,此时可以确定该第二字符串中的预设连接符数量为1。

s260、若预设连接符数量满足预设校验条件,则确定第一字符串校验成功,并进入步骤s270。

其中,通过对完整准确的第一字符串分析可得:无论值信息中是否存在与预设连接符相同的连接字符串,第一字符串应仅存在一个用于连接键信息和值信息的预设连接符。也就是说,本实施例中的预设校验条件可以为:第一字符串中的预设连接符数量为1。

具体地,若第一字符串中的预设连接符数量满足预设检验条件,则表明第一字符串中的预设连接符符合规定,此时可以确定第一字符串校验成功。若预设连接符数量不满足预设检验条件,则表明目标弹幕数据中的第一字符串是一条非法数据,此时可以直接确定目标弹幕数据校验失败。

s270、检测当前字符元素是否为目标字符数组中的最后一个字符元素,若否,则进入步骤s280,若是,则进入步骤s290。

s280、更新当前字符元素为当前字符元素的下一字符元素,并进入步骤s230。

s290、确定目标弹幕数据校验成功。

本实施例的技术方案,通过调用弹幕数据对象中的第一字符串提取函数,提取目标弹幕数据中当前开始位置与当前结束位置之间的第一字符串;并以单个字符为校验步长,将第一字符串中每预设个数的相邻的字符分别确定为第二字符串,根据各第二字符串确定第一字符串中的预设连接符数量,并在预设连接符数量满足预设校验条件时,确定第一字符串校验成功。本实施例中的第一字符串无论是否包含与预设连接符相同的连接字符串,均可以利用该校验方法对第一字符串进行预设连接符数量的校验,进而增加了校验适用范围,并使得弹幕校验更加便捷,提高了校验效率。

在上述技术方案的基础上,在预设标识符包括第一预设字符,以及预设连接符包括第二预设字符和第三预设字符时,则s250可以包括:将第一字符串中的第一个字符确定为当前字符;基于第一字符串中的字符顺序,将当前字符、以及与当前字符相邻的后两个字符确定为当前第二字符串;若当前第二字符串中的第一个字符不是第一预设字符,且当前第二字符串中的第二个字符和第三个字符分别是第二预设字符和第三预设字符,则预设的连接符变量进行自加操作;检测当前字符是否为第一字符串中的倒数第三个字符;若是,则将连接符变量的变量值确定为第一字符串中的预设连接符数量;若否,则更新当前字符为当前字符的下一字符,并返回执行基于第一字符串中的字符顺序,将当前字符、以及与当前字符相邻的后两个字符确定为当前第二字符串的操作。

其中,当预设标识符包括一个预设字符,预设连接符包括两个预设字符时,基于第一字符串中的字符顺序,将第一字符串中任意相邻的三个字符确定为一个第二字符串,从而可以获取所有的第二字符串。连接符变量用于存储第一字符串中的预设连接符数量。连接符变量可以定义为:privateintcount=0。其中,count是连接符变量的名称,连接符变量count是一个初始值为0的整型变量。连接符变量count具有私有权限修饰符private,以保证只有连接符变量所属的类及其实例化对象才可以进行调用。

具体地,本实施例可以利用循环遍历的方式确定每个第二字符串中的预设连接符数量,从而可以快速地确定第一字符串中的预设连接符数量。在每次循环周期内,若当前第二字符串中的第一个字符不是第一预设字符,并且当前第二字符串中的第二个字符和第三个字符分别是第二预设字符和第三预设字符,则表明当前第二字符串包含一个真正的预设连接符,此时可以将连接符变量的变量值累加1,否则表明当前第二字符串中并不包含真正的预设连接符。然后检测当前字符是否为第一字符串中的倒数第三个字符,若是,则表明循环遍历结束,此时连接符变量存储的是最终的预设连接符的数量信息,从而可以将连接符变量的变量值确定为第一字符串中的预设连接符数量;若否,则表明循环遍历还未结束,则将当前字符的下一字符作为当前字符,以更新当前字符,从而利用更新后的当前字符进行下次循环周期,确定下一个第二字符串中的预设连接符数量。

实施例三

图3为本发明实施例三提供的一种弹幕数据的完整性校验方法的流程图,本实施例在上述实施例的基础上进行优化:“在预设连接符数量满足预设校验条件之后,还包括:获取第一字符串中预设连接符的目标连接位置;调用存储第一字符串的字符串对象中的第二字符串提取函数,根据目标连接位置,提取第一字符串中的目标值信息;若检测目标值信息不为空数据,则确定第一字符串校验成功。”。其中与上述各实施例相同或相应的术语的解释在此不再赘述。

参见图3,本实施例提供的弹幕数据的完整性校验方法包括以下步骤:

s310、获取预设字符串结构的目标弹幕数据。

s320、调用存储目标弹幕数据的弹幕数据对象中的字符串转换函数,将目标弹幕数据转换为目标字符数组,并将目标字符数组中的第一个字符元素确定为当前字符元素,以及将第一个字符元素对应的元素位置确定为当前结束位置。

s330、检测当前字符元素是否为预设分隔符,若是,则进入步骤s340,若否,则进入步骤s390。

s340、将当前结束位置确定为当前开始位置,以及将当前字符元素对应的元素位置确定为当前结束位置,并调用弹幕数据对象中的第一字符串提取函数,提取目标弹幕数据中当前开始位置与当前结束位置之间的第一字符串。

s350、以单个字符为校验步长,将第一字符串中每预设个数的相邻的字符分别确定为第二字符串,并根据各第二字符串确定第一字符串中的预设连接符数量。

s360、若预设连接符数量满足预设校验条件,获取第一字符串中预设连接符的目标连接位置。

具体地,当预设连接符数量满足预设校验条件时,表明第一字符串中仅包含一个预设连接符。本实施例可以在确定预设连接符数量后,单独确定第一字符串中预设连接符的目标连接位置,也可以在确定第一字符串中的预设连接符数量时,同时确定预设连接符在第一字符串中的目标连接位置,以提高计算效率。

示例性地,若第一字符串danmustr1为:avater@=www@douyu$@=tv@com,以“@=”为预设连接符,以“$”为预设标识符,则将第一字符串danmustr1中每相邻的三个字符确定为一个第二字符串,可见,只有一个第二字符串“r@=”中的第一个字符不是$,第二个字符和第三个字符分别为@和=,从而可以确定第一字符串中只包含一个预设连接符,并且该预设连接符在第一字符串中的目标连接位置对应的索引号为:6和7。

s370、调用存储第一字符串的字符串对象中的第二字符串提取函数,根据目标连接位置,提取第一字符串中的目标值信息。

其中,字符串对象是一个用于存储第一字符串的string对象。第二字符串提取函数是字符串对象中预先定义的,用于提取第一字符串中的目标值信息的函数。示例性地,字符串对象danmustr1中第二字符串提取函数可以是danmustr1.substring(startpos,endpos)。

具体地,本实施例可以通过调用字符串对象danmustr1中的长度确定函数m=danmustr1.length(),确定字符串对象存储的第一字符串的长度m。若预设连接符只包括一个预设字符,即目标连接位置pos1仅是一个预设字符的位置时,则第二字符串提取函数中的提取范围应为(pos1+1,m),从而可以提取第一字符串中预设连接符之后的字符串,并将提取的字符串作为目标值信息。若预设连接符包括两个或两个以上的预设字符,则根据预设连接符对应的目标连接位置,确定预设连接符中最后一个预设字符对应的目标字符位置,并根据该目标字符位置和第一字符串的长度,确定第一字符串中的目标值信息。示例性地,若第一字符串danmustr1为:avater@=www@douyu$@=tv@com,以“@=”为预设连接符,则预设连接符在第一字符串中的目标连接位置对应的索引号为:6和7,即预设连接符中的最后一个预设字符“=”对应的目标字符位置的索引号为7,第一字符串对应的字符串长度为26,此时可以通过调用字符串对象danmustr1中的danmustr3=danmustr1.substring(8,26),提取的目标值信息danmustr3为:“www@douyu$@=tv@com”。

s380、若目标值信息不为空数据,则确定第一字符串校验成功,并进入步骤s390。

其中,对于完整准确的第一字符串而言,第一字符串应该是一个完整的键值对信息,即第一字符串中的目标值信息一定不是空数据。

具体地,检测目标值信息是否为空数据,若否,则表明第一字符串是一个完整的键值对信息,此时可以确定第一字符串校验成功,并进行后续的校验操作;若是,则表明第一字符串中缺失值信息,也就是说目标弹幕数据是一条不完整的数据,此时可以直接确定目标弹幕数据校验失败,从而提高了目标弹幕数据校验的严格性,使得目标弹幕数据更具完整性,同时也可以快速校验出缺失值信息的弹幕数据,提高校验效率。

s390、检测当前字符元素是否为目标字符数组中的最后一个字符元素,若否,则进入步骤s391,若是,则进入步骤s392。

s391、更新当前字符元素为当前字符元素的下一字符元素,并进入步骤s330。

s391、确定目标弹幕数据校验成功。

本发明实施例的技术方案,在第一字符串中的预设连接符数量满足预设校验条件之后,通过调用存储第一字符串的字符串对象中的第二字符串提取函数,根据目标连接位置提取第一字符串中的目标值信息,并通过检测目标值信息是否为空数据来保证每个第一字符串均包含一个非空的值信息,并且在目标值信息为空数据时,可以直接确定目标弹幕数据校验失败,从而提高了目标弹幕数据校验的严格性,使得目标弹幕数据更具完整性,并且也可以快速校验出缺失值信息的弹幕数据,提高校验效率。

在上述技术方案的基础上,在s320之前,还包括:调用弹幕数据对象中的第一字符验证函数,检测目标弹幕数据中的首位字符是否为预设开始符;若首位字符为预设开始符,则调用弹幕数据对象中的第二字符验证函数,检测目标弹幕数据中的末位字符是否为预设结束符;相应地,s320包括:若末位字符为预设结束符,则调用存储目标弹幕数据的弹幕数据对象中的字符串转换函数。

其中,第一字符验证函数是预先定义的,用于对目标弹幕数据中的首位字符进行校验的函数。第二字符验证函数是预先定义的,用于对目标弹幕数据中的末位字符进行校验的函数。示例性地,将弹幕数据对象标记为danmustr,若预设开始符为“{”,预设结束符为“}”,则调用第一字符验证函数可以是danmustr.startwith(“{”),以检测弹幕数据对象danmustr中的目标弹幕数据中的首位字符是否为“{”;第二字符验证函数可以为danmustr.endwith(“}”),以检测弹幕数据对象danmustr中的目标弹幕数据中的末位字符是否为“}”。

具体地,当调用第一字符验证函数后,若检测目标弹幕数据中的首位字符不是预设开始符,则表明首位字符验证失败,也就是目标弹幕数据是一条不完整的数据,即不合格数据,此时可以直接确定目标弹幕数据校验失败。若检测目标弹幕数据中的首位字符是预设开始符,则表明首位字符验证成功,此时可以调用第二字符验证函数,检测目标弹幕数据中的末位字符是否为预设结束符,若否,则表明目标弹幕数据是一条不完整的数据,此时可以直接确定目标弹幕数据校验失败;若是,则表明末位字符验证成功,即目标弹幕数据中的首位字符和末位字符均是合法的,此时可以调用存储目标弹幕数据的弹幕数据对象中的字符串转换函数,以便继续执行后续校验操作。

本实施例在调用存储目标弹幕数据的弹幕数据对象中的字符串转换函数之前,可以通过调用弹幕数据对象中的第一字符验证函数和第二字符验证函数,分别对目标弹幕数据中的首位字符和末位字符进行字符验证,在首位字符验证失败或者末位字符验证失败时,可以直接确定目标弹幕数据校验失败;在首位字符和末位字符均验证成功后,再进行后续地校验操作,从而提高了目标弹幕数据校验的严格性,使得目标弹幕数据更具完整性。

实施例四

图4为本发明实施例四提供的一种弹幕数据的完整性校验装置的结构示意图,本实施例可适用于对包含预设分隔符和预设连接符的预设字符串结构的弹幕数据进行完整性校验的情况,该装置具体可以包括:目标弹幕数据获取模块410、目标弹幕数据转换模块420、当前字符元素检测模块430、第一字符串校验模块440、当前字符元素更新模块450和目标弹幕数据校验成功模块460。

其中,目标弹幕数据获取模块410,用于获取预设字符串结构的目标弹幕数据,其中目标弹幕数据包括预设分隔符和预设连接符;目标弹幕数据转换模块420,用于调用存储目标弹幕数据的弹幕数据对象中的字符串转换函数,将目标弹幕数据转换为目标字符数组,并将目标字符数组中的第一个字符元素确定为当前字符元素,以及将第一个字符元素对应的元素位置确定为当前结束位置;当前字符元素检测模块430,用于检测当前字符元素是否为预设分隔符;第一字符串校验模块440,用于若是,则将当前结束位置确定为当前开始位置,以及将当前字符元素对应的元素位置确定为当前结束位置,并对目标弹幕数据中当前开始位置与当前结束位置之间的第一字符串进行预设连接符数量的校验;当前字符元素更新模块450,用于若否,或者第一字符串校验成功,则在当前字符元素不是目标字符数组中的最后一个字符元素时,更新当前字符元素为当前字符元素的下一字符元素,并返回执行检测当前字符元素是否为预设分隔符的操作;目标弹幕数据校验成功模块460,用于若否,或者第一字符串校验成功,则在当前字符元素是目标字符数组中的最后一个字符元素时,确定目标弹幕数据校验成功。

可选地,预设字符串结构为:以预设开始符作为首位字符,以预设分隔符划分各键值对信息,以预设连接符连接键值对信息中的键信息和值信息,以预设结束符作为末位字符,其中,值信息不包含与预设分隔符相同的分隔字符串;当值信息包含至少一个与预设连接符相同的连接字符串时,连接字符串的前一字符为预设标识符。

可选地,第一字符串校验模块440,包括:

第一字符串提取单元,用于调用弹幕数据对象中的第一字符串提取函数,提取目标弹幕数据中当前开始位置与当前结束位置之间的第一字符串;

预设连接符数量确定单元,用于以单个字符为校验步长,将第一字符串中每预设个数的相邻的字符分别确定为第二字符串,并根据各第二字符串确定第一字符串中的预设连接符数量,其中,预设个数根据预设连接符及预设标识符包含的预设字符的总数确定;

预设连接符数量校验单元,用于若预设连接符数量满足预设校验条件,则确定第一字符串校验成功。

可选地,预设标识符包括第一预设字符;预设连接符包括第二预设字符和第三预设字符;相应地,预设连接符数量确定单元,具体用于:将第一字符串中的第一个字符确定为当前字符;基于第一字符串中的字符顺序,将当前字符、以及与当前字符相邻的后两个字符确定为当前第二字符串;若当前第二字符串中的第一个字符不是第一预设字符,且当前第二字符串中的第二个字符和第三个字符分别是第二预设字符和第三预设字符,则预设的连接符变量进行自加操作;检测当前字符是否为第一字符串中的倒数第三个字符;若是,则将连接符变量的变量值确定为第一字符串中的预设连接符数量;若否,则更新当前字符为当前字符的下一字符,并返回执行基于第一字符串中的字符顺序,将当前字符、以及与当前字符相邻的后两个字符确定为当前第二字符串的操作。

可选地,该装置还包括:

目标连接位置获取模块,用于在预设连接符数量满足预设校验条件之后,获取第一字符串中预设连接符的目标连接位置;

目标值信息提取模块,用于调用存储第一字符串的字符串对象中的第二字符串提取函数,根据目标连接位置,提取第一字符串中的目标值信息;

目标值信息检测模块,用于若目标值信息不为空数据,则确定第一字符串校验成功。

可选地,该装置还包括:

首位字符校验模块,用于在调用存储目标弹幕数据的弹幕数据对象中的字符串转换函数之前,调用弹幕数据对象中的第一字符验证函数,检测目标弹幕数据中的首位字符是否为预设开始符;

末位字符校验模块,用于若首位字符为预设开始符,则调用弹幕数据对象中的第二字符验证函数,检测目标弹幕数据中的末位字符是否为预设结束符;

相应地,目标弹幕数据转换模块420还用于:若末位字符为预设结束符,则调用存储目标弹幕数据的弹幕数据对象中的字符串转换函数。

可选地,目标弹幕数据获取模块410,具体用于:获取待校验弹幕数据以及待校验弹幕数据对应的待校验数据标识;将待校验数据标识与预设字符串结构对应的标识集合中的数据标识进行匹配;若匹配成功,则将待校验弹幕数据确定为目标弹幕数据。

本发明实施例所提供的弹幕数据的完整性校验装置可执行本发明任意实施例所提供的弹幕数据的完整性校验方法,具备执行弹幕数据的完整性校验方法相应的功能模块和有益效果。

实施例五

图5是本发明实施例五提供的一种终端的结构示意图。参见图5,该终端包括:

一个或多个处理器510;

存储器520,用于存储一个或多个程序;

当一个或多个程序被一个或多个处理器510执行,使得一个或多个处理器510实现如上述实施例中任一实施例提出的弹幕数据的完整性校验方法。

图5中以一个处理器510为例;终端中的处理器510和存储器520可以通过总线或其他方式连接,图5中以通过总线连接为例。

存储器520作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的弹幕数据的完整性校验方法对应的程序指令/模块(例如,弹幕数据的完整性校验装置中的目标弹幕数据获取模块410、目标弹幕数据转换模块420、当前字符元素检测模块430、第一字符串校验模块440、当前字符元素更新模块450和目标弹幕数据校验成功模块460)。处理器510通过运行存储在存储器520中的软件程序、指令以及模块,从而执行终端的各种功能应用以及数据处理,即实现上述的弹幕数据的完整性校验方法。

存储器520主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器520可进一步包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

本实施例提出的终端与上述实施例提出的弹幕数据的完整性校验方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例具备执行弹幕数据的完整性校验方法相同的有益效果。

实施例六

本实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的弹幕数据的完整性校验方法。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的弹幕数据的完整性校验方法。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1