問題タブ [lazy-initialization]

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 投票する
3 に答える
7429 参照

java - Hibernateの遅延読み込み、プロキシ、継承

継承を処理するときに、休止状態での遅延読み込みに問題があります。サブクラス化された2番目のエンティティを参照する1つのエンティティがあります。参照を遅延ロードしたいのですが、これにより.equals()メソッドでエラーが発生します。

以下のコードでは、Aのインスタンスでequals()を呼び出すと、オブジェクトoがCのインスタンスであるかどうかをチェックするときに、C.equals()関数でチェックが失敗します。他のオブジェクトが実際には休止状態であるため失敗します。 javassistによって作成されたプロキシ。CではなくBを拡張します。

Hibernateは、データベースにアクセスして遅延読み込みを中断しない限り、タイプCのプロキシを作成できないことを理解しています。クラスAのgetB()関数がプロキシの代わりに具象Bインスタンスを(怠惰に)返すようにする方法はありますか?getB()メソッドでHibernate固有の@LazyToOne(LazyToOneOption.NO_PROXY)アノテーションを使用してみましたが、役に立ちませんでした。

0 投票する
3 に答える
1115 参照

objective-c - C 構造体の遅延初期化

C 構造体または iOS5 より前の基本型であるクラス プロパティを初期化する方法がわかりません。これは、クラスを扱っている場合に行うことですが、作成時に未定義であるため、構造体にアクセスしたのがこれが初めてかどうかを確認するために何を確認できるかわかりません。

遅延初期化の主な利点はメモリ割り当てにあることは理解していますが、クラスであるすべてのプロパティに対してこれを行う場合、すべてのプロパティに開始値を設定するために同じスタイルを使用するのが最も明確に思えます。

他のインスタンス変数またはプロパティを使用して、self.origin がアクセスされたかどうかを追跡できますが、それはスムーズではないようです。設定する前に self.origin に決してアクセスしないように注意することができました。これは、構造体が作成時に未定義であるという事実によって、やや伴うようです。

「正しい」方法はありますか?

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

c# - シングルトン プロパティの .Net 遅延初期化

DataAdapterサイトによってシングルトン オブジェクトとしてインスタンス化されるクラスがあります。そのクラスには、遅延シングルトンにしたい Person プロパティがあります。これを実現するコードは次のとおりです。

(PersonManager コンストラクターへの 3 つの引数は、現在のオブジェクトのプロパティ/フィールドです。) このコードは完全に機能します (二重ロック チェックパターンです)。

ただし、これは大量のコードです。.Net 4.0の新しいLazy<> 型を利用して、よりシンプルにしたいと考えています。そこで、コードを次のように変更します。

しかし、これら 3 つのパラメーターは静的ではない (現在のメソッドのインスタンス オブジェクトである) ため、これは機能しません。私が見つけ書き込み はどれもこれに対処していません。これらの値をそのラムダ式に渡す方法が必要ですか? Lazy<> クラスは、空の署名を想定しているようです。

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

java - Playでのフィールド同期!コントローラー

同じコントローラーフィールドを使用する2つのアクションメソッドを持つコントローラーがある場合を考えてみます。このフィールドは遅延初期化する必要があります。

Play Frameworkを使用して共通リソースを同期するためのより良い方法は何ですか?リソースは遅延初期化する必要があることを考慮してください。

ありがとう、エイドリアン

0 投票する
5 に答える
1010 参照

java - Java String ハッシュ コードが遅延生成されるのはなぜですか?

java.lang.String.java には、Java が hashcode() の呼び出し後にハッシュコードのみを生成して格納することが示されていますが、コンストラクターでハッシュコードを作成しないのはなぜですか?

関連するコード:

ほとんどの場合、コンストラクターに配置できます。

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

java - playframework での LazyInitializationException

を使用する Web アプリの機能テストのコーディング中に、playframework作成した

このメソッドは、特定のカテゴリに属する​​書籍のリストを含むマップ オブジェクト ( ) をlistTaggedチェックします。マップが null またはリストが null の場合、データベース クエリが実行され、リストが「books」としてレンダリングされます。CacheString:List<Book>

