問題タブ [eager]

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

f# - ストリームリーダーからのF#遅延評価?

コードにバグがあり、F#と遅延評価の詳細の一部がよくわからないと思います。F#は熱心に評価するため、次の関数に多少戸惑うことを知っています。

これをFSIで呼び出すと:

これは私にそれgetStringFromFileが怠惰に評価されていると思わせます-それで私は完全に混乱しています。F#が関数を評価する方法については何もわかりません。

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

ruby-on-rails - Railsの積極的な読み込みとカミナリ

カミナリでページ付けしながら、積極的な読み込みを使用するにはどうすればよいですか?kaminariが機能するにはオブジェクトが必要であることを知っています。 Relation:includeを使用してモデルを取得し、Relationオブジェクトを返す方法は?
そして2番目の質問、なぜ:includeは、1つの大きな結合クエリを作成する代わりに、evry定義モデルのSQLクエリを作成するのですか?

これは、ログが出力するものですMatch.includes(:clans)

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

python - ジェネレーター関数の初期化コードを最初の呼び出しではなく、すぐに実行するにはどうすればよいですか?

私は次のようなジェネレーター関数を持っています:

ジェネレーターが最初に使用されたときだけでなく、関数が呼び出されたらすぐに初期化ステップ(whileループの前)を実行したいと思います。これを行うための良い方法は何ですか?

ジェネレーターが別のスレッド(またはプロセス、またはマルチプロセッシングが使用するもの)で実行され、しばらくの間リターンを使用せず、初期化にいくらかコストがかかるため、これを実行したいので、それを希望します値を使用する準備をしている間に初期化を行います。

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

clojure - Clojure で Simpson のルールを使用しようとすると、キャスト エラーが発生するのはなぜですか?

Clojure を使用して SICP のいくつかの演習を実行しようとしていますが、Simpson のルールを実行する現在の方法 (例 1-29) でエラーが発生します。これは遅延/熱心な評価と関係がありますか? これを修正する方法についてのアイデアはありますか? エラーとコードは次のとおりです。

java.lang.ClassCastException: user$simpson$h__1445 は clojure.lang.Numbers.divide で java.lang.Number にキャストできません (Numbers.java:139)

コードは次のとおりです。

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

apache-flex - Flex-Cairngorm / Hibernate-EAGERフェッチ戦略は無意味ですか?

できるだけ簡潔にしようと思います。アプリにFlex/Hibernateテクノロジーを使用しています。FlexにはCairngormマイクロアーキテクチャも使用しています。私は初心者なので、CaringormのModelLocatorの目的について何か誤解している可能性があります。次の問題があります...

次のデータモデルがあるとします。

ユーザーは多くのトピックを開始でき、トピックには多くのコメントを含めることができます。たとえば、これは非常に単純なモデルです。Hibernateでは、単方向のUSER->TOPICおよびTOPIC->COMMENT関係にEAGERフェッチ戦略を使用します(ここでは、ベストプラクティスなどについての質問はありません。これは、問題の単なる例です)。

私のModelLocatorは次のようになります。

私は熱心なフェッチを使用しているため、データベースにアクセスすることなく、Flexクライアント上のすべてのオブジェクトグラフを「ウォークスルー」できます。一部のドメインインスタンスを挿入、更新、または削除する必要がない限り、これは問題ありません。しかし、それが発生すると、同期に関する問題が発生します。

たとえば、 UserListViewからユーザーの詳細を表示したい場合、user(actor)がリストでそのユーザーを選択すると、UserListで選択されたインデックスを取得し、ModelLocatorのusers ArrayCollectionから選択されたインデックスで要素を取得し、選択されたものの詳細を表示しますユーザー。

新しいユーザーを挿入したい場合は、OK 、そのユーザーをデータベースに保存し、IResponder結果メソッドでそのユーザーをModelLocator.usersArrayCollectionに追加します。

しかし、一部のユーザーに新しいトピックを追加したい場合、それでもEAGERフェッチの便利さを使用したい場合は、ユーザーリストを再度リロードする必要があります...そして選択したユーザーにトピックを追加するには...そしてユーザーが一部のユーザーにいる場合他の場所(間接的に)、私はそこにもトピックを挿入する必要があります。更新はさらに最悪です。その場合、私はいくつかのロジックを書く必要があります...

私の質問:CairngormでModelLocatorを使用するこの良い方法はありますか?言及されているため、EAGERフェッチはどういうわけか無意味であるように私には思えます。EAGERフェッチを使用する場合、Flexクライアントでの同期が大きな問題になる可能性があります。ドメインモデルを操作するには、常にデータベースにアクセスする必要がありますか?

