問題タブ [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.
mysql - MySQL で 2 つのデータベース スキーマを同期する
2 つの MySQL データベース スキーマを同期できる移植可能なスクリプトまたはコマンド ライン プログラムを探していました。GUI ベースのソリューションを探しているわけではありません。これは、buid/deployment ツールで自動化または実行できないためです。
基本的に、データベース 1 とデータベース 2 をスキャンする必要があります。スキーマの違い (テーブルとインデックス) を確認し、1 つの SQL ステートメントを実行することを提案して、他の SQL ステートメントと同様の構造を取得し、データの損傷を可能な限り最小限に抑えます。
このタイプのソリューションが実装されている PHP、Python、または Ruby パッケージを誰かが示すことができれば、そこからコードをコピーすることを試みることができます。
おそらく多くの MySQL GUI ツールでこれを行うことができますが、スクリプト可能なソリューションを探しています。
編集:より明確でなくて申し訳ありません:私が探しているのは、データを可能な限りそのままに保ちながら、テーブル構造で同期することです。データ複製ではありません。
より詳しい情報:
複製が機能しない理由。
- 設置拠点は州中に広がっています。
- エンド ユーザーが使用している古いバージョンに関係なく、最新バージョンで行われた変更に基づいて、インストーラーが DB で動的な修正を実行するようにします。
- 変更とは、ほとんどの場合、テーブルに新しい列を追加する、新しいインデックスを作成する、またはインデックスを削除する、システムが内部的に使用するテーブルを追加する、またはテーブルを削除するようなものです (ユーザー データ テーブルは削除しません)。
GUI の場合: いいえ、使用できません。DB diff のためだけにインストーラーに 20MB のアプリをバンドルしたくありません。特に、元のインストーラーが 1 MB 未満の場合。
java - JTreeはArrayIndexOutOfBoundsExceptionを与えますか?
Java Swingにノードを動的に追加しようとするJTree
と、ノードが絶えず追加されている間、ユーザーは階層を参照して折りたたむことができるはずです。Thread.sleep(10)
ループにを追加すると、正常に機能します。しかし、これは汚いハックです...
これは、この問題を引き起こす簡略化されたコードです。これを実行し、ルートノードをダブルクリックして展開/折りたたむと(ノードが追加されている間)、が表示されArrayIndexOutOfBoundsException
ます。これを追加しても、Thread.sleep(10)
これは発生しません。これはスレッドの問題だと思いますが、これを同期する方法がわかりませんか?ヒントをいただければ幸いです。
これをタイピング中の検索アプリケーションに使用したいので、(ほぼ)即座に結果を出すことが私にとって不可欠です。
編集:迅速な回答をありがとう!SwingUtilities.invokeLater()
問題を解決します。
私は今これをします:
- 内に100個のアイテムを追加します
SwingUtilities.invokeLater();
100項目後、GUIを更新できるように、これを実行します。
/li>
このように、私は非常に応答性の高いGUIを使用しており、完全に機能します。ありがとう!
windows - Windows はいつプロセス ハンドルを通知しますか?
メイン アプリケーション exe がアップデータ exe を起動し、コマンド ラインで自分自身にハンドルを渡すセルフ アップグレード プロセスを実装しています。次に、アプリケーション exe は ExitProcess を呼び出して終了し、アップデーターは渡されたハンドルで WaitForSingleObject を呼び出して、アプリケーション exe が終了するのを待ちます。
WaitForSingleObject は待機します。アプリケーションが ExitProcess を呼び出すまで、アップデーターは停止します。
ただし、アップデーターが新しいバージョンでアプリケーション dll を上書きしようとすると、ファイルがロックされたエラーが発生することがあります。これは、アップデーターの現在のバージョンが回復不能なエラーとして処理し、終了します。この「問題」を回避するには、任意の sleep(100) を含めるだけで十分なようですが、そのようなコードは本当に嫌いです。本当に嫌い。
dll ファイルをロックするのに十分なほどメイン アプリケーションがまだ生きている間に、プロセス ハンドルにシグナルを送ることができるというのは、私には非常に奇妙に思えます。
c++ - NAS上のファイルにアクセスする2つのプロセスを同期するにはどうすればよいですか?
これが重要です。C++で記述され、OSが異なる2台のマシン(1台のLinuxと1台のWindows)で実行されている2つのアプリケーションがあります。このプロセスの1つは、NAS(Network Attached Storage)上のXMLファイルの更新を担当し、もう1つはこのファイルを読み取ります。
変更中のファイルの読み取りを回避するために、これら2つのプロセスを同期することは可能ですか?
networking - 帯域幅効率が最も高い一方向の同期 (サーバーから複数のクライアントへ)
1 つのサーバーから多くのクライアントにデータのリストを一方向に同期する最も帯域幅効率の良い方法は何ですか?
インターネットを介して一連のクライアント (おそらく 10,000 クライアント) と定期的に同期する必要があるかなりの量のデータ (おそらく 20,000、50 バイトのレコード) があります。レコードは、サーバー側でのみ追加、削除、または更新できます。
mysql - mysql の優れた db 比較プログラム
MSSQL を使用して、SQL-compare、SQL-delta、SQL-Clarity Effects など、DB 構造とデータを比較するために使用するツールがいくつかあります...
MySQL用の同等のプログラムはありますか???
違いを表示できるプログラムが必要です。可能であれば、同期スクリプトを準備します...
無料ならもっといいのに…
java - 異なるアプリケーションレベルでファイルをロックする方法は?
シナリオは次のとおりです。サーブレットコンテナ内で実行されているマルチスレッドの Java Web アプリケーションがあります。アプリケーションは、サーブレット コンテナー内に複数回デプロイされます。異なるサーバーで複数のサーブレット コンテナーが実行されています。
おそらく、このグラフは次のことを明確にしています。
これらすべてのスレッドがアクセスできるネットワーク共有ディレクトリ内にファイルがあります。そして、彼らは頻繁にファイルにアクセスします。ほとんどの場合、ファイルはそれらのスレッドによってのみ読み取られます。でもたまに書いてある。
データの一貫性が保証されるように、これらすべてのスレッドを同期するためのフェイル セーフ ソリューションが必要です。
(適切に)機能しないソリューション:
java.nio.channels.FileLock
を使用すると、FileLock クラスを使用して、異なるサーバーからスレッドを同期できます。ただし、ファイル ロックはプロセス全体で使用できるため、これは同じプロセス (サーブレット コンテナー) 内のスレッドでは機能しません。同期
に別のファイルを使用すると、プロセスがファイルに対して読み取りまたは書き込みを行っていることを示す別のファイルを作成できます。このソリューションはすべてのスレッドで機能しますが、いくつかの欠点があります。- パフォーマンス。ファイルの作成、削除、およびチェックは、かなり遅い操作です。1 つの同期ファイルを使用した低重量の実装では、ファイルの並列読み取りが妨げられます。
- JVM がクラッシュした後も同期ファイルが残り、手動によるクリーンアップが必要になります。
- ネットワークファイルシステム上のファイルを削除するという奇妙な問題がすでに発生しています。
メッセージング
の使用 スレッドがファイル アクセスを調整するために使用するメッセージング システムを実装できます。しかし、これはこの問題には複雑すぎるようです。繰り返しますが、パフォーマンスは低下します。
何かご意見は?
windows - Windows PC からリモート Ubuntu サーバー上のファイルを変更する
リモート Ubuntu Linux サーバー (Slicehost でホストされている) で実行している Python プログラムをいくつか開発しています。Windows Vista PC の IDE でソースを処理し、すべてのファイルの変更を自分の介入なしで (つまり、ファイルを変更するたびに手動で SFTP する必要なく) Linux ボックスに直接送信したいと考えています。これを行う最も簡単な方法は何ですか?
architecture - 複数の CPU が同じ RAM ロケーションに同時に書き込むことはできますか?
マシン ワード サイズ (またはそれ以下) の書き込みはシリアル化されますか? レジスタの内容を RAM にコピーするために必要なネイティブ オペコードは 1 つだけです。
c# - なぜ揮発性では不十分なのですか?
よくわかりません。私の前の質問への回答は、私の仮定を確認しているようです。しかし、ここで述べたように、 volatile は .Net の原子性を保証するには不十分です。MSIL のインクリメントや割り当てなどの操作は、単一のネイティブ OPCODE に直接変換されないか、多くの CPU が同じ RAM の場所に対して同時に読み取りと書き込みを行うことができます。
明確にするために:
- 複数の CPU で書き込みと読み取りがアトミックかどうかを知りたいですか?
- volatile とは何かを理解しています。しかし、それで十分ですか?他のCPUが書き込んでいる最新の値を取得したい場合、連動させる必要がありますか?