小编Wei*_*Shi的帖子

在一个点文件中解析多个有向图

我正在尝试以DOT格式处理和渲染一些图形.我拥有的点文件很大(~300MB),它包含多个有向图

digraph 1 {...}
digraph 2 {...}
digraph 3 {...}
Run Code Online (Sandbox Code Playgroud)

我有两个问题:
1.是否可以使用渲染只有1个有向图而不是整个图?
有什么东西dot -3 -Tps mygraph.dot -o out.ps只能渲染有关图3吗?

2.什么是最好的Python库来处理点格式?(其他语言也可以接受)
这里有两个我试过,但不够好
pydot它在导入后给我一个有向图列表,这很好,但它不处理" ".在节点名称中.例如,nd.nd [label="nd_node"]将失败

pygraphviz它确实处理".",但只在文件中给出多个图形定义时导入有向图1 :(

python dot

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

为Java中的类实现2种Equals方法

public class Foo{
    private final int A;
    private final int B;
    public boolean equals(Object o){
        //type check omitted
        return A==o.A && B==o.B;
    }

}
Run Code Online (Sandbox Code Playgroud)

我想要这样的另一种.equals()方法

public boolean equals(Object o){
    return A==o.A;
}
Run Code Online (Sandbox Code Playgroud)

首先使用A,B字段创建Foo对象,然后我想将它们发送到Set<E>使用第二个equals()方法的仅仅比较字段A的情况.

我知道我可以创建只有A字段的新对象,但开销会很大.有什么建议?

java

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

Junit多重设置和单一测试

我想编写一个测试,以多种方式执行安装程序,但希望它们生成相同的输出.基本上就像

@Before
public void setUp1(){
    obj.addDataThisWay(data);
}

@Before
public void setUp2(){
    obj.addDataThatWay(data);
}

@Test
public void testResult(){
    assertEquals(obj.getResult(),1);
}
Run Code Online (Sandbox Code Playgroud)

我希望测试运行两次,一次运行setUp1()->testResult(),另一次运行setUp2()->testResult()是否可能?

java junit

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

在C中清除错误处理方法

我正在编写一个需要良好错误处理的C程序.代码喜欢这样:

If(doWork("A")<0){
    return -1;   
}
If(doWork("B")<0){
    undoWork("A");
    return -1;
}
If(doWork("C")<0){
    undoWork("A");
    undoWork("B");
    return -1;
}
return 0;
Run Code Online (Sandbox Code Playgroud)

这段代码有效,但看起来非常混乱,特别是我有一长串doWork(X)要打电话.在这种情况下,是否有更好更清洁的方法来处理错误?

c error-handling

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

简化Java中Enum类的方法

我有一个包含Enum的类来进行计算.每个枚举使用外部类中的部分或全部非静态变量.但是因为它们无法访问实例变量,所以我必须将它们作为参数传递.

public class Outer{
    ClassA a;
    ClassB b;
    ClassC c;
    Map<MyEnum,Double> results= new EnumMap(MyEnum.class);
    private enum MyEnum{
        X{  public double calc(ClassA _a){ dostuff }           },
        Y{  public double calc(ClassB _b,ClassC _c){ dostuff } },
        Z{  public double calc(ClassA _a,ClassB _b){ dostuff } };
    }

    public void doCalc(){
        for(MyEnum item:MyEnum.values()){
            result.get(item) = item.calc(...);//Not uniform here
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我无法通过统一的方式传递for循环中的参数.我可以使每个Enum方法都采用所有类

public double calc(ClassA _a,ClassB _b,ClassC _c){ dostuff}
Run Code Online (Sandbox Code Playgroud)

但如果我有更多的类,参数看起来会太难看.有没有更好的方法来做这种事情?

java enums

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

在 x86 机器上无锁读/写 int

假设在一个 C 程序中,我有 P 个线程在 32 位机器上运行,并且int MAX--a 共享 32 位整数

每个线程都可以读/写 MAX。

要求:线程读取的值不应被损坏,例如前 16 位和后 16 位不同步

问:我需要加锁来保护读写吗?或者我可以安全地忽略锁,因为 LOAD/SAVE 汇编指令保证以原子方式发生?

c concurrency

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

在单程中找到第K个最大数字而不存储整个数组

我想到的算法是

  • 保持MaxHeap的大小为K.
  • 插入每个元素
  • 如果堆已满,则删除较小的值
  • 最后,Kth max是MaxHeap中较小的一个

这将给我O(NlogK).有更好的算法吗?我不能快速选择,因为数组不能存储在内存中.

arrays algorithm selection space-complexity

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

format mathematica输出结果列表

我有一个操作数据的表达式列表.

Min[data]
Max[data]
Covariance[data, data1]
Mean[data]
GeometricMean[data]
Total[data]
Sum[Log[data[[i]]], {i, 1, Length[data]}]
Sum[(data[[i]])^2, {i, 1, Length[data]}]
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样

Out[1]= 1.9
Out[2]= 3.1
....
Run Code Online (Sandbox Code Playgroud)

是否可以显示结果及其表达式?例如

Min[data] = 1.9
Max[data] = 3.1
....
Run Code Online (Sandbox Code Playgroud)

有关如何格式化这种输出以便于阅读的任何建议都是受欢迎的!

wolfram-mathematica

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

java中的原始有序集合

Trove库提供了一些快速原始集合,例如Map,List但它没有任何有序集合,例如SortedMap,TreeSet.是否有提供这些馆藏的图书馆?

java collections

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

在C中以HTTP响应日期格式生成日期字符串

我正在尝试从当前时间生成一个日期字符串以放入HTTP响应头.它看起来像这样:

Date: Tue, 15 Nov 2010 08:12:31 GMT
Run Code Online (Sandbox Code Playgroud)

我只有默认的C库可以使用.我该怎么做呢?

c date

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