一种多对象缓存方法、终端装置及存储介质与流程

文档序号:16247800发布日期:2018-12-11 23:44阅读:113来源:国知局
一种多对象缓存方法、终端装置及存储介质与流程

本发明涉及软件开发领域,尤其涉及一种多对象缓存方法、终端装置及存储介质。

背景技术

我们在观看直播过程中,为了保证数据的实时性和占用过大存储空间,往往会用到缓存技术,在不同的直播间会有各种各样的缓存数据信息,这些缓存的数据信息有时会串直播间出现,干扰直播数据的正常显示。

目前,针对这类脏数据或者串直播间数据,常常会在每个直播间采用一套单独的缓存数据管理方法,即使用单例模式实现对象缓存。这种方式不仅会造成大量的代码冗余,而且业务逻辑不能共用,致使维护起来非常不便。



技术实现要素:

有鉴于此,本发明实施例提供了一种多对象缓存方法、终端装置及存储介质,以代码冗余、维护难度大的问题。

本发明实施例的第一方面,提供了一种多对象缓存方法,包括:

定义一个数据缓存类,并在所述数据缓存类中实例化所述数据缓存类;

当调用所述数据缓存类的实例对象时,判断需要获取的实例对象的类型并返回对应实例对象;

通过所述实例对象,向预定义集合对象中存入或从预定义集合对象中取出对应的缓存数据,其中,所述集合对象为hashmap类的实例。

本发明实施例的第二方面,提供了一种多对象缓存终端装置,包括:

定义模块:用于定义一个数据缓存类,并在所述数据缓存类中实例化所述数据缓存类;

判断模块:用于当调用所述数据缓存类的实例对象时,判断需要获取的实例对象的类型并返回对应实例对象;

存取模块:用于通过所述实例对象,向预定义集合对象中存入或从预定义集合对象中取出对应的缓存数据,其中,所述集合对象为hashmap类的实例。

本发明实施例的第三方面,提供了一种终端装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明实施例第一方面所述方法的步骤。

本发明实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例第一方面提供的所述方法的步骤。

本发明实施例的第五方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被一个或多个处理器执行时实现本发明实施例第一方面提供的所述方法的步骤。

本发明实施例中,通过定义数据缓存类,当实例化该类不同的对象时,能够判断并返回不同的实例对象,通过这些实例对象就能分别存取对应的缓存数据,这样就可以大大减少代码的冗余,并使得所有实例对象共用一套逻辑缓存数据,避免“脏数据”的出现,同时便于维护。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的多对象缓存方法的一个实施例流程图;

图2为本发明实施例提供的多对象缓存方法的另一个实施例流程图;

图3为本发明实施例提供的网络性能参数采集终端装置的结构示意图;

图4为本发明实施例提供的终端装置的结构示意图。

具体实施方式

本发明实施例提供了一种多对象缓存方法、终端装置及存储介质,用于直播数据缓存,解决串直播间“脏数据”问题。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

实施例一:

请参阅图1,本发明实施例提供的多对象缓存方法的流程示意图,包括以下步骤:

s101、定义一个数据缓存类,并在所述数据缓存类中实例化所述数据缓存类;

所述数据缓存类用于处理数据缓存,当需要进行数据缓存时,调用该类及其中的类方法,且该类一般定义为public方便调用。在所述数据缓存类中实例化该类,这样得到的实例对象信息就能封装起来,外部程序需要调用该类的对象时,通过数据缓存类中定义的对象获取方法返回给外部调用者。

在本发明实施例中,所述数据缓存类还包括构造方法和hashmap类型的集合对象。hashmap类型数据一般为键值对应的结构,定义hashmap类型的集合对象,可以通过键值关系方便存储和取出缓存,便于数据管理。

可选的,在所述数据缓存类中定义获取对象的类方法,所述类方法用于根据传入的整型数据,返回对应的实例对象。所述类方法可以反馈给外部调用者需要调用的对象,通过对已经实例过的对象进行区分,就能实现不同对象处理不同的缓存任务,且不会相互干扰。

s102、当调用所述数据缓存类的实例对象时,判断需要获取的实例对象的类型并返回对应实例对象;

当调用所述数据缓存类,获取需要的实例对象时,通过预定义的对象获取函数判断需要获取的实例对象的类型,并返回该实例对象。所述调用的主体一般为外部的程序,当程序发出缓存命令后,会通过特定的对象执行缓存操作。在本发明实施例中,在创建数据缓存类的实例后,区分不同的实例,返回对应的实例对象,就可以让该实例对象执行对应的缓存任务。

可选的,当不存在对应的实例对象时,调用synchronized修饰所述数据缓存类,并实例化所述数据缓存类以得到所述对应的实例对象。所述synchronized方法用于为实例化数据缓存类进程加锁,防止多个线程同步实例化,保证每次只有一个进程进行进行实例化操作。

可选的,通过同步代码块校验后,判断所述对应的实例对象是否已被实例化,当判定已被实例化后,返回所述对应的实例对象,当所述对应的实例对象未被实例化,则调用所述数据缓存类的构造方法,对所述对应的实例对象进行实例化。

