问题标签 [flow-control]

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 投票
1 回答
125 浏览

algorithm - 对于动态离散节点流控制,什么是好的局部启发式?

假设您有一组节点。有些节点是生产者,有些是消费者,有些是路由器。每个节点都有一个最大吞吐量,它定义了它每天可以接受的最大单位数,以及它每天可以发送的最大单位数(在这种情况下,接受和发送不会相互干扰)。每个节点还具有单元存储容量,允许它们处理流量变化。此外,每个节点最多只能与最多 8 个附近节点(在一个平面上)进行外连接,并且相同的限制适用于内连接。

我已经有一个启发式算法,给定一个图表,枚举节点并完成将单元推送到后续节点的足够好的工作。它枚举每个节点,向每个目标节点发送 max(ceil(remaining-sendable-units/remaining-following-nodes), remaining-receivable-units-at-receiver)。

现在我需要一种方法来自动查看节点,并决定图形拓扑应该是什么以获得足够好的流量。我的基本想法是为每个节点分配一个“责任”,最初相当于他们消耗了多少单位。然后将一条边从 n1 添加到 n2 会将 n2 的一些责任交给 n1。但我很快发现节点可以消耗的数量和节点可以接受的数量之间的差异混淆了算法并让我陷入困境。

编辑 每个生产者/消费者消耗的数量会随时间变化(低于某个最大值),并且可以添加或删除节点。

有什么简单的想法吗?

0 投票
5 回答
17835 浏览

java - 如何组合 switch 和 if else 语句

我正在上一门在线 Java 课程,老师要求以下内容:编写一个菜单程序,要求用户输入一个数字,指示四个基本数学方程式(加法、减法、乘法、除法)。使用 if/else 结构来执行所需的操作,询问用户输入并求解方程。我对此并不陌生,但我不明白 if/else 的意义,但我想这是无关紧要的。

如果我使用下面的案例 1、2、3、4 来确定操作,我如何使用“If 语句”来引用案例?

//我想我可以像这样使用'If'

提前致谢!

0 投票
2 回答
261 浏览

perl - Perl elsif 没有被评估

有人看到这段代码有什么问题吗?当我们(在 Linux 上)执行它时,我们会直接进入“错误:未知主机”块。

Perl 是 5.8.6 版

0 投票
2 回答
2263 浏览

serial-port - Atxmega USART 流量控制

我在 Atxmega256 上的 USART 流控制方面遇到了一些问题。我正在与使用 RTS/CTS 进行流量控制的调制解调器通信。一旦调制解调器将 CTS 设置为低,我想停止发送数据,直到它再次变高。我目前正在使用中断驱动的 USART 例程,似乎找不到停止发送的好方法。如果我只是在 CTS 变低时停止发送,发送缓冲区中的所有数据仍将被发送并因此丢失。

我尝试了以下禁用/启用发送:

不幸的是,这似乎永久禁用了发送。有任何想法吗?

最好的问候弗雷德里克

0 投票
3 回答
113 浏览

arrays - 尝试遍历 Perl 中的哈希数组时出错

这已经被问过几次了,但这些答案似乎都不适用于我的情况。

我的代码:

当我运行此代码时,它会吐出:'在 ./partc.pl 第 152 行使用 "strict refs" 时,不能使用字符串 ("-1") 作为 HASH ref。

知道为什么会这样吗?我似乎无法在循环中正确取消引用哈希。

0 投票
1 回答
1623 浏览

python - 使用 Python Twisted 进行 UDP 流控制

我有一个从类继承的twisted.internet.protocol.DatagramProtocol类。在我的startProtocol()实现中,我调用startWriting()了 ,因此每次我可以在不阻塞的情况下写入它时都会通知套接字。两个问题:

  1. 一旦 socket 变为可写状态,twisted 会调用哪个方法?
  2. startWriting()如果需要在特定的时间间隔内调用方法以将传出的 UDP 带宽限制为特定的数据报/秒数量,我应该如何调用方法?
0 投票
3 回答
6783 浏览

python - Python测试对象是否存在

我认为使用 try: except: 进行流控制是不好的风格,但我不知道如何编写以下代码来测试 Django 中的 DB 字段是否存在。这是有效的“脏”代码:

我宁愿做这样的事情,但是当if语句运行并且对象不存在时出现异常:

0 投票
1 回答
1345 浏览

windows - Rs232软件流控

我有一个关于 Rs232 软件流控制(又名 XOn/XOff)的一般性问题

.Net 实现(和 nativ win32 api)都定义了一个名为 WriteTimeout / ReadTimeout 的属性,这是一个以毫秒为单位的时间,在此之后,通信被认为是过期的。

不,我的问题是这样的:如果我向设备发送一个 5 字节的字符串,我看不到任何 WriteTimeout,正如预期的那样。这是如何实施的?我发现有关软件流控制的所有信息都是在接收缓冲区已满时设置 XOFF;XOn 当它准备好再次接收时。

但从我看到的行为来看,我怀疑设备在处理我发送的 5 字节信息后会发送 XON,从而为 Windows 创建信息以生成相应的事件。

那么何时在仅两线 RS232 实现上发送 XON?仅当缓冲区已满并重新开始接收时;或者发出信号,我们“仍然准备好”在处理完每个块后接收?

如何实施?

提前干杯和谢谢!

科莱戈特

0 投票
2 回答
3817 浏览

ruby - Ruby 中重做和重试语句的目的是什么?

我能想到的唯一用例redo是诸如写入套接字或从数据库读取之类的操作,但如果这些操作失败一次,后续尝试很可能也会失败,所以这对我来说仍然有点毫无意义,至于retry我真的想不出任何有用的情况。

这对我来说似乎毫无意义,因为我不知道或不使用 Ruby,但我渴望有朝一日创造一门很棒的语言,所以我想至少知道一些最流行的语言的设计背后的原因。

0 投票
1 回答
5077 浏览

arduino - Java RXTX 和 Arduino 之间串行通信的流控制设置

我在我的 Seeeduino Mega 1.22 上有一个简单的草图,它只在 LCD 显示器上显示串行输入。使用 lynx 术语和 arduino 串行监视器工作正常:正在显示发送的输入。当我想启动我的 Java 程序(在 Win7 x64 机器上的 Eclipse 中运行)和 Seeeduino 之间的串行通信时,问题就开始了。我正在使用 RXTX x64 构建。该程序旨在通过开放端口发送和接收一些 string.getBytes() 。在 Java 端接收有效,但在 Arduino 端接收失败。

似乎问题在于正确的流控制设置。我看到有些人有同样的问题,就像这里的问题在 RXTX 中接收

但是这个解决方案对我不起作用。如果我将 FlowControl 设置为 None,那么我只会在显示屏上看到一个块图标,表明串行连接已经建立,但没有别的。如果我将 FlowControl 设置为 RCTS_IN | RCTS_OUT,然后当我关闭已建立的连接时,我只会在显示器上获得字符串字节。

为什么只有在我关闭连接时才发送数据(刷新输出流也没有帮助)?我在 Flow Controll 设置中做错了什么?

这是我正在使用的修改后的 connect() 方法。

在此先感谢您的时间