标签: cyclic

Java包之间的每个循环引用都是坏的吗?

我一直在使用Sonar代码质量管理平台,并且在大多数情况下,我发现它非常有助于揭示我的代码库的隐藏设计缺陷.

但是,有一条规则让我比帮助更烦恼,那就是检查"循环包参考"违规行为.

我想我完全理解pacakges之间的这种依赖性是一件坏事.例如,在典型的3层表示/服务/持久性分层设计中,让数据库处理代码具有对UI相关类的引用几乎总是一个坏主意.把它称为'违规'我没问题.

但是让我们考虑其他情况,即像设计类似应用程序的IDE.比如,我们有一个包含Application接口的主包,它定义了List Application.getViews()方法来引用应用程序的视图.

但是,当View接口有一个Application getApplication()方法来引用它的父应用程序时,我认为这是一个非常常见的设计,它将引入一个循环引用,前提是每个接口都在com.myapp.ui中分隔和com.myapp.ui.view分别.

当然,您可以将View界面放入com.myapp.ui来打破循环.但是当你在com.myapp.ui.view中有各种其他视图相关的APIS时,其中许多是另一个抽象的API,比如AbstractView,ContentView,AbstractContentView等,我想知道为了管理目的将它们保存在单独的包中是否更明智.

并且考虑到所述应用程序还有许多其他类似的情况,例如com.myapp.ui.action,com.myapp.ui.perspective等,如果我们要将它们全部放在那里,这将真正使com.myapp.ui pacakge拥挤.

那么,您建议采用什么方法来处理这种情况?真的每个循环包都引用了一件坏事吗?或者,如果我不得不忍受它们,你如何配置Sonar只检查真实的,有问题的周期?

谢谢!

java reference cyclic sonarqube

8
推荐指数
1
解决办法
2131
查看次数

将循环图转换为非循环图

我想将循环图转换为非循环图。有没有可以做到这一点的伪代码?我确实尝试过搜索,但大多数都返回了基于马尔可夫链或研究文章的数学位置。

我想编写一个程序来做到这一点,任何方向都会有用。例如考虑下图。

A->B
B->C
C->A
Run Code Online (Sandbox Code Playgroud)

我在麻省理工学院的一次讲座中看到了一个解决方案,但该讲座参考了之前教过的内容而略读了一遍,无法理解。简而言之,它以某种方式复制层中的节点,即最终图表示DAG但传达相同的路径信息。

[见 46:59]

https://www.youtube.com/watch?v=OQ5jsbhAv_M

编辑:

我想对一个循环图问题应用动态规划,例如)说最短路径问题Delta(S,D) where S-> Source node and D->Destination node。由于循环图上的 DP 是无限算法,我们首先需要将循环图转换为无环图,然后对其应用动态规划技术。

algorithm cyclic directed-acyclic-graphs

8
推荐指数
1
解决办法
5815
查看次数

React Native JSON.stringify无法序列化循环结构

我们正在构建一个RN应用程序(RN0.37),我们遇到了一个问题,当应用程序运行时,我们得到一个" TypeError: JSON.stringify cannot serialize cyclic structures".

API响应中没有任何相关性发生变化,最近问题消失了,但是在擦除/重建时(由不相关的问题触发)重新出现.

我怀疑是使用了几个包:" react-native-router-flux"和" react-native-permissions",但我无法在应用程序中找到任何相关内容.

目前我对"react-native-router-flux"的怀疑主要基于这篇文章:https://github.com/aksonov/react-native-router-flux/issues/363

我对"反应本机权限"的怀疑主要是基于这样一个事实,即在这个项目中包含这个包的时机是可疑的,并且似乎与这个错误的表现相吻合 - 尽管我无法证明绝对肯定.

我唯一的另一个线索是,JSON.stringify错误似乎总是在一个警告列表之前.他们都读到"这个合成事件是出于性能原因重复使用的.如果你看到这个,你就是在一个已发布/无效的合成事件上访问该属性.这被设置为null.如果你必须保留原始合成事件,使用event.persist()https://facebook.github.io/react/docs/events.html#event-pooling以获取更多信息." 列表如下(始终按相同顺序):nativeEvent,type,target,currentTarget,eventPhase,bubbles,cancelable,timeStamp,defaultPrevented,isTrusted和touchHistory.

