首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

提交不起作用,但它确实起作用了,但在同步之前看不到它。为什么?

这个问题涉及到并发编程和数据同步的概念。在多线程或分布式系统中,当多个线程或节点同时对共享数据进行操作时,可能会出现数据不一致的问题。

在这个问题中,提交操作可能是在一个线程或节点中执行的,而同步操作可能是在另一个线程或节点中执行的。当提交操作执行时,它可能会修改共享数据,但这些修改可能还没有被同步到其他线程或节点中。因此,在同步操作之前,其他线程或节点看不到提交操作所做的修改。

这种现象可以通过以下几个原因来解释:

  1. 缓存:在分布式系统中,每个节点通常都有自己的缓存,用于提高读取性能。当一个节点执行提交操作时,它可能会将修改的数据存储在自己的缓存中,而不是立即同步到其他节点。因此,在同步之前,其他节点无法看到这些修改。
  2. 数据复制延迟:在分布式系统中,数据通常会进行复制以实现冗余和容错。当一个节点执行提交操作时,它可能会将修改的数据复制到其他节点,但这个复制过程可能需要一些时间。因此,在同步之前,其他节点可能无法看到这些修改。
  3. 同步机制:在并发编程中,通常会使用各种同步机制来确保数据的一致性。例如,锁、信号量、条件变量等。如果提交操作使用了某种同步机制,而同步操作没有使用相同的同步机制,那么在同步之前,其他线程或节点可能无法看到提交操作所做的修改。

为了解决这个问题,可以采取以下几种方法:

  1. 使用同步机制:在提交操作和同步操作之间使用相同的同步机制,以确保数据的一致性。例如,使用锁来保护共享数据,只有获取锁的线程才能修改数据。
  2. 使用强一致性模型:在分布式系统中,可以使用强一致性模型来确保数据的一致性。强一致性模型要求在数据修改后,所有节点都必须立即看到这些修改。例如,使用分布式事务来保证数据的一致性。
  3. 使用缓存刷新机制:如果缓存是导致数据不一致的主要原因,可以使用缓存刷新机制来解决。例如,当提交操作执行时,可以立即刷新缓存,以确保其他节点能够看到修改。

总之,提交操作可能在同步之前起作用,但其他线程或节点可能无法立即看到它的修改。这是由于并发编程和数据同步的特性所导致的。为了解决这个问题,可以采取适当的同步机制和数据一致性策略。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux桌面的4种扫描工具

如果您已经扫描了几页以上的内容,则可以在保存之前重新排序这些页面。如果有必要-比如你提交了一份签名表格-你可以在简单的扫描中发送电子邮件。...Gscan2pdf 另一个旧的最爱,gscan2pdf它可能显示的历史,但它的功能仍然比这里提到的其他一些应用程序要多一些。即使如此,gscan2pdf仍然相对较轻。...如果这不是你的茶,或者它不起作用,你可以把GIMP和一个名为QuiteInsane。...这使得伟大的扫描照片和艺术。 它们真的起作用了吗? 所有这些软件在大多数情况下都能正常工作,并且可以使用多种硬件。...我使用的任何软件都无法检测到。我不得不下载并安装佳能的Linux扫描仪软件,该软件确实能工作。”

4.1K31

Java Web技术经验总结(十一)

为了解决这个问题,我们决定使用分布式锁解决这个问题,在进行数据库插入操作之前要先拿分布式锁,拿到锁以后也要先检查数据库,没有的话再插入数据。...我在测试的时候发现分布式锁不起作用,先是以为自己的锁有问题,排除这个问题之后,开始回顾之前的代码。...发现一个坑:原有的代码在接口定义层用了@Transactional注解,Spring中的事务是基于AOP实现的,如果在RPC接口使用事务注解,那么事务会在RPC接口返回之后才会提交。...可以看出,当事务的范围大于同步代码块的范围时会有问题。A请求释放了锁,但是的事务还没有提交;B请求已经拿到了锁,但是看不到A请求的事务修改的东西,导致脏读。...我的经验是:(1)只有某个业务要求同时修改两张以上的表的数据的时候,再使用事务,并且要在方法级别使用;(2)事务和同步代码块不可嵌套使用。

