问题标签 [cyclic-reference]

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 投票
0 回答
133 浏览

java - 使用 Betwixt 时出现 CyclicalReferenceException

我的休眠域模型中有循环引用,这导致 Betwixt 失败。我不想更改我的域模型。

如何更改 Betwixt 以忽略周期性参考?

0 投票
12 回答
6228 浏览

python - 循环数据结构有什么用?

我刚刚阅读了 Mark Lutz 的“Learning Python”并遇到了这个代码示例

它被识别为循环数据结构。

所以我想知道,这是我的问题:

在现实生活中的编程中使用的“循环数据结构”是什么?

似乎有点混乱,我认为这源于非常简短的代码示例......这里还有几行使用相同的对象 L

0 投票
3 回答
872 浏览

java - 如何编译和运行相互依赖的插件 jars

我必须将两个 eclipse-plugin 项目构建到两个单独的 jar 中,每个 jar 都依赖于另一个进行编译。Eclipse IDE 抱怨“循环依赖...”。如何构建这些插件 jar?我想通过将它们放在 eclipse/plugin 文件夹中运行这些插件应该很顺利。

0 投票
13 回答
287817 浏览

python - Python 中的循环(或循环)导入

如果两个模块相互导入会发生什么?

为了概括这个问题,Python 中的循环导入怎么样?

0 投票
4 回答
254 浏览

c# - A类建模/设计查询

我将如何模拟这种情况?数据库应该如何设计?我应该上什么课?

问题陈述:每个员工至少属于一个项目,每个项目有很多任务,每个任务至少分配给一个员工。

我应该能够生产出来

  • 从事项目工作的员工。
  • 属于项目的任务
  • 给定员工正在执行的任务。

ETC...

循环/循环关系是一个糟糕的设计,可以消除吗?

数据库中的实体应该如何表示?应该如何使用类来表示实体?

提前致谢,

0 投票
3 回答
3564 浏览

python - 如何在python中可靠地进行清理?

我有一些 ctypes 绑定,对于每个 body.New 我应该调用 body.Free。我绑定的库没有与其余代码隔离的分配例程(它们可以在任何地方调用),并且要使用几个有用的功能,我需要进行循环引用。

