问题标签 [stability]

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 回答
481 浏览

unix - FTP vs SFTP,这次-稳定性

我读过一篇关于 FTP/SFTP 速度的好文章:为什么当我通过 SFTP 传输文件时,它比 FTP 需要更长的时间?

但是有没有人检查,或者有证据或文件,测试表明这两个在传输文件(数千个小文件和几个大文件)时哪个更“稳定” ?

使用本机客户端/服务器(Unix)的哪种协议(SFTP、FTP)更可能断开连接或能够重新连接甚至检测到停止的连接,并且不太可能弄乱文件

0 投票
1 回答
103 浏览

c++ - C++:监控文件大小。这可能有问题吗?

我正在编写一个 GUI 程序,将文件夹中的文件与服务器同步。我所知道的关于这些文件的信息是它们总是被写入而不是被删除。我关心的是在写入文件时开始上传文件。所以为了避免这种情况,我发明了一种解决问题的方法,我需要一些专家来告诉我这是否是错误的。

所以我所做的是我有一个带有计时器的事件循环。每次这个计时器计时,它都会查看是否有新文件添加。如果找到新文件,我使用这个简单的函数来获取文件大小:

然后,我将新文件名称、大小存储在表单的数据结构中(忽略std::以使其视觉上友好,因为下一行要写 5 个):

(如果可能,请提出更好的数据结构。unordered_multimap似乎做了类似的工作)。

所以这将存储文件名(在那个字符串中),它的大小(在那个 size_t 中)和文件大小被检查的次数,我们称之为checks. 所以每次计时器滴答作响时,我都会寻找新文件,并检查文件的大小是否发生了fileMonitor变化。对于单个文件,如果文件大小与以前不同,那么checks = 1,如果文件大小相同,那么我做checks++

现在在每次迭代中,我都会检查计时器是否在interval*checks > timeout足够长的时间内文件没有更改,我可以判断文件是稳定的并且没有被更新。

显而易见的问题:为什么我不使用类似的东西inotify?因为我需要跨平台且结构简单的东西,因为我已经知道要上传的文件的行为。不幸的是 boost 没有为此提供解决方案,所以我不得不自己发明。

0 投票
0 回答
771 浏览

java - 使 Android BLE (Bluetooth LE) 非常稳定

我正在编写一个程序来在支持android外围通信的2个android设备(在本例中为MOTOROLA MOTO E第2代)之间执行以下BLE通信到一系列:连接->通信->断开连接,看看他们是否可以做到具有良好的稳定性。还讨论了测试中发现的问题。

该程序首先让您选择您希望设备是外围设备还是中央设备。在中心端,程序首先在 Service UUID 上使用过滤器扫描外围设备:

然后,当扫描外围设备时,处理程序将从主线程调用以下内容。

当外围设备(由另一个 MOTO E 操作)连接时,在 onConnectionStageChange() 处完成以下操作

发现所有服务后,程序执行以下操作:

更新描述符订阅通知写入一些数据并发送到外围设备在接收到中央发送的数据后,外围设备将通知值更改。在接收到来自外围设备的数据更改通知后,将向外围设备发送数据。写入和通知过程将执行 11 次。然后中央调用 gatt.disconnect() 断开 ble 连接。

循环上述过程以测试稳定性。

正常连接时,上述过程可在1.7-2.5秒内完成。每个 write-notify 进程之间,大约需要 0.1s

测试过程中发现以下问题:

  1. onConnectionStageChange() 调用 device.connectGatt() 需要很长时间,直到最多 30 秒。如果出现这么长时间的等待,那么下一个 onConnectionStageChange() 可能偶尔会是一个失败的连接。
  2. onConnectionStageChange() 在 device.connectGatt() 之后被快速调用,但 newState = STATE_DISCONNECTED 偶尔
  3. 每个写入命令之间有时需要 0.5 秒。
  4. 该过程在任何阶段都会停滞或减慢。

这似乎是 Android BLE 堆栈的一些错误。因此我尝试实现一个看门狗,如果任何过程没有像预期的那样快,看门狗将激活并关闭中央设备的蓝牙并重新打开,从而主动停止等待蓝​​牙的回复堆栈,预计将是一些错误值。蓝牙重新打开后,中央设备将开始扫描外围设备并继续上述测试。

我试图在看门狗激活期间关闭 Gatt,但是在强制关闭 Gatt 之后,连续的 BLE 连接往往会失败。这样看来,错误往往会在每次失败后累积。所以我求助于通过 BluetoothAdapter...disable() 关闭和打开蓝牙设备

关闭蓝牙并重新打开对某些用户来说是相当麻烦的,因为他们可能正在使用其他蓝牙设备。我的问题是:

  1. 我们如何提高上述测试的稳定性(我的代码有什么问题,或者无论如何我可以更好地使用 BLE 堆栈)?

  2. 如果发生故障,是否可以仅重置 BLE 堆栈或关闭足够数量的资源,而不是完全切换 BLE 堆栈?

eclipse项目放在下面,如果有兴趣测试或者改进项目,请下载并尝试。 https://drive.google.com/file/d/0B-w_C5ISF1UHRXUzd1FrUHpyV0k/view?usp=sharing

0 投票
0 回答
69 浏览

parallel-processing - 并行代码测量的变化

我在不同的顺序运行,尤其是并行代码之间有太多的区别。例如,顺序版本需要 418 秒。并行版本采用:

2 个线程 - 250.630453;339.735046;256.153005;256.153005;311.177856

4 个线程 - 119.442949;116.032005;165.095566;149.539717;180.880198

