問題タブ [bidirectional]
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 - Java でのスレッドセーフな双方向関連付け
スレッドセーフな双方向の関連付けを実装する良い方法は何ですか? おそらく良いライブラリまたはコードジェネレーターはありますか?
非スレッドセーフな例を次に示します。
スレッドセーフに対する私の要件は次のとおりです。
- デッドロックなし
- 結果整合性 (すべてのスレッドがオブジェクトの変更を停止すると、最終的に整合性のある状態に到達します。つまり
assert foo.getOther().getOther() == foo
、別のスレッドがsetOther
同時に実行されている場合に失敗することは許容されます。 - 順次動作。スレッドが実行
setOther
され、他のスレッドが値をオーバーライドしない場合、getOther
そのスレッドの新しい値をすぐに返します。 - 時間を遡ることはありません。スレッドが で新しい値を確認すると
getOther
、(再度設定されない限り) 古い値を受け取ることはありません。
また、持っているといいです:
- 競合が少なく、特にグローバル ロックがない。ソリューションは適切にスケーリングする必要があります。
- 同期のオーバーヘッドをできるだけ少なくします。単一のスレッドに対して妥当なパフォーマンスが得られるはずです。
- 低メモリ オーバーヘッド。オブジェクトに 5 つの関連付けがある場合、関連付けごとに 3 つのフィールドを追加したくありません。セッターのローカル変数は問題ありません。
私のアプリケーションには、いくつかのクラスの約 5,000 個のオブジェクトで動作する 16 のスレッドがあります。
私はまだ解決策を思いつくことができませんでした (いいえ、これは宿題ではありません)。
c# - ケースに敏感でない二元辞書?
質問:ここで見つけた双方向辞書クラスを使用しています: C#の双方向1対1辞書
問題は、これが必要なことです-大文字と小文字を区別しません(StringComparer.OrdinalIgnoreCase)
IEqualityComparerコンストラクターをカバーするように拡張したいと思います。VB(チャームのように機能します)に変換しましたが、比較ツールの「転送」を実装するのに問題があります。
問題は、私が持っているパラメータにあります:
しかし、ディクショナリのsecondToFirstはTValue、TKeyタイプであり、IEqualityComparerを強制終了します。IEqualityComparerはTKeyではなくTValueタイプである必要があります。
この比較器を型キャストするにはどうすればよいですか?
大文字と小文字を区別しないBiDictionaryOneToOneの別のクラスがどこかにある場合は、それも問題ありません(そのライブラリがサイズ/メモリ消費量と.NET 2.0で記念碑的でない限り)
編集:
もちろん、ジョンが指摘するように、TKeyとTValueが文字列型である場合にのみ可能ですが、同じ場合は、次のようにtry/catchを使用しても可能です。
class - 双方向および構成関係のUMLクラス図を表示する
イベントとレビューの2つのクラスがあります。
イベントには、インスタンスオブジェクトReviewが含まれています。レビューには、オブジェクトイベントも含まれています。これは、それらの間の双方向の関係を意味します(2つの矢印)。
イベントが削除されると、レビューも削除されます。これは、それらの間の構成関係を意味します(イベントで塗りつぶされたダイヤモンド)。
今私の質問は、2つの矢印と塗りつぶされたひし形を同じ行に一緒に表示するにはどうすればよいですか?
構成や集計を表示するときに、方向の関係を省略すべきかどうか疑問に思っていますか?関連付けを使用すると、方向矢印を問題なく表示できますが、ひし形があると問題が発生します...
java - Hibernate 自己参照マッピング パズル
クラスをマップしようとしています
多対 1 と 1 対多のさまざまな組み合わせを試しましたが、うまくいきません。マッピング ファイルを貼り付けたはずですが、あまりにも多くのことを試したので、どれを貼り付ければよいかわかりません。助けてください:(また、LISTの代わりにSETを使用していた場合、クラスのマッピングに成功しましたが、リストを使用すると、リストのインデックスを格納するために使用される列を更新できません。どうもありがとう.
jpa-2.0 - EclipseLink /JPA2ManyToOne双方向カスケード永続性の問題
これは、JPA/EclipseLinkを使用して永続化をカスケードする方法に似ています
私はそのような実体をしなければなりません。1つは、ComputerEntityと1対多の双方向の関係を持つRoomEntityです。例えば。各部屋には0..n台のコンピューターがあります。
次のようなコンピューターで新しい部屋を維持しようとすると、次のようになります。
roomBeanはステートレスEJBであり、roomBean.createRoomは単にentityManager.persist(room)を呼び出します。RoomEntityのコンピューターフィールドにCascadeType.PERSISTがあるので、ComptuerEntityが作成されます。ただし、そのComputerEntityの部屋フィールドを見ると、部屋フィールドがnullであることがわかります。私は双方向の関係にあるので、Eclipselinkが自動的に部屋を埋めると思いました。このように部屋を設定するには、追加する必要がありました
room.setComputers(...)に。これは正しいアプローチですか、それともEclipselinkにこれを自動的に設定させる方法はありますか?
ありがとう。-ノア
java - BidiMap同期
apache commonds bidimapを使用する場合、同期をどのように処理しますか。たとえば、次のようにマップを作成すると、
BidiMap oneWay = new DualHashBidiMap();
BidiMap theOtherWay = oneWay.inverseBidiMap();
したがって、上記の変数の1つにキーと値のペアを追加/アクセス/削除する場合は、両方を同期する必要があります(スレッド同期)。これを行う必要がある場合、2つのマップを使用してこの機能を実装しても何も得られないようです。
この問題をご覧いただきありがとうございます。
asp.net - .NET での URL 書き換え
Web サーバーへのインバウンドで次のことが発生する場所への双方向の書き換えを達成するにはどうすればよいですか
www.mysite.com/region/program/cat1/cat2/cat3
リクエストをサーバーに送信します
www.mysite.com/program.ASPX?idregion=(地域ルックアップ番号)&idcategory=3276
サーバーが上記を書き込もうとすると、逆に変換されます。
URL 書き換えパッケージを使用した IIS7 での双方向 URL 書き換え。可能であれば、ソース コードを変更したくありません。
アドバイス、リソース、またはサンプル リンクを教えてください。
r - RのigraphのR相互エッジ
私はRでグラフを扱っています。現在igraphを使用しています。グラフの双方向エッジ「相互エッジ」をプロットできるようにしたいと考えています。これまでのところ、「双方向」グラフをプロットすることは可能ですが、相互エッジはプロットできないことを見てきました。代わりに、一方が他方の反対方向を指す 2 つの平行なエッジをプロットしたいと思います || . これを行う "plot(rEG, recipEdges = "distinct")" をプロットするときに Rgraphviz にオプションが存在しますが、igraph でプロットがどのように見えるかがもっと好きです。前もって感謝します。
hibernate - Hibernate: AnnotationException: 未知の mapsBy in ... 逆 (mappedBy) で不明な参照プロパティ、双方向の @OneToOne アソシエーション
次のシンプルなデザインがあります。
(ソース: kawoolutions.com )
これは基本的に、JPA がサポートしていない非素因継承の回避策です。個人は単独で存在できますが、オプションで、ロジックを完成させるために、単一のプレーヤー エンティティ、単一のコーチ エンティティ、または両方のエンティティを存在させることができます。
以下は、かなり理解しやすいJPA 2.0マッピングです (@Id 前方関連付けに注意してください)。
Player と Coach のエンティティ クラスはほとんど同じです。
ここでの問題は、2 つの双方向の関連付け (mappedBy) です。これらのマッピングは EclipseLink で完全に機能しますが、Hibernate は何らかの形で AnnotationException でびっくりします。
古い学校の JPA 1.0 マッピングに切り替えると、すべて正常に動作します。Hibernate は上記のマッピングに問題があるようです。
私は他にもたくさんの問題レポートを見てきました。実際、hibernate.org のフォーラムには同様の未解決の問題がたくさんありますが、なぜこれが例外をスローするのかについての手がかりは見つかりませんでした。
私には、Hibernate のバグのようです。誰でもこれを確認できますか?(私はHibernate 3.6を使用していることに注意してください)
c# - この単純な NHibernate の 1 対多の関係が双方向ではないのはなぜですか?
私は NHibernate で簡単な関連付けを設定しようとしています (これは私がそれをゼロから利用したい最初のプロジェクトです) - それは単純で不自然な本の例のように見えますが、何らかの理由で私はリレーションを双方向に動作させることはできません。
多くのアドレスを含めることができる Contact というクラスがあります。
簡略化された Contact クラスは次のとおりです。
住所は次のとおりです。
マッピング ファイル Contact.hbm.xml の関連部分は次のとおりです。
Address.hbm.xml マッピング ファイルの関連部分は次のとおりです。
そのセットアップを考慮して、次のコードを実行します。
このコードを実行すると、連絡先が連絡先テーブルに正常に挿入され、住所も住所テーブルに挿入されます。ただし、住所の ixContact フィールドが NULL であり、連絡先の ixContact フィールドの値に関連付けられていません期待するでしょう。
関係の反対側を明示的に指定して と言うとfirstAddress.Contact = firstContact
、正常に動作しますが、NHibernate がこれを自動的に処理するという印象を受けましたか?
もしそうなら、私は何を間違っていますか?それともRandomContact.Addresses.Add(foo), foo.Contact = RandomContact
毎回指定する必要がありますか?