我认为如果我能找到一种可靠的方法将析构函数与对象挂钩,它就会解决。(如果他们在数据被删除之前给我回调,weakrefs 会有所帮助。

所以很明显,当我输入velocity_func时,这段代码会失败:

我还尝试通过weakrefs 来解决它,这些事情似乎变得更糟,只是在很大程度上更加不可预测。

即使我不输入velocity_func,至少在我这样做时会出现循环:

那么如何确保结构将被垃圾收集,即使它们是由共享库分配/释放的呢?

如果您对更多详细信息感兴趣,可以使用存储库:http: //bitbucket.org/cheery/ctypes-chipmunk/

0 投票
6 回答
19650 浏览

java - Java Enums:两种枚举类型,每个都包含对彼此的引用?

有没有办法解决由两个相互引用的枚举引起的类加载问题?

我有两组枚举,Foo 和 Bar,定义如下:

上面的代码作为输出产生:

我明白为什么会发生 - JVM 开始类加载 Foo;它在 Foo.A 的构造函数中看到了 Bar.Alpha,所以它开始类加载 Bar。它在对 Bar.Alpha 的构造函数的调用中看到了 Foo.A 引用,但是(因为我们仍在 Foo.A 的构造函数中)此时 Foo.A 为空,因此 Bar.Alpha 的构造函数传递了一个空值。如果我反转两个 for 循环(或以其他方式在 Foo 之前引用 Bar),输出会发生变化,因此 Bar 的值都是正确的,但 Foo 的值不是。

有没有办法解决这个问题?我知道我可以在第三堂课中创建一个静态地图和一个静态地图,但这对我来说感觉相当骇人。我还可以创建引用外部映射的 Foo.getBar() 和 Bar.getFoo() 方法,因此它甚至不会更改我的接口(我使用的实际类使用检查器而不是公共字段),但它仍然感觉对我来说有点不干净。

(我在实际系统中这样做的原因:Foo 和 Bar 表示 2 个应用程序相互发送的消息类型;Foo.b 和 Bar.f 字段表示给定消息的预期响应类型 - 所以在我的示例代码,当 app_1 收到 Foo.A 时,需要回复 Bar.Alpha,反之亦然。)

提前致谢!

0 投票
3 回答
4065 浏览

c++ - 使用 shared_ptr 和 weak_ptr 时避免间接循环引用

我目前正在整理一个严重依赖的应用程序,shared_ptr到目前为止一切看起来都很好——我已经完成了我的功课shared_ptr,并且对使用s的一些陷阱有一个很好的了解。

最公认的问题之一shared_ptr是循环依赖——这些问题可以通过存储weak_ptr不影响链上对象生命周期的 s 来解决。但是,我正在努力解决需要通过 a 存储指向外部对象的指针的时间weak_ptr-我不确定它是否被禁止、不鼓励或是否安全

下图描述了我的意思(黑色箭头表示shared_ptr;虚线表示weak_ptr):

替代文字 http://img694.imageshack.us/img694/6628/sharedweakptr.png

  • 父级包含shared_ptrs 到两个子级,这两个子级都使用 a 指向父级weak_ptr
  • 在第一个孩子的构造函数中,我通过父级检索weak_ptr指向第二个孩子的指针并将其存储在本地。

代码如下所示:

我已经对此进行了测试,它似乎工作正常(我没有收到任何内存泄漏的报告),但是我的问题是:这安全吗?如果没有,为什么不呢?

0 投票
1 回答
1893 浏览

database-design - 数据库表中的循环引用

问这个我很惭愧,但最近出现了一种情况,我需要为三种不同类型的相互关联的银行实体创建一个表。让我解释。

想象一个 BANK 表,其中包含管理银行或经营农村分支机构的常规银行,或在该银行下运营的农村分支机构或不属于此层次结构但仅与农村分支机构进行交易的零售银行分行的详细信息。

以前,我决定为这些设置 4 个不同的表,具有 FK 约束(即管理银行、经营农村分行的银行、农村分行和零售银行分行各一个)。但是当我继续创建 TRANSACTION 表时,我感到很困惑,因为任何这些实体之间都可能发生交易(例如:农村分支机构与零售分支机构之间,农村分支机构之间等)。这意味着我不仅要记录银行实体的“源”和“目标”ID,还要保留一些数据来帮助应用程序逻辑确定要加入哪个表以进行查询。我觉得那是坏的。

此外,还有一个 USER 表,用户可以属于这些实体中的任何一个,这里也有 4 个不同的银行实体表是有问题的。我如何知道用户属于农村分行、零售分行还是管理银行?

因此,我创建了一个 BANK 表(主要是因为它们是相似的实体,因为它们可以相互交易)。我在表中添加了一个 PARENT 列,该列将保存父机构的 ID 值(我使用 FK 实现的关系)。因此,农村分行将在其父列中具有运营银行的 ID。零售分支机构没有父母,因此那里的值为 NULL 等等。

我现在看到的问题是BANK表中有PK/FK关系,一个循环引用。

我的问题是:这有多糟糕?什么是出路?

0 投票
1 回答
169 浏览

core-data - 模型-控制器循环参考/设计问题

我有一个 CoreData 实体 X,以及该实体的控制器 XController。现在有另一个实体 XGroup,它包含一组 X 实体和一个 XGroupController。

现在的问题是 XGroupController 需要与 XController 交互,最好只传递 XGroupController 一个 XGroup 来观察,然后从 X 实体中获取 XControllers。

所以问题是:在实体中存储对控制器的(弱,以避免保留循环)引用是一个好主意吗?只是感觉有点“不对劲”。是否有另一种设计模式?

[编辑] 更多信息:XController/XGroupController 是视图控制器;感觉“错误”的原因是视图层不应该在模型层中。所以@TechZen 的第一段是正确的。

但是,如果我没有那个参考,我该怎么做?我看到的方式是将 XGroupController 传递给所有现有的 XControllers(当它们发生变化时更新它们),然后当 XGroup 中的项目发生变化时,找到相应的控制器(通过检查它的 X 实体的 XControllers 属性是否在 XGroup 中)最后与 XControllers 交谈。

对于模型已经很好地处理的东西,我必须再次工作。如果我必须再次处理控制器层中的组,它不会使模型层变得毫无意义吗?

就位置/复杂性而言,差异是如此显着,我是否遗漏了什么?(也许我应该补充一点,在我的场景中,存储 XGroupController 需要通过模型提供给 XController 的信息是没有意义的)。