問題タブ [non-volatile]
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.
php - Linux 高速 (/影響なし) ストレージ (設定用) および PHP
タイトルが紛らわしく聞こえたら申し訳ありませんが、この説明の後にもっと良いアイデアがあれば、遠慮なく提案してください。
つまり、Linux で PHP を使用して、次の仮想ファイル/コードを使用しています。
ジョブ.php:
interface.php:
コードは一目瞭然です。基本的にjob.php
、単一のインスタンスのみを実行できる必要があります。ユーザーが から特に停止するまで無期限に実行できますinterface.php
。これは、ユーザーとジョブの間を仲介するために存在します。
私の問題はsetting_get
、setting_set
フラットファイルまたはデータベースに簡単に置き換えることができる単なる仮想関数です。問題は、それらが頻繁に呼び出されることです。そのため、高速に実行し、メモリをほとんど消費しない (可能であれば、まったくメモリを消費しない) 必要があります。
アイデア?
編集: これまでに保存している設定は、単純なブール値フラグである可能性があることに注意してください。
Edit2 Memcached / APC / Redisに関して。タイプ MEMORY の DB に対して通常の mysql 関数を使用できないのでしょうか? どのくらいのオーバーヘッドがあるのだろうか?つまり、新しいものをインストールするよりも、既に持っているものを使用したいのですが、それは実装に依存します。
android - フレームワーク レベルで非揮発性変数を作成/使用する方法
Android フレームワーク レベルまたはアプリケーション レベルで変数を作成できません。この変数は、出荷時設定へのリセットまたはソフトウェアの変更後もその値を保持します。クアルコムベースのモデムコードで実装できるのと同じこと。qualcomm では、NV アイテムを追加できます。
しかし、私はこれをAndroidフレームワーク層またはアプリケーション層で望んでいます。
私はfroyoバージョン2.2に取り組んでいます。
python - Python キューをファイルに保存する
Python Queue cclass を使用して、複数のワーカー スレッド間で共有されるタスクのリストを管理しています。実際のコードは巨大で、私はまだバグを完全になくす作業を行っています。時々、ワーカー スレッドがクラッシュし、ルーチン全体を再起動する必要があります。その過程で、キューに入れられたすべてのタスクを失います。プロセスを再起動するたびにタスクリストがそのファイルからプリロードされるように、キューをファイルに保存する方法はありますか?
最初の考えでは、タスクを取得またはキューに入れるとき、ファイルの読み取りと書き込みを同時に行う必要があるようです。ただし、これでは queue.task_done() の機能が得られず、最適化されたソリューションではない可能性があります。どんなアイデアでも大歓迎です。
java - Java:揮発性変数アクセス
揮発性変数が「メイン」メモリから効果的にアクセスする方法について少し混乱しています。ローカルコピーを持つ変数(不揮発性)とはどう違うのですか?複数のスレッドが不揮発性変数と揮発性変数にアクセスするときの典型的なワークフローは何ですか?つまり、彼らは舞台裏でどのように機能するのでしょうか?
static - struct Non_const、non_volatile 静的または外部変数
私のコードはコンパイルされて実行されますが、まだ lint エラー メッセージが表示されます。
--- Module: LunchMenu_main.c (C)
} lunch[LUNCHES] =
LunchMenu_main.c: warning 956: (注 -- 非 const、非揮発性 static または外部変数 'lunch')
非定数の static および外部変数の使用が示されていますが、それらの使用には多くの落とし穴があり、他に合理的な解決策がない場合を除き、使用を避ける必要があります。これらの種類の変数を回避する方法はありますか、またはこのエラーを修正するためにこれらの変数が必要ですか? これが私のコードです:
static - c# .net メモリ内永続性
サーバーから返されるすべてのリクエストで「ユーザー メッセージ」を利用できるようにしたいと考えています。ユーザー メッセージがない場合、メッセージは空白に戻ります。アイコンがある場合、リクエストが完了すると、各ユーザー画面でアイコンがアクティブになります。
[編集] 「ユーザー メッセージ」は、私が展開しているアプリケーションの管理者によって設定されているものです。管理者は、フィールドにテキストを入力し、ボタンをクリックして、このメッセージをシステムの他のすべてのユーザーに送信できます。別のユーザーが何らかのアクションを実行するたびに、現在のユーザー メッセージが JSON 応答に添付され、フロントエンドによって処理されます。
これを最適化するために、メッセージを(データベースではなく)メモリに保存する必要があります。
私は静的を使用しようとしました。HttpApplicationState を使用しようとしました。どちらの場合も、ユーザー メッセージの値は一定期間後に「空白」になります。いくつかの調査の結果、静的と HttpApplicationState の両方がIISの影響を受け、いつアプリケーション プールをリサイクルするかが決定されるようです。(またはそのようなもの)
この静的変数の揮発性は神秘的です。これは静的である必要があります。IIS自体が存続している限り、この変数も存続するはずです。ある種の「リセット」などに依存するべきではありません。HttpApplicationState は、私が完全に理解していない他の状況です。
信頼できる不揮発性変数に値を格納する方法が必要です。この値を今日設定した場合、 IISを停止して再起動しない限り、明日または来週には設定されているはずです。
何か助けはありますか?
以下の受け入れられた回答に従って、問題を解決するために私が行ったことは次のとおりです。
- ユーザーメッセージはいつかのものです。そのため、メッセージが管理者によって設定されると、その時点で応答をデータベースに保存し、それを Application["UserMessage"] オブジェクトに保存します。
- ユーザーからのラウンドトリップが発生すると、ユーザー メッセージのメモリ内テキストが json の戻り値に追加されます。
- 管理者はいつでもメッセージをクリアできます。これにより、メモリ内メッセージとデータベース フィールドの両方がクリアされます。
- IIS が十分であると判断し、アプリケーションをリサイクルすると、Application_Start() メソッドは (他のタスクの中で) ユーザー メッセージが設定されたときに格納されたデータベース値からユーザー メッセージを再シードします (手順 1 に従って)。
これで、アプリケーションは期待どおりに動作します。システムへのユーザー要求ごとにデータベースに追加料金が支払われることはありません。ユーザー メッセージは常にメモリから取得されます。これに加えて、ユーザー メッセージのデータベースが更新またはロードされる回数はごくわずかです。
c++ - 不揮発性変数
変数を揮発性としてマークすると、コード内のアクセスごとに読み取りが保証されます。
しかし、不揮発性変数はどうですか?
関数/ブロックごとに少なくとも1つの読み取りが保証されていますか、それとも関数の境界を越えて値を最適化できますか?
scala - 不揮発性の上限で型をオーバーライドすることはできません
scala でコンパイラ エラーが発生しましたが、それが何を指しているのかわかりません。
次の宣言を想定します。
B
れた型をさらに制限することです。そのため、 type の値はmixin ツリー内のすべての を拡張する必要があります。MyType
Abstract
MyType
MyType
コンパイラから次のメッセージが表示されます (タイトルのように):
type MyType is a volatile type; 不揮発性の上限を持つ型をオーバーライドすることはできません。エラーの一部であるtype conjuction が原因で、ここで型の揮発性が発生していることを理解しています。 type with non-volatile upper boundおそらく型宣言を参照しています。
with A#MyType
type MyType <: AInner
AInner
models - Modelling a Flash or Non-Volatile Memory Activity in SIMULINK model
I am trying to retrieve two 1-bit values (i.e. their previous values) after the system starts up OR write to it during the normal operation if cirumstances change. When I say "System starts up" I want to make it clear that this is a subsystem that sits inside a very big system.
THe idea is that if I disconnect this subsystem, the rest of the system is unaffected. I will preserve two 1-bit values based on their last known state. On a startup of the subsystem again, based on my processing, those 1-bit values will either be preserved or overwritten by new values. For confidential reasons, I cannot get into deeper than I already have.
My approach so far
Attached is the SIMULINK diagram of the part of the subsystem that does this memory read/write . I believe that this will work. However, I am not entirely sure. Could anyone think of a better way of doing it? I know that an obvious answer will be to say "Try to save and load from workspace" but I have a specficiation that only allows loading from Flash/E2PROM. Unfortunately, I don't know anything in SIMULINK that will do it. If anyone knows something different, I am quite happy to be educated fully :)
Thanks.
java - 不揮発性変数への書き込みが他のスレッドから見えなくなるのはどのような状況ですか? 実験目的でそのような条件を強制することはできますか?
私は最近、スレッド化されたメモリ管理、特にvolatile
キーワードの使用について、SO や他の場所で多くのことを読んでいます。私はこの概念にかなり自信を持ち始めていますが、その効果を十分に理解するために、それを説明するいくつかの実験を試して実行したいと思います.
ここに私のセットアップがあります:私はプロデューサースレッド(前の質問に関連してマイクからオーディオデータを読み取りますが、実際のデータは重要ではありません)を持っており、データをbyte[]
別のコンシューマースレッドとして渡します。スレッド間でデータが共有される方法は、私の実験の主な変数ArrayBlockingQueue
です。共有volatile byte[]
参照を試しました (このブログ投稿array = array
で推奨されている自己参照を使用)。また、自己参照のない通常の不揮発性も試しました。両方のスレッドは、進行中にデータをディスクに書き込みます。byte[]
私の希望は、ある程度の時間実行した後、不揮発性byte[]
バージョンでは、一部のメモリ書き込みが時間内に表示されないために、プロデューサーが共有しようとしたデータとコンシューマーがデータを読み取ったデータとの間に不一致があることを発見することでした。 、一方、他の 2 つのバージョンでは、メモリ書き込みの公開を確実にするために講じられた予防措置により、各スレッドによってログに記録されたデータがまったく同じになります。ただし、たまたま、どの方法を使用しても 100% の精度が得られます。
なぜこれが起こったのかについてはすでにいくつかの可能性を考えることができますが、私の主な質問は次のとおりです: 別のスレッドには見えない不揮発性変数への書き込みは、どのような条件下で行われるのvolatile
ですか? また、実験目的でこれらの条件を強制することはできますか?
これまでの私の考えは次のとおりです。
- 2 つのスレッドが同じコアで実行され、同じキャッシュを共有しているので、メモリの書き込みがすぐに表示されるのではないでしょうか?
- 多分CPU負荷が要因ですか?おそらく、問題が発生する前に、すべて異なることを行う多くのスレッドが必要ですか?
- もう少し待つ必要があるかもしれません: おそらくそのような問題は非常にまれですか?
そのような実験をどのように設計できるか、または私の考えに欠陥がある理由を説明できる人はいますか?
どうもありがとう。