首页 > 编程知识 正文

disruptor使用,hbase scan

时间:2023-05-04 08:37:00 阅读:135024 作者:1101

LRU的基本概念: LRU是Least Recently Used的缩写,最近最少使用算法。

Java实现LRUCache 1,并基于LRU的基本概念,您可以选择HashMap子类以按最近最不活动的顺序进行排序

使用链接hashmap作为LRUCache的存储容器。

2、链接hashmap原理:

答:对于链接的HashMap,继承为HashMap,并使用哈希表和双向链表保存所有元素。 其基本操作与父类的HashMap类似,它通过重写与父类相关的方法来实现自己的链接列表属性。 HashMap是单链表,链接HashMap是双向链表

b、存储:链接HashMap不重写父类HashMap的put方法,而是由父类HashMap的put方法调用的子方法voidrecordaccess(Hashmapm )、VoIP 重写K key )的int bucketIndex (和voidcreateentry ) inthash,K key,V value,int bucketIndex )提供了独特的双向链路列表的实现。

c、装入:链接HashMap重写父类HashMap的get方法,实际上调用父类的getEntry )方法获取检索到的元素,如果排序模式accessOrder为true,则为accessOrder 的链表的添加、删除操作是常数级别的,所以不会损失性能。

LRUCache的简单实现package com.knowledgestudy.lrucache; import java.util.ArrayList; import java.util.Collection; import java.util.LinkedHashMap; import java.util.Map; /** *固定大小的LRUCachebr *线程安全/** *公共类lrucachek,v { privatestaticfinalfloatfactor=0.75 f; //扩增因子private MapK,V map; //数据存储容器专用缓存; //高速缓存大小publiclrucache(intcachesize ) { this.cacheSize=cacheSize; intcapacity=(int ) math.ceil (cachesize/factor ) 1; map=new LinkedHashMapK,v(capacity,factor,true ) { privatestaticfinallongserialversionuid=1l;/* * *链接hashmap的removeEldestEntry ()固定表的链表长度(* */@ overrideprotectedbooleanremoveeldestentry ) ) map.end }; }/***key至value * * @ param key * @ return value * */publicsynchronizedvget (kkey ) returnmap.get ) key ); } /** * put个key-V value * * @ param key * value * */publicsynchronizedvoidput (kkey,V value ) ) map.put ) key,value } /** *清空缓存**/public synchronized void clear () { map.clear; } /** *已使用的缓存大小* */publicsynchronizedintcachesize ({ returnmap.size ); } /** *缓存中的所有键值对* */publicsynchronizedcollectionmap.entryk,V getAll () ({ return new ArrayListMap.EntryK,v

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。