标签: circular-reference

Perl中的垃圾收集

与Java不同,Perl使用引用计数进行垃圾收集.我曾尝试搜索一些以前的问题,这些问题涉及C++ RAII和智能指针以及Java GC,但还没有理解Perl如何处理循环引用问题.

任何人都可以解释Perl的垃圾收集器如何处理循环引用?有没有办法回收程序不再使用的循环引用内存,或者Perl是否完全忽略了这个问题?

perl garbage-collection circular-reference

14
推荐指数
2
解决办法
9548
查看次数

在Haskell解开结的任何好工具?

我有一个具有几种不同类型的内部循环链接的数据结构,从cycle命令的意义上讲它是无限的.是否有任何有趣的模块可以将这些结构折叠成使用索引的平面数据结构?

我感兴趣的序列化完整的数据结构,既通过ReadShow以及通过Data.Serialize或相似.

构建顺序索引显然有很好的功能,但基于内存地址哈希值的索引也可以正常工作.

haskell circular-reference

14
推荐指数
2
解决办法
1121
查看次数

使用Automapper导致堆栈溢出的循环引用

我正在使用Automapper将我的NHibernate代理对象(DTO)映射到我的CSLA业务对象

我正在使用Fluent NHibernate来创建映射 - 这很好用

Order遇到的问题是它有一个集合,OrderLines每个都有一个参考Order.

public class OrderMapping : ClassMap<OrderDTO>
{
    public OrderMapping()
    {
        // Standard properties
        Id(x => x.OrderId);
        Map(x => x.OrderDate);
        Map(x => x.Address);

        HasMany<OrderLineDTO>(x => x.OrderLines).KeyColumn("OrderId").Inverse();

        Table("`Order`");
    }
}

public class OrderDTO
{
    // Standard properties
    public virtual int OrderId { get; set; }
    public virtual DateTime OrderDate { get; set; }
    public virtual string Address { get; set; }

