問題タブ [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.

0 投票する
1 に答える
251 参照

java - NavigableMap で Guava Cache のようなものを探す

定義済みの間隔が期限切れになった場合に古いエントリを削除できるキャッシュ機能を探していますが (Guava キャッシュのように)、NavigableMap インターフェイスを内部的に使用します。

そのようなものはありますか?

0 投票する
1 に答える
473 参照

java - Guava を使用したコレクションのキャッシュ フィルター

オートマトンでいくつかの操作を実行するプログラムを開発しています。オートマトンは状態 (別名ノード) と遷移 (別名エッジ) で構成されており、特定のプロパティを持つセットを取得するには、それらをフィルター処理する必要があります。この操作は簡単に実装できますが、数回実行されるため、小さなキャッシュを書き込みます。

以下のコードの断片には私の実装があり、監視可能な遷移をフィルタリングしてメモ化する正しい方法であるかどうかを知りたいです

質問:

  1. それが正しいか?
  2. 遷移が可観測性を変更した場合、この情報はサプライヤーにも伝播しますか?

英語が下手で申し訳ありませんが、十分に明確であることを願っています。

0 投票する
0 に答える
816 参照

java - Spring 3.2 + Guava : キャッシュ マネージャーから Guava キャッシュを取得する

キャッシュ マネージャーから Guava キャッシュを取り戻そうとすると問題が発生し、代わりに Spring Cache を取得します。

これは私のSpringConfigファイルのBeanです:

そして、 @Cacheable を使用できるようになりました:

すべて正常に動作しますが、stats() メソッドを呼び出すために CacheBuilder によって作成されたキャッシュ Guava オブジェクトを取得できません。

これは私がキャッシュを取得する方法です:

最後のキャッシュは Spring キャッシュで、Guava キャッシュにキャストするとエラーが発生します。

これは可能ですか?それとも私は何か間違ったことをしましたか?

0 投票する
1 に答える
112 参照

java - 特定のマシンを特定の時間間隔でブロックする

私は自分のサービスに Http 呼び出しを行うライブラリに取り組んでおり、サービス マシンが応答しない場合 (ソケット タイムアウトまたは接続タイムアウトがある場合)、それらをローカルに追加し、blockListマシンが 5 回ブロックされている場合は、彼らに電話しないでください。

machineAが応答していない場合 、毎回メソッド(throwing RestClientException)を呼び出しonFailureてカウンターをインクリメントし続け、再度呼び出しを行うときに、ホスト名と 5 をしきい値として渡してメソッドmachineAをチェックするので、 5 回ブロックされている場合は作成しません。彼らに電話してください。私のライブラリはマルチスレッドなので、すべてのスレッドに同じ値を表示させたいので、ここで volatile を使用しています。isBlockedmachineAmachineA

以下は私がDataMappingクラスで持っているものです:

問題文:-

ここで、もう 1 つの機能を追加したいと思います。つまり、ブロックされている場合machineA(ブロック数が 5 以上であるため)、x 間隔でブロックしたままにします。このマシンをブロックしたままにしておきたい期間を示す別のパラメーター(key.getInterval())があり、その間隔が経過した後、私だけがそれらに電話をかけ始めます。この機能を追加する方法を理解できませんか?

DataMapping以下は、メソッドを使用してホスト名がブロックされているかどうかを確認し、ホスト名をブロックするメインスレッドコードです。

特定のマシンを特定の期間ブロックし、その間隔が経過するとすぐに、それらのマシンへの呼び出しのみを開始するにはどうすればよいですか?

0 投票する
2 に答える
402 参照

guava - weakValues() と expireAfterAccess() を組み合わせることができますか?

私はこのようなことをしたい:

私が期待する動作は、値が参照されておらず、有効期限が過ぎている場合にのみ、エントリが期限切れになることです。それはこの使用法がどのように機能するかです。

0 投票する
1 に答える
1295 参照

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は実際のサービス(実際のロギングと監視が行われている場所)に渡されることはありません。グーグルグアバの殺害目的。

0 投票する
1 に答える
283 参照

spring - Spring キャッシュ guava TTL 構成の奇妙な動作

次のスプリングキャッシュ構成があります:

それから私はそれをテストしています:

誰かがそれを説明できますか?