問題タブ [queue]
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.
sql - プライオリティ キュー テーブルをクエリするための SQL の実行
どのプロセスが最初に実行されるかを処理するために小さなキューを実装しています。これを行うために、データベース内のテーブルを使用しています。テーブルの構造は次のとおりです (SQLite でモックアップしています)。
SQL を記述して、次に実行できるプロセスの行を取得しようとしています。サンプルデータは次のとおりです。
この SQL を使用すると、適切な順序でデータを取得できます。
これにより、優先度番号が最も低い (最も重要な) アイテムが一番上に表示され、それらの優先度番号の中で (タイムスタンプによって) 最も早くキューに入れられたアイテムが一番上に表示されます。
このクエリを実行して最初の行のみを取得することもできますが、キューの先頭にあるプロセスの 1 行を取得する SQL クエリを使用して実行したいと思います (上記の例のデータでは、行id=7)。
自己結合とサブクエリを実行しようとしましたが、メンタルブロックが発生しているに違いありません-正しく取得できないようです.
前もって感謝します!
編集
データベースに依存しないクエリを探していることを忘れていました。私はこれを SQlite でモックアップしていますが、これを DB2 または Oracle で実装する可能性は十分にあります。クエリで "limit 1" タイプの演算子を使用することを考えていましたが、それはデータベース エンジンによって異なります。
vb.net - VB.NET キュー コンストラクター エラー: キューの成長率は 1 から 10 の間でなければなりません
最初の背景: データの収集/公開に複数の Web サービスを使用して、MS-SQL バックエンドにアクセスする VB.NET 2005 アプリケーション。
エラーについて: クライアントのコンピューターの 1 つでアプリケーションが不思議なことにクラッシュし、オフィスの他のコンピューターでは正常に動作しますが、大きなホイッグスのコンピューターでは動作しません。彼らはコンピューターを交換したため(私が推測するのと同じソフトウェア構成で)、何らかのソフトウェアの競合のように見えますが、エラーは引き続き発生します。現在、このユーザーのセットアップとそのオフィスの他のユーザーのセットアップに既知の違いがあるかどうかについて、IT スタッフからの連絡を待っています。
さらに厄介なのは、アプリが消えてしまうことです。未処理の例外をキャッチしてメッセージを表示するための特定のコードがそこにあるにもかかわらず、エラーメッセージが表示されないため、簡単にデバッグできません。ただ閉じます。
ただし、例外処理コードが(少なくとも部分的に) 呼び出されているのは、この次のエラーを正常にログに記録するためです (他の通常のエラーのようにユーザーに表示されないだけです)。
ここで非常に興味深いのは、この時点で実行する必要があるコードでキューをまったく使用していないことです。(ユーザーがアプリを開き、ログインを試みると、エラーが発生します) コード内のどこかで参照される唯一のキューは、社内のテスト モードでのみ実行される非常に特殊な機能にあります。そして、そこには何の問題もありません。
この問題をどこに進めればよいのか途方に暮れているので、ご意見をいただければ幸いです。
編集: わかりました、ようやく彼らの IT 部門と連絡が取れました。私が疑ったように、彼は .NET 2.0 を実行していました。IT 担当者に [プログラムの追加と削除] から .NET インストールを修復してもらったところ、その後、問題はなくなりました。つまり、実際には.NETの問題でした
c# - なぜC#でキューがその要素のデータをスクランブルするのですか?
キューがどのように機能するかについて、私は完全に困惑しています。C# でデータを収集して表示する小さなマルチスレッド アプリケーションを作成しようとしています (失敗しています)。Albahari の本
を
読み、Consumer/Producer パターンを使用した後、私のデータがキューでスクランブルされているように見えることを除けば、ほとんどの作業が完了したと彼は説明しています。キューに入る前に、オブジェクトのフィールドには次の値があります
タイムスタンプ = 6
データ[] ={4936、9845、24125、44861}
デキューされた後、データは次のようになります
タイムスタンプ = 6
データ[] = {64791、19466、47772、65405}
デキュー後にデータ フィールドの値が変更される理由がわかりません。私は困惑しているので、誰かがこれを修正する正しい方向に私を向けることができるかどうか、または別の方向に私を向けて先に進むことができるかどうかを確認するために、そこに投げ出すと思いました.
関連コード
データ ストレージ用のカスタム オブジェクト
関連するオブジェクトとフィールド。クラス sensorData は、計算を格納するために使用する別のクラスです。
次のフィールドは、エンキュー スレッドとデキュー スレッド間のキューとシグナルを設定するために使用されます。
Enqueue メソッド/スレッド
これは私のワーカー スレッドで、4 つの正弦曲線を計算し、処理のために結果をキューに入れます。また、結果をファイルに書き込むので、計算結果がわかります。
出力ファイルQueuedDataTest.txtの行の例
6、4936、9845、24125、44861、
Dequeue Data メソッド
このメソッドは、要素をキューから取り出し、ファイルに書き込みます。キューで null 要素が見つかるまで、その時点でジョブが完了します。
データをデキューしてDequeueDataTest.txtに書き込んだ後の出力結果
6、64791、19466、47772、65405、
アップデート 1:
現在のコード内のロックの場所。
ファイルへの書き込みデータをロックするようにコードを編集しました。したがって、私がロックしているコードブロックは次のとおりです。
CalculateAndEnqueueData()メソッドで私が持っている
dequeueDataMethod()には、ロック付きの 2 つの領域があり、最初はここにあります
これは、 ifブロック内のコードのロック ロッカーを想定しています。2番目は、ここでファイルに書き込む場所です
それがすべてです。
c - C で FIFO キューを作成する
2 つのスタックを使用せずに C で FIFO 'スタック' を作成することは可能ですか?
ありがとう!
(前の方に回答してくださった方すみません。LIFOとFIFOの意味で考えていました。)
java - Javaで非同期キューを継続的に処理するための最良の方法は何ですか?
システムの最後の部分を設計する方法を理解するのに苦労しています。現在、クライアントの要求に応答するサーブレットを備えたTomcatサーバーを実行しています。各リクエストは、非同期キューに処理メッセージを追加します(おそらく、SpringまたはAmazon SQS経由でJMSを使用します)。
イベントのシーケンスは次のとおりです。
送信側:
1。クライアント要求を受け取ります
2.この要求に関連するデータを一意のIDでDBに
追加します3.この要求を表すメッセージオブジェクトをメッセージキューに追加します
受信側:
1。キューから新しいメッセージオブジェクトをプルします
。2。オブジェクトをアンラップし、msgオブジェクトに含まれている情報に基づいてWebサイトからいくつかの情報を取得します。
3.電子メールアラートを送信します
。4。このリクエストの操作が完了したという情報でDB行(同じ一意のID)を更新します。
受信側を適切に処理する方法を理解するのに苦労しています。一方では、キュー内の各アイテムを選択して処理するコマンドラインから開始する単純なJavaプログラムを作成できる可能性があります。安全ですか?そのプログラムをTomcatコンテナ内の別のスレッドとして実行する方が理にかなっていますか?これを連続して実行したくはありません。つまり、受信側は、複数のスレッドを使用して、一度に複数のオブジェクトを処理できる必要があります。私はこれを24時間常に実行したいと思っています。
受信側を構築するためのいくつかのオプションは何ですか?
c# - 依存関係のない C# Queue または ServiceBus?
依存関係のない展開を可能にする製品 (理想的にはオープン ソースですが、必須ではありません) はありますか? 私が見つけたすべてのサービス バスまたはキュー ライブラリは、いずれかのキュー アプリ (msmq など) またはデータベースに依存しています。アプリケーションへの参照を追加してビルドし、できるだけ少ない構成でデプロイできる、非常に軽量なソリューションが必要です。
理想的な世界では、キュー/サービス バスが IIS で実行され、Web およびリッチ クライアントが IIS と通信できるようになります。
このようなツールは、ローカルの開発マシンで大規模な分散システムのプロトタイプを迅速に作成するのに理想的です。
c# - 乱数生成による均一な (っぽい) 分布の確保
オブジェクトのリストがあり、ランダムな順序で継続的にオブジェクトにアクセスしたいと考えています。
ランダムな値が常に似ているとは限らないことを保証する方法があるかどうか疑問に思っていました.
例。
私のリストはキューのリストであり、値をインターリーブして、テスト用の実際のシナリオを作成しようとしています。
特に、キュー 1 と 2 のすべてのアイテムを他のアイテムの前に置きたいわけではありません。これを行う保証された方法はありますか?
ありがとう
編集::私が持っているキューのリストは、基本的に、Webサービスに送信しているファイルのリストです。ファイルは特定の順序である必要があるため、キューがあります。
だから私は Queue1 = "set1_1.xml", set1_2.xml", ... "set1_n.xml" Queue2 ... ... QueueN を持っています
各ファイルはキュー内の他のファイルに関して順番に送信する必要がありますが、ファイルが異なるソースから異なる時間に受信され、インターリーブされる現実世界のシミュレーションをシミュレートしたいと思います。
現時点では、次にデキューするファイルを決定するために、0 から (キューの数) までの単純なランドを使用しています。これは機能しますが、キュー 1 と 2 から 50 個のファイルを取得し、キュー 3 から 5 個のファイルを取得するのではなく、もう少し均一性を得るために離れていた可能性があるかどうかを尋ねていました.
ただし、ランダム性を変更してもランダムにならないことは認識しています。
ご回答ありがとうございます。
c# - ブロッキング キューの作成.NETで?
複数のスレッドがキューに追加され、複数のスレッドが同じキューから読み取られるシナリオがあります。キューが特定のサイズに達すると、アイテムがキューから削除されるまで、キューをいっぱいにしているすべてのスレッドが追加時にブロックされます。
以下の解決策は私が現在使用しているものであり、私の質問は次のとおりです。これをどのように改善できますか? 使用する必要がある BCL でこの動作を既に有効にしているオブジェクトはありますか?