    // Child collection properties
    public virtual IList<OrderLineDTO> OrderLines { get; …
Run Code Online (Sandbox Code Playgroud)

c# csla circular-reference automapper-2

14
推荐指数
2
解决办法
1万
查看次数

同一个程序集中的循环引用是件坏事吗?

假设我在同一个程序集中有以下类

public class ParentClass : IDisposable
{
  public ChildClass Child
  {
    get { return _child; }
  }
}   

public class ChildClass 
{
   public ParentClass Parent
   {
     get { return _parent; }
     set { _parent= value; }
   }

   public ChildClass (ParentClass parent)
   {
     Parent= parent;
   }

}
Run Code Online (Sandbox Code Playgroud)

如果我错了,请纠正我,但这是糟糕的设计.这会导致内存泄漏或其他一些不可预见的问题吗?显然垃圾收集器能够处理这种循环引用.

编辑

如果这两个类最终在其他类中被这样使用怎么办?

ParentClass objP = new ParentClass ();
ChildClass objC =new ChildClass(objP);
objP.Child = objC;
Run Code Online (Sandbox Code Playgroud)

想一想......

.net c# circular-dependency circular-reference

13
推荐指数
2
解决办法
1690
查看次数

如何防止自引用表变为循环

这是一个非常常见的问题,但我还没有找到我正在寻找的确切问题和答案.

我有一个表有一个FK指向它自己的PK的表,以启用任意深层次结构,就像经典的tblEmployee一样,它的列Manager是带有PK tblEmployee.EmployeeID的FK.

让我们在我的应用程序中说,用户

  1. 创建新员工Alice和Dave,没有经理,因为他们是CEO和总裁.所以tblEmployee.ManagerNULL的这两个记录.
  2. 以Alice为经理创建新员工Bob.然后用Bob作为他的经理创建Charles.它们的Manager字段包含另一条记录的主键值tblEmployee.
  3. 编辑Alice的员工记录,意思是分配Dave有她的经理(这很好),但不小心将Alice的经理设置为Charles,他是树中Alice的两级.

现在该表是循环引用而不是正确的树.

确保在应用程序中无法完成步骤3 的最佳方法是什么?我只需要确保它将拒绝执行最后一次SQL更新,而是显示一些错误消息.

我不是在挑剔它是SQL Server中的数据库约束(必须在2008年或2012年工作),还是在我的C#app的业务逻辑层中使用某种验证例程.

c# sql sql-server circular-reference

13
推荐指数
1
解决办法
2445
查看次数

如何在多级引用和依赖项中检测循环逻辑或递归

我有一个像这样的多级依赖图,我需要在这个图中检测任何循环引用.

A = B.

B = C.

C = [D,B]

D = [C,A]

有人有这样的问题吗?

有什么办法吗

谢谢,对不起英语.

=========更新==========

我有另一种情况.

1

2 = 1

3 = 2

4 = [2,3]

5 = 4

在这种情况下,我的递归代码在"4"引用中迭代两次,但是这个引用不会生成无限循环.我的问题是知道函数何时迭代多次引用并且不是无限循环,何时是无限循环,以通知用户.

1 = 4

2 = 1

3 = 2

4 = [2,3]

5 = 4

这种情况与第二个例子有点不同.这会产生无限循环.我怎么知道案件何时产生无限循环?

circular-dependency circular-reference

12
推荐指数
2
解决办法
1万
查看次数

带有循环引用的对象的in_array

我正在构建一个对象数组.我需要这个数组只包含一个给定对象的实例,对同一个对象的多个引用应该抛出异常.我正在使用以下代码来实现此目的:

public function addField ($name, iface\Node $field)
{
    // Prevent the same field being added multiple times
    if (!in_array ($field, $this -> fields))
    {
        $this -> fields [$name] = $field;
        $field -> setParent ($this);
    }
    else
    {
        throw new \InvalidArgumentException ('This field cannot be added to this group');
    }
    return ($this);
}
Run Code Online (Sandbox Code Playgroud)

当我开始实现实现Node接口的对象时,这开始导致问题,因为它们可以包含循环引用(它们包含其子节点的集合,每个子节点都包含对其父节点的引用).尝试添加字段可能会导致生成以下错误:

PHP致命错误:嵌套级别太深 - 递归依赖?

我怀疑PHP正试图遍历整个对象数组,而不仅仅是比较对象引用,看它们是否保持相同的值,因此指向同一个对象.

我需要in_array做的只是将它存储的对象引用与字段的对象引用进行比较.这将阻止它尝试遍历整个对象树并遇到递归问题.

有办法做到这一点吗?

php arrays recursion object circular-reference

12
推荐指数
1
解决办法
2338
查看次数

使用ScriptIgnore时JavaScriptSerializer循环引用

我将我的实体框架实体从我的Web项目和数据访问层拆分为一个单独的类库.在我的控制器中,我调用我的存储库来获取IEnumerable<RobotDog.Entities.Movie>,然后尝试序列化为json使用JavaScriptSerializer但是我得到一个循环引用,即使我正在使用该[ScriptIgnore]属性.

重要提示:最初我在一个项目下拥有我的实体,数据访问和网络,我能够在没有循环引用的情况下成功序列化我的实体.当我创建单独的图层时,我开始遇到问题.我没有改变任何实体.

RobotDog.Entities命名空间中我的一个实体的示例:

namespace RobotDog.Entities {
    public class Character {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }

        [MaxLength(200)]
        public string Name { get; set; }

        public virtual Person Person { get; set; }

        [ScriptIgnore]
        public virtual Movie Movie { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的控制器:

namespace RobotDog.Web.Controllers {
    public class MoviesController : Controller {
        private UnitOfWork _unitOfWork = new UnitOfWork();

        [HttpGet]
        public ActionResult Index() {
            var user = Membership.GetUser(User.Identity.Name);
            if(user …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc entity-framework circular-reference javascriptserializer

12
推荐指数
2
解决办法
7582
查看次数

带有循环引用的Javascript深度克隆对象

我从Dmitriy Pichugin 的现有答案中复制了下面的功能.此函数可以深度克隆对象而无需任何循环引用 - 它可以工作.

function deepClone( obj ) {
    if( !obj || true == obj ) //this also handles boolean as true and false
        return obj;
    var objType = typeof( obj );
    if( "number" == objType || "string" == objType ) // add your immutables here
        return obj;
    var result = Array.isArray( obj ) ? [] : !obj.constructor ? {} : new obj.constructor();
    if( obj instanceof Map )
        for( var key of obj.keys() )
            result.set( key, deepClone( …
Run Code Online (Sandbox Code Playgroud)

javascript clone circular-reference node.js

12
推荐指数
2
解决办法
8107
查看次数

我是否允许使用常量结构进行循环引用?

我可以在C99这样做吗?

typedef struct dlNode {
    dlNode* next,prev;
    void* datum;
} dlNode;

const static dlNode head={
    .next=&tail,
    .prev=NULL,
    .datum=NULL
};

const static dlNode tail={
    .next=NULL,
    .prev=&head,
    .datum=NULL
};
Run Code Online (Sandbox Code Playgroud)

如果没有这个,我可以让我的程序工作,它只是方便.

c struct circular-reference

11
推荐指数
2
解决办法
554
查看次数