`
woaiwofengkuang
  • 浏览: 26473 次
  • 性别: 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怎么不需要同步呢?

相关推荐

    帧同步_帧同步matlab_帧同步的matlab代码_帧同步_

    在实际应用中,还需要考虑各种噪声、干扰和信道衰落对帧同步的影响。因此,MATLAB代码可能还包括模拟这些环境因素,以及设计抗干扰策略,比如使用交织技术增强系统的鲁棒性。 总的来说,MATLAB为实现帧同步提供了...

    三种帧同步算法的MATLAB代码_帧同步matlab_帧同步算法_帧同步_

    在通信系统中,帧同步是确保接收端正确解码数据流的关键步骤。本文将深入探讨三种常见的帧同步算法,并提供MATLAB代码实现,适合本科毕设项目参考。 1. **滑动窗口同步(Sliding Window Synchronization)** 滑动...

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

    Java 线程同步控制机制 线程同步是 Java 编程中的一种机制,用于控制多个...开发者需要牢牢记住线程同步的四点要素,即线程同步就是线程排队,共享资源需要同步,变量需要同步访问,多个线程访问共享资源需要同步。

    使用Kettle同步mysql数据,增量同步教程执行步骤

    - 添加"表输入"步骤,使用上一步设置的SQL查询来读取需要同步的增量数据。 5. **数据转换**: - 根据需求,可能需要进行数据清洗、格式转换等操作,可以使用Kettle的各种转换步骤,如"选择/重命名"、"转换字段"等...

    麒麟虚拟机同步器1.5p版

    使用麒麟虚拟机同步器1.5p版时,需要注意兼容性问题,尤其是与虚拟机软件(如VMware、VirtualBox等)的兼容性。确保虚拟机软件版本与同步器相匹配,才能充分发挥其功能。同时,合理规划和管理虚拟机环境,避免因过度...

    同步专家 同步文件夹

    标题中的“同步专家 同步文件夹”指的是一个专门用于文件和文件夹同步的应用程序,这类工具在IT行业中被广泛使用,特别是...这样的工具对于那些需要在多个设备之间保持数据同步的个人和企业用户来说,是非常有价值的。

    数据同步技术数据库同步,SQL2000同步,2000,同步,备份

    - **创建表**:首先在发布者端创建需要同步的表。 - **创建触发器**:为了跟踪数据的变化,需要创建触发器来更新状态字段。 - **创建链接服务器**:如果需要在不同的SQL Server实例之间进行同步,则需要创建链接...

    桌面同步软件,同步更新桌面

    - **手动同步**:用户根据需要触发同步操作。 5. **安全性与隐私**:由于涉及到个人数据的传输,桌面同步软件必须具备良好的安全措施,如加密传输、身份验证等,以保护用户的隐私。 6. **云同步与本地同步**:云...

    Oracle 12.2主从数据同步方法

    在启动同步后,需要进行同步测试。可以使用 SQL Plus 工具连接到数据库,执行 INSERT、UPDATE 和 DELETE 语句,以验证数据是否已成功同步。 ### 6. 异常排查 在同步过程中,可能会出现一些异常情况,例如数据不...

    mysql同步,双向同步

    要实现MySQL同步,我们需要在每个数据库服务器上配置相应的参数。下面是实现双向同步的步骤: 1. 首先,在每个数据库服务器上安装 MySQL 5.7,并确保 MySQL 版本相同。 2. 在每个数据库服务器上,创建一个 MySQL ...

    日历同步实现安卓手机端与PC端同步

    6. **无线同步**:对于支持Wi-Fi Direct的设备,可以使用某些日历同步工具通过Wi-Fi直接在手机和PC之间传输数据,但这通常需要设备间建立直接的连接。 为了实现上述同步,确保在安卓手机上打开日历应用的同步设置,...

    分组网络的同步技术 分组网络的同步技术

    随着3G/4G网络和全IP化趋势的发展,分组网络不仅要承载传统的TDM业务,还需要支持新型的无线业务,这对其同步性能提出了更高要求。本文将深入探讨分组网络的频率同步和时间同步技术,以及相关的协议实现。 首先,...

    单bit信号跨时钟域的方法:电平同步器+边沿同步器+脉冲同步器

    每种同步器有其特定的适用场景和优缺点,设计者需要根据具体需求选择合适的方法。在Verilog中实现这些同步器,不仅能够提高数字系统的可靠性,还能帮助工程师理解和掌握数字系统设计的关键概念。

    位同步(比特同步)和帧同步的区别是什么

    需要注意的是,在异步通信中,接收端即使找到了数据帧的开始处,也还必须将数据帧中的所有比特逐个接收下来。因此,接收端必须和数据帧中的各个比特进行比特同步(这就是异步通信中的同步问题)。 在异步通信中,位...

    sew 同步技术手册

    同步技术在多电机同步驱动和精确控制过程中非常关键,尤其适用于需要协调多个电机动作的场景。 ### 1. 重要信息和文档阅读 在开始安装和启动具有内部同步操作的MOVIDRIVE®变频器之前,务必要仔细阅读本手册。手册...

    同步软件--绿色

    这使得用户可以在任何装有Windows系统的电脑上快速启动同步任务,非常适合需要在多台电脑之间工作的用户。 总的来说,GoodSync是一款强大且灵活的同步软件,它的定时自动同步、增量同步以及便携式“绿色”设计,使...

    麒麟虚拟机同步器2.2p版

    麒麟虚拟机同步器2.2p版是一款专为麒麟操作系统设计的高效虚拟机同步工具,旨在提高多虚拟机环境下的协作效率和数据一致性。...对于需要在麒麟操作系统上使用虚拟机的用户来说,这是一个不可或缺的辅助工具。

    键鼠多开同步器

    使用键鼠同步器时,用户需要注意的是,虽然这类工具能提高效率,但也要遵循游戏的规则,避免在多人在线游戏中因为同步操作被误认为作弊。另外,安装任何第三方软件时,都要确保来源可靠,防止下载携带病毒或恶意软件...

    易语言窗口同步操作源码

    在游戏编程中,窗口同步尤为重要,因为游戏通常包含多个界面(如主菜单、游戏场景、设置窗口等),这些窗口需要协同工作以提供良好的用户体验。通过窗口同步,我们可以确保在切换窗口时数据的一致,避免出现未预期的...

    多窗口同步工具

    7. **性能优化**:为了确保流畅的使用体验,工具需要优化算法,降低延迟,使得同步操作尽可能接近即时。 8. **故障恢复与日志记录**:如果发生同步问题,软件可能会有故障恢复机制,并记录操作日志,便于排查和解决...

Global site tag (gtag.js) - Google Analytics