問題タブ [google-guava-cache]
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.
java - NavigableMap で Guava Cache のようなものを探す
定義済みの間隔が期限切れになった場合に古いエントリを削除できるキャッシュ機能を探していますが (Guava キャッシュのように)、NavigableMap インターフェイスを内部的に使用します。
そのようなものはありますか?
java - Guava を使用したコレクションのキャッシュ フィルター
オートマトンでいくつかの操作を実行するプログラムを開発しています。オートマトンは状態 (別名ノード) と遷移 (別名エッジ) で構成されており、特定のプロパティを持つセットを取得するには、それらをフィルター処理する必要があります。この操作は簡単に実装できますが、数回実行されるため、小さなキャッシュを書き込みます。
以下のコードの断片には私の実装があり、監視可能な遷移をフィルタリングしてメモ化する正しい方法であるかどうかを知りたいです。
質問:
- それが正しいか?
- 遷移が可観測性を変更した場合、この情報はサプライヤーにも伝播しますか?
英語が下手で申し訳ありませんが、十分に明確であることを願っています。
java - Spring 3.2 + Guava : キャッシュ マネージャーから Guava キャッシュを取得する
キャッシュ マネージャーから Guava キャッシュを取り戻そうとすると問題が発生し、代わりに Spring Cache を取得します。
これは私のSpringConfigファイルのBeanです:
そして、 @Cacheable を使用できるようになりました:
すべて正常に動作しますが、stats() メソッドを呼び出すために CacheBuilder によって作成されたキャッシュ Guava オブジェクトを取得できません。
これは私がキャッシュを取得する方法です:
最後のキャッシュは Spring キャッシュで、Guava キャッシュにキャストするとエラーが発生します。
これは可能ですか?それとも私は何か間違ったことをしましたか?
java - 特定のマシンを特定の時間間隔でブロックする
私は自分のサービスに Http 呼び出しを行うライブラリに取り組んでおり、サービス マシンが応答しない場合 (ソケット タイムアウトまたは接続タイムアウトがある場合)、それらをローカルに追加し、blockList
マシンが 5 回ブロックされている場合は、彼らに電話しないでください。
machineA
が応答していない場合 、毎回メソッド(throwing RestClientException)
を呼び出しonFailure
てカウンターをインクリメントし続け、再度呼び出しを行うときに、ホスト名と 5 をしきい値として渡してメソッドmachineA
をチェックするので、 5 回ブロックされている場合は作成しません。彼らに電話してください。私のライブラリはマルチスレッドなので、すべてのスレッドに同じ値を表示させたいので、ここで volatile を使用しています。isBlocked
machineA
machineA
以下は私がDataMapping
クラスで持っているものです:
問題文:-
ここで、もう 1 つの機能を追加したいと思います。つまり、ブロックされている場合machineA
(ブロック数が 5 以上であるため)、x 間隔でブロックしたままにします。このマシンをブロックしたままにしておきたい期間を示す別のパラメーター(key.getInterval())
があり、その間隔が経過した後、私だけがそれらに電話をかけ始めます。この機能を追加する方法を理解できませんか?
DataMapping
以下は、メソッドを使用してホスト名がブロックされているかどうかを確認し、ホスト名をブロックするメインスレッドコードです。
特定のマシンを特定の期間ブロックし、その間隔が経過するとすぐに、それらのマシンへの呼び出しのみを開始するにはどうすればよいですか?
guava - weakValues() と expireAfterAccess() を組み合わせることができますか?
私はこのようなことをしたい:
私が期待する動作は、値が参照されておらず、有効期限が過ぎている場合にのみ、エントリが期限切れになることです。それはこの使用法がどのように機能するかです。
java - Google Guavaキャッシュでキー以外のパラメーターを2つ渡す方法
Google guava キャッシュを使用してキャッシュを作成しました
これが私の実装です
channelService.getDistributionChannelById メソッドで、channelId と apiKey という 2 つの値を渡す必要があります。
現在、apiKey は一定であるため、正常に動作しています。しかし今、apiKey はこの定数 ~ タイムスタンプに変更されています。例えば:
SOLR_API_KEY~123456789
だから私の問題は:
キーを変更せずにchannelServiceCache.get(key, extraparam here) にもう 1 つのパラメーターを渡すにはどうすればよいですか。
私が試したこと:実際のキーとapiKeyが存在するKeyオブジェクトを作成し、それをchannelServiceCacheのキーとして渡します しかし、タイムスタンプが含まれているため、すべてのキルは新しいキーと見なされるため、これはキャッシュの目的を殺しますアピキーで。
Google Guavaでこれを行う方法はありますか?
編集:私が見逃したもう1つのこと:
サービスは、同じ channelId に対して同じ出力を提供します。API キーは、認証、ロギング、およびリクエスト カウントのモニタリングにのみ使用されます。しかし、それは理にかなっていると思います。キャッシュから同じchannelIDで次のリクエストを処理できる場合、apiKeyは実際のサービス(実際のロギングと監視が行われている場所)に渡されることはありません。グーグルグアバの殺害目的。
spring - Spring キャッシュ guava TTL 構成の奇妙な動作
次のスプリングキャッシュ構成があります:
それから私はそれをテストしています:
誰かがそれを説明できますか?