一种带有可变唯一值的实体缓存方法及装置制造方法及图纸

技术编号:9826443 阅读:70 留言:0更新日期:2014-04-01 15:50
本发明专利技术公开了一种带有可变唯一值的实体缓存方法及装置,所述方法包括:新建一个用于缓存实体的实体缓存Java类,让其组合一个哈希映射HashMap对象;新建一个与实体相对应的实体Java类,并设置该实体Java类为被观察者;设置实体缓存Java类为观察者,以使得用户通过实体Java类进行实体更新时,拥有实体的Map能够根据实体更新过的唯一值来更新键值。本发明专利技术由于使用Map对实体进行缓存,因此通过唯一值对实体进行查找的时候,其时间复杂度将大大降低,并且当实体的唯一值发生改变的时候,持有该实体的Map能够自动的将新的唯一值更新成新的键值,其既满足了实体缓存的需求,同时也极大的提高了系统的运行效率。

【技术实现步骤摘要】
一种带有可变唯一值的实体缓存方法及装置
本专利技术涉及Java程序开发领域,更具体地说,涉及一种利用Map进行带有可变唯一值的实体缓存方法及装置。
技术介绍
在Java中,线性链表List和映射表Map(其为一种键值映射)都是Java中用来存储对象的集合,不同之处是,List存储的是一个一个的对象,而Map存储的是一个个的键值(Key-Value)对,并且所述键具有唯一值。当系统频繁访问某些实体数据(比如该实体为用户信息)的时候,为了避免每次都进行数据库的访问或者数据文件的读取,常常需要将这些实体数据用一个全局的静态数据进行缓存。另外,实际应用当中,由于有时需要对实体数据信息进行更新操作,例如有时需要更新实体的唯一值,如用户更新其用户登录名,此时虽然实体的唯一值发生了改变,但是实体对应的键值并没有改变。目前,常常使用List来对这些实体数据进行缓存,在实际应用当中,当需要查找某个实体信息的时候,往往需要对List进行遍历查找,通过查找的唯一值条件跟遍历出来的实体数据进行比对,若匹配就算查找到。然而,由于每次查找实体都需要遍历循环,导致其性能较为低下,尤其当需要查找的实体位于List的最后一个位置时,系统则需要遍历n次(其中,n等于集合的长度),更甚者,当缓存的实体比较多,以致集合比较长,且查找比较频繁的时候,采用该方法进行实体缓存将会存在严重的性能问题。
技术实现思路
观察者模式是一种一对多的对应关系,当一个对象发生改变的时候,多个对象自发的发生改变。本专利技术即基于观察者模式的设计思想,用Map去监控实体的改变:当实体的唯一值发生改变之后,存储该实体的多个Map自发的更新键值,这样既能适应实体的变化,又能使通过唯一值进行实体查找的时间长度大大降低,即不需要遍历循环就可以直接取出所需要的实体对象,能够极大的提高系统的运行效率。鉴于此,本专利技术提供了一种带有可变唯一值的实体缓存方法及装置。为了达到本专利技术的目的,本专利技术采用以下技术方案实现:一种带有可变唯一值的实体缓存方法,包括:新建一个用于缓存实体的实体缓存Java类,让其组合一个哈希映射HashMap对象,其中,所述实体缓存Java类还用于对实体对象进行更新操作,并将实体的更新操作委托给哈希映射HashMap对象去执行;新建一个与实体相对应的实体Java类,并设置该实体Java类为被观察者;设置实体缓存Java类为观察者,以使得用户通过实体Java类进行实体更新时,拥有实体的Map能够根据实体更新过的唯一值来更新键值。优选地,所述更新操作包括增、删、查操作。优选地,设置所述实体Java类为被观察者的方法为:让实体Java类继承Java开发环境JDK提供的Observable类,或者设置实体Java类成为Observable子类。优选地,当实体更新时,拥有实体的Map能够根据实体更新过的唯一值来更新键值的方法包括:在新增实体时,实体缓存Java类将自身注册为实体的观察者;或者,在删除实体时,实体缓存Java类将自身从实体的观察者队列中移除。优选地,当实体更新时,拥有实体的Map能够根据实体更新过的唯一值来更新键值的方法包括:当用户更新实体唯一值时,先标记改变,并将唯一值信息更新通知给所有缓存了该实体的实体缓存Java类;实体缓存Java类作为观察者收到唯一值信息更新通知之后,据此更新与该实体所对应的键值。优选地,所述更新与实体所对应的键值的方法为:获取之前存储的实体的历史唯一值;依据该历史唯一值作为键值将实体删除;依据实体新的唯一值作为键值对实体进行键值更新并存储。一种带有可变唯一值的实体缓存装置,包括:第一处理模块,用于新建一个用于缓存实体的实体缓存Java类,让其组合一个哈希映射HashMap对象,其中,所述实体缓存Java类还用于对实体对象进行更新操作,并将实体的更新操作委托给哈希映射HashMap对象去执行;第二处理模块,用于新建一个与实体相对应的实体Java类,并设置该实体Java类为被观察者;第三处理模块,用于设置实体缓存Java类为观察者,以使得用户通过实体Java类进行实体更新时,拥有实体的Map能够根据实体更新过的唯一值来更新键值。优选地,所述更新操作包括增、删、查操作。优选地,第二处理模块设置所述实体Java类为被观察者的方法为:让实体Java类继承Java开发环境JDK提供的Observable类,或者设置实体Java类成为Observable子类。优选地,当实体更新时,拥有实体的Map能够根据实体更新过的唯一值来更新键值的方法包括:在新增实体时,实体缓存Java类将自身注册为实体的观察者;或者,在删除实体时,实体缓存Java类将自身从实体的观察者队列中移除。优选地,当实体更新时,拥有实体的Map能够根据实体更新过的唯一值来更新键值的方法包括:当用户更新实体唯一值时,先标记改变,并将唯一值信息更新通知给所有缓存了该实体的实体缓存Java类;实体缓存Java类作为观察者收到唯一值信息更新通知之后,据此更新与该实体所对应的键值。优选地,所述更新与实体所对应的键值的方法为:获取之前存储的实体的历史唯一值;依据该历史唯一值作为键值将实体删除;依据实体新的唯一值作为键值对实体进行键值更新并存储。通过上述本专利技术的技术方案可以看出,在本专利技术中,由于使用Map对实体进行缓存,因此通过唯一值对实体进行查找的时候,其时间复杂度将大大降低,并且当实体的唯一值发生改变的时候,持有该实体的Map能够自动的将新的唯一值更新成新的键值,其既满足了实体缓存的需求,同时也极大的提高了系统的运行效率。附图说明图1为本专利技术实施例提供的带有可变唯一值的实体缓存方法流程示意图;图2为本专利技术实施例提供的带有可变唯一值的实体缓存装置结构示意图;图3为本专利技术实施例提供的实体更新流程示意图;图4为本专利技术实施例提供的实体缓存和更新的类的UML(UnifiedModelingLanguage,统一建模语言或标准建模语言)图。本专利技术目的的实现、功能特点及优异效果,下面将结合具体实施例以及附图做进一步的说明。具体实施方式下面结合附图和具体实施例对本专利技术所述技术方案作进一步的详细描述,以使本领域的技术人员可以更好的理解本专利技术并能予以实施,但所举实施例不作为对本专利技术的限定。如图1所示,本专利技术实施例提供了一种带有可变唯一值的实体缓存方法,其包括如下步骤:S10、新建一个用于缓存实体的实体缓存Java类,让其组合一个哈希映射HashMap对象,其中,所述哈希映射HashMap对象为基于哈希表的Map接口的实现,所述实体缓存Java类还用于对实体对象进行更新操作,并将实体的更新操作委托给哈希映射HashMap对象去执行。例如,在本实施例中,所述更新操作包括增、删、查操作,该实体缓存Java类用来增、删、查实体对象,同时将实体的增、删、查委托给哈希映射HashMap去执行;S20、新建一个与实体相对应的实体Java类,并设置该实体Java类为被观察者;在该步骤中,由于JDK(Java开发环境)提供了对观察者模式的支持,我们只需要让实体Java类继承Java开发环境JDK提供的Observable类,或者设置实体Java类成为Observable子类,该实体Java就是可被观察的;S30、设置实体缓存J本文档来自技高网...
一种带有可变唯一值的实体缓存方法及装置

