問題タブ [guava]
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 - BufferedIterator の実装
次の N 要素がバックグラウンド スレッドで熱心にフェッチされるオープン ソースの BufferedIterator を知っている人はいますか? これはTechRepublic の記事からの実装ですが、十分にテストされていないと思います。
Iterators .buffer(Iterator toBuffer, int bufferSize) は Guava への素晴らしい追加になると思いますが、それは考慮されていますか?
java - Iterators と Iterables メソッドのほとんどは LAZY です! これは何を意味するのでしょうか
プレゼンテーションの 1 つは、「これらのメソッドは LAZY です!」と述べています。
誰かがこれが何を意味するのかを理解するのを手伝ってくれますか?コレクションを持っていてPersons
、フィルターを適用して姓がDOEの人だけを返すとしましょう。
これは、「doeOnly.next() への最初の呼び出しでのみフィルタリングが行われる」ということですか?
java - 利用可能な RAM を使用して Java でオブジェクトを効率的にキャッシュするにはどうすればよいですか?
利用可能なRAMの割合を使用して、Javaでオブジェクトをキャッシュする必要があります。他の人がこの質問をしたことは承知していますが、どの回答も私の要件を満たしていません。
私の要件は次のとおりです。
- シンプルで軽量
- プレーンな HashMap よりも劇的に遅くない
- LRU、または LRU に近い削除ポリシーを使用する
LinkedHashMap を試してみましたが、要素の最大数を指定する必要があり、使用可能な RAM をいっぱいにするのに必要な要素の数がわかりません (サイズは大きく異なります)。
私の現在のアプローチは、Google コレクションの MapMaker を次のように使用することです。
これは、より多くの RAM が必要なときに要素を自動的に削除する必要があるため、魅力的に思えましたが、重大な問題があります。その動作は、利用可能なすべての RAM をいっぱいにすることであり、その時点で GC がスラッシングし始め、アプリ全体のパフォーマンスが劇的に低下します。
EHCache のようなものについて聞いたことがありますが、必要なものに対して非常に重いようで、アプリケーションにとって十分に高速かどうかはわかりません (ソリューションが HashMap よりも劇的に遅くなることはあり得ないことを思い出してください)。 .
java - 未来を変える簡単な方法はありますか> 未来へ?
リクエストを別のスレッドに送信するコードがいくつかあります。別のスレッドは、そのリクエストをさらに別のスレッドに送信する場合と送信しない場合があります。の戻り値の型が得られFuture<Future<T>>
ます。Future<T>
これをすぐに将来のチェーン全体の完了を待つように変える非凶悪な方法はありますか?
私はすでに Guava ライブラリを使用して、他の楽しい並行処理を処理し、Google Collections の代わりとしてうまく機能していますが、この場合の何かを見つけることができないようです。
java - Google の ImmutableList と Collections.unmodifiableList() の違いは何ですか?
ImmutableList javadocs から:
Collections.unmodifiableList(java.util.List) は変更可能な別のコレクションのビューですが、ImmutableList のインスタンスには独自のプライベート データが含まれており、変更されることはありません。ImmutableList は public static final リスト (「定数リスト」) に便利であり、呼び出し元によってクラスに提供されたリストの「防御コピー」を簡単に作成することもできます。
それは次のことを意味しますか?
- Dimension オブジェクトの ImmutableList がある場合 (たとえば)、その中の Dimension オブジェクトを変更することはできませんか?
- Dimension オブジェクトの Collections.unmodifiableList (リスト) がある場合、オブジェクトを追加または削除できるだけでなく、それらを変更することもできます (たとえば、setDimension(width, height) メソッドを呼び出します)。
java - google-collectionのLazyMapはどこにありますか?
apache commons-collectionsからの私のお気に入りの1つは、トランスフォーマーを使用して実行時にその場で値をインスタンス化するLazyMapでしたmap.get(newKey); // Will not return null!
。
なぜグーグルコレクションは同じではないのですか?
java - 値 (等しい) が等しい SoftReference の使用の可能性
私は以前、値 (equals) ベースの等価性を持つ SoftReference が必要な場合、これからインターナーを除いて、設計が悪いという結論に達しました。これは、そのようなクラスを含まない Google Collections および Guava に従っています。しかし、そのようなオブジェクトを使用できると思われる問題に遭遇しました。
ビジュアル エフェクト レンダー ファームにアセット管理システムがあり、レンダリングするフレーム数だけが異なる同じジョブを実行する数百のプロセスがあります。使用されたすべての資産を記録する必要がある Oracle データベースがあります。すべてのジョブから 1 つだけが成功する同一の挿入で Oracle をドキドキする代わりに、中間層の資産管理システムでは、HashSet を使用して、オブジェクトが Oracle に挿入されるかどうかを記録できます。
有効期限付きの Google MapMaker を使用することもできますが、有効期限を正しく設定することについて心配する必要はありません。レンダリングは数時間で実行され、場合によっては数日で実行されます。等値で SoftReference を使用すると、JVM がガベージ コレクションを自動的に管理するため、はるかに優れた方法のように思えます。
ガベージ コレクションを使用して ConcurrentHashMap で解決したい他の問題については、HashMap の強い参照をキーとして使用して equals() の等価性を取得し、SoftReference を値として使用して、JVM が何かをガベージ コレクションできるようにしますが、これではその場合、値は重要ではなく、SoftReference にラップしてそこに置く値がありません。したがって、equals() で SoftReference を使用するとうまくいくようです。
これに関する他の提案はありますか?
java - ImmutableList.of() とその仲間が null 要素を禁止するのはなぜですか?
要約はほとんどそれをすべて言います。の関連するコード スニペットを次に示しますImmutableList.createFromIterable()
。
私はこれに何度か遭遇しましたが、汎用ライブラリ関数がこの制限を課す理由がわかりません。
編集1:「汎用」で、95%のケースに満足しています。しかし、私はまだ 100 回の呼び出しを書いたとは思いませんImmutableList.of()
。多分私は異常者です。:)
編集 2: 私の大きな不満は、標準java.util
コレクションを操作するときに「しゃっくり」が発生することだと思います。トークで指摘したようにnull
、コレクション内の s に関する問題は、null が挿入された場所から遠く離れた場所で発生する可能性があります。しかし、一方の端で標準コレクションに null を配置し、もう一方の端で適切に処理するコードの長いチェーンがある場合、途中のどの時点でも Google コレクション クラスを置き換えることができません。を投げますNullPointerException
。
java - イテレータを使用してコレクションを埋める
Google Collections has an Iterables utility class for taking in a collection and iterable and putting all the elements from iterable into the collection, called addAll
. Is there something similar when all you have is an iterator?
java - WeakHashMapに相当するjava.util.concurrentはありますか?
Collections.synchronizedMap()
次のコードは、並行性で正確性を維持しながら使用せずに書き直すことができますか?
つまり、代わりに使用できるjava.util.concurrentの何かがありますか?単に置き換えることに注意してください
明らかに機能しません