基于不同方式的弹幕校验方法、装置、终端及存储介质与流程

文档序号:17009335发布日期:2019-03-02 02:10阅读:202来源:国知局
基于不同方式的弹幕校验方法、装置、终端及存储介质与流程

本发明实施例涉及弹幕技术领域,尤其涉及一种基于不同方式的弹幕校验方法、装置、终端及存储介质。



背景技术:

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

目前,基于android操作系统的应用软件开发中,服务器在根据预设弹幕协议构建完成弹幕数据后,或者客户端在接收到弹幕数据后,需要对弹幕数据进行校验,以保证弹幕数据可以被正常解析,避免导致客户端出现系统崩溃等问题。

现有技术中,在存在多种数据校验方式,且需根据不同情况利用不同的校验方式对数据进行校验时,可以设置一个整型int类型的type参数,通过对type参数赋值的方式来选择不同的校验方式,比如,当type=1时表示利用校验方式1进行数据校验,当type=2时表示利用校验方式2进行数据校验,依次类推。

若针对弹幕数据的校验也存在多种弹幕校验方式时,直接将现有技术中的校验方式选择手段应用于弹幕校验中,则需要在弹幕校验函数的输入参数中增加一个type参数,并且将所有的弹幕校验方式均添加至弹幕校验函数内部。可见,这种弹幕校验方式的选择手段会使得弹幕校验函数的逻辑功能非常复杂,进而导致弹幕校验函数的可维护度也非常低下,并且对任一弹幕校验方式的修改都需要调整弹幕校验函数的业务功能,不便于进行扩展和维护等处理。



技术实现要素:

本发明实施例提供了一种基于不同方式的弹幕校验方法、装置、终端及存储介质,以利用不同的校验方式中的目标校验方式对弹幕数据进行完整性校验,并且可以有效地解耦现有校验方式选择手段中的检测逻辑,大大提高了代码的可扩展性和可维护性。

第一方面,本发明实施例提供了一种基于不同方式的弹幕校验方法,包括:

获取目标弹幕数据,以及与所述目标弹幕数据对应的目标校验标识;

根据所述目标校验标识,在各校验类中确定目标校验类,其中,所述校验类与弹幕校验方式一一对应,且每个所述校验类预先继承校验接口协议;

根据所述目标校验类,对预设的校验协议对象进行初始化,其中,所述校验协议对象为所述校验接口协议的类型的对象;

以所述目标弹幕数据为函数输入参数,调用初始化后的校验协议对象中的弹幕校验函数,利用所述目标校验类对应的目标弹幕校验方式对所述目标弹幕数据进行校验。

第二方面,本发明实施例还提供了一种基于不同方式的弹幕校验装置,包括:

目标弹幕信息获取模块,用于获取目标弹幕数据,以及与所述目标弹幕数据对应的目标校验标识;

目标校验类确定模块,用于根据所述目标校验标识,在各校验类中确定目标校验类,其中,所述校验类与弹幕校验方式一一对应,且每个所述校验类预先继承校验接口协议;

校验协议对象初始化模块,用于根据所述目标校验类,对预设的校验协议对象进行初始化,其中,所述校验协议对象为所述校验接口协议的类型的对象;

目标弹幕数据校验模块,用于以所述目标弹幕数据为函数输入参数,调用初始化后的校验协议对象中的弹幕校验函数,利用所述目标校验类对应的目标弹幕校验方式对所述目标弹幕数据进行校验。

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

一个或多个处理器;

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

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所提供的基于不同方式的弹幕校验方法。

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

本发明实施例通过根据与目标弹幕数据对应的目标校验标识,在各校验类中确定目标校验类,并根据目标校验类,对预设的校验协议对象进行初始化;以目标弹幕数据为函数输入参数,调用初始化后的校验协议对象中的弹幕校验函数,从而利用目标校验类对应的目标弹幕校验方式对目标弹幕数据进行完整性校验。通过预先将每个校验类继承统一的校验接口协议,并且不同的弹幕校验方式分布至不同的校验类中,使得每个校验类中的弹幕校验函数仅实现对应的弹幕校验方式的校验功能,从而简化了弹幕校验函数的逻辑功能,并且通过确定目标校验类的方式来选择目标弹幕校验方式,可以有效地解耦现有校验方式选择手段中的检测逻辑,大大提高了代码的可扩展性和可维护性。

附图说明

图1是本发明实施例一提供的一种基于不同方式的弹幕校验方法的流程图;

图2是本发明实施例二提供的一种基于不同方式的弹幕校验方法的流程图;

图3是本发明实施例三提供的一种基于不同方式的弹幕校验方法的流程图;

图4是本发明实施例四提供的一种基于不同方式的弹幕校验装置的结构示意图;

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

具体实施方式

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

实施例一

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

s110、获取目标弹幕数据,以及与目标弹幕数据对应的目标校验标识。

