問題タブ [set-difference]
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.
c# - ファイル拡張子を無視して、2 つの FileInfo リスト間の差を返すにはどうすればよいですか?
IEnumerable<FileInfo>
比較したい2 つのリストがあります。
_ext1 と _ext2 は異なるファイル拡張子タイプです。例えば:
したがってlist1
、次のようになります。
次のようにlist2
なります。
list1 に存在しない list2 のすべてを検索したい。私は次のことを試しました:
これは素晴らしく、正常に動作し、戻ります (ファイル拡張子がないことに注意してください):
しかし、私が本当に望んでいるのは、FileName 文字列だけでなく、FileInfo のリストを取得することです。FullFile パス、ext.. などの他の情報が必要なため、これが必要です。そのため、ファイル名文字列のリストだけでは機能しません。どうすればこれを行うことができますか?
algorithm - 異なるデータベースにある 2 つの大きな値セットを効率的に同期する
データベース テーブルと Lucene (おそらく Solr) インデックスがあります。目標は、データベース テーブルのインデックスを作成することです。行ごとに正確に 1 つのドキュメントです。でも:
- Lucene インデックスの初期状態は不明であり、既にほぼ同期されている可能性があります。また、存在しない行のドキュメントが含まれる場合もありますが、後で別のメカニズムによって削除されます。
- 再同期を実行しているアプリケーションは、プロセス中に複数回再起動する必要がある場合があります。再起動後に保存できる状態はほとんどない (理想的には何もない) ため、前もって設定の違いをブルート フォースしても機能しません。
- Lucene インデックスへの低レベル アクセスは許可されていません。それに対してクエリを実行できますが、できません。特定のフィールドの用語を直接列挙します。キーの検索や範囲内のキーのカウントは、クエリで実行できます。
- データベース内の行には、バージョン管理情報や ETag がありません。それらは一意のキーの 1 つの列にすぎないと想定できます。
古い文書や削除が必要な文書をここで処理する必要はありません。無駄な時間をできるだけ少なくして、最終的にすべての行にドキュメントがあることを確認する必要があるだけです。
古いドキュメントの更新または削除は、この再同期メカニズムが完了を示した後にのみ実行されると想定されるシステムの別の部分によって処理されます。(実際、堅牢な更新/削除システムは簡単なものでした...)
以前は、このタスクは力ずくのセット差分で達成されていましたが、これは特に大規模なデータ セットで問題が発生し、ソリューションは再開をサポートするために部分的な同期を実際に利用する必要があります: アプリケーションがその前に常に何らかの進行を行う場合再起動すると、最終的にストアが同期されます。
差分ダイジェストhttps://www.ics.uci.edu/~eppstein/pubs/EppGooUye-SIGCOMM-11.pdfは興味深いように見えましたが、データ ストアがそれ自体を計算するために必要なスマートさを備えている場合にのみ適用されるようです。この場合、ジョブを実行する単一のアプリケーションがあり、2 つのストアに対してクエリ、挿入、および削除を実行するだけです。
これまでのところ、ここには 3 つの基本的なケースがあると考えています。
- セットは大幅に同期していません。インデックスは空です。これは、いずれかのセットの最小の ID から開始し、ソースからレコードのバッチをクエリし、宛先の違いを追加/削除するだけで簡単に処理できます。残念ながら、これは最初はすぐに進行しますが、再起動するたびに「追いつく」時間が長くなるため遅くなります。
- セットはほぼ同期しています。おそらく、データセット全体のヒストグラムを生成し、ソースと「一致」しない個々のバケットにドリルダウンすることによって、これに対処する効率的な方法があるはずですが、それでもすべてのキーにアクセスして追加する必要がありますそれをある種のバケットハッシュにします。
- セットには膨大な数の微妙な違いがあります。それぞれの行数は同じですが、それらの〜60%は異なるキーを持っています。これは最悪のシナリオのように思えますが、特にありそうにないシナリオではありません。
これを解決するための確立された手法はありますか?実際、追加が必要なものを記録するために一種のトランザクション ログを使用していますが、それは通常の操作のみを処理でき、初期同期や移行後の修復は処理できません。
「私にとって」これを処理できる製品やシステムがあることは知っていますが、他の実装上の懸念があるため、現時点ではこのシステムを既存のコードベース内に実装する必要があります。未来。実際、これの要点は、他のソリューションを使用できるようにするために、現在のシステムを「中途半端な家」にすることです。
プロセスが完了すると自動的に削除されるプレースホルダー ドキュメントを追加することにより、システムの更新/削除部分がフル スキャンの進行状況を記録する目的で悪用される可能性があると思いますか? セットがほぼ同期しているときにフルスキャンを避けたいのですが...
r - Rのリスト間の欠損値を見つける
2 セットのリストがあり、最初のリストの各ベクトルを 2 番目のリストの対応するベクトルと照合して、何が欠けているかを確認する必要があります (2 番目のリストにない最初のリストにあるものにのみ関心があります)。 .
サンプルデータ:
unlist と setdiff() の両方を使用する必要があるため、関数を使用して両方を実行しています。
期待される結果は、最初のセットでは何もなく、2 番目のセットでは 5 です。残念ながら、これは x[2] にあるが y[2] にはない 5 を拾っていません。代わりに、これは私の結果です:
奇妙なことに、x[2] の 5 を y[2] にない 3 のような数字に変更すると、期待される結果が得られるため、5 から 50 に一致しているようです (多分?)。
何が起こっているのか分かりますか?または、これを行うより良い方法はありますか?
r - rm( ) 特定のオブジェクトを除くすべて
1 つのオブジェクトを除いて R のすべてを削除する方法について、誰かが考えを持っていますか? 通常、コードをすべて削除するには:
だから私は試しました:
しかし、うまくいきませんでした。
java - 2 つの int 配列の違いを見つける
2 つの整数配列の違いを見つけるアルゴリズムがわかりません。番号が昇順になるように、実行される並べ替え方法が既にあります。
例えば:
SetX = { 1, 2, 3, 4, 5 }
SetY = { 0, 2, 4, 6 }
戻り値は、SetY に表示されない SetX の数値である必要があります。
したがって、結果セット = { 1, 3, 5 }
小さな配列を実行すると正しい答えが得られることがありますが、4 つ以上の整数長の配列を実行すると、間違った結果が得られます。
誰かが私のコードを見て、私が間違っていることを教えてもらえますか?
arrays - 2 つの配列間で共通のアイテムと固有のアイテムを見つける
ansible で ec2.py 動的インベントリ スクリプトを使用して、ec2 ホストとそのタグ名のリストを抽出します。以下のような JSON のリストが返されます。
この出力の解析に jq を使用しています。
- これらの両方の ASG に共通するフィールドのみを抽出するにはどうすればよいですか?
- これらの ASG の両方に固有のフィールドのみを抽出するにはどうすればよいですか?
redis - Redis で、2 番目の並べ替えられたセットからレコードを除外して、1 番目のセットからレコードを分離する方法。
2 つの並べ替えられたセットがあります。1 番目のセットからレコードを分離し、2 番目の並べ替えられたセットからレコードを除外して、新しいリスト/並べ替えられたセットに格納したいと考えています。
以下に例を示します。
セット1: 1,2,3,4,5 セット2: 3,5,7,8,9
出力: 1,2,4
編集:スクリプトをロードし、eval を使用して nodejs からスクリプトを実行する方法を理解しました。
奇妙なのは、5 ~ 10 個のレコードに対してスクリプトを実行した場合でも、処理に 1 秒かかるため、何千ものレコードがある場合にどれだけスケーラブルか疑問に思うことです。
以下は私のサンプルnodejsコードです:
arrays - symmetricDifference の汎用配列拡張
この関数は、文字列の 2 つの配列の違いを取得するために作成しました。
Int
などのさまざまなタイプのジェネリック関数に拡張したいと思いDouble
ます...
この拡張機能を使用すると、次のエラーが発生します。
さまざまなアプローチを試みましたが、無駄でした。何が問題なのですか?