当前位置: 首页 > 面试题库 >

Prevayler的同步策略是什么?

贺立果
2023-03-14
问题内容

Prevayler保证所有写入(通过其事务)都是同步的。但是读呢?

如果不使用显式同步(在用户代码中),可以进行脏读吗?

如果将业务对象读取为:

// get the 3rd account
Accont account = (Bank)prevayler.prevalentSystem().getAccounts().get(2);

如果是这样,哪种同步策略对用户代码有利?

(考虑业务对象A包含业务对象Bs的集合),

  • 使用同步集合(A中B的集合),例如从java.util.concurrent包中?
  • 同步外部事务的集合读取与内部事务的集合写入,例如在读写之间使用“ synchronized(collection)”代码?

问题答案:

推荐的方法是使用JMatch Query和Prevayler.execute(Query)。直接或使用子类化。

返回的结果必须是原始值或不可变的对象。如果计划返回可变对象,则应将JMatch
Query子类化以执行这些深层副本。这样,您将获得一个系统,该系统将每个明智的读取与其他(明智的)读取和写入锁定在一起。这可以加快并简化开发,特别是对于没有多线程编程经验的开发人员而言。

如果在极高的并发负载下需要更高的性能(这是极少数情况),则确实可以使用上述的细粒度锁定-使用“同步”和java.util.concurrent。

有关更多详细信息,请参见此讨论。



 类似资料:
  • 同步策略即通过设置标签与资源映射项目的对应关系,将公有云下的资源按照规则设置分配给指定项目。 同步策略即通过设置标签与资源映射项目的对应关系,将公有云下的资源按照规则设置分配给指定项目,同步策略仅在云账号同步的时候生效。目前支持的资源为所有带标签的项目资源。 说明 当磁盘、快照、eip等项目资源绑定到其他资源上时,将会按照其他资源上的标签,将其同步到对应项目中,若磁盘、快照、eip等未关联资源,则

  • 问题内容: 用例是使用Redis作为MySQL的本地缓存 MySQL中的数据格式为:单个主键和其他几个字段。不会有查询数据库的交叉表 Redis键是MySQL中的主键,值是包含MySQL中其他字段的哈希 关闭电源后,少于一分钟的数据丢失是可以接受的。 我的解决方案是: Redis写入AOF文件,某些进程将监视此文件并将更新的数据同步到MySQL Hack Redis可以在多个文件中写入AOF,就像

  • 本文向大家介绍什么是安全策略?相关面试题,主要包含被问及什么是安全策略?时的应答技巧和注意事项,需要的朋友参考一下 回答:安全策略是一个正式且简短的计划,其中包含组织的目标,目的和信息安全程序。简而言之,它定义了确切地需要保护免受威胁的条件以及在威胁发生时如何处理情况。

  • 策略模式 一、策略模式的定义 二、策略模式的实际应用 三、策略模式中的设计原则 策略模式 策略模式的定义 策略模式,顾名思义就是指对象具有某个行为,但是在不同的业务场景下,这个行为应该有不同的表现形式,也就是有了不同的策略。让对象能再不同的场景下对同一行为有不同的实现,这就是策略模式。 下面是策略模式的类图: 首先定义一个策略接口: public interface Strategy { pub

  • 问题内容: 我的要求是我有服务器J2EE Web应用程序和客户端J2EE Web应用程序。有时客户端可以脱机。当客户上线时,他应该能够来回同步更改。我还应该能够基于一些过滤器/规则来控制哪些行/表需要同步。有没有现成的Java框架可以做到这一点?如果我需要自己实施,您可以建议哪些不同的策略? 我想到的一个解决方案是维护SQL日志并在同步期间在另一端执行相同的语句。您认为此策略有任何问题吗? 问题答

  • 同源策略 浏览器的同源策略是 Web 安全的基石,它对从一个源加载的文档或脚本如何与来自另一个源的资源进行交互做出了限制。这是一个用于隔离潜在恶意文件的关键的安全机制,每个源均与其余网络保持隔离,从而为开发者提供一个可进行构建和操作的安全沙盒。 如果没有同源策略, Web 世界就变得非常不安全,拿浏览器中的 cookie 来说,当你登录 a 网站,同时打开 b 网站,b 网站能获取你 a 网站的