其中,弹幕数据可以是指将弹幕参数信息按照预设弹幕协议进行封装后获得的字符串string类型的数据。预设弹幕协议可以根据实际情况和用户需求进行预先设置,用于规定弹幕数据的传输数据结构,以使弹幕服务器与客户端之间可以进行数据传输。预设弹幕协议可以规定一种或多种弹幕数据的数据结构。目标弹幕数据可以是将弹幕参数信息基于预设弹幕协议规定的一种数据结构(称为目标数据结构)进行封装后获得的待校验弹幕数据。校验标识可以是但不限于数据结构标识、校验类标识或者校验方式标识,分别用于区分不同的数据结构、不同的校验类或者不同的弹幕校验方式,以便根据校验标识对弹幕数据进行针对性地校验。目标校验标识是目标弹幕数据对应的校验标识。目标校验标识可以根据目标弹幕数据对应的目标数据结构和用户需求预先进行设置。弹幕校验方式是指对弹幕数据进行完整性校验的方式。在本实施例中,不同数据结构的弹幕数据可以利用不同的弹幕校验方式进行校验,而同一种数据结构的弹幕数据也可以利用多种不同的弹幕校验方式进行校验。

具体地,弹幕服务器在根据预设弹幕协议中的目标数据结构生成目标弹幕数据时,可以直接将目标数据结构对应的数据结构标识确定为目标弹幕数据对应的目标校验标识,也可以将目标弹幕校验方式对应的校验类标识确定为目标弹幕数据对应的目标校验标识,还可以将目标弹幕校验方式对应的校验方式标识确定为目标弹幕数据对应的目标校验标识,从而在获取弹幕服务器生成的目标弹幕数据时,可以获取与目标弹幕数据对应的目标校验标识。

s120、根据目标校验标识,在各校验类中确定目标校验类。

其中,校验类与弹幕校验方式一一对应,即每个弹幕校验方式均对应一个独立的校验类。校验类是预先定义的一个可利用相应地弹幕校验方式对弹幕数据进行校验的类。每个校验类预先继承校验接口协议,以使每个校验类可以实现对应的弹幕校验方式的校验功能。校验接口协议是指预先定义的用于进行弹幕校验的接口,其中包含预先定义的弹幕校验函数。目标校验类是指所有校验类中的一种可以对目标弹幕数据进行校验的校验类。目标校验标识可以包括但不限于目标校验类标识、目标校验方式标识和目标数据结构标识。

具体地,本实施例可以根据各校验标识与各校验类之间的对应关系以及目标校验标识,在各校验类中确定目标校验类,从而通过确定目标校验类的方式,可以在不同的弹幕校验方式中确定与目标校验类对应的目标弹幕校验方式,以便利用目标弹幕校验方式对目标弹幕数据进行校验。

示例性地,在每个校验类预先继承校验接口协议之前,还包括:定义校验接口协议以及校验接口协议中的弹幕校验函数,其中,校验接口协议为具有公有权限修饰符的接口类型,弹幕校验函数具有公有权限修饰符,且弹幕校验函数的函数输入参数类型和函数输出参数类型分别为字符串类型和布尔类型。

具体地,预先定义一个校验接口协议,且该校验结构协议中包含预先定义的,但未进行函数实现的弹幕校验函数。例如,校验接口协议可以定义为:

publicinterfaceicheckinfo{

publicbooleancheckdanminfo(stringdanmuinfo);

}

校验接口协议icheckinfo的内部包含一个弹幕校验函数checkdanminfo,且checkdanminfo的函数输入参数只包括一个string字符串类型的弹幕数据danmuinfo,checkdanminfo的函数输出参数为一个boolean布尔类型的返回值。示例性地,若弹幕数据校验成功,则checkdanminfo可以通过调用returntrue返回true,若目标弹幕数据校验失败,则checkdanminfo可以调用returnfalse返回false。校验接口协议icheckinfo为具有公有权限修饰符public的接口类型,以便任一校验类均可以继承该校验接口协议icheckinfo。弹幕校验函数checkdanminfo也具有公有权限修饰符public,以便可以直接通过类调用checkdanminfo,提高了弹幕校验函数调用的便捷性。

示例性地,每个校验类预先继承校验接口协议,包括:每个校验类预先调用接口继承关键字,继承校验接口协议,并覆写校验接口协议中的弹幕校验函数,以使每个校验类中的弹幕校验函数实现相应的弹幕校验方式的校验功能。其中,接口继承关键字是指java语言中规定的进行接口协议继承的关键字。

具体地,对于每个校验类而言,校验类通过接口继承关键字implement的方式,继承校验接口协议icheckinfo,并且在校验类中通过覆写@override的方式来覆写校验接口协议icheckinfo中的弹幕校验函数checkdanminfo,通过将校验类对应的弹幕校验方式在校验类中的覆写函数checkdanminfo中进行实现,即实例化,使得校验类中的弹幕校验函数checkdanminfo可以实现相应的弹幕校验方式的校验功能。例如,每个校验类checksimple可以定义为:

