CN115442635A - 一种跨平台安全过滤弹幕的方法、装置、设备和存储介质 - Google Patents

一种跨平台安全过滤弹幕的方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN115442635A
CN115442635A CN202110626851.7A CN202110626851A CN115442635A CN 115442635 A CN115442635 A CN 115442635A CN 202110626851 A CN202110626851 A CN 202110626851A CN 115442635 A CN115442635 A CN 115442635A
Authority
CN
China
Prior art keywords
bullet screen
module
filtering
screen module
establishing
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
CN202110626851.7A
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 CN202110626851.7A priority Critical patent/CN115442635A/zh
Publication of CN115442635A publication Critical patent/CN115442635A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/70Information retrieval; Database structures therefor; File system structures therefor of video data
    • G06F16/73Querying
    • G06F16/735Filtering based on additional data, e.g. user or group profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/454Content or additional data filtering, e.g. blocking advertisements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/488Data services, e.g. news ticker
    • H04N21/4884Data services, e.g. news ticker for displaying subtitles

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Databases & Information Systems (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明实施例提供一种跨平台安全过滤弹幕的方法,包括:建立接收通道,以接收弹幕信息,并能够将所述弹幕信息发送给服务器;创建弹幕模块;并建立链接通道,以使所述服务器与所述弹幕模块之间进行弹幕信息传递;在所述弹幕模块内建立多个相互关联的过滤模块;并检查所述弹幕模块是否被销毁;若所述弹幕模块没有被销毁,所述过滤模块过滤所述弹幕信息;若所述弹幕模块被销毁,通知所述过滤模块,以防止程序崩溃,实现安全过滤弹幕。

Description

一种跨平台安全过滤弹幕的方法、装置、设备和存储介质
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种跨平台安全过滤弹幕的方法、装置、设备和存储介质。
背景技术
对于一些直播平台,系统服务器需要接收直播间的弹幕消息并进行展示。随着平台各种业务功能日趋增多,弹幕消息的展示会出现越来越多的定制化需求,例如安装等级屏蔽弹幕,过滤低质量弹幕,过滤相同弹幕,过滤特定关键词弹幕等等。而对于弹幕的过滤,现有技术中有些方案会造成程序的崩溃。
由此可知需要一种能够做到安全过滤弹幕的方案。
发明内容
本发明实施例提供一种安全过滤弹幕的方法、装置、设备和存储介质,通过将多个相互关联的过滤模块设置在弹幕模块内,并在弹幕模块被销毁时,通知所有过滤模块,以防止程序崩溃,实现安全过滤弹幕。
第一方面,本发明实施例提供一种跨平台安全过滤弹幕的方法,包括:
建立接收通道,以接收弹幕信息,并能够将所述弹幕信息发送给服务器;
创建弹幕模块;
并建立链接通道,以使所述服务器与所述弹幕模块之间进行弹幕信息传递;
在所述弹幕模块内建立多个相互关联的过滤模块;
检查所述弹幕模块是否被销毁;
若所述弹幕模块没有被销毁,所述过滤模块过滤所述弹幕信息;
若所述弹幕模块被销毁,通知所述过滤模块,以防止程序崩溃,实现安全过滤弹幕。
优选地,所述链接通道的建立,具体包括:
在所述弹幕模块中设置与所述服务器连接的网络套接字,
解析所述服务器传递给所述弹幕模块的数据信息;
根据所述数据信息的类型,区分出所述数据信息中的弹幕信息;
建立弹幕存储链表,以存储所述弹幕信息。
优选地,所述多个相互关联的过滤模块的建立,具体包括:
建立多个过滤模块;
建立双向链表,以串联所有过滤模块;
编写析构函数,以检测所述弹幕模块是否被销毁;
在所述过滤模块中分别建立告知销毁接口,并通过遍历所述双向链表,以将所述弹幕模块的销毁信息通知给所有过滤模块。
优选地,所述过滤模块的建立,具体包括:
在上层业务层编写过滤逻辑;
编写回调类;
所述回调类内的成员变量包括弹幕模块函数、逻辑回调函数和检测函数;
其中,所述弹幕模块函数的成员变量为弹幕模块的实例句柄;所述逻辑回调函数的成员变量为上层业务层逻辑回调实例,以调用所述过滤逻辑;所述检测函数包括至少一个检测弹幕模块生命周期的成员变量。
优选地,所述过滤逻辑的编写包括:
设置弹幕信息对应分值;
建立抽象过滤接口,重载所述回调类,以解析所述弹幕分值;
设定分值阈值,并销毁低于分值阈值的弹幕模块。
优选地,所述双向链表的建立,具体包括:
定义前向链表指针和后向链表指针;
将所述弹幕模块和所述过滤模块作为所述双向链表的节点;
设定所述双向链表首节点的前向指针为执行所述弹幕模块实例句柄;
设定所述双向链表首节点的后向指针指向后一个节点;
其余节点的前向指针指向链表中前一个节点;
其余节点的后向指针指向后一个节点;
且当所述双向链表的任一节点被销毁时,将所述前向指针设置为空。
优选地,还包括:
若检查到所述前向指针设置为空,所述弹幕模块的实例句柄或任一过滤模块被销毁;
移除所述弹幕模块的实例或任一过滤模块对应节点;
并获得所述弹幕模块的实例或任一过滤模块对应节点的下一节点和上一节点;
将所述下一节点的前向指针指向所述上一节点。
第二方面,本发明实施例提供一种跨平台安全过滤弹幕的装置,包括:
接收单元,其用于建立接收通道,以接收弹幕信息,并能够将所述弹幕信息发送给服务器;
弹幕单元,其用于创建弹幕模块;
连接单元,其用于建立链接通道,以使所述服务器与所述弹幕模块之间进行弹幕信息传递;
创建单元,其用于在所述弹幕模块内建立多个相互关联的过滤模块;
检查单元,其用于检查所述弹幕模块是否被销毁;若所述弹幕模块没有被销毁,所述过滤模块过滤所述弹幕信息;若所述弹幕模块被销毁,通知所述过滤模块,以防止程序崩溃,实现安全过滤弹幕。
第三方面,本发明实施例提供一种电子设备,包括应用处理器和存储器,所述处理器用于实现所述存储器中存储得计算机管理程序式时实现如上述安全过滤弹幕的方法的步骤。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机管理类程序,所述计算机管理类程序被处理器执行时实现如上述安全过滤弹幕的方法的步骤。
有益效果
本发明提供一种安全过滤弹幕的方法、装置、设备和存储介质,通过将多个相互关联的过滤模块设置在弹幕模块内,并在弹幕模块被销毁时,通知所有过滤模块,以防止程序崩溃,实现安全过滤弹幕。
附图说明
图1为本发明所述的跨平台安全过滤弹幕的方法实施例的流程图;
图2为本发明建立双向链表,并检查弹幕模块是否被销毁实施例的单元结构示意图;
图3为本发明实施例提供的跨平台安全过滤弹幕装置的硬件结构示意图;
图4为本发明实施例提供的一种可能的电子设备的实施例示意图;
图5为本发明实施例提供的一种可能的计算机可读存储介质的实施例示意图。
具体实施方式
以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明的描述中,术语“中”、“上”、“下”、“横”、“内”等指示的方向或位置关系的术语是基于附图所示的方向或位置关系,这仅仅是为了便于描述,而不是指示或暗示所述装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
此外,还需要说明的是,在本发明的描述中,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可根据具体情况理解上述术语在本发明中的具体含义。
图1为本发明跨平台安全过滤弹幕的方法实施例的流程图,如图1所示,包括:
步骤S110、建立接收通道,以接收弹幕信息,并能够将弹幕信息发送给服务器;
具体的说,本发明实施例中涉及的跨平台安全过滤弹幕的方法,通过双层代码实现。优选的是,弹幕的接收通道为弹幕连接服务器,从服务器接收弹幕,将弹幕内容发送给服务器等,接收通道的传递逻辑,通过C++语言实现,从而该层对于Android或IOS提供的就是一个SO文件,由于弹幕条数比较多,这部分对性能要求比较高,所以使用C++语言来编写可以显著提示整个程序的性能。并且在C++层提供了对弹幕操作的回调过滤接口,从而能够支持Android/IOS层的弹幕过滤。
其次是对于弹幕相关的业务逻辑,这部分逻辑会经常发生变化,同时也不涉及性能的要求,所以将此处的业务逻辑封装给上层代码来实现,从而可以适应不断变化的业务需要,对于Android系统,通过jni层调用java语言,对于IOS系统则是objc语言。Android/IOS层的业务通过C++层的封装来将业务逻辑设置到C++层来执行。
需要特别说明的是,本步骤S110中建立接收通道,实现弹幕内容和发服务器之间的信息传递,并通过使用C++语言来编写可以显著提示整个程序的性能,实现了在弹幕条数比较多的情况下能够有效传递弹幕信息,避免了由逻辑变化导致性能降低的有益效果。
步骤S120、创建弹幕模块,并建立链接通道,以使服务器与弹幕模块之间进行弹幕信息传递,具体的说,包括如下步骤:
创建弹幕模块;在本发明实施例中的弹幕模块创建于客户端的APP 中,使用C++语言编写,以IOS系统使用objc语言为例。弹幕模块的实例创建可由如下代码实现:
Danmu*objDanm=new Danmu();
其中,Danmu*objDanm表示弹幕模块使用objc语言,new Danmu()表示将弹幕信息传递给objDanm。
在弹幕模块中设置与服务器连接的网络套接字,该网络套接字用于和直播平台弹幕服务器建立网络通道以接收所有的弹幕信息。
解析服务器传递给所述弹幕模块的数据信息,并解析出其中的每一条信息;
根据数据信息的类型,区分出所述数据信息中的弹幕信息;
建立弹幕存储链表,以存储所述弹幕信息。
具体的说,由如下程序代码实现:
List<Message>listmessage=Parse(buff);
其中buff为数据信息,Parse(buff)表示服务区接收到的数据信息, listmessage表示通过消息类型区分出的所有弹幕消息,List<Message>表示弹幕存储列表,用来存储多条弹幕消息。
需要特别说明的是,本步骤弹幕模块中设置与直播平台弹幕服务器连接的网络套接字socket,该网络套接字用于和直播平台弹幕服务器建立网络通道以接收所有的弹幕信息,并通过设置一个链表存储各弹幕消息,实现了方便后续的过滤操作的有益效果。优选的是,弹幕模块相关的业务逻辑使用 Android的java层代码来编写。
需要特别说明的是,弹幕模块的逻辑会经常发生变化,同时也不涉及性能的要求,所以将业务逻辑封装给上层代码来实现,实现了可以适应不断变化的业务需要的有益效果。
在C++层我们需要设计一套可以支持多种弹幕过滤配置的功能,并且在退出直播间弹幕销毁时能够保障业务层的业务逻辑不会执行时产生对象释放的崩溃
步骤S130建立链接通道,以使服务器与弹幕模块之间进行弹幕信息传递,具体的说,实现方式为:在弹幕模块中设置与服务器连接的网络套接字,解析所述服务器传递给所述弹幕模块的数据信息;根据数据信息的类型,区分出数据信息中的弹幕信息;建立弹幕存储链表,以存储弹幕信息。
其具体实现过程为:建立一个网络套接字socket来建立与直播平台弹幕服务器进行连接。解析从服务器收到的所有网络消息,并解析出其中的每一条消息。List<Message>listmessage=Parse(buff);通过解析Parse收到的网络消息buff,通过消息的类型来区分出所有弹幕消息,从而解析出一条一条的独立的弹幕消息listmessage,使用一个链表List<Message>来存储多条弹幕消息。
需要特别说明的是,步骤S130中通过解析Parse收到的网络消息buff,通过消息的类型来区分出所有弹幕消息,并建立存储列表,实现了有效识别弹幕信息的有益效果。
为实现弹幕过滤功能,本实施例还包括如下步骤:
步骤S140、在弹幕模块内建立多个相互关联的过滤模块;过滤模块用于分别执行不同的弹幕过滤逻辑,通过编写如下函数来实现:
Void FilterMessage(List<Message>listmessage);
其中,FilterMessage表示过滤模块,listmessage表示一条一条的独立的弹幕消息,List<Message>为储存链表,来存储多条弹幕消息。
需要特别说明的是,过滤逻辑是实现对弹幕消息的过滤功能,将整个功能通过上层的APP业务层设置进来实现功能。实现了避免在底层C++ 中实现各种各样的业务逻辑,导致系统崩溃的有益效果。
在上层业务层编写过滤逻辑;
编写回调类;其中,回调类内的成员变量包括弹幕模块函数、逻辑回调函数和检测函数;
弹幕模块函数的成员变量为弹幕模块的实例句柄;所逻辑回调函数的成员变量为上层业务层逻辑回调实例,以调用所述过滤逻辑;检测函数包括至少一个检测弹幕模块生命周期的成员变量。
弹幕过滤模块设计给上层设置经历各种业务逻辑的执行计划。并设计了多种callback模式来让业务层进行功能执行,具体的说,可由如下代码实现:
Class callback{
callback(Danmu*danmu,objcCallback ocb)
Dm_(danmu),objcCb_(ocb),check_(danmu){}
Danmu*dm_{nullptr};
objcCallback objcCb_{nullptr};
DeleteCheck::check check_;
Bool virtual filterMessage(Message message)=0;
其中,callback为回调类,以实现回调功能。Danmu*danmu为编写构造函数即弹幕模块函数,以传入一个弹幕模块的句柄,objcCallback ocb为一个上层业务编写的具体逻辑回调ocb实例。Dm_(danmu),objcCb_(ocb), check_(danmu){}表示将其存储到成员变量中。check_成员变量存储了弹幕模块的实例句柄,其用于检测弹幕模块的生命周期,防止弹幕模块被释放而导致程序崩溃。Danmu*dm_{nullptr};c++层的弹幕模块实例。objcCallback objcCb_{nullptr};上层业务的objc业务回调逻辑。所有的过滤功能则由上层使用objc(iso平台开发语言)来实现具体的过滤逻辑。DeleteCheck::check check_;用于检测弹幕模块的生命周期。Bool virtual filterMessage(Message message)=0表示抽象接口由上层业务逻辑来实现。
作为一个优选实施例,过滤逻辑编写依据用户设置的弹幕评分来过滤弹幕。即设置弹幕信息对应分值;建立抽象过滤接口,重载回调类,以解析弹幕分值;设定分值阈值,并销毁低于分值阈值的弹幕模块,具体的实现步骤为:
每一条弹幕在直播平台服务器有对该条弹幕的质量进行评分,用户可以设置低分值的弹幕将其丢弃不展示给用户看。在APP层则实现逻辑,并将逻辑设置到弹幕模块来执行。具体的实现代码为:
Class ScoreCallback:public callback{继承自callback来实现弹幕的过滤逻辑。通过实现其纯虚接口来实现功能。
Bool filterMessage(Message message){此接口重载了基类的callback 的方法来实现弹幕分数的过滤。
具体分值的过滤则由上层的objc开发的过滤逻辑来实现,所有的实现都封装在了objcCallback这个上层设置进来的回调接口中。此次的实现析弹幕消息并从中获取弹幕的分值,通过判断分值低于用户的设置则丢弃弹幕,否则展示弹幕。具体实现如下:
if(!check_.destroyed()){通过check来检测弹幕模块的安全性,没有被释放才能够执行后续的弹幕过滤功能。
Return objcCallback(message);通过objc的弹幕过滤功能来对弹幕进行过滤。}Else不进行过滤。
需要特别说明的是,弹幕过滤逻辑不拘泥于设定分值进行过滤,对于弹幕的其他业务逻辑也按照上述通过继承callback并实现filterMessage来实现了各种各样的弹幕过滤逻辑本步骤S140的过滤逻辑通过上层模块来实现,实现了屏蔽弹幕内容有效屏蔽的有益效果。
如图2所示,步骤S150、建立双向链表,并检查弹幕模块是否被销毁;若弹幕模块没有被销毁,过滤模块过滤弹幕信息;若弹幕模块被销毁,通知过滤模块,以防止程序崩溃,实现安全过滤弹幕。具体的说包括如下步骤:
步骤S151、编写析构函数,以检测弹幕模块是否被销毁;具体的说包括如下步骤:
考虑弹幕模块的实例和过滤模块的实例,由于两个实例的管理和生命周期不一样,所以当过滤模块执行时,需要考虑弹幕模块实例是否被销毁,因此需要机制能够保障其生命周期,即通过类的封装从而在销毁时可以利用其析构函数,实现了执行实现自动通知的功能的有益效果。
具体的实现步骤为:编写一个基础类class DeleteCheck。基础类classDeleteCheck其中封装了此模块释放是来通知整个过滤链上的所有过滤模块。
其中,成员变量ISafety guard_;用于串联出所有的过滤模块。此成员变量用于记录链表的起始过滤模块。编写析构函数中通知所有的过滤模块。
virtual~DeleteCheck(){编写析构函数,当此弹幕模块被释放时,必须通知所有的过滤模块,其不能够执行任何的过滤功能,否则会导致程序崩溃。
guard_.setAllDelete();}通过调用setAllDelete来进行通知。
那么弹幕模块则继承自此基础类,从而具备了销毁时通知的功能。
写弹幕模块继承自DeleteCheck从而具备了所有DeleteCheck的能力。
class Danmu:public DeleteCheck{弹幕模块继承与此,所以具有销毁时通知功能。
增加一个接口用于判断当前的弹幕实例是否销毁,主要是提供一个给外部访问的接口,来判断当前弹幕实例是否销毁,如果销毁则不能够执行过滤操作,否则则可以执行过滤操作。
bool destroyed(){return prev_==nullptr;}通过判断其是否存在prev 的前向指针则可以判断是否销毁,如果弹幕实例销毁则prev_指针会为空。此指针则在之前的步骤中通过弹幕模块的销毁通知来告知。
需要特别说明的是,编写析构函数,当此弹幕模块被释放时,通知所有的过滤模块,其不能够执行任何的过滤功能,实现了避免导致程序崩溃的有益效果。
步骤S152、设计类中的成员变量用于串联出所有的弹幕实例和过滤模块。具体的说通过建立双向链表实现。
ISafety*next_{nullptr};向后的链表指针;
ISafety*prev_{nullptr};向前的链表指针;
定义前向链表指针和后向链表指针;
将弹幕模块和过滤模块作为双向链表的节点;
设定双向链表首节点的前向指针为执行弹幕模块实例句柄;
设定双向链表首节点的后向指针指向后一个节点;
其余节点的前向指针指向链表中前一个节点;
其余节点的后向指针指向后一个节点;
且当双向链表的任一节点被销毁时,将前向指针设置为空。
具体的实现步骤为:编写类ISafety的构造函数用于构建整个双向链表。
构造函数主要完成将弹幕模块和每一个构造的过滤模块形成一个双向链表。
explicit ISafety(DeleteCheck&check){构造函数必须传入一个参数,传入DeleteCheck的实例进来,从而才能够和ISafety形成一套销毁通知。而由于弹幕实例是继承自DeleteCheck,所以实际传入的是弹幕模块的实例。
接下来将弹幕实例形成串联到链表的最前端。
prev_=&check.guard_;链表的最前向的指针执行弹幕模块的实例的成员变量。
next_=prev_->next_;链表的下一个指针执行弹幕模块实例的下一个指针。
if(next_!=nullptr){
next_->prev_=this;如果下一个指针不为空,则链表的下一个过滤模块的前一个实例则是这个实例的自身。
}prev_->next_=this;}
链表的前一个模块的下一个实例则是这个实例的自身。
需要特别说明的是,通过建立双向链表能够在弹幕模块销毁时保证链表结构的完整性,以防止程序崩溃,实现安全过滤弹幕的有益效果。
步骤S153、在过滤模块中分别建立告知销毁接口,并通过遍历双向链表,以将弹幕模块的销毁信息通知给所有过滤模块,具体的说,包括如下代码:
void setAllDelete(){此接口弹幕模块销毁时会告知我们,从而我们可以通知所有的过滤模块。由于我们的过滤模块实现了双向链表,所以我们直接遍历链表来通知即可。
for(auto it=next_;it;it=it->next_){遍历每个过滤模块。
it->setDelete();告知每个过滤模块弹幕模块销毁。}
为保证当任意一个过滤模块被销毁时,其必须从双向链表中移除掉,否则其被销毁了而留在双向链表的实例则成了一个未定义的指针,从而会导致程序的崩溃。那么此接口则是用于在过滤模块销毁时从双向链表移除自身。具体的说包括如下步骤:
编写类ISafety的析构函数并且将自身从双向链表中移除。
~ISafety(){析构函数。
if(!destroyed()){如果此模块串联到了双向链表中。
prev_->next_=next_;将此实例的前一个模块与此实例的下一个模块链起来。
if(next_!=nullptr){next_->prev_=prev_;}并且修改下一个模块的前向指针为此模块的前一个模块。
在另一实施例中,还包括:编写弹幕模块和过滤模块来实现弹幕的过滤功能。
首先,构建一个弹幕模块的实例Danmu*objDanm=new Danmu();
接下来创建过滤模块,具体实际使用中可能会创建很多个过滤模块,并且不同的开发人员会依据不同的业务创建不同的过滤模块。本文的机制则保障了弹幕模块过滤模块互相都能够依据弹幕模块的实例是否存在而执行过滤功能,从而不会导致程序出现崩溃等问题。
ScoreCallback*filter1=new ScoreCallback(objDanm,objccall);
其中,ScoreCallback功能则是依据弹幕分值来过滤弹幕的功能。其中,参数objDanm则是弹幕模块的实例。其中,参数objccall则是使用具体的平台开发语言开发的过滤的具体功能。那么对应与本文的则是ios平台开发的objc语言开发的过滤功能,而对应与android平台是jni层调用 java代码实现的过滤功能。同样的方式可以增加更多的过滤模块。
XxxCallback*filterx=new xxxCallback(objDanm,objccall);其中,多个过滤模块需要使用一个弹幕实例objDanm。而底层机制会保障弹幕模块和所有过滤模块形成双向链表的模式来管理所有对象的生命周期。同时可以看到ScoreCallback实例和Danmu实例是互相分开,分别管理自己的对象生命周期。那么在执行过滤时,ScoreCallback封装了对弹幕模块的实例是否存在的判断功能,从而不会导致程序崩溃。
需要特别说明的是,通过封装过滤模块的过滤逻辑,能够保证过滤模块和弹幕莫鲁哀的的管理对象周期不同,并封装弹幕模块的判断功能,实现了避免程序崩溃的有益效果。
上面对本申请实施例中设置程序核心代码的保护方法进行了描述,下面对本申请实施例中的具有程序核心代码的保护功能的装置进行描述。
本发明实施例中还提供了跨平台安全过滤弹幕的装置的一个实施例,包括接收单元、弹幕单元、连接单元、创建单元、检查单元,接收单元用于建立接收通道,以接收弹幕信息,并能够将弹幕信息发送给服务器;弹幕单元用于创建弹幕模块;连接单元其用于建立链接通道,以使服务器与所述弹幕模块之间进行弹幕信息传递;创建单元用于在弹幕模块内建立多个相互关联的过滤模块;检查单元用于检查弹幕模块是否被销毁;若弹幕模块没有被销毁,过滤模块过滤所述弹幕信息;若弹幕模块被销毁,通知所述过滤模块,以防止程序崩溃,实现安全过滤弹幕。
图3从模块化功能实体的角度对本申请实施例中的跨平台安全过滤弹幕装置进行了描述,下面从硬件处理的角度对本申请实施例中的跨平台安全过滤弹幕进行详细描述,图4为本发明实施例提供的跨平台安全过滤弹幕的硬件结构示意图;请参阅图4,本发明实施例中推荐具有跨平台安全过滤弹幕 300为一个实施例,包括:
输入装置301、输出装置302、处理器303和存储器304(其中处理器303 的数量可以一个或多个,图3中以一个处理器303为例)。在本发明的一些实施例中,输入装置301、输出装置302、处理器303和存储器304可通过总线或其它方式连接,其中,图3中以通过总线连接为例。
其中,通过调用存储器304存储的操作指令,处理器303,用于执行如下步骤:
建立接收通道,以接收弹幕信息,并能够将所述弹幕信息发送给服务器;
创建弹幕模块;
并建立链接通道,以使所述服务器与所述弹幕模块之间进行弹幕信息传递;
在所述弹幕模块内建立多个相互关联的过滤模块;
并检查所述弹幕模块是否被销毁;
若所述弹幕模块没有被销毁,所述过滤模块过滤所述弹幕信息;
若所述弹幕模块被销毁,通知所述过滤模块,以防止程序崩溃,实现安全过滤弹幕。
通过调用存储器304存储的操作指令,处理器303,还用于执行图1-2对应的实施例中的任一方式。
图4为本发明实施例提供的一种可能的电子设备的实施例示意图,如图 4所示。
在另一实施例中,本发明还提供了一种电子设备,包括存储器410、处理器420及存储在存储器420上并可在处理器420上运行的计算机程序411,处理器420执行计算机程序411时实现以下步骤:
建立接收通道,以接收弹幕信息,并能够将所述弹幕信息发送给服务器;
创建弹幕模块;
并建立链接通道,以使所述服务器与所述弹幕模块之间进行弹幕信息传递;
在所述弹幕模块内建立多个相互关联的过滤模块;
并检查所述弹幕模块是否被销毁;
若所述弹幕模块没有被销毁,所述过滤模块过滤所述弹幕信息;
若所述弹幕模块被销毁,通知所述过滤模块,以防止程序崩溃,实现安全过滤弹幕。
在具体实施过程中,处理器420执行计算机程序411时,可以实现图1-4 对应的实施例中任一实施方式。
由于本实施例所介绍的电子设备为实施本发明实施例中一种具有程序核心代码的保护功能的装置所采用的设备,故而基于本发明实施例中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本发明实施例中的方法不再详细介绍,只要本领域所属技术人员实施本发明实施例中的方法所采用的设备,都属于本申请所欲保护的范围。
图5为本发明实施例提供的一种可能的计算机可读存储介质的实施例示意图,请参阅图5。
如图5所示,本实施例提供了一种计算机可读存储介质500,其上存储有计算机程序511,该计算机程序511被处理器执行时实现如下步骤:
通过状态机标记任一加载模块的加载状态,得到所述加载模块的状态机数据矩阵。
通过创建空线程事件,按照主程序运行的模块加载顺序将所述状态机数据矩阵填充到所述加载模块中,并在核心模块中存储所有加载模块的状态机数据矩阵。
建立运算规则将所述核心模块中的状态机数据矩阵运算得到矩阵结果数据,并将其作为验证数据,完成程序核心代码的保护。
在具体实施过程中,该计算机程序511被处理器执行时可以实现图1-2 对应的实施例中任一实施方式。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/ 或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,当计算机软件指令在处理设备上运行时,使得处理设备执行如图1-2对应实施例中的程序核心代码的保护方法中的流程。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如, DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例提供的一种程序核心代码的保护方法、装置、设备和存储介质,具有下列有益效果:通过将多个相互关联的过滤模块设置在弹幕模块内,并在弹幕模块被销毁时,通知所有过滤模块,以防止程序崩溃,实现安全过滤弹幕。
至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征做出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。

Claims (10)

1.一种跨平台安全过滤弹幕的方法,其特征在于,包括:
建立接收通道,以接收弹幕信息,并能够将所述弹幕信息发送给服务器;
创建弹幕模块;
并建立链接通道,以使所述服务器与所述弹幕模块之间进行弹幕信息传递;
在所述弹幕模块内建立多个相互关联的过滤模块;
并检查所述弹幕模块是否被销毁;
若所述弹幕模块没有被销毁,所述过滤模块过滤所述弹幕信息;
若所述弹幕模块被销毁,通知所述过滤模块,以防止程序崩溃,实现安全过滤弹幕。
2.根据权利要求1所述的跨平台安全过滤弹幕的方法,其特征在于,所述链接通道的建立,具体包括:
在所述弹幕模块中设置与所述服务器连接的网络套接字,
解析所述服务器传递给所述弹幕模块的数据信息;
根据所述数据信息的类型,区分出所述数据信息中的弹幕信息;
建立弹幕存储链表,以存储所述弹幕信息。
3.根据权利要求1或2所述的跨平台安全过滤弹幕的方法,其特征在于,所述多个相互关联的过滤模块的建立,具体包括:
建立多个过滤模块;
建立双向链表,以串联所有过滤模块;
编写析构函数,以检测所述弹幕模块是否被销毁;
在所述过滤模块中分别建立告知销毁接口;
并通过遍历所述双向链表,以将所述弹幕模块的销毁信息通知给所有过滤模块。
4.根据权利要求3所述的跨平台安全过滤弹幕的方法,其特征在于,所述过滤模块的建立,具体包括:
在上层业务层编写过滤逻辑;
编写回调类;
所述回调类内的成员变量包括弹幕模块函数、逻辑回调函数和检测函数;
其中,所述弹幕模块函数的成员变量为弹幕模块的实例句柄;所述逻辑回调函数的成员变量为上层业务层逻辑回调实例,以调用所述过滤逻辑;所述检测函数包括至少一个检测弹幕模块生命周期的成员变量。
5.根据权利要求4所述的跨平台安全过滤弹幕的方法,其特征在于,所述过滤逻辑的编写包括:
设置弹幕信息对应分值;
建立抽象过滤接口,重载所述回调类,以解析所述弹幕分值;
设定分值阈值,并销毁低于分值阈值的弹幕模块。
6.根据权利要求4所述的跨平台安全过滤弹幕的方法,其特征在于,所述双向链表的建立,具体包括:
定义前向链表指针和后向链表指针;
将所述弹幕模块和所述过滤模块作为所述双向链表的节点;
设定所述双向链表首节点的前向指针为执行所述弹幕模块实例句柄;
设定所述双向链表首节点的后向指针指向后一个节点;
其余节点的前向指针指向链表中前一个节点;
其余节点的后向指针指向后一个节点;
且当所述双向链表的任一节点被销毁时,将所述前向指针设置为空。
7.根据权利要求6所述的跨平台安全过滤弹幕的方法,其特征在于,还包括:
若检查到所述前向指针设置为空,所述弹幕模块的实例句柄或任一过滤模块被销毁;
移除所述弹幕模块的实例或任一过滤模块对应节点;
并获得所述弹幕模块的实例或任一过滤模块对应节点的下一节点和上一节点;
将所述下一节点的前向指针指向所述上一节点。
8.一种跨平台安全过滤弹幕的装置,其特征在于,包括:
接收单元,其用于建立接收通道,以接收弹幕信息,并能够将所述弹幕信息发送给服务器;
弹幕单元,其用于创建弹幕模块;
连接单元,其用于建立链接通道,以使所述服务器与所述弹幕模块之间进行弹幕信息传递;
创建单元,其用于在所述弹幕模块内建立多个相互关联的过滤模块;
检查单元,其用于检查所述弹幕模块是否被销毁;若所述弹幕模块没有被销毁,所述过滤模块过滤所述弹幕信息;若所述弹幕模块被销毁,通知所述过滤模块,以防止程序崩溃,实现安全过滤弹幕。
9.一种电子设备,包括应用处理器和存储器,其特征在于,所述处理器用于实现所述存储器中存储得计算机管理程序式时实现如权利要求1-7中任一项所述的跨平台安全过滤弹幕的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机管理类程序,其特征在于,所述计算机管理类程序被处理器执行时实现如权利要求1-7中任意一项所述的跨平台安全过滤弹幕的方法的步骤。
CN202110626851.7A 2021-06-04 2021-06-04 一种跨平台安全过滤弹幕的方法、装置、设备和存储介质 Pending CN115442635A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110626851.7A CN115442635A (zh) 2021-06-04 2021-06-04 一种跨平台安全过滤弹幕的方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110626851.7A CN115442635A (zh) 2021-06-04 2021-06-04 一种跨平台安全过滤弹幕的方法、装置、设备和存储介质

Publications (1)

Publication Number Publication Date
CN115442635A true CN115442635A (zh) 2022-12-06

Family

ID=84271662

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110626851.7A Pending CN115442635A (zh) 2021-06-04 2021-06-04 一种跨平台安全过滤弹幕的方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN115442635A (zh)

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120197944A1 (en) * 2011-01-31 2012-08-02 The Mathworks, Inc. System and method for determining an object's lifetime in an object oriented environment
CN103718154A (zh) * 2011-06-01 2014-04-09 施耐德电气It公司 用于执行设备控制的系统和方法
WO2018000661A1 (zh) * 2016-06-27 2018-01-04 乐视控股(北京)有限公司 弹幕显示方法及装置
US20180018206A1 (en) * 2016-07-14 2018-01-18 Microsoft Technology Licensing, Llc Workflow-based object destruction
CN108243346A (zh) * 2018-01-09 2018-07-03 武汉斗鱼网络科技有限公司 一种过滤弹幕信息的方法、服务器及计算机设备
CN108307244A (zh) * 2018-01-09 2018-07-20 武汉斗鱼网络科技有限公司 弹幕发言时间控制方法、存储介质、电子设备及系统
CN108600852A (zh) * 2018-04-28 2018-09-28 北京酷我科技有限公司 一种弹幕效果的实现方法
CN108810644A (zh) * 2018-06-28 2018-11-13 武汉斗鱼网络科技有限公司 弹幕消息分发方法、装置、设备及存储介质
CN108810633A (zh) * 2018-06-28 2018-11-13 武汉斗鱼网络科技有限公司 弹幕消息传输方法、装置、设备及存储介质
CN109005448A (zh) * 2018-06-28 2018-12-14 武汉斗鱼网络科技有限公司 弹幕消息分发方法、装置、设备及存储介质
WO2019007029A1 (zh) * 2017-07-04 2019-01-10 上海全土豆文化传播有限公司 一种弹幕信息的处理方法及客户端
CN109274988A (zh) * 2018-08-20 2019-01-25 武汉斗鱼网络科技有限公司 弹幕消息分发方法、装置、设备及存储介质
CN109327726A (zh) * 2018-09-30 2019-02-12 武汉斗鱼网络科技有限公司 一种弹幕消息的处理方法、装置、终端和存储介质
CN110662089A (zh) * 2018-06-29 2020-01-07 武汉斗鱼网络科技有限公司 弹幕接收处理方法、存储介质、电子设备及系统
CN110896493A (zh) * 2018-09-13 2020-03-20 武汉斗鱼网络科技有限公司 一种链接弹幕的方法及移动终端
CN110968279A (zh) * 2018-09-30 2020-04-07 武汉斗鱼网络科技有限公司 一种消息的降级方法及相关装置

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120197944A1 (en) * 2011-01-31 2012-08-02 The Mathworks, Inc. System and method for determining an object's lifetime in an object oriented environment
CN103718154A (zh) * 2011-06-01 2014-04-09 施耐德电气It公司 用于执行设备控制的系统和方法
WO2018000661A1 (zh) * 2016-06-27 2018-01-04 乐视控股(北京)有限公司 弹幕显示方法及装置
US20180018206A1 (en) * 2016-07-14 2018-01-18 Microsoft Technology Licensing, Llc Workflow-based object destruction
WO2019007029A1 (zh) * 2017-07-04 2019-01-10 上海全土豆文化传播有限公司 一种弹幕信息的处理方法及客户端
CN108243346A (zh) * 2018-01-09 2018-07-03 武汉斗鱼网络科技有限公司 一种过滤弹幕信息的方法、服务器及计算机设备
CN108307244A (zh) * 2018-01-09 2018-07-20 武汉斗鱼网络科技有限公司 弹幕发言时间控制方法、存储介质、电子设备及系统
CN108600852A (zh) * 2018-04-28 2018-09-28 北京酷我科技有限公司 一种弹幕效果的实现方法
CN108810633A (zh) * 2018-06-28 2018-11-13 武汉斗鱼网络科技有限公司 弹幕消息传输方法、装置、设备及存储介质
CN109005448A (zh) * 2018-06-28 2018-12-14 武汉斗鱼网络科技有限公司 弹幕消息分发方法、装置、设备及存储介质
CN108810644A (zh) * 2018-06-28 2018-11-13 武汉斗鱼网络科技有限公司 弹幕消息分发方法、装置、设备及存储介质
CN110662089A (zh) * 2018-06-29 2020-01-07 武汉斗鱼网络科技有限公司 弹幕接收处理方法、存储介质、电子设备及系统
CN109274988A (zh) * 2018-08-20 2019-01-25 武汉斗鱼网络科技有限公司 弹幕消息分发方法、装置、设备及存储介质
CN110896493A (zh) * 2018-09-13 2020-03-20 武汉斗鱼网络科技有限公司 一种链接弹幕的方法及移动终端
CN109327726A (zh) * 2018-09-30 2019-02-12 武汉斗鱼网络科技有限公司 一种弹幕消息的处理方法、装置、终端和存储介质
CN110968279A (zh) * 2018-09-30 2020-04-07 武汉斗鱼网络科技有限公司 一种消息的降级方法及相关装置

Similar Documents

Publication Publication Date Title
US9344381B2 (en) Event management in a distributed processing system
CN108197032B (zh) Ios应用的主线程卡顿监测方法、介质、设备及系统
US8499203B2 (en) Configurable alert delivery in a distributed processing system
CN104205109A (zh) 持续性和弹性的工作者进程
CN108572898B (zh) 一种控制接口的方法、装置、设备、以及存储介质
CN105512015A (zh) 一种安卓目标应用崩溃统计方法和装置
EP3552107B1 (en) Device driver telemetry
CN101414328B (zh) 一种用于对文件进行脱壳的装置和方法
CN115185777A (zh) 一种异常检测方法、装置、可读存储介质以及电子设备
CN107423090B (zh) 一种Flash播放器异常日志管理方法及系统
CN110851294B (zh) 一种程序运行崩溃补救的方法及装置
CN102650964B (zh) 用于监控面向对象的应用的方法、系统和自监控系统
CN105843675B (zh) 线程退出方法和装置
CN106603428A (zh) 一种消息队列保护方法及装置
CN107741891B (zh) 对象的析构方法、介质、装置和计算设备
CN115442635A (zh) 一种跨平台安全过滤弹幕的方法、装置、设备和存储介质
CN112749050B (zh) 基于微服务框架的安全断路方法、装置及计算设备
CN102937934A (zh) 通过动态的语言引擎捕捉遥测数据
CN116431344A (zh) 金融服务资源降级策略的配置方法及其装置、电子设备
JP2010009127A (ja) 管理プログラムおよび管理装置
CN109062689B (zh) 自动释放文件资源的方法、存储介质、电子设备以及系统
CN107870777A (zh) 一种热补丁实现方法及装置、终端
CN107678928B (zh) 应用程序的处理方法及服务器
CN110837431A (zh) 服务控制方法、装置、计算机设备及计算机可读存储介质
CN114756400B (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