編集: 私は自分自身を十分に明確にしなかったようです。すみません。

わかりました。テクノロジースタックでもSpringを使用し、フレックス/スプリング(デ)シリアライザーでDTO(DVO)パターンを使用していますが、データベースの状態との同期をどのように維持するかを指摘しようとしているので、それを避けたかったのです。フレックスアプリ。マルチユーザーシナリオやポーリング/プッシュのトピックについては触れていません。これは、標準の要求応答メカニズムを使用しているため、おそらく私の解決策です。これは私にとって概念的な問題のように思われるため、具体的なコードは提供しませんでした。クラス名や変数名などに使用する疑似名を説明するために、標準のCairngorm用語を使用しています。

もう一度「単純化」してみます。上記のドメインを管理するためのフレックスクライアント(各ドメインクラスのCRUD)、ListOfUsersView(ユーザーの基本情報を含むユーザーのリストを表示)、UserDetailsView(ユーザーの詳細と各トピックの削除オプションを含むユーザートピックのリスト)、InsertNewUserTopicView(新しいトピックを挿入するためのフォーム)など。

一部の情報を表示する各ビューは、ModelLocatorの状態変数と同期されます。次に例を示します。

ビューステート遷移は次のようになります。

したがって、ListOfUsersViewの[詳細]ボタンをクリックすると、ロジックで、 ListOfUsersで選択した行のインデックスを取得します。その後、ユーザーからUserVOオブジェクトを取得します。前述のインデックスでModelLocatorのArrayCollectionを取得し、その後、そのUserVOオブジェクトをselectedUserとして設定します。:ModelLocatorのUserVOとその後、ビューの状態をUserDetailsView(ユーザーの詳細とselectedUser.topicsが表示されます)に変更します。これは、ModelLocatorのselectedUser:UserVOと同期されます。

次に、 UserDetailsViewの[新しいトピックを挿入 ]ボタンをクリックすると、InsertTopicViewフォームが表示されます。データを入力し、[トピックの保存]をクリックします(保存が成功すると、UserDetailsViewが再度表示されます) 。問題が発生します。

EAGERでフェッチされたオブジェクトのため、前述の遷移でデータベースにアクセスしませんでした。そのため、選択したユーザーに新しいトピックを挿入するときに気にする必要がある場所が2つあります。1つはユーザー内のselectedUserオブジェクトのインスタンスです。 :ArrayCollection(私のロジックはそのコレクションからユーザーを選択してUserDetailsViewに表示するため)、2番目はselectedUser:UserVO(保存操作が成功した後に来るUserDetailsViewを同期するため)です。

したがって、再び私の質問が発生します...データベースの状態をフレックスクライアントと同期するために、保存後にusers:ArrayCollectionとselectedUser:UserVOをリロードする必要がありますか?データベースにアクセスし、プログラムで更新する必要のあるすべての場所を渡しますか...?

EAGERでフェッチされたオブジェクトとそれらの関連付けは適切ではないように思われます。私が間違っている?

または、「単純化」するために:)もう一度、前述のシナリオで何をする必要がありますか?だから、あなたは「トピックを保存」ボタンをクリックすることを処理する必要があります、そして今何...?

繰り返しますが、私はこれと混同しているので、これを可能な限りプラスチックとして説明しようとしています。だから、私の長いポストを許してください。

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

nhibernate - Fluent NHibernate Linq 複合コンポーネント Eager Loading

レガシーデータベースを使用したプロジェクトで Fluent NHibernate LINQ を使用しています。私たちのシナリオは、顧客情報と住所を含むテーブルがあるというものです。C# で Customer と Address を個別のエンティティとして作成しました。住所は再び郵便番号オブジェクトを参照します。

マッピング中に、Address を Customer の Component としてマッピングしました。ここで、N+1 の選択を回避するために Customer をフェッチしながら、Zip Code (Address によって参照される) を熱心にロードしたいと考えています。

書き込もうとするFetch(customer => customer.Address.ZipCode)と、複雑すぎると表示されます。Fetch(customer => customer.Address).ThenFetch(address => address.ZipCode)Address は Customer と同じテーブルに格納されているため、できません。

この問題を解決する方法はありますか?

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

java - HQL/ネストされた熱心な読み込み

遅延ロードされたオブジェクトのネストされた値をロードするのが最善の方法は何でしょうか。これをよりよく説明するのに役立つ例を提供します。

例として、私がやりたいことは次のとおりです。

上記のステートメントを実行すると、遅延読み込みの例外が発生します。

私はいつでも次のことができます:

しかし、明らかにパフォーマンスは悪くなります。

それらの特定のネストされたフィールドが事前に入力されているAオブジェクトを返すカスタムHQLクエリを作成する方法はありますか?

ありがとう!

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

entity-framework - 複数の関連エンティティの一括読み込み

既存の Repository クラスに複数の Include を処理できる拡張メソッドを追加する必要があります。

現在の実装では、1 つの関連エンティティのみを処理できます。関連する 2 つ以上のエンティティも熱心にロードできる必要があります。

私のエンティティクラス:

どこで使用しますか:

ありがとうございました!

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

java - Guice の熱心な/怠惰なシングルトンのインスタンス化

Guice のシングルトンのインスタンス化がどのように機能するかを理解するのに苦労しています。利用可能なドキュメント (ここ - http://code.google.com/p/google-guice/wiki/Scopes ) を読みましたが、まだいくつかのことがわかりません:

  1. Guice を Tomcat に統合し、ServletModule にいくつかのバインディングをセットアップしました。

    (ここで MyOtherServlet クラスには @Singleton アノテーションが上にあります) ここでの私の意図は、2 つのサーブレットを用意することでした。一方は積極的にインスタンス化され、もう一方はそうではありません。ただし、そのクラスが熱心なシングルトンとしてバインドされていない場合でも、「serve ... with ...」行はサーブレットオブジェクトを自動的にインスタンス化するようです。上に添付したリンクは、Stage.Development と Stage.Production で実行されている Guice の違いについて言及していますが、Stage.Development を明示的に使用した場合でも、これは依然として発生しました (これはとにかくデフォルトです)。これを回避する方法はありますか?

  2. (1 に続く) すべてのサーブレットが熱心にインスタンス化されるようになったとしても、MyServlet が最初にインスタンス化されるようにするために、インジェクターを作成するときにモジュール (およびバインディング ステートメント) の順序を変更して、MyServlet のバインディングが最初に表示されるようにしました。ただし、次の形式の他のバインディング (サーブレット以外のクラス) よりも後でインスタンス化されることがわかりました。

    これらの他のバインディングは、モジュール/バインディングの順序で後で表示されますが。私が調べたところ、Guice は「bind... asEagerSingleton()」のフォームを実行する前に、「bind... to... asEagerSingleton()」の形式でバインドされた熱心なシングルトンを単純にインスタンス化することがわかりました。そのため、次の行を変更して解決しました。

    の中へ:

    そしてそれは実際に機能しました。それでも、これを解決するためだけにダミーのインターフェースを使用することは避けたいので、誰かがこれに対するより良い解決策を持っているかどうか疑問に思っていました..?

  3. 2 つの Guice モジュールがあります。1 つは ServletModule で、もう 1 つは AbstractModule です。ServletModule configureServlets() には、次のバインディングがあります。

    serve("aUrl").with(SomeServlet.class); AbstractModule の configure() には、次のバインディングがあります。

さらに、 SomeServlet クラスには SomeInterface 型の注入されたフィールドがあり、クラスの上に @Singleton アノテーションがあります。

ここで、インジェクターを作成すると、SomeImpl クラスがインスタンス化され、同じインスタンスが SomeServlet インスタンスに注入されることが予想されます。前に述べたように、"serve... with..." ステートメントでバインドされたサーブレットも積極的にインスタンス化されるように見えますが、いずれにしてもインスタンス化される SomeImpl オブジェクトは 1 つだけです。しかし、何らかの理由で、これを実行すると 2 つの SomeImpl オブジェクトがインスタンス化されました。これを回避するために、configure() の 2 行を少し混ぜて、上記の代わりに次の行を追加しました。

その後、正常に動作し、インスタンス化された SomeImpl のインスタンスが 1 つだけになりました。なぜスイッチが重要なのかはよくわかりません.後者の方法が「より良い」方法であることはわかりますが、両方が正しく機能することを期待しているので、ここで何か問題があるのではないかと思っています.. .

0 投票する
4 に答える
2805 参照

hibernate - フェッチ結合またはEAGERを使用して、休止状態のマルチバッグフェッチの問題を解決しますか?

クラスBおよびCと1対多の関係にあるクラスAがあります。fetchTypeをEAGERに設定したため、JPAでマルチバッグフェッチの問題が発生しました。今私が知っている問題を解決する2つの方法があります。フェッチタイプを熱心に保ち、リストからセットに変更します。これは私の場合は問題ありません。または、fetchTypeを「lazy」に変更し、結合クエリを使用して関係をEAGERフェッチします。推奨されるアプローチは何ですか?