【技术保护点】
一种带有可变唯一值的实体缓存方法,其特征在于,包括:新建一个用于缓存实体的实体缓存Java类,让其组合一个哈希映射HashMap对象,其中,所述实体缓存Java类还用于对实体对象进行更新操作,并将实体的更新操作委托给哈希映射HashMap对象去执行;新建一个与实体相对应的实体Java类,并设置该实体Java类为被观察者;设置实体缓存Java类为观察者,以使得用户通过实体Java类进行实体更新时,拥有实体的Map能够根据实体更新过的唯一值来更新键值。

【技术特征摘要】
1.一种带有可变唯一值的实体缓存方法,其特征在于,包括:新建一个用于缓存实体的实体缓存Java类,让其组合一个哈希映射HashMap对象,其中,所述实体缓存Java类还用于对实体对象进行更新操作,并将实体的更新操作委托给哈希映射HashMap对象去执行;新建一个与实体相对应的实体Java类,并设置该实体Java类为被观察者;设置实体缓存Java类为观察者,以使得用户通过实体Java类进行实体更新时,拥有实体的Map能够根据实体更新过的唯一值来更新键值;所述更新操作包括增、删、查操作;当实体更新时,拥有实体的Map能够根据实体更新过的唯一值来更新键值的方法包括:在新增实体时,实体缓存Java类将自身注册为实体的观察者;或者,在删除实体时,实体缓存Java类将自身从实体的观察者队列中移除。2.如权利要求1所述的带有可变唯一值的实体缓存方法,其特征在于,设置所述实体Java类为被观察者的方法为:让实体Java类继承Java开发环境JDK提供的Observable类,或者设置实体Java类成为Observable子类。3.如权利要求1所述的带有可变唯一值的实体缓存方法,其特征在于,当实体更新时,拥有实体的Map能够根据实体更新过的唯一值来更新键值的方法包括:当用户更新实体唯一值时,先标记改变,并将唯一值信息更新通知给所有缓存了该实体的实体缓存Java类;实体缓存Java类作为观察者收到唯一值信息更新通知之后,据此更新与该实体所对应的键值。4.如权利要求3所述的带有可变唯一值的实体缓存方法,其特征在于,更新与实体所对应的键值的方法为:获取之前存储的实体的历史唯一值;依据该历史唯一值作为键值将实体删除;依据实体新的唯一值作为键值对实体进行键值更新并存储。5.一种带有可变唯一值的实体缓存...

【专利技术属性】
技术研发人员:张雪林万正冲
申请(专利权)人:深圳中兴力维技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1