publicclasschecksimpleimplementsicheckinfo{

@override

publicbooleancheckdanminfo(stringdanmuinfo){}

}

本实施例通过不同的校验类来实现不同的弹幕校验方式的校验功能,从而有效地解耦了现有校验方式选择手段中的检测逻辑,使得后续地校验操作更加便捷。需要注意的是,若增加一个弹幕校验方式,则只需定义一个新的校验类,并将新的校验类继承校验接口协议,以使新的校验类中的弹幕校验函数checkdanminfo可以实现增加的弹幕校验方式的校验功能,无需修改其他的校验代码,从而大大提高了代码的可扩展性和可维护性。

s130、根据目标校验类,对预设的校验协议对象进行初始化。

其中,校验协议对象是预先定义的,用于对目标弹幕数据进行校验的一个对象。校验协议对象为校验接口协议的类型的对象。

具体地,可以通过调用micheckinfo=newchecksimple1(),利用目标校验类checksimple1()对校验协议对象micheckinfo进行初始化,以使初始化后的校验协议对象包含目标校验类中的弹幕校验函数,并且校验协议对象中的弹幕校验函数可以实现目标弹幕校验方式的校验功能。

s140、以目标弹幕数据为函数输入参数,调用初始化后的校验协议对象中的弹幕校验函数,利用目标校验类对应的目标弹幕校验方式对目标弹幕数据进行校验。

具体地,通过将字符串类型的目标弹幕数据danmuinfo作为函数输入参数,调用初始化后的校验协议对象micheckinfo中的弹幕校验函数micheckinfo.checkdanminfo(danmuinfo),从而利用目标校验类对应的目标校验方式对目标弹幕数据进行校验,并可以根据弹幕校验函数的返回值确定目标弹幕数据的校验结果。

需要注意的是,若利用除目标弹幕校验方式checksimple1()之外的某个弹幕校验方式checksimple2()对目标弹幕数据进行校验,则只需利用该弹幕校验方式对应的校验类对校验协议对象进行初始化,即micheckinfo=newchecksimple2()即可,无需改变任何其他的校验代码,从而使得弹幕校验方案的切换更加方便快捷。

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

本发明实施例的技术方案,通过根据与目标弹幕数据对应的目标校验标识,在各校验类中确定目标校验类,并根据目标校验类,对预设的校验协议对象进行初始化;以目标弹幕数据为函数输入参数,调用初始化后的校验协议对象中的弹幕校验函数,从而利用目标校验类对应的目标弹幕校验方式对目标弹幕数据进行完整性校验。通过预先将每个校验类继承统一的校验接口协议,并且不同的弹幕校验方式分布至不同的校验类中,使得每个校验类中的弹幕校验函数仅实现对应的弹幕校验方式的校验功能,从而简化了弹幕校验函数的逻辑功能,并且通过确定目标校验类的方式来选择目标弹幕校验方式,可以有效地解耦现有校验方式选择手段中的检测逻辑,大大提高了代码的可扩展性和可维护性。

在上述技术方案的基础上,s120可以包括:若目标校验标识为目标校验类标识,则根据各校验类标识与各校验类之间的对应关系以及目标校验类标识,确定目标校验类;若目标校验标识为目标校验方式标识,则根据各校验方式标识与各校验类之间的对应关系以及目标校验方式标识,确定目标校验类;若目标校验标识为目标数据结构标识,则根据各数据结构标识与各校验类之间的对应关系以及目标数据结构标识,确定目标校验类,其中每个数据结构标识对应至少一个校验类。

具体地,在目标校验标识为目标校验类标识时,各校验类标识与各校验类之间的对应关系为一一对应关系,即每个校验类标识唯一标识一个校验类,此时可以直接根据每个校验类标识与每个校验类之间的对应关系,确定目标校验类标识对应的目标校验类。在目标校验标识为目标校验方式标识时,由于校验类与弹幕校验方式一一对应,且校验方式标识唯一标识一个弹幕校验方式,从而各校验方式标识与各校验类之间的对应关系也是一一对应关系,此时可以直接根据每个校验方式标识与每个校验类之间的对应关系,确定目标校验方式标识对应的目标校验类。在目标校验标识为目标数据结构标识时,由于同一种数据结构可以对应一种或多种不同的弹幕校验方式,即对应一种或多种不同的校验类,从而每个数据结构标识对应至少一个校验类,此时可以基于预设选择规则,根据各数据结构标识与各校验类之间的对应关系以及目标数据结构标识,确定目标校验类。

在上述技术方案的基础上,根据各数据结构标识与各校验类之间的对应关系以及目标数据结构标识,确定目标校验类,可以包括:根据各数据结构标识与各校验类之间的对应关系,确定目标数据结构标识对应的候选校验类;若只存在一个候选校验类,则将候选校验类确定为目标校验类;若存在至少两个候选校验类,则根据各候选校验类的校验优先级,确定目标校验类。

