`
woaiwofengkuang
  • 浏览: 25724 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

需要同步吗

阅读更多

由于这几张表读取的非常频繁。于是便相对第一次查询的结果进行缓存。如果缓存中没有相应的数据再从数据库中读取。
现的问题,这个方法上要不要考滤同步的问题。
我是这样想的。当同一时刻有多个用户同时查询相同的数据时。此时要查询的数据刚好在缓存中没有。那么这时要从数据库中读取。
假设A查询时执行的到的代码为:List conInfoList = new ArrayList();
而B查询执行到代码为:if(pageConInfoMap.get(riskCode + comCode) != null)
那么现在的问题是A将结果查询出放入缓存。而B又一次将结果查询出放入缓存中。缓存用的是map不会产生重复记录的情况。
但是本来要查询一次数据库,其它的都要从缓存中读取。可是假设的情况却读了两次,在实际运行中,有可不只是两次。所以说我是否应当要取读数据进行缓存的方法设为同步呢。

代码如下:

已经将其设为同步的

public class PageAutoConfigServer {

	private static final Map pageConInfoMap = new HashMap();
	
	public synchronized List getPageConfigInfo(String riskCode, String comCode)
			throws Exception {
		if(pageConInfoMap.get(riskCode + comCode) != null){
			return (List)pageConInfoMap.get(riskCode + comCode);
		}
		
		DbPool dbPool = new DbPool();
		List conInfoList = new ArrayList();
		try {
			dbPool.open(SysConst.getProperty("DDCCDATASOURCE"));
			conInfoList = new DBPageFiledAutoConfig().getPageElementsConfigInfo(riskCode, comCode, dbPool);
			pageConInfoMap.put(riskCode + comCode, conInfoList);
		} catch (Exception e) {
			throw e;
		} finally{
			dbPool.close();
		}

		return conInfoList;
	}

}

 说明此方法是在jsp页面中直接调用的

 

分享到:
评论
7 楼 xuzhfa123 2009-06-15  
不需要同步
6 楼 taowen 2009-06-15  
加锁有两个效果,一个是同步一个是内存可见性。不知道普通的HashMap能不能保证Thread A写入的值,会被Thread B看到。也许不行,也许行,也许部分行部分不行。至少需要加一个ReadWriteLock吧?
5 楼 taupo 2009-06-15  
但是如果查询出来的数据又被改了,跟新数据库的同时还得更新缓存。。。

所以不是只读或者很少改的数据还是不要缓存了
4 楼 taupo 2009-06-15  
我认为
不需要同步。。。。

只是在把数据加入缓存的时候判断是否在缓存中已经存在,如果存在就不加入

3 楼 ywlqi 2009-06-15  
同步会产生效率问题,我觉得不加同步也可以,毕竟LZ所担心的情况还是少数,即使两次访问数据库也不会产生什么问题。

另外LZ的例子在JSP中是怎么调用的?new PageAutoConfigServer()吗?如果这样并不能真正做到同步,要PageAutoConfigServer 类是单例的才可以,要不就把方法作为static的
2 楼 shadowlin 2009-06-15  
可以用concurrent里面的那个ConcurrentHashMap嘛.
1 楼 taowen 2009-06-15  
private static final Map pageConInfoMap = new HashMap(); 
全局共享的map怎么不需要同步呢?

相关推荐

    Kettle增量同步.rar

    Kettle增量同步,里边包含项目文件可能需要你新建数据库。源数据为Oracle,目标数据库为PostgreSQL. 增量记录表.SQL 用来生成 edp_etl_record 表 记录每次更新数据的执行记录过程。 更新时先取出edp_etl_record 表...

    游戏操作同步器,游戏多窗口同步工具

    游戏操作同步器,游戏多窗口同步工具,可以游戏多开,然后同步鼠标、键盘...打开游戏客户端后,打开本软件,然后拖动图标选择游戏窗口,将需要同步的游戏窗口都拖到软件界面后,设置主控制游戏窗口,然后开启同步即可。

    基于FlinkSQLCDC的实时数据同步方案

    我们可以通过CDC(ChangeDataCapture)工具进行解除耦合,同步到下游需要同步的存储系统。通过这种方式提高系统的稳健性,也方便后续的维护。CDC全称是ChangeDataCapture,它是一个比较广义的概念

    MSSQL_SERVER数据库增量同步软件(数据库结构及数据)

    首先把需要增量同步的数据库备份还原到另外一台电脑.这样二台的数据库是一模一样的了, 我的博客,我到时会发表一个纯SQL后台代码的增量同步代码. http://blog.csdn.net/jaimejth 使用方法: 1.配置源服务器和目的...

    青茂数据同步工具 同步数据库部分结构的工具

    DBSync同时提供给开发商二次开发的接口,开发商可以很方便地配置需要进行同步的数据。新增的快速事务处理功能,能提供百万级数据记录的同步能力。新加入的远程同步任务功能,可以和远程数据交换服务器组合成为全球...

    QPSK调制解调系统+载波同步的理论分析

    QPSK调制解调系统+载波同步的理论分析。在调制的过程中,频率及相位进行调制最基本的方法有三种:正交幅度调制(QAM),频移键控(FSK)和相移键控(PSK)。其中QPSK是目前卫星、微波和有线电视上行通信中最常用的一...

    JGD280同步控制器使用说明

    同步控制器,广泛运用于大型机械设备多台电机需要同步的同步控制。

    文件同步修改工具

    一行为一组需要同步文件的文件夹,两个地址用“,”逗号隔开, 程序是用java编写,请安装Java,我使用1.7以上jre,其他你们可以自己测试 程序目前最多同步两组文件夹, 程序只会同步两组文件夹中同名的文件,且只会...

    数据同步工具类,使用Rest接口同步数据

    这是一个利用java中的定时任务和jdbc去同步数据库中的数据一个工具类。 1、在配置文件中synnum同步的数量...2、在解析json数据的时候,如果同步记录数只有一条会同步不到,需要将其中的一个if记录数等于1的判断去掉。

    多窗口同步工具

    多窗口键鼠同步工具是由597游戏论坛开发的键鼠同步器,多窗口同步控制的软件,本软件完全免费。无任何插件,请放心使用。 多窗口键鼠同步工具的使用方法: 点击软件的十字(+)拖动至需要绑定的窗口进行绑定

    solr同步数据库需要jar包

    solr同步数据库需要jar包,多个solr同步数据库数据的jar包。压缩文件里面有说明

    mysql表结构同步批处理[控制台][同navicat表结构同步][定时自动同步表结构][服务器]

    1、此工具可用来同步mysql表结构 2、使用批处理执行,可加入计划任务中,实现定时自动同步表结构 3、指定A机器的db1数据库和B机器的db2数据库,就会把db1的表结构同步到db2,并且不删除db2的旧数据 4、功能类似于...

    三菱FX5U同步控制

    最先的三菱FX5U的新的同步控制手册,需要的朋友赶快下载。

    二级域名和顶级域名需要同步登录如何设置cookie作用域1

    二级域名和顶级域名需要同步登录如何设置cookie作用域当有二级域名和顶级域名需要同步登录时,请在 config/config_global.php 中修改 c

    局域网文件实时同步工具

    更无需在传输大量文件时因需要等待很长时间而发愁。 自同步无需云、无需外网,安全高速,数据只属于你。 自同步软件功能 1)在无网的情况下,手机、平板、电脑间无线同步数据。 2)零流量极速同步,歌曲图片秒同步...

    mysql同步,双向同步

    mysql,两个数据库,实现实时数据同步,对于需要实现mysql同步的用户非常有用

    移动云环境下基于增量同步的压缩文件同步新算法

    由于同步所需的预期大量通信量和高时间复杂度,因此需要开发适当的同步算法。 增量同步是一种同步压缩文件的方法,即使没有进行更改或仅进行了部分更改,也需要上传整个文件。 在本研究中,我们提出了一种基于Delta...

    论文研究 - 基于虚拟同步发电机的智能电网虚拟惯性仿真电流同步检测方案

    虚拟同步发电机的概念需要一个具有功率转换器的储能系统,以模拟虚拟惯性,类似于传统同步发电机的动态特性。 在本文中,在转换器的控制环路中实现了用于估计基本参考源的动态下降控制,包括有功和无功功率分量,...

    oracle数据库数据同步

    然后在使用文件传输服务(通过指定端口)将文件传输到指定的服务器磁盘上,在需要同步的服务器上再部署数据同步服务(这个文件包含在压缩包里。方法:解析XML文件,再调用odp.net组件批量提交,效率是批处理文件的4...

    java 线程同步 信号量控制同步

    关于线程同步 synchronize,需要牢牢记住的第一点是:线程同步就是线程排队。同步就是排队。线程同步的目的就是避免线程“同步”执行。

Global site tag (gtag.js) - Google Analytics