8 个线程 - 73.856070;68.082326;76.318023;68.922623;55.321316

16 个线程 - 56.687378;45.672769;48.757555;42.978104;36.978891

32 个线程 - 24.421824;21.459057;23.815743;24.936219;24.581316

64 个线程 - 14.789693;15.312125;16.770807;13.371806;14.282328

该机器有 2 个插槽、32 个物理内核(Intel Xeon E5-2698v3)和超线程。机器上没有运行其他用户进程。

这有多正常?一些运行的变化超过 55%。并行代码确实会干扰算法的收敛速度(它是迭代的),但不会影响到这个程度。特别是,我在另一台计算机上运行了同样的代码,它更加稳定。我还没有尝试运行其他并行代码来查看它们的稳定性。

编辑:忘了说(1)顺序版本本身有很多变化(至少20%)和(2)我尝试了所有亲和力的组合,但稳定性和性能都没有始终如一地呈现更好。

0 投票
1 回答
561 浏览

cluster-computing - 大型 Hazelcast 集群的稳定性

我们有(不会太久,如果权力有他们的方式)一个相当大的集群,大约 600 个节点,所有节点都在同一个“组名”下,而其中只有一小部分(大约一个十几个)曾经进入 hazelcast.xml 中定义的 TCP/IP 接口列表

这是我们的配置

根据我的理解,其余部分仅受定义集群的“组名”的约束。我们在配置中不使用多播。我们集群的主要应用是分布式锁定。我们最近注意到的是任意超时和节点之间的连接断开、重复的“重新分区”和挂锁。一段时间后一切都冻结了。之前我们最终重新启动了节点,现在我们使用 Hazelcast TestApp 控制台来清除锁映射。我可以保证锁定和解锁的代码是相当防水的。我的观察.. 我们之前没有遇到过这类问题,直到我们将 Hazelcast 更新到 3.1.5 并将我们的节点从 30 多个扩展到现在 500 多个,其中大多数节点是 JVM,通常在同一个节点上多达十几个物理节点。这没有

a) 我们的大多数节点都没有出现在 hazelcast.xml 中这一事实是否会影响它们作为集群成员的稳定性?

b) 有没有人看到缩放问题,这是 Hazelcast 的错误,还是在你们其他人玩 Hazelcast 的时候我们做错了什么?

0 投票
0 回答
21 浏览

php - 作曲家如何确定模块的稳定性?

当我做

composer

但是有了这个

它成功了。如何composer确定包装的稳定性?我可以通过命名来制作一个 alpha 版本alpha-master吗?

UPD我的问题与建议的略有不同。这不仅仅是将代码标记为稳定。不知道如何更好地表达我的问题,但请参阅我期望的答案:

composer从标签和分支中获取包的版本。并且大多数时候它会推断版本(除非明确指定,否则不推荐)。

从分支获取 stable的版本获得稳定性。从标签中提取的那些根据它们的后缀获得稳定性。

因此,当composer install mmerian/doctrine-timestamp使用minimum-stability stable(这是默认设置)运行时,它找不到稳定版本,因为目前唯一的版本是dev-master. 并且失败了。

运行composer install mmerian/doctrine-timestamp=dev-master时,包隐式获取(我在文档中看不到)@dev 稳定性标志,这基本上意味着minimum-stability = dev这个特定的包。因此它成功了。

0 投票
1 回答
698 浏览

websocket - Websocket稳定性问题

我正在测试Websocket连接性VPN。我发现使用主机名连接比单独使用 IP 地址稳定得多。

有人可以提出任何可能的原因吗?

此外,我无法找到 Websocket 帧的性质,如果它们是按顺序传输还是以随机方式传输?

0 投票
1 回答
260 浏览

python - 渲染多个页面时 PhantomJS 的稳定性

我在一大堆页面上运行 PhantomJS 来抓取一些特定的 JS 生成的内容。我正在使用 Python Selenium 绑定,使用它可以轻松地对结果执行 XPath 查询。我注意到,如果我尝试实例化一个webdriver.PhantomJS对象并用它执行整个工作(可以说是“重用”它),我的脚本很快就会变得不稳定,出现零星的内存和连接问题。我的下一个尝试是尝试为每个渲染调用实例化一个新驱动程序(并quit()在完成时调用它),这对于多个请求也不起作用。我最后的尝试是用来subprocess隔离渲染调用在它自己的进程空间中。但即使使用这种技术,这是迄今为止最稳定的,我仍然需要将整个脚本包装在supervisor,以处理偶尔的打嗝。我真的想知道我是否做错了什么,或者是否有什么我应该注意的。我知道 PhantomJS(和其他自动浏览器)本身并不是真正用于抓取(更多用于测试),但是有没有办法让它以很高的稳定性工作呢​​?

0 投票
1 回答
973 浏览

quicksort - 导致稳定快速排序的分区算法

据说特定的分区算法可以导致稳定的快速排序,我想知道要做到这一点需要什么细节?

如果有人有创建此类算法的示例或提示,将会很有帮助

0 投票
2 回答
864 浏览

android - 如何在 Android 中为多个设备测试崩溃?

我们使用 Fabric 来跟踪 crashlytics。我们每天都会收到崩溃报告,这些报告与特定设备有关。

我的问题是如何避免 Android 中的崩溃,如果发生了我该如何测试它。因为大多数崩溃都与设备特定和网络特定有关。

  • 在将其投入生产之前,是否有任何工具可以识别和测试崩溃。
  • 有没有办法在不同的设备上测试不同功能的应用程序。