其中,校验优先级可以用于反映每个候选校验类的校验顺序,其可以根据候选校验类对应的校验效率和用户需求预先进行设置。示例性地,若某个候选校验类对应的弹幕校验效率越高,则该候选校验类的校验优先级越高。

具体地,本实施例中的每个数据结构标识与每个校验类之间的对应关系可能是一一对应关系,也可能是一对多关系,从而基于该对应关系确定的目标数据结构标识对应的候选校验类有可能是一个,也有可能是多个。当目标数据结构标识仅对应一个候选校验类时,可以将该候选校验类直接确定为目标校验类。当目标数据结构标识对应至少两个候选校验类时,可以将校验优先级最高的候选校验类确定为目标校验类,也可以将预先指定的校验优先级对应的候选校验类确定为目标校验类。

实施例二

图2为本发明实施例二提供的一种基于不同方式的弹幕校验方法的流程图,本实施例在上述实施例的基础上,在目标弹幕数据对应的目标数据结构为第一预设字符串结构时,对目标弹幕数据的校验过程进行了详细描述。其中与上述实施例相同或相应的术语的解释在此不再赘述。

参见图2,本实施例提供的基于不同方式的弹幕校验方法包括以下步骤:

s210、获取目标弹幕数据,以及与目标弹幕数据对应的目标校验标识。

其中,目标弹幕数据对应的目标数据结构为第一预设字符串结构,第一预设字符串结构为:以预设开始符作为首位字符,以预设分隔符划分各键值对信息,以预设连接符连接键值对信息中的键信息和值信息,以预设结束符作为末位字符,其中,键值对信息不包含与预设分隔符相同的字符串。

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

需要注意的是,根据预设弹幕协议的规定,每个键值对信息中的键信息和值信息均不会包含与预设分隔符相同的字符串,而每个键值对信息中的值信息可以不包含与预设连接符相同的字符串,也可以包含与预设连接符相同的字符串。示例性地,若以“{”为预设开始符,以“}”为预设结束符,以“/”为预设分隔符,以“@=”为预设连接符,则第一预设字符串结构的目标弹幕数据可以为:{type@=uenter/rid@=104838/uid@=20080138/wgei@=0/},其中每个键值对信息中均不包含与预设分隔符或预设连接符相同的字符串。

第一预设字符串结构的目标弹幕数据也可以为:{type@=uenter/rid@=104838/uid@=20088/avater@=www@douyu@=tv@com/wgei@=0/},其中,第四个键值对信息中的值信息“www@douyu@=tv@com”包含与预设连接符相同的字符串。

s220、根据目标校验标识,在各校验类中确定目标校验类。

s230、根据目标校验类,对预设的校验协议对象进行初始化。

具体地,目标校验类中的弹幕校验函数实现的目标弹幕校验方式的校验功能,具体可以通过步骤s240-s290进行实现。

s240、调用初始化后的校验协议对象中的弹幕存储函数,将目标弹幕数据存储至弹幕数据对象中。

其中,弹幕数据对象是一个用于存储目标弹幕数据的对象。本实施例中的目标弹幕数据是一个string类型的数据,从而弹幕数据对象为一个string对象。

s250、调用弹幕数据对象中的字符验证函数,对目标弹幕数据中的首位字符和末位字符进行字符验证。

其中,字符验证函数是预先定义的,用于对目标弹幕数据中的首位字符和末位字符进行验证的函数。字符验证函数可以包括第一字符校验函数和第二字符校验函数,分别用于目标弹幕数据中的首位字符和末位字符进行验证。

具体地,若将弹幕数据对象标记为danmustr,预设开始符为“{”,预设结束符为“}”,则可以通过调用danmustr中的第一字符验证函数danmustr.startwith(“{”),检测目标弹幕数据中的首位字符是否为预设开始符,若不是,则表明首位字符验证失败,也就是目标弹幕数据是一条不完整的数据,即不合格数据,此时可以直接确定目标弹幕数据校验失败;若是,则表明首位字符验证成功,此时可以调用第二字符验证函数danmustr.endwith(“}”),检测目标弹幕数据中的末位字符是否为预设结束符,若是,则表明目标弹幕数据中的首位字符和末位字符均是合法的,此时可以确定字符验证成功;若否,则表明目标弹幕数据是一条不完整的数据,此时可以直接确定目标弹幕数据校验失败。

s260、若字符验证成功,则调用弹幕数据对象中的字符串分割函数,将目标弹幕数据以预设分隔符进行分割,确定字符串数组。

其中,字符串分割函数是预先定义的,用于将目标弹幕数据进行分割成字符串数组的函数。具体地,若将弹幕数据对象标记为danmustr,则弹幕数据对象中的字符串分割函数可以为:danmustr.split(),从而可以将弹幕数据对象danmustr中存储的目标弹幕数据分割成一个字符串数组。

示例性地,若弹幕数据对象danmustr中存储的目标弹幕数据为:

{type@=uenter/rid@=104838/uid@=20088/avater@=www@douyu@=tv@com/wgei@=0/},预设分隔符为“/”,则通过调用splitsrtarray=danmustr.split(“/”),将目标弹幕数据以“/”进行分割获得的字符串数据存储至字符串数组splitsrtarray中,即splitsrtarray中的字符串元素分别为:“{type@=uenter”、“rid@=104838”、“uid@=20088”、“avater@=www@douyu@=tv@com”、“wgei@=0”和“}”。

需要注意的是,由于目标弹幕数据中的弹幕参数信息中均不包含与预设分隔符相同的字符串,从而在以预设分隔符对目标弹幕数据进行分割时,不会对弹幕参数内容进行分割,避免造成误分割的情况,以便可以利用分割方式准确计算目标弹幕数据中的预设分隔符数量。

s270、根据字符串数组的数组长度,确定目标弹幕数据中的预设分隔符数量。

具体地,本实施例可以根据字符串数组的长度属性,直接获取字符串数组的数组长度,即分割后的字符串数据的个数。示例性地,通过调用splitsrtarray.length,可以获得字符串数组splitsrtarray的数组长度。对于准确完整的目标弹幕数据而言,目标弹幕数据中的首位字符和末位字符均不会是预设分隔符,并且目标弹幕数据中的每个预设分隔符的前后均存在一个字符串数据,从而分割后的字符串数据的数量比预设分隔符数量多1,因此可以将字符串数组的数组长度减1得到的结果确定为预设分隔符数量。

s280、将字符串数组中的每个字符串元素存储至对应的字符串对象中,并调用各字符串对象中的字符查找函数,确定目标弹幕数据中的预设连接符数量。

其中,标识符查找函数是预先定义的,用于查找拼接字符串对象存储的字符串数据中是否包含输入参数的函数。若预设连接符为“@=”,则可以通过以“@=”为函数输入对象,调用字符串元素对应的字符串对象tmpstr中的标识符查找函数tmpstr.contains(“@=”),查询字符串元素中是否包含“@=”。

具体地,本实施例将字符串数组中的每个字符串元素存储至对应的字符串对象中,即字符串元素与字符串对象一一对应,通过以预设连接符作为函数输入参数,调用每个字符串对象中的标识符查找函数,检测每个字符串对象存储的字符串元素是否包含预设连接符,从而统计目标弹幕数据中的预设连接符数量。本实施例可以一次性地调用每个字符串对象中的标识符查找函数;也可以通过循环遍历的方式,于每次循环周期中,调用字符串对象中的标识符查找函数,以降低运行内存,提升计算速度。

需要注意的是,标识符查找函数只能用于确定字符串数据中是否包含输入参数,无法确定字符串数据中包含的输入参数的个数,从而弹幕参数信息中无论是否包含与预设连接符相同的字符串,均可以利用标识符查找函数准确地确定目标弹幕数据中预设连接符数量。

s290、若预设分隔符数量和预设连接符数量相等,则确定目标弹幕数据校验成功。

其中,通过对第一预设字符串结构的分析,可以得出:若目标弹幕数组完整,则预设分隔符数量与预设连接符数量相等。

具体地,若预设分隔符数量与预设连接符数量相等,则表明目标弹幕数据是一条完整的数据,可以被正常解析,此时可以确定目标弹幕数据校验成功。若预设分隔符数量与预设连接符数量不相等,则表明目标弹幕数据是一条非法数据,此时可以确定目标弹幕数据校验失败。

本实施例的技术方案,对第一预设字符串结构的目标弹幕数据进行了完整性校验。在目标弹幕数据校验成功后,可以对目标弹幕数据进行正常解析,进而避免了因弹幕数据异常而导致客户端出现系统崩溃等问题,提高了弹幕测试效率。

实施例三

图3为本发明实施例三提供的一种基于不同方式的弹幕校验方法的流程图,本实施例在上述实施例的基础上,在目标弹幕数据对应的目标数据结构为预设字符串嵌套结构时,对目标弹幕数据的校验过程进行了详细描述。其中与上述实施例相同或相应的术语的解释在此不再赘述。

参见图3,本实施例提供的基于不同方式的弹幕校验方法包括以下步骤:

s310、获取目标弹幕数据,以及与目标弹幕数据对应的目标校验标识。

其中,目标弹幕数据对应的目标数据结构为预设字符串嵌套结构,预设字符串嵌套结构包括:由预设数量的第二预设字符串结构形成的嵌套结构,其中,第二预设字符串结构为:以预设开始符作为首位字符,以预设分隔符划分各键值对信息,以预设连接符连接键值对信息中的键信息和值信息,以预设结束符作为末位字符。本实施例中的第二预设字符串结构是一个非嵌套结构。预设数量的第二预设字符串结构可以基于多种嵌套方式形成预设字符串嵌套结构。

