问题标签 [synchronization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
9492 浏览

mysql - 在 MySQL 中同步两个数据库模式

我一直在寻找可以同步两个 MySQL 数据库模式的可移植脚本或命令行程序。我不是在寻找基于 GUI 的解决方案,因为它无法自动化或使用构建/部署工具运行。

基本上它应该做的是扫描database1和database2。检查模式差异(表和索引)并提出一堆 SQL 语句在一个上运行,以便它获得与另一个相似的结构,尽可能减少数据损坏。

如果有人可以指出实现此类解决方案的 PHP、Python 或 Ruby 包,我可以尝试从那里复制代码。

很多 MySQL GUI 工具可能可以做到这一点,但我正在寻找一个可编写脚本的解决方案。

编辑:抱歉没有更清楚:我正在寻找的是表结构中的同步,同时尽可能保持数据完整。不是数据复制。

更多信息:

为什么复制不起作用。

  1. 安装基地遍布全州。
  2. 我们希望安装程序根据最新版本中的 chagnes 对数据库执行动态修复,而不管最终用户可能使用的旧版本是什么。
  3. 更改大多像向表添加新列,创建新索引或删除索引,添加表或删除系统内部使用的表(我们不删除用户数据表)。

如果是 GUI:不,不能使用。我们不想仅仅为了 DB diff 将 20MB 的应用程序与我们的安装程序捆绑在一起。特别是当原始安装程序小于 1 MB 时。

0 投票
3 回答
1943 浏览

java - JTree 给出 ArrayIndexOutOfBoundsException?

我尝试将节点动态添加到 Java SwingJTree中,并且用户应该能够在不断添加节点的同时浏览和折叠层次结构。当我Thread.sleep(10)在循环中添加 a 时,它工作正常;但这是一个肮脏的黑客......

这是触发此问题的精简代码。每当我运行它并双击根节点以展开/折叠它(添加节点时),我都会得到一个ArrayIndexOutOfBoundsException. 当我添加一个Thread.sleep(10)这不会发生。我想这是一个线程问题,但我不知道如何同步?任何提示将不胜感激!

我想将其用于打字搜索应用程序,因此(几乎)提供即时结果对我来说至关重要。

编辑:感谢您的快速回答!SwingUtilities.invokeLater()解决问题。

我现在这样做:

  1. 在其中添加 100 个项目SwingUtilities.invokeLater();
  2. 在 100 个项目之后,我运行它以便更新 GUI:

    /li>

这样我就有了一个响应速度非常快的 GUI,而且效果很好。谢谢!

0 投票
6 回答
2888 浏览

windows - windows什么时候发出进程句柄的信号?

我实现了一个自我升级过程,其中我的主应用程序 exe 启动一个更新程序 exe,在命令行上将句柄传递给自身。应用程序 exe 然后调用 ExitProcess 退出,更新程序在传入的句柄上调用 WaitForSingleObject 以等待应用程序 exe 终止。

WaitForSingleObject 确实等待。直到应用程序调用 ExitProcess,更新程序才会停止。

但是,有时,当更新程序尝试用新版本覆盖应用程序 dll 时,我会收到一个文件锁定错误,我的更新程序的当前版本将其视为不可恢复的错误并终止。似乎包含任意 sleep(100) 足以绕过这个“问题”,但我真的很讨厌这样的代码。真的很讨厌。

对我来说似乎很奇怪,当主应用程序仍然存活到足以锁定 dll 文件时,可以向进程句柄发出信号。

0 投票
5 回答
11562 浏览

c++ - 如何同步访问 NAS 上的文件的两个进程?

事情是这样的:我有两个应用程序,用 C++ 编写并在两台具有不同操作系统的机器上运行(一台 Linux 和一台 Windows)。其中一个过程负责更新 NAS(网络附加存储)上的 XML 文件,而另一个则读取该文件。

是否可以同步这两个进程以避免在修改文件的同时读取文件?

0 投票
2 回答
196 浏览

networking - 带宽效率最高的单向同步(服务器到多个客户端)

将数据列表从一台服务器单向同步到多个客户端的最有效带宽的方法是什么?

我有相当大的数据块(可能是 20,000 个 50 字节的记录),我需要通过 Internet 定期同步到一系列客户端(可能是 10,000 个客户端)。记录只能在服务器端添加、删除或更新。

0 投票
4 回答
227 浏览

mysql - 用于 mysql 的精细 db 比较器程序

使用 MSSQL,我有几个工具用于比较数据库结构和数据,如 SQL-compare、SQL-delta、SQL-Clarity Effects 等...

MySQL有一些等效的程序吗???

我需要一个可以向我展示差异的程序,如果可能的话,准备同步脚本......

如果是免费的就更好了...

0 投票
6 回答
5356 浏览

java - 如何在不同的应用程序级别锁定文件?

这是场景:我有一个在 servlet 容器内运行的多线程 Java Web 应用程序。该应用程序在 servlet 容器内多次部署。有多个 servlet 容器在不同的服务器上运行。

也许这张图清楚地表明:

网络共享目录中有一个文件,所有这些线程都可以访问。他们确实经常访问该文件。大多数情况下,文件仅由这些线程读取。但有时会写出来。

我需要一个故障安全解决方案来同步所有这些线程,以保证数据一致性。


不起作用(正确)的解决方案

  1. 使用 java.nio.channels.FileLock
    我可以使用 FileLock 类同步来自不同服务器的线程。但这不适用于同一进程(servlet 容器)内的线程,因为文件锁在进程范围内可用。

  2. 使用单独的文件进行同步,
    我可以创建一个单独的文件,指示进程正在读取或写入文件。此解决方案适用于所有线程,但有几个缺点:

    • 表现。创建、删除和检查文件是相当慢的操作。具有一个同步文件的低权重实现将阻止文件的并行读取。
    • 在需要手动清理的 JVM 崩溃后,同步文件将保留。
    • 我们已经在删除网络文件系统上的文件时遇到了奇怪的问题。
  3. 使用消息传递
    我们可以实现一个消息传递系统,线程将使用它来协调文件访问。但这对于这个问题来说似乎太复杂了。再说一遍:性能会很差。

有什么想法吗?

0 投票
4 回答
511 浏览

windows - 从 Windows PC 修改远程 Ubuntu 服务器上的文件

我正在开发一些我在远程 Ubuntu Linux 服务器(托管在 Slicehost 上)上运行的 Python 程序。我想在我的 Windows Vista PC 上的 IDE 中处理源代码,并将所有文件修改直接发送到 Linux 机器而无需我的干预(即,每次更改文件时都不必手动 SFTP 文件)。我能做到这一点的最简单方法是什么?

0 投票
6 回答
2219 浏览

architecture - 多个 CPU 可以同时写入同一个 RAM 位置吗?

机器字长(或更小)的写入是否序列化?只需一个本机操作码即可将寄存器内容复制到 RAM。

0 投票
7 回答
1676 浏览

c# - 为什么 volatile 还不够?

我很困惑。我之前的问题的答案似乎证实了我的假设。但正如此处所述, volatile 不足以确保 .Net 中的原子性。MSIL 中的增量和赋值等操作不会直接转换为单个本地 OPCODE,或者多个 CPU 可以同时读取和写入相同的 RAM 位置。

澄清:

  1. 我想知道写入和读取是否在多个 CPU 上是原子的?
  2. 我明白 volatile 是什么意思。但够了吗?如果我想获取其他 CPU 写入的最新值,是否需要使用联锁操作?