`
shiaowu
  • 浏览: 5206 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

java 数据缓存 singleton

阅读更多
package com.shiaowu.util;

import java.util.*;

import com.xinyi.servicetest.dao.GetAddressDao;
import com.xinyi.servicetest.entity.Address;

public class DataCache {
protected static final HashMap map = new HashMap(); // Cache table

private static final Object lock = new Object();
private DataCache() {} // 防止在外部实例化

public static Address getData(String key, String searchCnt) {
  Address address = null;
  if(searchCnt.toUpperCase().equals("N"))
  {
   address = (Address)map.get(new String(key));  
   if(address!=null)
   {
    int i = address.getPAGE()+1;
    address.setPAGE(i);
   }    
  }
  else if (address == null)
  {
   synchronized(lock)
   {
    //add = (Address)map.get(new String(sKey)); // Check again to avoid re-load   
     System.out.println("loadDataSource.....");
     loadDataSource(key,searchCnt);
     address = (Address)map.get(new String(key)); // retrieves data.      
   }
  }
  return address;
}
/*
*Load data from data source.
*/
protected static synchronized void loadDataSource(String key,String SearchCnt) { 
  Address address = null;
  address = GetAddressDao.getAddress(SearchCnt);    
  map.put(new String(key), address);
}
}

分享到:
评论

相关推荐

    完整版缓存CacheManagerDemo+通过反射获取对象

    在IT行业中,缓存是一种非常重要的技术,它用于提高数据访问速度,降低系统负载,尤其在高并发场景下效果显著。本示例“完整版缓存CacheManagerDemo”结合了缓存管理和反射机制来实现对象的获取,同时融入了工厂设计...

    java线程-Java内存模型

    Java线程-Java内存模型是Java并发编程中的关键概念,它描述了多个线程如何共享和访问内存资源,以及如何保证数据的一致性和安全性。Java内存模型(JMM)是Java虚拟机规范的一部分,用于定义程序中各个线程对共享变量...

    java核心面试

    ### Java核心面试知识点详解 #### 一、线程与单例模式下的线程安全 **线程安全**指的是在多线程环境下,程序能够正确地处理数据,避免数据的不一致性和错误。在线程安全问题中,单例模式是一个典型的案例。 **...

    自定义redis序列化和解决穿透问题.docx

    在Java开发中,Redis作为一款高性能的键值存储系统,常被用作应用程序的缓存层,以提高数据访问速度并减轻数据库的压力。然而,在实际应用中,可能会遇到多线程环境下的数据同步延迟问题以及缓存穿透问题,这两个...

    简易人员管理系统(纯Java版)

    7. **缓存机制**:为了提升性能,系统可能使用了内存缓存,如Java的WeakHashMap或Guava Cache,将频繁访问的数据暂存于内存中,减少对硬盘的访问。 8. **权限管理**:管理员账号的设置涉及权限控制,系统可能使用了...

    java 13 distributed programming and java

    Java持久化API是Java EE中用于持久化数据的对象关系映射(ORM)解决方案。它提供了将Java对象持久化到关系数据库中的机制,反之亦然。JPA的标准是Java持久化规范(Java Persistence Specification),它允许开发者以...

    Java面试题大汇总(2021年Java面试题大全带答案)

    常见的Java性能优化方法包括使用缓存、减少数据库查询、使用并发编程等。 * Java安全编程:Java中的安全编程可以提高程序的安全性和可靠性。常见的Java安全编程方法包括使用HTTPS、验证用户输入、加密数据等。 ...

    java简历模版

    7. **服务器与工具**:Tomcat是Java Servlet容器,Nginx常用于反向代理和负载均衡,FastDFS是文件存储系统,Redis是内存数据结构存储,用于缓存和高速数据访问。 8. **开发工具**:Eclipse是Java开发IDE,SVN用于...

    Java面试题目总结(137页).docx

    本资源是 Java 面试题目的总结,涵盖了 Java 基础、多线程、设计模式、JVM、数据结构与算法、数据库、Spring、Netty、缓存、技术框架、技术深度、分布式、系统架构、LINUX、TCP/IP 等多方面的知识点。 Java 基础 ...

    Java开发工程师高级测试题.docx

    数据库优化涵盖了数据库设计、索引优化、SQL优化、数据库缓存等多方面的知识点。Java开发工程师需要具备对数据库优化的深入理解,以便能够设计和开发高性能、高可用性的应用程序。 Spring底层源码分析 Spring是...

    java面试题和基础知识汇总超详细

    自动装箱是指Java编译器将基本数据类型自动转换为对应的封装类的过程,例如将`int`类型的数据转换为`Integer`对象。相反地,自动拆箱是指将封装类的对象转换回基本数据类型的过程。 #### 方法的重载与重写 - **...

    Java 信息管理系统 源码

    为了实现这些功能,开发者可能会使用各种设计模式,如工厂模式(Factory Pattern)用于对象创建,单例模式(Singleton Pattern)确保全局只有一个实例,以及代理模式(Proxy Pattern),可能用于数据访问或远程调用...

    JAVA试卷-NC用友软件工程师笔试题.pdf

    Java中的字符串对象是不可变的,字符串字面量(如"Test")在JVM中会被缓存,`new String("Test")`创建的是一个新的字符串对象。s1和s2指向的是两个不同的对象,因此`s1 == s2`判断为假,但是`s1.equals(s2)`判断为真...

    高级Java经典面试题2019

    伪共享发生在多线程环境中,当多个线程频繁修改位于同一CPU高速缓存行上的不同变量时,可能导致整个缓存行被频繁地在不同的CPU之间传递,从而降低程序性能。可以通过将数据结构设计得更加合理来避免伪共享。 #### ...

    java学习整理文档.docx

    3. **Spring配置元数据的三种方式**:Spring支持基于XML、注解和Java配置来定义Bean。XML配置是最传统的,但现在逐渐被注解和Java配置替代,它们更加简洁且易于维护。 4. **事务管理**:事务管理是保证数据一致性和...

    基于java的聊天系统

    3. **数据序列化与反序列化**:为了在网络中传输对象,Java提供了一种叫做序列化(Serialization)的过程,即将对象转换为字节流,便于在网络中传输。反序列化则是将字节流恢复为原来的对象。在聊天系统中,可能需要...

    Java 企业设计模式

    DAO(数据访问对象)模式则通过封装数据库操作,降低了业务逻辑与数据存储间的耦合。 行为型模式在多线程编程和事件驱动编程中也扮演着关键角色。例如,观察者模式用于实现发布-订阅机制,当一个对象的状态发生改变...

    疯狂JAVA讲义

    学生提问:Java为什么要对这些数据进行缓存呢? 67 3.7.6 逻辑运算符 67 3.7.7 三目运算符 68 3.7.8 运算符的结合性和优先级 69 3.8 本章小结 70 本章练习 70 第4章 流程控制和数组 71 4.1 顺序结构 72 4.2 ...

    java及数据库性能优化

    - **缓存使用**:对于频繁访问的数据,使用缓存可以显著提升性能。例如,使用`InputStream`和`OutputStream`代替`Writer`,减少转换操作。使用高效的缓存策略,如LRU(Least Recently Used)或LFU(Least ...

    JAVA设计模式的ppt教程,讲解非常清楚

    在电商系统中,根据用户的行为数据,动态调整推荐算法等。 ### 第2章 代理模式(Proxy Pattern) #### 概念介绍 代理模式是一种结构型设计模式,它为其他对象提供一个代理以控制对该对象的访问。通过代理对象,...

Global site tag (gtag.js) - Google Analytics