具体地,本实施例可以将每个第二预设字符串结构视为一个键值对信息,并以预设分隔符划分第二预设字符串结构和其它键值对信息,然后并列嵌套至另一个第二预设字符串嵌套结构中,从而形成预设字符串嵌套结构。示例性地,若预设开始符为“{”,预设结束符为“}”,预设分隔符为“/”,预设连接符为“@=”,当第二预设字符串结构的预设数量为3时,预设字符串嵌套结构的目标弹幕数据可以为:{type@=uenter/{rid@=104838/}/uid@=20088/{wgei@=0/}/avater@=www@douyu@=tv@com/},其中,将第一个第二预设字符串结构的数据{rid@=104838}和第二个第二预设字符串结构{wgei@=0/}均视为一个键值对信息并列嵌套至第三个第二预设字符串结构的数据{type@=uenter/avater@=www@douyu@=tv@com/}中,从而形成预设字符串嵌套结构的弹幕数据。

本实施例也可以将每个第二预设字符串结构进行彼此嵌套,从而形成预设字符串嵌套结构。示例性地,在第二预设字符串结构的预设数量为3时,预设字符串嵌套结构的目标弹幕数据可以为:{type@=uenter/{rid@=104838/{uid@=20088/}/wgei@=0/}/avater@=www@douyu@=tv@com/},其中,将第一个第二预设字符串结构的数据{uid@=20088/}视为一个键值对信息,嵌套至第二个第二预设字符串结构的数据{rid@=104838/wgei@=0/}中,并以预设分隔符划分第一个第二预设字符串结构与其它的键值对信息,然后再将该嵌套结构{rid@=104838/{uid@=20088/}/wgei@=0/}嵌套至第三个第二预设字符串嵌套结构{type@=uenter/avater@=www@douyu@=tv@com/}中,并以预设分隔符划分嵌套结构与其它的键值对信息,从而形成预设字符串嵌套结构的弹幕数据。

本实施例中的嵌套方式还可以是将一部分的第二预设字符串结构进行并列嵌套,另一部分的第二预设字符串结构进行彼此嵌套。本实施例对预设字符串嵌套结构中的嵌套方式不做具体限定。

s320、根据目标校验标识,在各校验类中确定目标校验类。

s330、根据目标校验类,对预设的校验协议对象进行初始化。

具体地,本实施例中的目标校验类中的弹幕校验函数实现的目标弹幕校验方式的校验功能,具体可以通过步骤s340-s391进行实现。

s340、调用初始化后的校验协议对象中的弹幕存储函数,将目标弹幕数据存储至弹幕数据对象中。

s350、调用存储目标弹幕数据的弹幕数据对象中的字符串转换函数,将目标弹幕数据转换为目标字符数组,并对目标字符数组中的字符元素进行遍历,确定目标弹幕数据中的预设开始符数量和预设结束符数量。

其中,字符串转换函数是预先定义的,用于将目标弹幕数据转换为一个字符数组的函数。目标字符数组中的字符顺序与目标弹幕数据中的字符顺序保持一致。示例性地,若将弹幕数据对象标记为danmustr,则danmustr中的字符串转换函数可以为:danmustr.tochararray(),从而可以将danmustr中存储的目标弹幕数据转换为一个目标字符数组。

具体地,本实施例在对目标字符数组中的字符元素进行遍历时,可以一次性地将目标字符数组中的每个字符元素与预设开始符进行匹配,将匹配成功的次数确定为目标弹幕数据中的预设开始符数量,以及将目标字符数组中的每个字符元素与预设结束符进行匹配,将匹配成功的次数确定为目标弹幕数据中的预设结束符数量;也可以通过循环遍历的方式,于每次循环周期中,将字符元素分别与预设开始符和预设结束符进行匹配,从而可以快速确定预设开始符数量和预设结束符数量,提升计算速度。

s360、若预设开始符数量等于预设结束符数量,则基于预设字符去除方式,去除目标字符数组中的各预设开始符和各预设结束符,获得待测弹幕数据。

其中,预设字符去除方式是指去除目标弹幕数据中预设开始符和预设结束符的方式。预设字符去除方式可以是但不限于通过调用弹幕数据对象中的替换函数的方式去除字符,或者基于链表结构的字符去除方式。

具体地,在预设开始符数量等于预设结束符数量时,本实施例可以通过调用弹幕数据对象中的替换函数danmustr.replaceall("\{",""),将目标弹幕数据中的所有的预设开始符“{”替换为空字符串等特殊的不可见字符,从而去除目标弹幕数据中所有的预设开始符;同理,通过调用弹幕数据对象中的替换函数danmustr.replaceall("\}",""),将目标弹幕数据中的所有的预设结束符“}”替换为空字符串等特殊的不可见字符,从而去除目标弹幕数据中所有的预设结束符。本实施例还可以通过将目标字符数组转换为目标字符链表,对目标字符链表中的各个节点进行遍历,将节点数据为预设开始符或者预设结束符的所有节点进行删除,从而更新目标字符链表。将更新后的目标字符链表转换为待测字符数组,再将该待测字符数组转换为待测字符串,从而将待测字符串作为待测弹幕数据,此时的待测弹幕数据为一个string类型的数据。