ブッククラスは

上記のテストを単独で実行しても問題は発生しませんでしたが、さまざまな本のデータベースを呼び出すいくつかの単体テストと一緒に実行すると、遅延初期化例外が発生します

これを解決するにはどうすればよいですか?誰かがアドバイスできますか?

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

c++ - クラスの静的サブオブジェクトを遅延初期化する方法はありますか?

main() の開始後に静的クラス メンバーを初期化する方法はありますか?

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

google-app-engine - Python モジュール グローバルの初期化でレイテンシを回避するにはどうすればよいですか?

Python で記述された Web アプリケーションの一般的な読み込み時間を最適化しようとしています。私のアプリケーションは多くのモジュールを使用していますが、その中には、特定のリクエストに実際に必要な場合とそうでない場合があります。

ページの読み込み時間は、エンドユーザーがサイトの品質を認識する重要な要素であるため、不要なモジュールの読み込みの影響を軽減しようとしています。特に、グローバルを初期化するのに必要な時間 (およびメモリ) を削減しようとしています。まったく必要ありません。

簡単に言えば、私の目標は次のとおりです。

  1. モジュールの初期化時間を可能な限り短縮します (CPU 使用率ではありません)。
  2. 不要なグローバル変数によって消費されるメモリを減らすため

説明のために、簡単なモジュールの例を次に示します。

セットの構築には時間がかかります。使用しないCOMMON場合COMMON、ロード時間とメモリの無駄になります。
明らかに、単一のモジュール/グローバルの場合、コストは無視できますが、100 個の変数を持つ 100 個のモジュールがある場合はどうなるでしょうか?

これを高速化する 1 つの方法は、次のように初期化を遅らせることです。

ロード時間とメモリを節約し、CPU をいくらか犠牲にします。

他にもいくつかの手法を試しました (以下を参照)。そのうちの 2 つは、上記の単純なキャッシュよりも少し高速です。

特定のリクエストで使用されない可能性のあるモジュールとグローバルのロード時間をさらに短縮するために使用できる別の手法はありますか?


これまでに試したアプローチには、Python 2.6 以降が必要です。

Python 2.7 では、次のタイミングが得られます (最適なのはスコープなしのフックです)。

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

hibernate - Sitemesh と OpenSessionInViewFIlter/Interceptor はどうなるのですか?

オンラインで多くの調査を行った後、ここここでスタックオーバーフローに投稿し て、この有名な遅延初期化例外のブロックにまだ当たっているので、私は今、自分のプロジェクトと構成に本当に本当にイライラしています。ディスパッチャ applicationconfig を残りから分離しました。構成アプリケーション コンテキストとディスパッチャ コンテキストとの間のクロス コンポーネント スキャンはありません。

それでもまだこの例外があります。今は本当に選択肢がなく、頭の上で時計が刻々と過ぎています。

sitemesh と OpenSessionInViewFilter または OpenSessionInViewInterceptor に問題はありますか?

ここに例外自体があります

Hibernate GenericDAO を使用します。これがGenericDAO の構成です

これを読んで助けてくれてありがとう

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

scala - Scala でコンパニオン オブジェクト値を初期化する規則

私のゲームには、次のような Sounds オブジェクトがあります。

簡潔にするために、多くのメソッドなどを削除しました。しかし、基本的な考え方は、Scala はオブジェクトを遅延して初期化するというものでした。そのためload()、このオブジェクトでメソッド ( ) を初めて呼び出すと、初期化されます。これは、たとえばテクスチャのロードなどの後に行われます。

しかし、上記のコードでは、ゲームでメニュー ボタンを初めて押すと、(SoundFactory.createSound...コンストラクターの によって) すべてのサウンドが読み込まれるため、長い一時停止が発生します。

loadメソッドを次のように変更すると、次のようになります。

すべてのサウンドが正しくロードされます。

それで、なぜこれが起こるのですか?Scala はどのように Sounds オブジェクトを初期化するので、load() を呼び出すことができますが、コンストラクター部分で独自の値をロードしませんか? コンパニオン オブジェクトの初期化の規則は何ですか?