s103、通过所述实例对象,向预定义集合对象中存入或从预定义集合对象中取出对应的缓存数据,其中,所述集合对象为hashmap类的实例。

每一个数据缓存类的实例对象,都会执行对应的数据缓存,该数据缓存包括对数据的存入和取出。所述集合对象为hashmap类的实例,具有hashmap的属性。缓存数据就存放在该集合对象中,按键值对应的关系存放数据。每个数据缓存类的实例对象对应一种类型的数据的存入或取出操作,通过为所述实例对象提供键,使其操作集合对象中的数据。

可选的,定义hashmap类型的集合对象,将所述集合对象的键设定为string类型,将值设定为object类型,并分别定义所述集合对象的数据存入方法和取出方法。

以上,通过区分实例对象的类型,并返回。能够在实例化多个数据缓存类时,对多个对象进行区分,这样多个对象既可以共用一套处理逻辑,而且能够减少代码的冗余。

实施例二:

在图1的基础上,以程序编码为例,结合图2详述多对象缓存方法的具体实现过程,如下:

s201中,定义一个类名为datemanager的数据缓存类,访问权限为public,方便调用。

在s202中,定义类datemanager的实例对象,所述实例对象可以为多个。每个实例对象能够单独进行缓存任务,且对象间不会相互影响。具体的定义一个对象,例如:privatestaticvolatiledatamanagerinstance1。这里定义为private属性能够封装对象信息,使得外部只能通过自定义的对象获取函数才能获取到对象信息。

通过s203定义的对象获取函数,来区分不同的实例对象,能够使得所述实例对象能够共用一套逻辑。具体的,定义方法为:publicstaticgetdatemanager(typetype){}。这里将该函数设定为static类型,可以方便调用者通过类名调用。传入参数type为自定义的数据类型,该数据类型中有且仅有的一个字段为int类型的数据type,该整型的数据可用于区分不同的实例对象,如:当

在所述对象获取函数中,首先调用type类中的gettype()函数获取当前需要获取的实例对象类型,并对获取到类型信息标记为targettype。

若targettype=1,则返回对应的对象instance1,当instance1==null时,需要对数据缓存类的实例化进行同步操作,避免在多线程时致使多个instance1对象被创建。具体的,调用synchronize修饰datemanager类,由于datamanager.class对象仅有一个,这样在多线程情况下,只有一个能够获取到锁信息,进而进行instance1的实例化操作。

上述进行同步代码块校验之后,继续对instance1的判空,若不为空则返回该对象,若为空,则调用datamanager的构造方法进行实例化操作。

在该对象获取函数中通过获取对不同需要调用对象的类型,返回对应的实例对象,这样就能将datamanager类中实例的对象信息反馈给外部调用者。

datamanager类的实例对象会对缓存数据进行操作,通过s204定义一个用于存储管理缓存数据的集合对象,具体定义一个全局的集合对象如下:privatehashmap<string,object>datamap。

hashmap类型的数据是基于键值关联结构,基于同类型的键可实现数据直接覆盖原有的缓存数据,便于维护。在本发明实施例中,将键设为string类型,将值设为object类型,object类型能够存储各种类型的缓存数据。

在s205中,定义一个数据缓存函数setdata(map<string,object>data),用于存储map对象数据,存储前对datamap判空处理。

通过调用datamap对象中的datamap.put(data)方法将缓存数据存到datamap对象中。

同样的,定义一个数据获取函数setdata(stringkey),通过key查找获取datamap对象中的缓存数据。

查找时,需要预先判断key及datamap是否为空。如果均不为空,则可以通过datamap对象中的datamap.contains(key)函数查询对应的缓存数据。

在s205中定义的存取方法,使得实例对象可以对缓存池中的缓存数据进行存取操作,这样就可以让不同对象执行缓存操作。

实施例三:

上面主要描述了一种多对象缓存方法,下面将对一种多对象缓存的终端装置进行详细描述。

图3示出了本发明实施例提供的多对象缓存终端装置的结构示意图,包括:

定义模块310:用于定义一个数据缓存类,并在所述数据缓存类中实例化所述数据缓存类;

所述数据缓存类用于处理数据缓存,当需要进行数据缓存时,调用该类及其中的类方法,且该类一般定义为public方便调用。在所述数据缓存类中实例化该类,这样得到的实例对象信息就能封装起来,外部程序需要调用该类的对象时,通过数据缓存类中定义的对象获取方法返回给外部调用者

可选的,所述定义模块310包括:

定义单元:用于在所述数据缓存类中定义获取对象的类方法,所述类方法用于根据传入的整型数据,返回对应的实例对象。

判断模块320:用于当调用所述数据缓存类的实例对象时,判断需要获取的实例对象的类型并返回对应实例对象;

在判断模块中,进行实例对象的区分,在对数据缓存类实例化得到多个对象时,区分不同对象返回给调用者,这样对象信息可以被封装起来,每次调用者调用,返回一个对象,各对象之间不发生干扰,不用像在单例模式下每次去实例化操作,大大减少了代码冗余。