54920
  • 虽然SHA-1遭遇碰撞攻击,但“天还没塌”

    虽然这个问题是发生在WebKit SVN上的,但它能影响全世界的版本控制系统。...无论是回滚还是删除PDF文件都不起作用,SVN repo仍然无法使用,与镜像repo的同步也中止。虽然工程师最终修复问题,但WebKit团队不得不放弃在他们软件中检测SHA-1碰撞的想法。...Apache则在确认缺陷后不久发布临时补丁,这个脚本可以在SVN checkout之前检查提交的源代码中有没有能够导致SHA1碰撞的文件。Apache表示会在将来提供更好的解决方案。...这个SHA1攻击的本质决定实际上很容易缓解,已经有两组针对这个攻击的补丁;实际上有个直接过渡到一些其他的哈希方法。他还表示,Git 确实需要替换 SHA1,这需要时间,并不需要现在就去做。...因此,即便Google证明SHA-1算法是可以被攻击的,离实际应用还差很远。

    1.5K60

    正确使用 waitnotifynotify方法以及源码解析

    为什么 wait 必须在 synchronized 保护的同步代码中使用? 逆向思考下,没有 synchronized 保护的情况下,我们使用会出现啥问题?...可这个时候唤醒不起作用呀。消费者并没有在等待。 最后,消费者回去调用 wait 方法,就进入了无限等待中。 看明白了吗?...第一步时,消费者判断了 while 条件,但真正执行 wait 方法时,生产者已放入数据,之前的 buffer.isEmpty 的结果已经过期,因为这里的 “判断 - 执行” 不是一个原子操作,它在中间被打断了...buffer.remove(); } } } notify & notifyAll notify & notifyAll 都是 Object 的 native 方法,在 IDEA 中看不到的源码...如果线程需要等待某些锁那么调用对象中的 wait 方法就有意义等待的就是这个对象的锁。如果 wait 方法定义在 Thread 类中,线程正在等待的是哪个锁就不明显

    1.3K20

    Excel VBA SQL Join Syntax ErrorExcel VBA SQL 连接语法错误

    此外,语法无论如何都不起作用。你不能做 INNER JOIN ON....你需要在 INNER JOIN 和 ON 之间放一个表。...我不明白为什么我不能将 OrderID 与 CustomerID 关联起来?它们确实有不同的值,但在“订单”表中,订单 ID 是主键,客户 ID 是外键。...(6) = "ORDER BY O.OrderDate" Set rs = CurrentProject.Connection.Execute(Join(aSql, Space(1))) 以下是我对不起作用的内部联接的建议...在 Access 中创建一个查询并查看生成的 SQL。它可能不是最漂亮的 SQL,但它可以帮助您确定问题所在。...她的工作就像一颗宝石,丹克申 如果解决问题并且您认为它是最好的,请将此标记为答案。很高兴能帮上忙。

    21120

    网页页面下各种标签的含义

    注意事项: (1).根据官网定义X-UA-compatible 标头不区分大小写;不过,必须显示在网页中除 title 元素和其他 meta 元素以外的所有其他元素之前。...如果不是的话,它不起作用 (2).content的内容是IE=8,或者IE=edge等值,注意不是IE8或者直接写个edge的值,否则不起作用 3、canonical : 这个标签是 Google、雅虎...、微软等搜索引擎一起推出的一个标签,的主要作用是用来解决由于网址形式不同内容相同而造成的内容重复问题。...*此标签只是建议,不是命令,意思是如果设置的不合理,SE仍会按正常的方式确实首选的网页;如权威页指向404页,或指像的页面返回错误,SE仍会索引这个页的内容。...这就该轮到meta标签出场

    1.7K10

    网页页面下各种标签的含义

    注意事项: (1).根据官网定义X-UA-compatible 标头不区分大小写;不过,必须显示在网页中除 title 元素和其他 meta 元素以外的所有其他元素之前。...如果不是的话,它不起作用 (2).content的内容是IE=8,或者IE=edge等值,注意不是IE8或者直接写个edge的值,否则不起作用 3、canonical : 这个标签是 Google、雅虎...、微软等搜索引擎一起推出的一个标签,的主要作用是用来解决由于网址形式不同内容相同而造成的内容重复问题。...*此标签只是建议,不是命令,意思是如果设置的不合理,SE仍会按正常的方式确实首选的网页;如权威页指向404页,或指像的页面返回错误,SE仍会索引这个页的内容。...这就该轮到meta标签出场

    1.6K10

    【翻译】monorepos 的优点

    某人:哦,听起来确实不错。我仍然认为这很奇怪,但我可以理解为什么有人会想要那样做。 “[某些原因]”很长,所以我把写下来是为了避免一遍又一遍地重复同样的对话。...由于它不起作用似乎很奇怪,因此通常可以工作,并且任何使其工作所需的工具已经具备(在我工作的一家硬件公司中,这甚至是正确的,该公司通过在 NFS 上的 RCS 中对事物进行版本控制来创建一个 monorepo...这听起来应该很简单,但在实践中,大多数解决方案都很麻烦并且涉及大量开销。 使用 monorepo,很容易为所有项目拥有一个通用版本号。...像 rbenv 和 virtualenv 这样的系统试图回避这个问题,但它们导致开发环境的激增。...使用 monorepo,您只需在一次提交中重构 API 及其所有调用者。这并不总是微不足道的,但它比使用大量小型存储库要容易得多。

    1.6K30

    记一个bootloader的cache问题

    为了确认改动是生效的,尝试将CPU频率设定降低了些,发现速度确实随之变慢了,那就说明CPU时钟配置确实生效。退一步讲,CPU的设置即使没成功,也不应该造成十倍的性能差距。...那么目光就落在Cache身上。从代码上看,MMU,DCache和ICache是都打开了的。那么既然使能,得想个办法确认是否确实起作用了,一个简单的办法就是,故意不使能,看性能是否有变化。...Cache设定 到了这一步,我想到之前解决的另一个Cache不起作用的问题,最终是查到必须设置smp bit,于是加上对应的设置代码,但加上后问题并没解决。...顺便提一句,最开始加的smp bit确实是需要的,各位如果发现DCache没起作用,可以检查下这个设置,之前在另一个问题上也是坑我好几天才从uboot中揪出这个配置。...如果是在主系统中,那对Cache就得精细化控制,该回刷就回刷该无效就无效,但在这个问题中我的场景比较简单,bootloader一穷二白,就简单些吧,再移植一段刷Cache的代码,直接刷全部DCache。

    72330

    Python类中的属性

    要使用名称修饰,你只需要记住这个命名规则:不要使用.name()的约定来命名私有方法,因为这样不起作用。 结论 我们讨论在Python中面向对象编程的上下文中的隐私概念。...但它们永远不是真正的私有。 这种方法对我来说听起来并不自然。当我想到私有属性时,我将其想象为一个在类外部看不到和使用的属性。同样,它是一个可以被看到和使用的公共属性。...第二点超出了本文的范围,我们将在其他时间讨论。 附录1 这个附录解释为什么在编写Me类时,我写成了 self._thoughts += [what] 而不是 self....然而,这对于非可迭代对象(如数字,这里是整数)不起作用: >>> x += 5 Traceback (most recent call last): ......这就是为什么self._thoughts += what不起作用的原因。如果我们使用它,将会产生以下不希望的效果: >>> marcin.

    17530

    List.append() 在 Python 中不起作用,该怎么解决?

    Python 是一种强大而灵活的编程语言,提供许多方便的数据结构和操作方法,其中之一就是列表(List)。列表是一个有序的集合,可以包含不同类型的元素,并且可以进行添加、删除和修改等操作。...然而,在某些情况下,你可能会遇到 List.append() 方法不起作用的问题。本文将详细讨论这个问题并提供解决方法。...问题描述虽然 List.append() 方法通常在 Python 中运行良好,但在某些情况下,它可能无法正常工作。以下是一些可能导致 List.append() 方法不起作用的情况:1....解决方法如果 List.append() 方法不起作用,你可以考虑以下解决方法:1. 确保列表变量正确引用在使用 List.append() 方法之前,确保列表变量引用正确。...然而,当遇到某些情况时,它可能不起作用。这篇文章详细讨论导致 List.append() 方法不起作用的可能情况,并提供了解决方法。

    2.5K20

    为什么混合云爆发没有发生?

    但如今,几乎没有人谈论。 多年前,混合云爆发的概念非常引人注目:在私有云和公共云上都有工作负载,并且能够在正常运行期间在私有云上运行这些工作负载,并在私有云上的资源低时突发到公共云,这有多酷呢?...但在2018年,人们发现没有几个爆发的混合云。 他们缺席的原因有几个,其中包括: 私有云不再是一件事情。尽管一些企业确实使用了它们,而私有云公司依然存在,但大部分情况是公共云正在发生增长。...这并不是说混合云爆发不起作用,但对大多数组织来说都是不切实际的或不可取的。...使用案例包括将数据保留在公共云中,但在本地进行处理,反之亦然。在这种情况下,企业并未试图在两个不同的地方运行相同的工作负载,而是通过功能来分离工作负载。这就是为什么这种方法越来越受欢迎的原因。

    903130

    为什么深度学习模型不能适配不同的显微镜扫描仪产生的图像

    虽然有些人已经在谈论另一个AI冬天,但在生物医学领域,我们只是看到深度学习模型却并非如此,而是真正兑现诺言并取得了卓越的成果。 但是-他们有一个大问题。...因此,如果我们针对实验1的数据分布训练深度学习模型,则对于实验2的部分数据集可能会正常工作,但对于实验3的数据可能根本不起作用。您想为所有人提供解决方案的问题。...这是为什么?首先,因为有许多显微扫描仪制造商,并且他们都提供优质的产品。因此,我们有有多种产品可供选择。对于显微镜扫描仪,他们的价格大约为10万欧元。...如果没有域转移,我们就看不到聚类。相反,我们看到了一个强大的集群(特别是对于Aperio和其他扫描器)。因此,该模型在扫描器之间有很好的区别——但它应该只在图像中寻找有丝分裂而与域移位无关。...这就是为什么一旦我们改变了这些,它就不能很好地工作。 效果有多强?我们发现,甚至比不同实验室和不同物种的组合所引起的领域差距还要强。 作者:Prof.

    87510

    Batch Normalization的诅咒

    Batch Normalization确实是深度学习领域的重大突破之一,也是近年来研究人员讨论的热点之一。...然而,尽管它具有多种功能,但仍有一些地方阻碍该方法的发展,正如我们将在本文中讨论的那样,这表明做归一化的方法仍有改进的余地。 我们为什么要用Batch Normalization?...在讨论任何事情之前,首先,我们应该知道Batch Normalization是什么,它是如何工作的,并讨论的用例。...对超参数更鲁棒 Batch Normalization的诅咒 好,让我们回到本文的出发点,在许多情况下batch normalization开始伤害性能或根本不起作用。...但在投入生产后,这些模型的工作并不像训练时那么好。这是因为它们接受的是大batch的训练,而在实时情况下,它们的batch大小等于1,因为必须一帧帧处理。

    86430

    Batch Normalization的诅咒

    Batch Normalization确实是深度学习领域的重大突破之一,也是近年来研究人员讨论的热点之一。...然而,尽管它具有多种功能,但仍有一些地方阻碍该方法的发展,正如我们将在本文中讨论的那样,这表明做归一化的方法仍有改进的余地。 我们为什么要用Batch Normalization?...在讨论任何事情之前,首先,我们应该知道Batch Normalization是什么,它是如何工作的,并讨论的用例。...对超参数更鲁棒 Batch Normalization的诅咒 好,让我们回到本文的出发点,在许多情况下batch normalization开始伤害性能或根本不起作用。...但在投入生产后,这些模型的工作并不像训练时那么好。这是因为它们接受的是大batch的训练,而在实时情况下,它们的batch大小等于1,因为必须一帧帧处理。

    36240

    数据库PostrageSQL-文件系统级别备份

    文件系统级别备份 另外一种备份策略是直接复制PostgreSQL用于存储数据库中数据的文件,Section 18.2解释这些文件的位置。...例如阻止所有连接的半路措施是不起作用的(部分原因是tar和类似工具无法得到文件系统状态的一个原子的快照,还有服务器内部缓冲的原因)。关于停止服务器的信息可以在Section 18.5中找到。...这种方法也不会起作用,因为包含在这些文件中的信息只有配合提交日志文件(pg_xact/*)才有用,提交日志文件包含了所有事务的提交状态。一个表文件只有和这些信息一起才有用。...另一种文件系统备份方法是创建一个数据目录的“一致快照”,如果文件系统支持此功能(并且你相信的实现正确)。...你可以在拍摄快照之前执行一次CHECKPOINT以便节省恢复时间。 如果你的数据库跨越多个文件系统,可能没有任何方式可以对所有卷获得完全同步的冻结快照。

    59210
    领券