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);
}
}
分享到:
相关推荐
在IT行业中,缓存是一种非常重要的技术,它用于提高数据访问速度,降低系统负载,尤其在高并发场景下效果显著。本示例“完整版缓存CacheManagerDemo”结合了缓存管理和反射机制来实现对象的获取,同时融入了工厂设计...
Java线程-Java内存模型是Java并发编程中的关键概念,它描述了多个线程如何共享和访问内存资源,以及如何保证数据的一致性和安全性。Java内存模型(JMM)是Java虚拟机规范的一部分,用于定义程序中各个线程对共享变量...
### Java核心面试知识点详解 #### 一、线程与单例模式下的线程安全 **线程安全**指的是在多线程环境下,程序能够正确地处理数据,避免数据的不一致性和错误。在线程安全问题中,单例模式是一个典型的案例。 **...
在Java开发中,Redis作为一款高性能的键值存储系统,常被用作应用程序的缓存层,以提高数据访问速度并减轻数据库的压力。然而,在实际应用中,可能会遇到多线程环境下的数据同步延迟问题以及缓存穿透问题,这两个...
7. **缓存机制**:为了提升性能,系统可能使用了内存缓存,如Java的WeakHashMap或Guava Cache,将频繁访问的数据暂存于内存中,减少对硬盘的访问。 8. **权限管理**:管理员账号的设置涉及权限控制,系统可能使用了...
Java持久化API是Java EE中用于持久化数据的对象关系映射(ORM)解决方案。它提供了将Java对象持久化到关系数据库中的机制,反之亦然。JPA的标准是Java持久化规范(Java Persistence Specification),它允许开发者以...
常见的Java性能优化方法包括使用缓存、减少数据库查询、使用并发编程等。 * Java安全编程:Java中的安全编程可以提高程序的安全性和可靠性。常见的Java安全编程方法包括使用HTTPS、验证用户输入、加密数据等。 ...
7. **服务器与工具**:Tomcat是Java Servlet容器,Nginx常用于反向代理和负载均衡,FastDFS是文件存储系统,Redis是内存数据结构存储,用于缓存和高速数据访问。 8. **开发工具**:Eclipse是Java开发IDE,SVN用于...
本资源是 Java 面试题目的总结,涵盖了 Java 基础、多线程、设计模式、JVM、数据结构与算法、数据库、Spring、Netty、缓存、技术框架、技术深度、分布式、系统架构、LINUX、TCP/IP 等多方面的知识点。 Java 基础 ...
数据库优化涵盖了数据库设计、索引优化、SQL优化、数据库缓存等多方面的知识点。Java开发工程师需要具备对数据库优化的深入理解,以便能够设计和开发高性能、高可用性的应用程序。 Spring底层源码分析 Spring是...
自动装箱是指Java编译器将基本数据类型自动转换为对应的封装类的过程,例如将`int`类型的数据转换为`Integer`对象。相反地,自动拆箱是指将封装类的对象转换回基本数据类型的过程。 #### 方法的重载与重写 - **...
为了实现这些功能,开发者可能会使用各种设计模式,如工厂模式(Factory Pattern)用于对象创建,单例模式(Singleton Pattern)确保全局只有一个实例,以及代理模式(Proxy Pattern),可能用于数据访问或远程调用...
Java中的字符串对象是不可变的,字符串字面量(如"Test")在JVM中会被缓存,`new String("Test")`创建的是一个新的字符串对象。s1和s2指向的是两个不同的对象,因此`s1 == s2`判断为假,但是`s1.equals(s2)`判断为真...
伪共享发生在多线程环境中,当多个线程频繁修改位于同一CPU高速缓存行上的不同变量时,可能导致整个缓存行被频繁地在不同的CPU之间传递,从而降低程序性能。可以通过将数据结构设计得更加合理来避免伪共享。 #### ...
3. **Spring配置元数据的三种方式**:Spring支持基于XML、注解和Java配置来定义Bean。XML配置是最传统的,但现在逐渐被注解和Java配置替代,它们更加简洁且易于维护。 4. **事务管理**:事务管理是保证数据一致性和...
3. **数据序列化与反序列化**:为了在网络中传输对象,Java提供了一种叫做序列化(Serialization)的过程,即将对象转换为字节流,便于在网络中传输。反序列化则是将字节流恢复为原来的对象。在聊天系统中,可能需要...
DAO(数据访问对象)模式则通过封装数据库操作,降低了业务逻辑与数据存储间的耦合。 行为型模式在多线程编程和事件驱动编程中也扮演着关键角色。例如,观察者模式用于实现发布-订阅机制,当一个对象的状态发生改变...
学生提问: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 ...
- **缓存使用**:对于频繁访问的数据,使用缓存可以显著提升性能。例如,使用`InputStream`和`OutputStream`代替`Writer`,减少转换操作。使用高效的缓存策略,如LRU(Least Recently Used)或LFU(Least ...
在电商系统中,根据用户的行为数据,动态调整推荐算法等。 ### 第2章 代理模式(Proxy Pattern) #### 概念介绍 代理模式是一种结构型设计模式,它为其他对象提供一个代理以控制对该对象的访问。通过代理对象,...