以下是我的package.json:

"dependencies": {
  "blueimp-md5": "2.5.0",
  "moment": "2.16.0",
  "phone-formatter": "0.0.2",
  "react": "15.3.2",
  "react-native": "0.37.0",
  "react-native-asset-library-to-base64": "1.0.1",
  "react-native-aws3": "0.0.3",
  "react-native-button": "1.7.1",
  "react-native-cached-image": "1.2.2",
  "react-native-camera-kit": "4.0.1",
  "react-native-camera-roll-picker": "1.1.9",
  "react-native-contacts": "0.5.2",
  "react-native-fbsdk": "0.4.0",
  "react-native-fetch-blob": "0.10.0",
  "react-native-fs": "2.0.1-rc.2",
  "react-native-geocoder": "0.4.5",
  "react-native-image-crop-picker": "0.10.5",
  "react-native-image-resizer": "0.0.12",
  "react-native-nav": "1.1.4",
  "react-native-permissions": "0.2.5",
  "react-native-photo-view": "1.2.0",
  "react-native-router-flux": "3.37.0",
  "react-native-stripe": "1.2.1",
  "react-native-swipe-list-view": "0.3.1",
  "react-redux": "4.4.6", …
Run Code Online (Sandbox Code Playgroud)

json cyclic ios react-native react-native-router-flux

8
推荐指数
2
解决办法
5703
查看次数

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

我目前正在整理一个严重依赖的应用程序,shared_ptr到目前为止一切看起来都很好 - 我已经完成了我的功课,对使用shared_ptrs 的一些陷阱非常了解.

最常见的问题之一shared_ptr是循环依赖 - 这些问题可以通过存储weak_ptr不影响链上对象生命周期的问题来解决.然而,我正在努力解决需要通过以下方式存储指向外部对象的指针weak_ptr- 我不确定它是否被禁止,气馁或是否安全.

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

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

  • 父对象包含shared_ptr两个子节点,两个子节点都使用a指向父节点weak_ptr.
  • 第一个子节点的构造函数中,我通过父节点检索weak_ptr指向第二个子节点的指针并将其存储在本地.

代码如下所示:

#include <boost/shared_ptr.hpp>
#include <boost/weak_ptr.hpp>
#include <boost/make_shared.hpp>
#include <boost/enable_shared_from_this.hpp>

class child;
class child2;
class parent;

class parent : public boost::enable_shared_from_this<parent>
{
public:
    void createChildren()
    {
        _child2 = boost::make_shared<child2>(shared_from_this());
        _child = boost::make_shared<child>(shared_from_this());
    }

    boost::shared_ptr<child> _child;
    boost::shared_ptr<child2> _child2;
};

class child
{
public: …
Run Code Online (Sandbox Code Playgroud)

c++ boost shared-ptr cyclic weak-ptr

7
推荐指数
2
解决办法
3989
查看次数

clojure功能循环依赖是否被设计特别禁止,还是仅仅是读者行为?

如果我在clojure中执行以下操作

(defn sub1a [a]
  (cond
    (= a 0) 0
    true (sub1b (- a 1) )))

(defn sub1b [a]
  (cond
    (= a 0) 0
    true (sub1a (- a 1) )))

(println (sub1a 10))
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

java.lang.Exception: Unable to resolve symbol: sub1b in this context
Run Code Online (Sandbox Code Playgroud)

但如果我做以下事情:

(defn sub1a [a]
  (cond
    (= a 0) 0
    true (- a 1)))

(defn sub1b [a]
  (cond
    (= a 0) 0
    true (- a 1)))

(defn sub1a [a]
  (cond
    (= a 0) 0
    true (sub1b (- a 1) …
Run Code Online (Sandbox Code Playgroud)

dependencies function clojure cyclic

7
推荐指数
1
解决办法
630
查看次数

如何使用循环引用来散列和检查对象的相等性

我有一个由Node对象表示的循环图形结构.甲节点可以是一个标量值(叶)或n> = 1的列表的节点(内节点).

由于可能的循环引用,我不能简单地使用递归的HashCode()函数,它结合了所有子节点的HashCode():它最终会进行无限递归.

虽然HashCode()部分似乎至少可以通过标记和忽略已经访问过的节点来实现,但我有一些麻烦要想到Equals()的工作和有效算法.

令我惊讶的是,我没有找到任何有用的信息,但我相信很多聪明的人都想过解决这些问题的好方法......对吗?

示例(python):

A = [ 1, 2, None ]; A[2] = A  
B = [ 1, 2, None ]; B[2] = B
Run Code Online (Sandbox Code Playgroud)

A等于B,因为它代表完全相同的图形.

BTW.这个问题并不针对任何特定的语言,但是在Java中为所描述的Node对象实现hashCode()和equals()将是一个很好的实际例子.

hash graph equals circular-reference cyclic

7
推荐指数
1
解决办法
904
查看次数

检查可变列表是否在ocaml中循环?

我正在尝试编写一个函数来测试Ocaml中的可变列表是否包含一个循环(即,具有对自身的引用并连续重复).

我的清单定义为type 'a m_list = Nil | Cons of 'a * (('a m_list) ref).

到目前为止,我有:

let is_cyclic list =
  let rec check xs = 
    match (!xs) with
     |Nil -> false
     |Cons(_,v) -> ((!v)==list)||check v in
  match list with
   |Nil -> false
   |Cons(_, x) -> check x ;;
Run Code Online (Sandbox Code Playgroud)

但它不太正确,我不确定如何从这里开始...感谢您的帮助!

ocaml cyclic

7
推荐指数
1
解决办法
2170
查看次数

是一个无限的清单?

在Prolog中,统一X = [1|X]是一种获得无限列表的理智方式吗?SWI-Prolog没有任何问题,但GNU Prolog只是挂起.

我知道在大多数情况下我可以替换列表

one(1).
one(X) :- one(X).
Run Code Online (Sandbox Code Playgroud)

但我的问题是明确是否可以X = [1|X], member(Y, X), Y = 1在"理智"的Prolog实现中使用该表达式.

list prolog cyclic iso-prolog coinduction

7
推荐指数
1
解决办法
629
查看次数

C#:具有循环链接的节点的xml序列化

我有一个类Node这样的类:

class Node {
    IEnumerable<Node> inputs;
}
Run Code Online (Sandbox Code Playgroud)

这基本上定义了一个简单的图形.我想将我的图形序列化为一个人类可读的形式,所以通常我会说xml是要走的路.但是XML并不是用循环依赖关系制作的:)

那么 - 我的图表序列化的最佳方法是什么?

我可以想到几个方面:

  • 沟通XML,创建我自己的格式.
  • 使用XML,使用唯一ID标记每个节点,存储与节点分开的连接列表并在加载后解析

但我认为其他人之前必须遇到同样的问题,所以可能会有更好的选择.有谁知道一个坚实的方法?

c# xml serialization hyperlink cyclic

6
推荐指数
1
解决办法
503
查看次数

使用循环问题托管 Web 服务器

我正在尝试托管在 Cyclic 上配置了 API 的 server.js 文件,部署成功,但 URL 对任何端点调用返回状态 500。我在 github 页面上托管了 React 前端。我不知道缺少什么,也不知道为什么部署成功后它没有响应任何呼叫。是因为我没有将端点配置为 '/' 吗?

server.js代码:


const express = require('express')
const cors = require('cors')
require("dotenv").config()
const {getDb, dbConnect} = require('./db')
const app = express()


app.use(cors({origin: 'https://mygithubpage.github.io/'}))
app.use(express.json())

let db
const port = process.env.PORT || 6900;
dbConnect((error) => {
    if(!error) {
        app.listen(port, () => {
            console.log(`Now listening to port ${port}`)
        })
        db = getDb()
    }   
})

// Searching for email and password
app.post('/signIn', (req,res) => {
    
    const user = req.body …
Run Code Online (Sandbox Code Playgroud)

javascript web-hosting cyclic node.js express

6
推荐指数
1
解决办法
1209
查看次数