文档章节

使用数组实现缓存例子

蜀山下的鱼
 蜀山下的鱼
发布于 2015/04/29 00:43
字数 311
阅读 8
收藏 0
public class CacheFinal{
	private final String name;
	private static CacheFinal[] cache = new CacheFinal[10];
	//记录缓存实例在缓存的位置,cache[p-1]是最新的缓存实例
	private static int p =0;
	
	public CacheFinal(String name){//是否隐藏构造器取决于系统需要
		this.name = name;
	}
	public String getName(){
		return name;
	}
	
	public static CacheFinal valueOf(String name){
	
	//遍历已经缓存的对象
		for(int i =0; i<p;i++){
			//如果已有相同实例,直接返回该缓存的实例
			if(cache[i] != null && cache[i].getName().equals(name)){
				return cache[i];
			}
			
		}
		
		//如果缓存已经满了
		if(p==10){
			//覆盖第一个对象
			cache[0] = new CacheFinal(name);
			//把p设为1
			p=1;
			return cache[0];
		}else{
			//把新创建的对象缓存起来,p加1
			cache[p++] = new CacheFinal(name); 
			return cache[p-1];
		}
	
	}
	
	
	//equals方法
	
	public boolean equals(Object obj){
	
			if(obj instanceof CacheFinal){
			
				CacheFinal cf = (CacheFinal) obj;
			
				if(name.equals(cf.getName())){
					return true;
				}
			
			
			}
			return false;
	}
	
	//hashcode方法
	public int hashCode(){
		return name.hashCode();
	}
	
	public static void main(String[] args){
		CacheFinal c1 =  CacheFinal.valueOf("hello");
		CacheFinal c2 =  CacheFinal.valueOf("hello");
		
		//比较是否是引用了同一个对象
		System.out.println(c1 == c2);
		
		}
	
	
}

java.lang.Integer类,就采用了这种缓存处理策略,如果采用new构造器类创建Integer对象,则每次返回全新的Integer对
象,如果采用valueOf方法来创建Integer对象,则会缓存该方法创建的对象。

本文转载自:http://blog.csdn.net/caiwenfeng_for_23/article/details/8227513

蜀山下的鱼
粉丝 9
博文 405
码字总数 0
作品 0
广州
高级程序员
私信 提问
董楠/LinkCache

LinkCache - 一个灵活高效的PHP缓存工具库 LinkCache 是一个PHP编写的灵活高效的缓存工具库,提供多种缓存驱动支持,包括Memcache、Memcached、Redis、SSDB、文件缓存、APC、YAC等。通过Lin...

董楠
2015/11/02
0
0
12个非常有用的JavaScript 技巧

在这篇文章中,我将分享12个非常有用的JavaScript 技巧。这些技巧可以帮助你减少并优化代码 1)使用!!操作符转换为布尔类型 有时,我们需要检查一些变量是否存在,或者它是否具有有效值,将它...

陈安一
2017/06/19
0
0
keep-alive:组件级缓存

title: keep-alive组件 date: 2018-06-11 09:13:26 tags: keep-alive Vue vue-router 页面缓存 在Vue构建的单页面应用(SPA)中,路由模块一般使用vue-router。vue-router不保存被切换组件的...

大肥凯
2018/07/09
0
0
处理器缓存影响大观园

大多数读者都明白缓存是一个用于存储最近访问的内存位置的高速小容量存储器。这个描述是相当准确的,但是处理器缓存如何工作的“无聊”细节可以更好的帮助我们了解程序的性能。 在这篇博客中...

LianyouCQ
2013/08/15
596
3
网上看到的“12个非常有用的JavaScript技巧”

记录一下,自己以后可能用的到。 原文:blog.jscrambler.com/12-extremel… 网上看到的。 1) 使用将变量转换成布尔类型 有时,我们需要检查一些变量是否存在,或者它是否具有有效值,从而将它...

HPY2706
2018/05/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Security 实战干货:基于配置的接口角色访问控制

1. 前言 欢迎阅读 Spring Security 实战干货 系列文章 。对于受限的访问资源,并不是对所有认证通过的用户开放的。比如 A 用户的角色是会计,那么他就可以访问财务相关的资源。B 用户是人事,...

码农小胖哥
26分钟前
3
0
vue admin template 轻量级 后台管理系统基础模板 vuecli4 分环境打包 统一管理接口地址

本模板目的是为了能在创建项目的时候,减少不必要的时间浪费,例如api接口的封装、axios请求的封装以及基础布局等时间的浪费,故将基础功能提取出来作为公司内部的一个后台基础管理系统,为什...

羊皮卷
27分钟前
2
0
idea免费版注册码

https://www.jiweichengzhu.com/article/eb340e382d1d456c84a1d190db12755c

码农屌丝
28分钟前
4
0
跨越敏捷和devops的鸿沟

day2 更多的是理念思想和一些经验的分享吧 先来个鸡汤: 每个人都有自己的人生高山去攀越,技术人也有技术的高山,不是人生的全部,但又不可缺少的,我们要选对方向,找对方法去坚持去爬山...

ikki8776
28分钟前
4
0
MyEclipse教程:JPA开发(数据库)

1、配置JPA项目 JPA是类似于Hibernate的持久性规范,已成为Java EE 5规范的一部分。JPA使用Java 5注释来控制将普通Java类(POJO)映射到数据库表。 您可以通过创建任意受支持的基础项目类型(...

沫沫77
35分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部