可选的,所述判断模块320还包括:

同步单元:用于当不存在对应的实例对象时,调用synchronized修饰所述数据缓存类,并实例化所述数据缓存类以得到所述对应的实例对象。所述synchronized方法用于为实例化数据缓存类进程加锁,防止多个线程同步实例化,保证每次只有一个进程进行进行实例化操作。

判定单元:用于通过同步代码块校验后,判断所述对应的实例对象是否已被实例化,当判定已被实例化后,返回所述对应的实例对象,当所述对应的实例对象未被实例化,则调用所述数据缓存类的构造方法,对所述对应的实例对象进行实例化。

存取模块330:用于通过所述实例对象,向预定义集合对象中存入或从预定义集合对象中取出对应的缓存数据,其中,所述集合对象为hashmap类的实例。

每一个数据缓存类的实例对象,都会执行对应的数据缓存,该数据缓存包括对数据的存入和取出。所述集合对象为hashmap类的实例,具有hashmap的属性。缓存数据就存放在该集合对象中,按键值对应的关系存放数据。每个数据缓存类的实例对象对应一种类型的数据的存入或取出操作,通过为所述实例对象提供键,使其操作集合对象中的数据。

可选的,所述存取模块330还包括:

定义单元:定义hashmap类型的集合对象,将所述集合对象的键设定为string类型,将值设定为object类型,并分别定义所述集合对象的数据存入方法和取出方法。

实施例四:

图4是本发明一实施例提供的多对象缓存的终端设备的结构示意图。所述终端设备,为具备触摸屏的移动计算机设备,包括但不限于智能手机、智能手表、笔记本、平板电脑、pos机甚至包括车载电脑。如图4所示,该实施例的终端设备4包括:存储器410、处理器420,所述存储器410包括存储其上的可运行的程序4101,本领域技术人员可以理解,图4中示出的终端设备结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

下面结合图4对终端设备的各个构成部件进行具体的介绍:

存储器410可用于存储软件程序以及模块,处理器420通过运行存储在存储器410的软件程序以及模块,从而执行终端的各种功能应用以及数据处理。存储器410可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器410可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

在存储器410上包含项目工程初始化的方法的可运行程序4101,所述可运行程序4101可以被分割成一个或多个模块/单元,所述一个或多个模块/单元被存储在所述存储器410中,并由处理器420执行,以完成通知的传递并获取通知实现过程,所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序4101在所述终端设备4中的执行过程。例如,所述计算机程序4101可以被分割为定义模块、判断模块、存取模块。

处理器420是终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分,通过运行或执行存储在存储器410内的软件程序和/或模块,以及调用存储在存储器410内的数据,执行终端的各种功能和处理数据,从而对终端进行整体监控。可选的,处理器420可包括一个或多个处理单元;优选的,处理器420可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器420中。

终端设备还可包括至少一种传感器,比如光传感器、运动传感器以及其他传感器,一种输入设备,比如触摸屏、键盘及其他,一种输出设备,比如扬声器、显示器及其他,可选的,在本发明实施例中,输入设备可用于输入指令,创建自定义文件,输出设备可用于显示脚本执行结果,向用户展示创建生成的文件。其他构成部件在此不再赘述。

在本发明实施例中,该终端所包括的处理器420执行的可运行程序具体为:

一种多对象缓存方法,包括:

定义一个数据缓存类,并在所述数据缓存类中实例化所述数据缓存类;

当调用所述数据缓存类的实例对象时,判断需要获取的实例对象的类型并返回对应实例对象;

通过所述实例对象,向预定义集合对象中存入或从预定义集合对象中取出对应的缓存数据,其中,所述集合对象为hashmap类的实例。

进一步的,所述定义一个数据缓存类,并在所述数据缓存类中实例化所述数据缓存类还包括:

在所述数据缓存类中定义获取对象的类方法,所述类方法用于根据传入的整型数据,返回对应的实例对象。

进一步的,所述判断需要获取的实例对象的类型并返回对应实例对象还包括:

当不存在对应的实例对象时,调用synchronized修饰所述数据缓存类,并实例化所述数据缓存类以得到所述对应的实例对象。

进一步的,所述当不存在对应的实例对象时,调用synchronized修饰所述数据缓存类,并实例化所述数据缓存类以得到所述对应的实例对象还包括:

通过同步代码块校验后,判断所述对应的实例对象是否已被实例化,当判定已被实例化后,返回所述对应的实例对象,当所述对应的实例对象未被实例化,则调用所述数据缓存类的构造方法,对所述对应的实例对象进行实例化。

进一步的,所述通过所述实例对象,向预定义集合对象中存入或从预定义集

合对象中取出对应的缓存数据之前还包括:

定义hashmap类型的集合对象,将所述集合对象的键设定为string类型,将值设定为object类型,并分别定义所述集合对象的数据存入方法和取出方法。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实施例的模块、单元和/或方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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