该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

单例模式获得工厂唯一实例,用map保存对象引用,实现快速查找

1.例子

package com.d1zhan.cache;

import java.util.HashMap;

import java.util.Map;

public class CacheFactory {

private static CacheFactory instance;

private Map map;

private CacheFactory(){

map = new HashMap();

}

public synchronized static CacheFactory getInstance(){

if (instance == null) {

instance = new CacheFactory();

}

return instance;

}

public Object lookup(Class clazz,String id){

Object obj =  map.get(clazz.getName()+id);

if (obj == null) {

obj=BaseDao.load(clazz,id);//这里是获取对象方式,例如hibernate的session.load(..)

map.put(clazz.getName()+id, obj);

}

return obj;

}

}

2.大家可能发现,这样做,cache里的对象会越来越多,有内存溢出的风险,解决的办法是,应用lru算法,把不常使用的对象,定期从cache清除。

java 缓存 单例_单例模式应用:高速缓存和查找对象(转)相关推荐

  1. java 内部类 单例_Java单例模式的几种实现

    一:静态内部类实现单例模式 原理:通过一个静态内部类定义一个静态变量来持有当前类实例,在类加载时就创建好,在使用时获取. 缺点:无法做到延迟创建对象,在类加载时进行创建会导致初始化时间变长. publ ...

  2. java 内部类 单例_确保对象的唯一性——单例模式 (四):一种更好的单例实现方法(静态内部类)...

    3.5 一种更好的单例实现方法 饿汉式单例类不能实现延迟加载,不管将来用不用始终占据内存:懒汉式单例类线程安全控制烦琐,而且性能受影响.可见,无论是饿汉式单例还是懒汉式单例都存在这样那样的问题,有没有 ...

  3. java 线程 单例_多线程单例模式

    多线程单例模式 原文:https://blog.csdn.net/u011726005/article/details/82356538 1. 饿汉模式 使用饿汉模式实现单例是十分简单的,并且有效避免 ...

  4. java 窗口 单例_java单例模式实现面板切换

    本文实例为大家分享了java单例模式实现面板切换的具体代码,供大家参考,具体内容如下 1.首先介绍一下什么是单例模式: java单例模式是一种常见的设计模式,那么我们先看看懒汉模式: public c ...

  5. 静态内部类实现单例_单例模式详解

    概述 单例模式,是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中,使用单例模式的类只有一个对象实例. 单例应用场景 Windows系统的任务管理器. ...

  6. java 工厂 单例_java 单例模式和工厂模式实例详解

    单例模式根据实例化对象时机的不同分为两种:一种是饿汉式单例,一种是懒汉式单例. 私有的构造方法 指向自己实例的私有静态引用 以自己实例为返回值的静态的公有的方法 饿汉式单例 public class ...

  7. java futuretask 单例_集群环境下java单例查询多了就异常

    { "query" : { "term" : { "url" : { "value" : "http://ww ...

  8. java socket 单例_Java 单例模式的几种实现方式

    单例模式的本质是在运行过程中,某个类只能实例化一个对象:下面是单例模式最基本的实现方式 package com.fuck.singleton; public class Singleton { pri ...

  9. filter java 是单例的吗_JAVA 设计模式之 单例模式详解

    单例模式:(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点.单例模式是创建型模式.单例模式在现实生活中应用也非常广泛. 在 J2EE 标准中,S ...

最新文章

  1. HP880G3 安装RHEL6.5
  2. 10·24【运维工程师也过节】【运维MySQL大礼包】
  3. 前端学习(417):京东制作页面25中间部分的准备工作
  4. 剑指Offer - 面试题56 - I. 数组中数字出现的次数(异或,分组)
  5. mysql myisam 支持事务吗_第三章(附)mysql表类型MyISAM和InnoDB区别(决定了是否支持事务)...
  6. 《Python编程从入门到实践》记录之json模块(数据存储)
  7. Python统计多个Powerpoint文件中幻灯片总数量
  8. 二_单元测试和代码覆盖率
  9. java字符串不足后面补0,JAVA字符串格式化长度不足补0
  10. html设置鼠标指针的形状,CSS/HTML改变鼠标指针形状方法 属性说明
  11. 浏览器请求web服务器的过程
  12. 前端视觉测试工具:Applitools Eyes
  13. SpringMVC细节(下)
  14. OpenGL ES EGL eglMakeCurrent
  15. c语言实现乘法口诀表的打印函数
  16. Codeforces Problemset
  17. java 微信报关 V2
  18. 互联网企业的盈利模式?
  19. 你知道抖音的洗脑,却不知道他的产品设计有多牛
  20. AutoJs学习-亲戚关系计算器

热门文章

  1. C++结构与联合有和区别?
  2. 27_pytorch全连接层,使用MNIST的分类案例(学习笔记)
  3. Storm通信机制,Worker进程间通信,Worker进程间通信分析,Worker进程间技术(Netty、ZeroMQ),Worker 内部通信技术(Disruptor)(来自学习资料)
  4. 01_Eclipse的使用方法
  5. 数据库元数据数据字典查询_7_列出给定表的检查约束
  6. python爬大学生就业信息报告_Python程序员招聘市场简要报告
  7. OpenCV中像素逻辑运算:逻辑与运算
  8. 编写一个算法frequency,统计在一个输入字符串中各个不同字符出现的频度。用适当的测试数据来验证这个算法。
  9. [CodeForces 892A] Greed (Java中sort实现从大到小排序)
  10. CentOS常用环境配置(MySQL、jdk、Redis、Nginx)