标签: cyclic

在Java中处理循环事件的优雅方式?

我觉得这对我来说不是一个特定的问题; 以前每个人都可能遇到过这个问题.为了正确说明它,这是一个简单的UI:

alt text http://www.freeimagehosting.net/uploads/7aec06ea46.png

如您所见,这两个微调器控制着一个变量 - "A".唯一的区别是他们使用不同的视图来控制它.

由于这两个微调器的显示值是同步的,因此出现循环事件.

如果我更改顶部微调器,"A"将被更改,底部微调器的值也将相应更新.但是,更新底部微调器的调用(例如setValue)也会触发另一个事件,指示顶级微调器根据底部微调器的值进行更新.因此创建一个错误的循环,最终可能导致StackOverFlow异常.

我以前的解决方案有点麻烦:我放置了一个保护布尔值来指示是否应该执行第二次更新调用.

现在我想问一下" 我怎么能优雅地处理这种情况?(一般来说,不是特定于纺纱厂)"

谢谢


更新:

由于我有2个答案建议我利用观察者结构,我不得不说些什么.

就像我说的那样,它很棒,但远非完美.不仅因为其固有的复杂性,而且还因为它无法解决问题.

为什么?要了解原因,您必须在Java Swing中实现View和Model-Controller 的紧密耦合.让我们以我的微调器UI为例.假设变量A实际上是Observer对象.然后,在从顶部微调器触发第一个状态更改事件后,观察者"A"将更新其值并触发PropertyChange事件以通知底部微调器.然后是第二次更新,更新底部微调器的视图.但是,更改底部微调器的视图不可避免地会触发冗余事件,该事件将再次尝试设置"A"的值.然后,完全构造致命循环并抛出堆栈溢出.

理论上,Observer模型试图通过引入2个独立的反馈路径来解决直接循环.链式更新赔率(在事件响应代码中)隐含地形成连接两个路径的桥,再次进行循环.

java events swing awt cyclic

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

搜索循环字符串

我正在寻找在数据结构中存储二进制字符串的最有效方法(插入函数),然后在获取字符串时我想检查给定字符串的某个循环字符串是否在我的结构中.

我考虑将输入字符串存储在Trie中,但是当我试图确定我现在获得的字符串的某个循环字符串是否插入Trie意味着执行| s | 在Trie中搜索所有可能的循环字符串.

有没有办法更有效地做到这一点,而地方复杂性将像在特里?

注意:当我说一个字符串的循环字符串时,我的意思是例如所有的循环字符串1011是:0111, 1110, 1101, 1011

string trie cyclic data-structures

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

Haskell如何生成这个无限列表?

我看到这段代码生成斐波纳契数.

fibs = 1:1:(zipWith (+) fibs (tail fibs))

是否可以编写类似的样式代码来生成无限列表[1 ..]?

我在Haskell网站上的循环结构上看到了这个链接.

给出了一个例子

cyclic = let x = 0 : y
         y = 1 : x
     in  x
Run Code Online (Sandbox Code Playgroud)

我试图以循环方式为我的问题定义一个列表,但是不能成功.我想要的是一个根据自身定义的列表,它在Hasekll中评估为[1 ..].

注:Haskell的[1..]计算结果为[1,2,3,4,5...],而不是[1,1,1...].

haskell list infinite cyclic

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

如何覆盖引用类型的println行为

我有一个使用dosync和创建的循环图ref-set.当我传递给println我时,我得到了一个java.lang.StackOverflowError我所期望的,因为它有效地试图打印一个无限嵌套的结构.

我发现,如果我这样做(str my-ref)会产生看起来像vertex@23f7d873并且实际上并不试图遍历结构并将所有东西都打印出来的东西,所以这就解决了这个问题,但是只有在我非常小心我的情况时才会有所帮助. m打印到屏幕上.我希望能够打电话给(println my-graph)它打印ref作为某种类型的自定义文本(可能涉及str),以及其他非ref的东西通常.