示例性地,若目标字符链表中有三个节点a、b和c,其中,节点a中的节点数据均不是预设开始符和预设结束符,节点a中的节点指针(即当前指针)指向节点b,节点b中的节点数据为预设开始符,节点b中的节点指针指向节点c,则通过调用a->next->data==“{”||p->next->data==“}”,来检测到节点b中的节点数据是否为预设开始符或者预设结束符,若是,则可以通过a->next=b->next,将节点a指向节点b中的节点指针所指向的节点,也就是将节点a中的节点指针指向节点c,从而可以删除目标字符链表中的节点b,并更新目标字符链表,此时更新后的目标字符链表只包括两个节点a和c,并且节点a中的节点指针指向节点c。

s370、调用存储待测弹幕数据的待测数据对象中的字符串分割函数,将待测弹幕数据以预设分隔符进行分割,确定字符串数组。

示例性地,若待测数据对象danmustr2中存储的待测弹幕数据为:type@=uenter/rid@=104838/uid@=20088//wgei@=0//avater@=www@douyu@=tv@com/,预设分隔符为“/”,则通过调用splitsrtarray=danmustr2.split(“/”),将目标弹幕数据以“/”进行分割获得的字符串数据存储至字符串数组splitsrtarray中,即splitsrtarray中的字符串元素分别为:“type@=uenter”、“rid@=104838”、“uid@=20088”、“”、“wgei@=0”、“”、和“avater@=www@douyu@=tv@com”。需要注意的是,分割出的尾部的空字符串不能作为字符串数组中的一个数组元素,而中间的空字符串可以作为字符串数组中的一个数组元素。

s380、根据字符串数组的数组长度,确定待测弹幕数据中的预设分隔符数量。

具体地,对于准确完整的待测弹幕数据而言,待测弹幕数据中的首位字符不会是预设分隔符,而末位字符是预设分隔符,从而分割后的字符串数据的数量等于预设分隔符数量,因此可以直接将字符串数组的数组长度确定为预设分隔符数量。

s390、将字符串数组中的每个字符串元素存储至对应的字符串对象中,并调用各字符串对象中的标识符查找函数,确定待测弹幕数据中的预设连接符数量。

s391、确定预设分隔符数量与预设连接符数量之间的数量差,并在数量差与预设数量之间的差值等于1时,确定目标弹幕数据校验成功。

其中,通过对完整的预设字符串嵌套结构进行分析,可以看出:在第二预设字符串结构的预设数量为1时,预设分隔符数量等于预设连接符数量;当预设数量为n时,弹幕数据中便增加n-1个预设分隔符以进行划分,预设连接符的数量保持不变,从而预设分隔符数量比预设连接符数量多n-1。可见,对于完整的预设字符串嵌套结构的弹幕数据而言,预设分隔符数量与预设连接符数量之间的数量差比预设数量多1。

具体地,将预设分隔符数量与预设连接符数量之间的数量差减去预设数量,得到两者的差值,若该差值等于1,则表示目标弹幕数据完整,此时可以确定目标弹幕数据校验成功,否则确定目标弹幕数据校验失败。

本实施例的技术方案,对预设字符串嵌套结构的目标弹幕数据进行了完整性校验,以保证目标弹幕数据的正常解析。

实施例四

图4为本发明实施例四提供的一种基于不同方式的弹幕校验装置的结构示意图,本实施例可适用于利用不同的弹幕校验方式中的目标弹幕校验方式对弹幕数据进行完整性校验的情况,该装置具体可以包括:目标弹幕信息获取模块410、目标校验类确定模块420、校验协议对象初始化模块430和目标弹幕数据校验模块440。

其中,目标弹幕信息获取模块410,用于获取目标弹幕数据,以及与目标弹幕数据对应的目标校验标识;目标校验类确定模块420,用于根据目标校验标识,在各校验类中确定目标校验类,其中,校验类与弹幕校验方式一一对应,且每个校验类预先继承校验接口协议;校验协议对象初始化模块430,用于根据目标校验类,对预设的校验协议对象进行初始化,其中,校验协议对象为校验接口协议的类型的对象;目标弹幕数据校验模块440,用于以目标弹幕数据为函数输入参数,调用初始化后的校验协议对象中的弹幕校验函数,利用目标校验类对应的目标弹幕校验方式对目标弹幕数据进行校验。

可选地,目标校验类确定模块420,包括:第一目标校验类确定单元,用于若目标校验标识为目标校验类标识,则根据各校验类标识与各校验类之间的对应关系以及目标校验类标识,确定目标校验类;第二目标校验类确定单元,用于若目标校验标识为目标校验方式标识,则根据各校验方式标识与各校验类之间的对应关系以及目标校验方式标识,确定目标校验类;第三目标校验类确定单元,用于若目标校验标识为目标数据结构标识,则根据各数据结构标识与各校验类之间的对应关系以及目标数据结构标识,确定目标校验类,其中每个数据结构标识对应至少一个校验类。

