- 浏览: 1236111 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (242)
- java (58)
- netty (14)
- javascript (21)
- commons (13)
- 读书笔记 (5)
- java测试 (6)
- database (5)
- struts2 (8)
- hibernate (6)
- english (27)
- spring (10)
- 生活 (4)
- 多线程 (4)
- 正则表达式 (1)
- 杂项 (1)
- maven (4)
- 数据库 (10)
- 学习笔记 (1)
- mongodb (1)
- 百度bcs (4)
- 云推送javasdk (2)
- webservice (3)
- IllegalAnnotationException: Two classes have the same XML type name (0)
- drools (3)
- freemarker (3)
- tomcat (1)
- html5 (2)
- mq (11)
- fastjson (3)
- 小算法 (2)
最新评论
-
longxitian:
https://www.cnblogs.com/jeffen/ ...
万恶的Mybatis的EnumTypeHandler -
asialee:
ddnzero 写道博主请问FileUtils这个类是哪个包的 ...
使用mockftpserver进行ftp测试 -
ddnzero:
博主请问FileUtils这个类是哪个包的?还是自己的呢?能放 ...
使用mockftpserver进行ftp测试 -
yizishou:
为什么会intMap.get("bbb") ...
浅谈System.identityHashCode -
liguanqun811:
感觉LogManager打开了所有的LogSegment(文件 ...
jafka学习之LogManager
我写的一个LRUCache的实现
import java.util.Hashtable; public class LRUCache { class CacheNode { CacheNode prev; CacheNode next; Object key; Object value; } private int cacheSize; private int currentSize; private Hashtable<Object,CacheNode> nodes; private CacheNode first; private CacheNode last; public LRUCache(){} public LRUCache(int size){ this.cacheSize = size; this.nodes = new Hashtable<Object,CacheNode>(size); this.currentSize = 0; } public void moveToHead(CacheNode node){ if(first == node){ return; } if(node.prev != null){ node.prev = node.prev.next; } if(node.next != null){ node.next.prev = node.prev; } if(last == node){ last = node.prev; } if(first != null){ first.prev = node; node.next = first; } first = node; node.prev = null; if(last == null){ last = first; } } public void removeLast(){ if(last != null){ if(last.prev != null){ last.prev.next = null; } else { first = null; } last = last.prev; nodes.remove(last.key); currentSize--; } } public void put(Object key, Object value){ CacheNode node = nodes.get(key); if(node == null){ if(currentSize >= cacheSize){ if(last != null){ nodes.remove(key); } removeLast(); } else { currentSize++; } node = new CacheNode(); } node.key = key; node.value = value; moveToHead(node); nodes.put(key, node); } public Object get(Object key){ CacheNode node = nodes.get(key); if(node != null){ moveToHead(node); return node.value ; } return null; } public Object remove(Object key){ CacheNode node = nodes.get(key); if(node != null){ if(node.prev != null){ node.prev.next = node.next; } else { first = null; } if(node.next != null){ node.next.prev = node.prev; } if(first == node){ first = node.next; } if(last == node){ last = node.prev; } nodes.remove(key); currentSize--; return node.value; } return null; } }
发表评论
-
maven的system scope的依赖在打包的时候不出现在lib里面的解决
2017-09-20 11:21 0上周遇到一个问题,一个sytem scope的依赖,在导出的 ... -
JAVA静态代码块
2015-04-07 16:26 2034今天遇到下面的代码 ... -
StringUtils.repeat函数赏析与疑问
2014-09-01 18:43 6090今天实现一个字符串拼接的一个需求,比如: ... -
java服务的培训ppt
2014-08-30 23:01 1582给应届生培训java web 服 ... -
给新人制定的java学习计划
2014-08-30 22:52 2499花了一点时间,给团队应届生和实习生制定 ... -
获取手机的mac地址
2014-04-10 22:20 3405与IP不同,MAC是指连接WIFI使用的无线网卡的物理地址, ... -
解决errorpage里面取不到Authentication的问题
2013-01-20 23:56 2454本人原创,发现一些网站无道德的抓取 ... -
SimpleDateFormat使用的时候的注意点
2012-12-06 20:59 2056今天在帮助同事查找一个项目bug的时候发现一个很奇怪 ... -
java和javascript的正则表达式有点不同
2012-11-06 18:54 1448今天在项目中遇 ... -
velocity 1.6.4的一个bug
2012-09-10 17:24 2179$.ajax()在Velocity中会冲突, 总之 ... -
一种多数据源分页算法
2012-09-10 17:13 7551以前开发一个系统,需要去多个系统去取数据,简单期间,比 ... -
使用stringBuffer和StringBuilder拼串要注意的问题
2012-07-30 17:30 8098今天在和同事排除一个问题的时候发现,从 ... -
java获取当月的工作日
2012-05-10 12:07 6134在这个记录一下,记录java获取某个月的工作日的代码,方便以 ... -
webservice引用传参
2012-04-19 19:38 1449http://www.blogjava.net/xylz/ar ... -
java获取当天的开始时间,当前周的开始时间
2012-04-16 17:31 19595在程序里面要获取当前的开始时间和结束时间,以及当前天 ... -
edtFTPj源码学习
2012-04-11 16:25 1256下面是edtFTPj的源码学习,下面的类图都是我自己亲手花的, ... -
ftp协议研究
2012-03-12 17:34 1272ACTIVE FTP OPERATION 1、客户端使用源 ... -
西安交通大学的错误日志
2011-12-14 13:30 1010西安交大的网站报错了,记录下出错日志,改天研究一下。 HT ... -
tomcat的favicon.ico的用法
2011-12-01 20:00 22371. web.xml文件添加下面的mime-mapping ... -
htmlunit模拟sso登陆
2011-07-27 14:45 6940import java.io.IOException; ...
相关推荐
下面是一个简单的LRUCache实现示例: ```java import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; public class LRUCache, V> extends LinkedHashMap, V> { private final int ...
它内部维护了一个双向链表和一个哈希表,新加入的元素会被添加到链表头部,每次访问一个元素,该元素都会被移动到链表头部。当缓存满时,新的元素将替换掉链表尾部的元素,即最近最少使用的元素。 下面是如何在...
LruCache(Least Recently Used Cache)是Android提供的一个基于最近最少使用原则的内存缓存机制。在内存不足时,它会自动删除最近最少使用的数据。在帧动画中,我们可以将每一帧的Bitmap存储在LruCache中,避免重复...
"android图片下载LruCache实现三级缓存方式"是一个典型的图片加载优化实践,它涉及到内存缓存、外部存储(如SD卡)缓存以及网络缓存三个层次。下面我们将详细探讨这一技术。 首先,LruCache是Android SDK提供的一种...
AndroidStudio利用DiskLruCache和LruCache实现简单的照片墙
本示例项目"利用DiskLruCache和LruCache实现简单的照片墙--demo"正是针对这一需求,通过在磁盘和内存中进行缓存管理,确保用户即使在网络不畅的情况下也能流畅地查看之前加载过的照片。 首先,我们来详细了解一下这...
简易单链表增删改查功能实现。新增内容:新增单链表LruCache算法增删改查,对学习LruCache 算法有一定帮助。
1. **使用方法**:首先,你需要根据应用程序的需求计算出可用的最大内存,然后创建一个LruCache实例,其大小为最大内存的1/8。例如: ```java int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); ...
2. **LRUCache的实现**:Android的LRUCache类是基于HashMap实现的,它维护了一个大小有限的缓存,通过`put()`方法添加数据,通过`get()`方法获取数据,并通过`size()`方法计算每个条目的大小。 3. **自定义LRUCache...
接下来,我们需要实现一个Key-Value对,Key通常是图片的URL,Value是解码后的Bitmap对象。然后将下载的图片添加到LRUCache中,如下所示: ```java public void addBitmapToMemoryCache(String key, Bitmap bitmap) ...
总之,`LruCache`是Android开发者优化图片加载性能的一个强大工具,尤其在处理大量图片的ListView场景下,正确地使用它可以显著提升用户体验。通过`ImageLoaders.java`这样的工具类,开发者可以轻松地集成这种缓存...
本文将深入探讨如何使用`LruCache`和`DiskLruCache`实现一个二级缓存的自定义`ImageLoader`。 `LruCache`是Android SDK提供的内存缓存解决方案,全称为"Least Recently Used Cache"(最近最少使用缓存)。它的原理...
`LruCache`是Android对这种算法的实现,它通过维护一个双向链表和一个哈希表,来追踪最近使用过的项,并根据容量限制进行自动清理。 **2. 创建LruCache实例** 在Android中,首先我们需要创建一个`LruCache`实例。它...
通过LruCache,DiskLruCache实现照片墙
LRUCache(Least Recently Used Cache)是Android系统提供的一个基于最近最少使用算法(LRU)的内存缓存机制。在Android开发中,特别是在处理大量图片或者数据时,LRUCache可以帮助我们有效地管理内存,避免因内存...
#### 三、LRUCache实现细节 ##### 3.1 类结构与初始化 ```java public class LruCache, V> { private final LinkedHashMap, V> map; // 使用LinkedHashMap存储键值对 private int size; // 已经存储的大小 ...
LruCache+DiskLruCache实现照片墙
`LruCache`内部使用了一个`LinkedHashMap`作为数据结构,`LinkedHashMap`是一个有序的哈希表,它的特性使得可以方便地实现LRU策略。`LinkedHashMap`维护了两个双向链表,一个按照插入顺序,另一个按照访问顺序。`...
C# LRU缓存的设计和实现是一个重要的知识领域,它涉及到数据结构、算法以及高效的内存管理。 首先,理解LRU的基本原理至关重要。LRU策略的基本思想是:当缓存满时,最近最少使用的数据将被优先淘汰。这个策略基于一...
本文将深入探讨一个名为PhotosWallDemo的项目,该项目巧妙地结合了LruCache和DiskLruCache这两种缓存策略,以实现高效、可靠的图片加载和存储。下面我们将详细解析这两个缓存机制及其在PhotosWallDemo中的具体应用。...