目前我有一个自定义打印功能,可以自己打印结构的每个元素,并完全跳过打印ref.(事实证明,看着vertex@23f7d873实际上并不是非常有用).使用起来很尴尬,阻碍了在REPL中对东西进行随意检查,同时也阻止了Emacs检查员在swank.core/break调试时查看内容.

一个细节ref实际上是一个值,defstruct其中还包含一些我试图正常打印的其他东西.

所以我想知道我应该走哪条路.我看到这些选项:

  1. 弄清楚extend-type并将CharSequence协议应用于我的defstructed结构,以便在遇到ref它时可以正常工作.这仍然需要对结构进行逐个字段检查,并且需要特殊情况ref,但至少它将问题本地化为结构而不是包含结构的任何内容.
  2. 弄清楚如何CharSequence在遇到协议时覆盖协议ref.这允许更加本地化的行为,并允许我在REPL处查看循环引用,即使它不在结构体内.这是我的首选.
  3. 弄清楚如何做toString我认为在某种程度上被称为某种程度的事情println.我对这个选项最无知.对其他人一无所知,但我一直在读书Joy of Clojure,现在我受到了启发.

同样,此解决方案应该适用于printpprint尝试打印循环引用时通常会禁用的任何其他内容.我应该采用什么策略?

非常感谢任何输入.

graph clojure cyclic charsequence pprint

5
推荐指数
1
解决办法
940
查看次数

Python Networkx 实现循环有向图

我正在尝试通过以下循环有向图找到所有路径。我希望能够包括通过循环一次的路径,但不包括无限循环通过一条路径的可能性。

Start -> [1];
1 -> [2];
2 -> [3, 4];
3 -> [6];
4 -> [7];
5 -> [3,8];
6 -> [5,8];
7 -> [10];
8 -> [9];
9 -> [End];
10 -> [8].
Run Code Online (Sandbox Code Playgroud)

我已经找到了所有的简单路径,但是,还有另外 3 条不重复循环的路径,但是能够通过一个循环一次。我希望能够使用 Python 找到这些?

我在下面包含了迄今为止开发的代码。

import networkx as nx

#Build a dummy dictionary to represent a graph, nodes as keys, edges to the node as paired arrays
#Page 1
Demo_Bussines_Process_Diagram = {"Start" : ["1"], "1":["2"], "2":["3","4"], 
                                 "3":["6"], "4":["7"], "5":["3","8"], "6":["5","8"], 
                                 "7":["10"],"8":["9"],"9":["End"],"10":["8","4"]}   

#Build an empty …
Run Code Online (Sandbox Code Playgroud)

python graph-theory cyclic networkx python-3.x

5
推荐指数
0
解决办法
469
查看次数

Cyclic.sh 未检测到 package.json 中的启动 scrypt

经过几个小时的阅读并进入循环冷却部署过程后,我来到这里。https://www.cycling.sh/

\n

我试图免费托管我的 Express js 应用程序,并将我的 github 存储库链接到我的 cyclo.sh 仪表板。(顺便说一句,我向我的 Express 应用程序添加了打字稿)我的应用程序的构建过程成功 \xe2\x9c\x85 ,但是当我检查运行时日志时,它会抛出此错误: ERROR: Failed to run \'node index.js \'

\n

成功构建:\n在此处输入图像描述

\n

运行时完整的错误日志:

\n
\n2023-01-09 01:21:26.063: grep: /var/task/package.json: No such file or directory\n2023-01-09 01:21:26.527: node:internal/modules/cjs/loader:998\n  throw err;\n  ^\n\nError: Cannot find module \'dotenv\'\nRequire stack:\n- /var/task/index.js\n    at Module._resolveFilename (node:internal/modules/cjs/loader:995:15)\n    at Module._load (node:internal/modules/cjs/loader:841:27)\n    at Module.require (node:internal/modules/cjs/loader:1061:19)\n    at require (node:internal/modules/cjs/helpers:103:18)\n    at Object.<anonymous> (/var/task/index.js:33:34)\n    at Module._compile (node:internal/modules/cjs/loader:1159:14)\n    at Module._extensions..js (node:internal/modules/cjs/loader:1213:10)\n    at Module.load (node:internal/modules/cjs/loader:1037:32)\n    at Module._load (node:internal/modules/cjs/loader:878:12)\n    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) …
Run Code Online (Sandbox Code Playgroud)