可选地,第三目标校验类确定单元,具体用于:根据各数据结构标识与各校验类之间的对应关系,确定目标数据结构标识对应的候选校验类;若只存在一个候选校验类,则将候选校验类确定为目标校验类;若存在至少两个候选校验类,则根据各候选校验类的校验优先级,确定目标校验类。

可选地,该装置还包括:校验接口协议继承模块,用于每个校验类预先调用接口继承关键字,继承校验接口协议,并覆写校验接口协议中的弹幕校验函数,以使每个校验类中的弹幕校验函数实现相应的弹幕校验方式的校验功能。

可选地,该装置还包括:校验接口协议定义模块,用于在每个校验类预先继承校验接口协议之前,定义校验接口协议以及校验接口协议中的弹幕校验函数,其中,校验接口协议为具有公有权限修饰符的接口类型,弹幕校验函数具有公有权限修饰符,且弹幕校验函数的函数输入参数类型和函数输出参数类型分别为字符串类型和布尔类型。

可选地,目标弹幕数据对应的目标数据结构为第一预设字符串结构,第一预设字符串结构为:以预设开始符作为首位字符,以预设分隔符划分各键值对信息,以预设连接符连接键值对信息中的键信息和值信息,以预设结束符作为末位字符,其中,键值对信息不包含与预设分隔符相同的字符串;相应地,目标弹幕数据校验模块440包括第一弹幕校验函数执行单元,用于通过如下步骤实现利用目标校验类对应的目标弹幕校验方式对目标弹幕数据进行校验的功能:

调用初始化后的校验协议对象中的数据存储函数,将目标弹幕数据存储至弹幕数据对象中;调用弹幕数据对象中的字符验证函数,对目标弹幕数据中的首位字符和末位字符进行字符验证;若字符验证成功,则调用弹幕数据对象中的字符串分割函数,将目标弹幕数据以预设分隔符进行分割,确定字符串数组;根据字符串数组的数组长度,确定目标弹幕数据中的预设分隔符数量;将字符串数组中的每个字符串元素存储至对应的字符串对象中,并调用各字符串对象中的字符查找函数,确定目标弹幕数据中的预设连接符数量;若预设分隔符数量和预设连接符数量相等,则确定目标弹幕数据校验成功。

可选地,目标弹幕数据对应的目标数据结构为预设字符串嵌套结构,预设字符串嵌套结构包括:由预设数量的第二预设字符串结构形成的嵌套结构,其中,第二预设字符串结构为:以预设开始符作为首位字符,以预设分隔符划分各键值对信息,以预设连接符连接键值对信息中的键信息和值信息,以预设结束符作为末位字符;相应地,目标弹幕数据校验模块440还包括第二弹幕校验函数执行单元,用于通过如下步骤实现利用目标校验类对应的目标弹幕校验方式对目标弹幕数据进行校验的功能:

调用初始化后的校验协议对象中的数据存储函数,将目标弹幕数据存储至弹幕数据对象中;调用弹幕数据对象中的字符串转换函数,将目标弹幕数据转换为目标字符数组,并对目标字符数组中的字符元素进行遍历,确定目标弹幕数据中的预设开始符数量和预设结束符数量;若预设开始符数量等于预设结束符数量,则基于预设字符去除方式,去除目标字符数组中的各预设开始符和各预设结束符,获得待测弹幕数据;调用存储待测弹幕数据的待测数据对象中的字符串分割函数,将待测弹幕数据以预设分隔符进行分割,确定字符串数组;根据字符串数组的数组长度,确定待测弹幕数据中的预设分隔符数量;将字符串数组中的每个字符串元素存储至对应的字符串对象中,并调用各字符串对象中的标识符查找函数,确定待测弹幕数据中的预设连接符数量;确定预设分隔符数量与预设连接符数量之间的数量差,并在数量差与预设数量之间的差值等于1时,确定目标弹幕数据校验成功。

本发明实施例所提供的基于不同方式的弹幕校验装置可执行本发明任意实施例所提供的基于不同方式的弹幕校验方法,具备执行基于不同方式的弹幕校验方法相应的功能模块和有益效果。

实施例五

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

一个或多个处理器510;

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

当一个或多个程序被一个或多个处理器510执行,使得一个或多个处理器510实现如上述实施例中任意实施例所提出的基于不同方式的弹幕校验方法。

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

存储器520作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的基于不同方式的弹幕校验方法对应的程序指令/模块(例如,基于不同方式的弹幕校验装置中的目标弹幕信息获取模块410、目标校验类确定模块420、校验协议对象初始化模块430和目标弹幕数据校验模块440)。处理器510通过运行存储在存储器520中的软件程序、指令以及模块,从而执行终端的各种功能应用以及数据处理,即实现上述的基于不同方式的弹幕校验方法。

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

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

实施例六

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

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

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

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