问题标签 [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.

0 投票
6 回答
1955 浏览

java - Java中的线程安全双向关联

什么是实现线程安全双向关联的好方法?是否有一个好的库或代码生成器?

这是一个非线程安全的例子:

我对线程安全的要求是:

  • 没有死锁
  • 最终一致性(当所有线程停止修改对象时,最终达到一致状态。即,assert foo.getOther().getOther() == foo当另一个线程同时执行时失败是可以接受的setOther
  • 顺序行为。如果一个线程执行setOther并且没有其他线程覆盖该值,getOther则立即返回该线程的新值。
  • 没有时光倒流。一旦一个线程用 观察到一个新值getOther,它将永远不会再收到旧值(除非它被再次设置)。

也很高兴拥有:

  • 低争用,尤其是没有全局锁。该解决方案应该可以很好地扩展。
  • 尽可能少的同步开销。对于单个线程,它应该具有合理的性能。
  • 低内存开销。当一个对象有 5 个关联时,我不希望每个关联有 3 个附加字段。设置器中的局部变量是可以的。

我的应用程序将有 16 个线程处理多个类的大约 5.000 个对象。

我还没有提出解决方案(不,这不是家庭作业),所以欢迎任何输入(想法、文章、代码)。

0 投票
1 回答
165 浏览

c# - 具有大小写不敏感的双向字典?

问题:我使用在这里找到的双向字典类: Bidirectional 1 to 1 Dictionary in C#

问题是,我需要这个 - 不区分大小写(StringComparer.OrdinalIgnoreCase)

我想扩展它以涵盖 IEqualityComparer 构造函数。我已经将它转换为 VB(就像一个魅力),但我在实现比较器“传输”时遇到了麻烦。

问题是,在我的参数中:

但是字典 secondToFirst 是 TValue 类型,TKey,这会杀死我的 IEqualityComparer,它需要是 TValue 类型而不是 TKey ...

我如何对这个比较器进行类型转换?

如果某个地方有另一个 BiDictionaryOneToOne 类,不区分大小写,那也没关系(只要该库在大小/内存消耗和 .NET 2.0 方面不是巨大的)

编辑:
好的,当然只有当 TKey 和 TValue 是字符串类型时才有可能,正如 John 指出的那样,但如果它们相同,那么使用 try/catch 仍然是可能的:

0 投票
1 回答
1254 浏览

class - 显示双向和组合关系UML类图

我有两个课程事件和评论。

该事件中有一个实例对象 Review。评论中还有一个对象事件。这意味着它们之间存在双向关系(两个箭头)。

删除事件后,评论也将被删除。这意味着它们之间的组合关系(事件中的实心菱形)。

现在我的问题是:如何在同一行中同时显示两个箭头和实心菱形?

我想知道在显示组合或聚合时是否应该省略方向关系?通过关联,可以毫无问题地显示方向箭头,但是有菱形就有问题......

0 投票
1 回答
1212 浏览

java - Hibernate 自引用映射拼图

我正在尝试映射一个类

我尝试了多对一和一对多的各种组合,但似乎没有任何效果。我会粘贴我的映射文件,但是我尝试了很多东西,以至于我不知道要粘贴哪一个。请帮助我:(如果我使用SET而不是LIST,我也成功映射了类,但是当我使用列表时,我无法更新用于存储列表索引的列。非常感谢.

0 投票
1 回答
2665 浏览

jpa-2.0 - EclipseLink/JPA2 ManyToOne 双向级联问题持续存在

这类似于How to cascade persist using JPA/EclipseLink

我必须像这样的实体。一种是 RoomEntity,它与 ComputerEntity 具有一对多的双向关系。例如。每个房间都有 0..n 台电脑。

当我尝试用这样的计算机保留一个新房间时:

roomBean 是一个无状态 EJB,roomBean.createRoom 只是调用 entityManager.persist(room)。由于我在 RoomEntity 的计算机字段上有一个 CascadeType.PERSIST,因此创建了 ComptuerEntity。但是,如果我查看该 ComputerEntity 的房间字段,我会发现该房间字段为空。我会假设 Eclipselink 会自动填充房间,因为我有一个双向关系。为了以这种方式设置房间,我必须添加

到 room.setComputers(...)。这是正确的方法还是有办法让 Eclipselink 自动设置它?

谢谢。-诺亚

0 投票
1 回答
2166 浏览

java - 双向地图同步

使用 apache commonds bidimap 时,如何处理同步。例如,如果我创建如下所示的地图

BidiMap oneWay = new DualHashBidiMap();
BidiMap theOtherWay = oneWay.inverseBidiMap();

因此,如果我要向上述变量之一添加/访问/删除键/值对,我需要同步两者(线程同步)。如果我需要这样做,似乎我没有获得任何通过 2 个地图实现此功能的东西。

感谢您花时间研究这个问题。

0 投票
1 回答
86 浏览

asp.net - .NET 上的 URL 重写

我怎样才能实现双向重写到以下发生入站到 Web 服务器的位置

www.mysite.com/region/program/cat1/cat2/cat3

将请求发送到服务器

www.mysite.com/program.ASPX?idregion=(regionlookupnumber)&idcategory=3276

当服务器要编写上述内容时,它会以另一种方式进行转换。

使用 URL 重写包在 IIS7 上进行双向 URL 重写。如果可能,我们不想修改源代码。

请提供任何建议或资源或示例链接?

0 投票
2 回答
4180 浏览

r - R中igraph中的R倒数边

我正在使用 R 中的图形。我目前正在使用 igraph,我希望能够绘制图形的双向边“互易边”。到目前为止,我已经看到可以绘制“双向”图​​,但不能绘制倒数边,例如:E(1,3) 和 E(3,1) 可能表示为双向边<-->,但是相反,我想绘制两条平行边,一条指向另一条的相反方向|| . 在绘制“plot(rEG, recipEdges = "distinct")" 时,Rgraphviz 中存在一个选项,但我更喜欢 igraph 上的绘图。提前致谢。

0 投票
3 回答
12279 浏览

hibernate - Hibernate:AnnotationException:Unknown mappedBy in ... 反向引用的属性未知(mappedBy),双向@OneToOne 关联

我有以下简单的设计:

有效的 XHTML
(来源:kawoolutions.com

这基本上是 JPA 不支持的非不相交继承的一种解决方法。人员可以单独存在,但也可以有一个玩家实体、一个教练实体或两个实体来完成逻辑。

以下是相当容易理解的JPA 2.0映射(注意 @Id 前向关联):

Player 和 Coach 实体类几乎相同。

这里的问题是两个双向关联(mappedBy)。这些映射与 EclipseLink 完美配合,但 Hibernate 莫名其妙地因 AnnotationException 异常:

当切换到老式 JPA 1.0 映射时,一切都运行良好。Hibernate 似乎对上述映射有问题。

我查看了许多其他问题报告,实际上 hibernate.org 上的论坛充满了类似的未解决问题,但我找不到任何线索说明为什么会引发异常。

对我来说,这似乎是一个休眠错误。有人可以证实这一点吗?(注意我使用的是 Hibernate 3.6)

0 投票
2 回答
397 浏览

c# - 为什么这个简单的 NHibernate 一对多关系不是双向的?

我正在尝试在 NHibernate 中建立一个简单的关联(这是我想从头开始使用它的第一个项目)——这似乎是一个简单的、做作的书籍示例,但出于某种原因我可以'没有得到双向工作的关系。

我有一个名为 Contact 的类,它可以包含许多地址。

这是简化的联系人类:

这是地址:

这是映射文件 Contact.hbm.xml 的相关部分:

这是 Address.hbm.xml 映射文件的相关部分:

鉴于该设置,我运行以下代码:

一旦我运行这段代码,Contact 就可以插入到 Contact 表中,并且 Address 也插入到 Address 表中,只是Address 的 ixContact 字段为 NULL,与 Contact 的 ixContact 字段的值无关,因为我会期望。

如果我明确指定关系的另一端并说firstAddress.Contact = firstContact,它可以正常工作,但我的印象是 NHibernate 会自动处理这个问题?

如果是这样,我做错了什么?还是我RandomContact.Addresses.Add(foo), foo.Contact = RandomContact每次都必须指定?