deployment hosting cyclic express

5
推荐指数
1
解决办法
2273
查看次数

如何实现循环UIScrollView?

如何实现循环UIScrollView?也就是说,当您滚动到最左侧的项目时,UIScrollView将显示非常正确的项目.任何帮助将是欣赏.

iphone uiscrollview cyclic

4
推荐指数
1
解决办法
1110
查看次数

MongoDB 连接错误:MongoNetworkError:托管在循环上时

我有一个托管在循环上的 NodeJs API。早些时候一切工作正常,但我用尽了我的免费层 API 请求,我的应用程序被暂停,然后不得不升级。从那时起我就一直遇到这个错误

 MongoDB connection error: MongoNetworkError: 805C21D67D7F0000:error:0A000438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error:ssl/record/rec_layer_s3.c:1586:SSL alert number 80

    at connectionFailureError (/var/task/node_modules/mongoose/node_modules/mongodb/lib/cmap/connect.js:367:20)
    at TLSSocket.<anonymous> (/var/task/node_modules/mongoose/node_modules/mongodb/lib/cmap/connect.js:290:22)
    at Object.onceWrapper (node:events:629:26)
    at TLSSocket.emit (node:events:514:28)
    at emitErrorNT (node:internal/streams/destroy:151:8)
    at emitErrorCloseNT (node:internal/streams/destroy:116:3)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  cause: [Error: 805C21D67D7F0000:error:0A000438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error:ssl/record/rec_layer_s3.c:1586:SSL alert number 80
  ] {
    library: 'SSL routines',
    reason: 'tlsv1 alert internal error',
    code: 'ERR_SSL_TLSV1_ALERT_INTERNAL_ERROR'
  },
  connectionGeneration: 2,
  [Symbol(errorLabels)]: Set(1) { 'ResetPool' }
}

Run Code Online (Sandbox Code Playgroud)

我已经尝试了一切,我以为我的 mongo 免费层已经用完了。我升级了,没用。我更新了我的猫鼬包,我尝试在网上搜索但找不到任何东西。这就是我在index.js中连接到数据库的方式 //在监听之前连接到数据库

connectDB().then(() => {
  app.listen(PORT, () => …
Run Code Online (Sandbox Code Playgroud)

cyclic mongoose mongodb node.js

4
推荐指数
1
解决办法
4411
查看次数

什么是循环和非循环通信?

所以我已经搜索过之前是否有这样的问题,但我找不到我喜欢的答案.

我最近一直在使用一些PLC和变频驱动器,并认为这是时候我终于找到了循环和非循环通信.

如果我错了,请纠正我,但是当我想到循环数据时,我会想到不断更新的数据,并且能够将数据发送/采样到其他设备.关于我正在做的事情,我认为变频器能够更新可以从PLC采样/读取的速度和频率等信息.这就是我所考虑的循环通信,它总是更新可以作为数据发送的某种类型的信息.

所以我对这个假设可能完全错了,这让我想到了什么是非循环或非循环通信.

有帮助吗?

variables plc drive cyclic

3
推荐指数
1
解决办法
9093
查看次数

为什么我的类型定义在声明为变体时被拒绝为循环,但是否则接受?

我正在搞乱使用OCaml实现Chris Okasaki的Purely Functional Data Structures中的一些数据结构,并且遇到了这种类型的定义:

 type tree = Node of int * int * tree list;;
Run Code Online (Sandbox Code Playgroud)

我不认为它需要标签,因为它不是联合类型,所以我尝试删除标签,但是我得到以下错误:

# type tree = int * int * tree list;;
Characters 5-33:
type tree = int * int * tree list;;
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error: The type abbreviation tree is cyclic
Run Code Online (Sandbox Code Playgroud)

为什么两个看似相同的类型定义会发生这种情况?

ocaml types functional-programming ml cyclic

3
推荐指数
1
解决办法
109
查看次数