标签: robustness

如何管理应用程序的外部依赖项?

有许多类型的外部依赖项.与外部应用程序,组件或服务连接(例如,Outlook用于发送电子邮件,TWAIN或WIA用于扫描,ActiveX对象和Web服务用于各种目的,等等).

您确保应用程序是健壮的,并且即使这些外部依赖项(由于无数原因)不可用时也可以运行的策略是什么?

注意:您自己的源代码中包含的外部源代码是另一种外部依赖项,但这主要不是我在这里所关注的.

language-agnostic defensive-programming robustness external-dependencies

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

Android 内容提供程序在提供程序崩溃时的稳健性

在 Android 平台上(已在 ICS 上确认),如果客户端在查询过程中(即具有打开的游标)内容提供者死亡,则框架会决定终止持有打开游标的客户端进程。

这是当我使用下载管理器查询尝试此操作时的 logcat 输出,该查询在执行查询后会休眠。“睡眠”是为了重现问题。您可以想象当提供者在正确/错误的时间死亡时,它会发生在常规用例中。然后杀死 com.android.media(托管 downloadProvider)。

“杀死 com.example (pid 12234),因为提供程序 com.android.providers.downloads.DownloadProvider 正处于死亡进程 android.process.media”

我在 ActivityManagerService::removeDyingProviderLocked 中跟踪了此代码

 10203     private final void removeDyingProviderLocked(ProcessRecord proc,
 10204             ContentProviderRecord cpr) {
 10205         synchronized (cpr) {
 10206             cpr.launchingApp = null;
 10207             cpr.notifyAll();
 10208         }
 10210         mProvidersByClass.remove(cpr.name);
 10211         String names[] = cpr.info.authority.split(";");
 10212         for (int j = 0; j < names.length; j++) {
 10213             mProvidersByName.remove(names[j]);
 10214         }
 10215 
 10216         Iterator<ProcessRecord> cit = cpr.clients.iterator();
 10217         while (cit.hasNext()) {
 10218             ProcessRecord capp = cit.next();
 10219 …
Run Code Online (Sandbox Code Playgroud)

android robustness android-contentprovider ashmem

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

在 C++ 中抛出运行时警告

几周前我开始使用异常,现在我想知道是否有一种方法可以抛出警告。如果未捕获此警告,则不应强制应用程序退出。我会给你一个例子,在什么情况下我想使用它。

有一个系统可以将属性附加到唯一的 ID 上。当我以某种方式尝试向尚不存在的 id 添加属性时,系统应该在内部为我创建该 id,然后向其中添加属性并返回结果。当然,这不能悄然进行。但由于应用程序可以保持运行,我不想抛出异常。

我怎样才能通知某些事情不太正确,但系统仍在运行?

c++ warnings exception robustness

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

空值和空值

编写健壮代码的最佳方法是什么,以便可以检查变量是否为null和空白.

例如

string a;

if((a != null) && (a.Length() > 0))
{
    //do some thing with a
}
Run Code Online (Sandbox Code Playgroud)

.net c# robustness

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

shell和命令替换中的“ set -e”

在外壳程序脚本set -e中,当从脚本执行的某些命令以非零退出代码退出时,通常通过停止脚本来使脚本更健壮。

通常很容易指定您不关心|| true最后添加的某些命令是否成功。

当您实际上关心返回值但不希望脚本在非零返回码上停止时,会出现问题,例如:

output=$(possibly-failing-command)
if [ 0 == $? -a -n "$output" ]; then
  ...
else
  ...
fi
Run Code Online (Sandbox Code Playgroud)

在这里,我们既要检查退出代码(因此不能|| true在命令替换表达式内部使用)并获取输出。但是,如果命令替换中的命令失败,则由于导致整个脚本停止set -e

有没有一种干净的方法可以防止脚本在此之前停止而无需取消-e设置然后重新设置呢?

shell robustness

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

如何在 kubernetes 中模拟 pod 故障

为了在多 Pod 系统上进行一些稳健性测试,我需要以某种方式模拟 Pod 故障。我不想在部署中使用缩小规模,因为它不太现实。在我的情况下,删除 pod 也不是很有用,因为 pod 很快就会回来。

我已经检查了有关以下内容的回复: How to Analog Power Failure In Kubernetes 并且不符合我的需求。有什么建议吗?

robustness kubernetes

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

你接受接口作为构造函数参数吗?

Krzysztof的建议是否适用于构造函数?如果是这样,你如何正确实施?

我们建议对输出和属性使用Collection,ReadOnlyCollection或KeyedCollection,并使用IEnumerable,ICollection,IList作为输入.

例如,

public ClassA
{
    private Collection<String> strings;
    public Collection<String> Strings { get { return strings; } }
    public ClassA(IEnumerable<String> strings)
    {
        this.strings = strings; // this does not compile
        this.strings = strings as Collection<String>; // compiles (and usually runs?)
    }
}
Run Code Online (Sandbox Code Playgroud)

.net generics constructor interface robustness

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

Lisp中的选项类型编码/健壮性

(define (nth n lst)
  (if (= n 1)
    (car lst)
    (nth (- n 1)
         (cdr lst) )))
Run Code Online (Sandbox Code Playgroud)

是一个不安全的部分功能,n可能会超出范围.一个error可以帮助,

(define (nth n lst)
  (if (null? lst)
    (error "`nth` out of range")
    (if (= n 1)
      (car lst)
      (nth (- n 1)
           (cdr lst) ))))
Run Code Online (Sandbox Code Playgroud)

但是,与Haskell 数据类型类似的强大 Scheme Maybe类似于什么呢?

data Maybe a = Nothing | Just a

nth :: Int -> [a] -> Maybe a
nth _ []       = Nothing
nth 1 (x : _)  = …
Run Code Online (Sandbox Code Playgroud)

lisp functional-programming robustness maybe option-type

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

Java ListIterator健壮性

我有一个简单LinkedList的Java,有10个元素.在那个州,我得到一个普通的ListIterator,说.listIterator(3).如果我然后插入/删除其他元素到列表中,而不触及我拥有的元素ListIterator(也不是迭代器),它ListIterator仍然有效吗?

java robustness listiterator

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

如何在网上的几台计算机上构建分布式健壮的链表?

我正在考虑构建一个使用raid(磁盘)算法的程序.如果一台电脑死了.接下来将介入.在它的位置.它需要从1到1000台计算机扩展.

我需要一些建议.

我需要学习什么算法的名称?

有一次我认为可以在git之上构建它.

algorithm distributed linked-list robustness

0
推荐指数
1
解决办法
1576
查看次数

我如何使这个正则表达式更通用,有时它工作,有时它不工作

我有一个我在java应用程序中使用的正则表达式.有时候它可以正常工作,有时则不然.

<!-- <editable name=(\".*\")?> -->(.*)<!-- </editable> -->
Run Code Online (Sandbox Code Playgroud)

有时我会在它之前/之后有空格,有时候会有文字.标签内的区域也是如此.

主要问题是name =(\".*\")?>有时匹配的次数超过预期.我不确定这是否是明显可以解决的问题,只需查看此代码即可.

java regex validation robustness

0
推荐指数
1
解决办法
179
查看次数