以下是本人自己实现的一个简易缓存系统的设计,与大家分享下,如有不足之处请大家指出,一起学习进步:
package com.mt;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
/**
* 简易缓存系统的设计
* @author yxh
*
*/
public class CacheData {
//定义个缓存容器用来装数据
private Map<String,Object> cache = new HashMap<String,Object>();
//定义一个读写锁
private ReadWriteLock rwl = new ReentrantReadWriteLock();
//根据传入的key获取数据
public Object getData(String key){
//进来获取数据的时候马上一把读锁
rwl.readLock().lock();
Object data = cache.get(key);
try{
if(data==null){
//如果发现数据为空的话就要进行写操作了,那么首先释放读锁,马上加写锁
rwl.readLock().unlock();
rwl.writeLock().lock();
/**此处再加一个判断的原因是:如果多个线程同时进行读的时候,都为null
* 则都会释放读锁,而去争夺写锁,最终第一个获取到了写锁,那么其他的线程则
* 等待,直到第一个线程写好数据,把写锁释放后,第二个线程获取到了写锁,再想去写
* 此时判断下发现已经有值则就不会再去写值了。
*/
try{
if(data==null){
//如果从缓存中获取的值为空那么则去数据库获取
data ="00000000";
cache.put(key, data);
}
}catch(Exception e){
}finally{
//写完后释放写锁
rwl.writeLock().unlock();
}
//写完后重新把读锁上上
rwl.readLock().lock();
}
}finally{
//释放读锁
rwl.readLock().unlock();
}
return data;
}
}
分享到:
相关推荐
简易BBS系统在设计时需要考虑安全问题,如SQL注入、XSS攻击等,需对用户输入进行过滤和转义。同时,为了提高系统性能,可以采用缓存技术、负载均衡、数据库优化等方式。 五、部署与维护 部署BBS系统通常需要一个...
总的来说,Java编写的简易聊天系统是一个综合运用了网络编程、多线程、输入/输出流、用户界面设计等多个Java核心概念的项目。通过这个系统,开发者可以深入理解Java在网络应用中的实际运用,同时也能提升处理并发和...
简易网店系统是一个基础的在线...综上所述,简易网店系统是一个涵盖前端用户界面、后端服务以及数据库管理的综合项目,涉及到的技术和知识点广泛,需要开发者具备良好的编程能力、数据库设计知识以及对电商运营的理解。
10. **性能优化**:对于高流量的投票系统,可能需要考虑缓存策略(如使用Memcached或Redis),以减少数据库查询压力。此外,合理设计数据库索引也能提高查询效率。 这个【PHP简易投票系统】的源代码文件`testVote`...
8. **性能优化**:虽然这是一个简易系统,但考虑到高并发访问,可能需要考虑缓存技术(如文件缓存或内存缓存)以减轻服务器压力,以及适当的资源管理以提高响应速度。 9. **版本控制**:看到有“pro6”这样的文件名...
《简易论坛系统——Java Web开发详解》 在IT行业中,Web开发是一项至关重要的技能,而构建一个论坛系统是学习和实践这项技能的经典案例。本文将深入解析“简易论坛系统”的核心知识点,涵盖从需求分析到实际编码的...
系统设计简洁高效,旨在提供一个易用的平台,实现对人员的增删查改等基本操作,同时也引入了管理员账号的概念,以确保数据的安全性和可控性。此外,系统还启用了缓存机制,提高了数据读取和处理的速度,优化了用户...
**JSP简易网上购物系统详解** 本项目是一个基于JSP技术构建的简易网上购物系统,主要面向小型网店的开发需求,具有操作简单、易于理解的特点。在这个系统中,JSP(JavaServer Pages)和Servlet技术起到了核心作用,...
6. 性能优化:为了处理大量文件和高并发访问,论文可能探讨缓存策略、数据库索引优化、页面压缩等提高系统性能的方法。 7. 系统架构:论文可能会介绍系统的设计模式,比如MVC(模型-视图-控制器)架构,以及如何...
《简易考试系统的构建与设计》 在信息化时代,考试系统的应用越来越广泛,它不仅可以提高考试组织的效率,还可以实现无纸化、自动化,为教育领域带来了显著的变革。本篇文章将详细探讨“简易考试系统”的构建与设计...
在本项目中,我们探讨的是一个简易CPU的设计,该CPU是使用VHDL语言在FPGA(Field Programmable Gate Array)...通过以上知识的深入学习和实践,我们可以理解和构建一个简易的CPU,并为更复杂的系统设计打下坚实的基础。
《简易订餐系统详解》 在信息技术飞速发展的今天,各种智能系统已经深入到我们生活的方方面面,其中之一就是订餐系统。本篇文章将详细介绍一个基于Java技术实现的简易订餐系统,旨在帮助Java初学者理解如何将理论...
总的来说,这个"ASP.NET 简易新闻发布系统"为初学者提供了一个实战平台,可以学习到如何使用ASP.NET和C#构建一个完整的Web应用,涉及到的技术点包括数据库设计、MVC架构、用户认证、数据访问和页面交互等。...
《简易网页编辑与生成系统设计与实现》是一个典型的毕业设计项目,主要涵盖了Web开发的核心技术和原理,旨在提供一个用户友好的界面,使得非技术背景的用户也能轻松创建和编辑网页。下面将对该项目的设计与实现进行...
**简易论坛设计技术文档** 在信息技术领域,论坛是一种常见的在线交流平台,用于用户之间的互动讨论。本技术文档将深入探讨如何设计一个简单的BBS(Bulletin Board System,电子公告板系统),涉及论坛的主要功能...
了解如何优化查询效率、合理设计数据库结构以及利用缓存策略,将有助于保持系统的高效运行。 通过"计算机学生简易管理系统"的学习,初学者不仅可以掌握基本的编程技巧,还能了解到系统开发的整体流程,包括需求分析...
一个简易购物车系统的设计通常包括以下几个关键功能和组件: 1. **商品展示**:用户需要能够浏览和搜索各种商品。这涉及商品的分类、描述、价格和图片等信息的展示。对于一个简易购物车,可以采用列表或网格布局...
7. **MVC(Model-View-Controller)设计模式**:在JSP信息管理系统中,模型负责业务逻辑,视图负责展示,控制器负责协调模型和视图。通常使用Servlet作为控制器,JSP作为视图,JavaBeans作为模型。 在实际应用中,...
【简易的仓库管理系统源码】是一个专为管理库存和物流操作设计的应用程序,它提供了对库存数据的跟踪、入库、出库、盘点等核心功能。这个系统的核心目标是提高仓库运营效率,降低管理成本,确保库存信息的准确性和...
ASP.NET简易新闻系统是一款基于微软的ASP.NET技术开发的新闻信息发布和管理平台。该系统具有基本的新闻发布和管理功能,适合初学者学习和快速搭建小型新闻网站。在深入理解这个系统之前,我们需要先了解ASP.NET的...