小编And*_*man的帖子

有效地检查几个命令的Bash退出状态

是否有类似于pipefail的多个命令,比如'try'语句但在bash中.我想做这样的事情:

echo "trying stuff"
try {
    command1
    command2
    command3
}
Run Code Online (Sandbox Code Playgroud)

并且在任何时候,如果任何命令失败,则退出并回显该命令的错误.我不想做以下事情:

command1
if [ $? -ne 0 ]; then
    echo "command1 borked it"
fi

command2
if [ $? -ne 0 ]; then
    echo "command2 borked it"
fi
Run Code Online (Sandbox Code Playgroud)

等等......或类似的东西:

pipefail -o
command1 "arg1" "arg2" | command2 "arg1" "arg2" | command3
Run Code Online (Sandbox Code Playgroud)

因为我相信的每个命令的参数(如果我错了,纠正我)会相互干扰.这两种方法对我来说似乎非常啰嗦和讨厌,所以我在这里呼吁采用更有效的方法.

bash exit

252
推荐指数
9
解决办法
37万
查看次数

是否有可能告诉分支预测器跟随分支的可能性有多大?

为了说清楚,我不打算在这里使用任何类型的便携性,所以任何将我绑定到某个盒子的解决方案都可以.

基本上,我有一个if语句将99%的时间评估为true,并且我试图剔除每个性能的最后一个时钟,我可以发出某种编译器命令(使用GCC 4.1.2和x86 ISA,如果告诉分支预测器它应该缓存该分支吗?

c x86 gcc micro-optimization compiler-optimization

73
推荐指数
4
解决办法
2万
查看次数

快速找到2的最近上方指数的指数

如果我有一个数字a,我希望x的值在b = 2 ^ x,其中b是2的下一个幂大于a.

如果您错过了标记,那么这是Java,而a是一个int.我正在寻找最快的方法来做到这一点.我的解决方案就是使用bit-twiddling来获取b,然后执行(int)(log(b)/ log(2)),但我觉得必须有一个更快的方法,不涉及划分两个浮动 -点数.

java performance

21
推荐指数
3
解决办法
2万
查看次数

为什么Java 8对派生类应用注释不同?

如果我有以下两个类:

// Base.java
public abstract class Base<T> {
  abstract void method(T t);
}
Run Code Online (Sandbox Code Playgroud)

// Derived.java
public class Derived extends Base<Number> {
  @Deprecated
  void method(Number n) {}
}
Run Code Online (Sandbox Code Playgroud)

然后我用它们编译它们javac Base.java Derived.java然后使用javap -v Derived.如果我使用Java 7,我会得到

public class Derived extends Base<java.lang.Number>
  Signature: #17                          // LBase<Ljava/lang/Number;>;
  SourceFile: "Derived.java"
  minor version: 0
  major version: 51
  flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
   #1 = Methodref          #5.#20         //  Base."<init>":()V
   #2 = Class              #21            //  java/lang/Number
   #3 = Methodref          #4.#22         //  Derived.method:(Ljava/lang/Number;)V
   #4 = …
Run Code Online (Sandbox Code Playgroud)

java annotations java-8

10
推荐指数
1
解决办法
224
查看次数

使浮动合理化的高性能算法

给定一个浮点数,我希望得到一个String近似小数的有理数的表示(在给定的容差范围内ε很好).我目前的做法如下:

String rationalize(double d)
{
    String s = Double.toString(d);
    s = s.substring(s.indexOf('.')+1, s.length());
    return s + " / " + ApintMath.pow(new Apint(10), s.length()).toString();
}
Run Code Online (Sandbox Code Playgroud)

如果你不熟悉它,ApintMath.pow即使使用任意长数也会工作,这很好,因为我试图转换小数位数千位的小数.我的算法的性能很糟糕.

我将此归结为两件事,但可能会有更多:

  1. 我获得分数的方法非常幼稚.我相信有更好的方法.
  2. 该分数是未简化的,因此使用该分数的任何后续计算可能会浪费大量时间.

你会怎么做?还有其他我没有谈过的领域让我感到沮丧吗?

java floating-point rational-numbers

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

并行化快速排序使其变慢

我正在快速搜索大量数据,为了好玩,我试图将其并行化以加快排序.但是,在它的当前形式中,由于同步阻塞点,多线程版本比单线程版本慢.
每次我产生一个线程,我得到一个锁在一个int并加一,而每次线程完成我再次得到锁和减量,除了检查是否有仍然运行(INT> 0)的线程.如果没有,我唤醒我的主线程并使用已排序的数据.

我相信有更好的方法可以做到这一点.不知道它是什么.非常感谢帮助.

编辑:我想我没有提供足够的信息.
这是octo-core Opteron上的Java代码.我无法切换语言.
我正在排序的数量适合内存,并且在调用quicksort时它已经存在于内存中,因此没有理由将其写入磁盘只是将其读回内存.
通过"获取锁定"我的意思是在整数上有一个同步块.

java sorting parallel-processing multithreading quicksort

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

拉宾最近的邻居(最近的一对点)算法?

所以我试图找到有关 Michael Rabin 算法的详细信息,该算法在 O(n) 时间内找到给定一组 2D 点的最近邻点。出于某种原因,谷歌搜索完全让我失望。我找到的最好的(也是唯一的)描述在这里:http : //rjlipton.wordpress.com/2009/03/01/rabin-flips-a-coin/

如果有人对此有所了解,或者知道在哪里可以找到有关该主题的书籍或论文(最好是在线!),我非常感谢您的参与。

algorithm nearest-neighbor rabin

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

Java线程/ volatile

我有一个帖子:

class Foo extends Thread
{
    boolean active = true;

    public void run()
    {
        while(active)
        {
            //do stuff
        }
    }

    public void end()
    {
        active = false;
    }

    public void hibernate()
    {
        synchronized(this)
        {
            wait();
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

如果另一个线程调用end(),会Foo立即看到active现在是false什么?具体来说,因为active不是volatile,我不确定它会不会.我最初创建的end()是一种避免易变的聪明方法,但现在我不确定它实际上会做我想做的事情.另外,如果另一个线程调用hibernate(),哪个线程将进入休眠状态?我打算Foo睡觉,所以如果这不符合我的意图,那么另一个建议将非常受欢迎.

java multithreading volatile

5
推荐指数
2
解决办法
2730
查看次数

同时对多个字符串进行标记

说我有三架C风格的字符串,char buf_1[1024],char buf_2[1024],和char buf_3[1024].我想对它们进行标记化,并使用所有三个中的第一个标记执行操作,然后对所有三个中的第二个标记执行相同操作等.显然,strtok每次我想要一个新标记时,我可以从头开始调用并循环它们.或者,预先处理所有令牌,将它们分成三个阵列并从那里开始,但我想要一个更清洁的解决方案,如果有的话.

c++ strtok

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

避免插入失败以避免虚假的自动增量

我的问题与为什么MySQL自动增量在失败的插入上增加一样?,但id我不想增加我的字段,我宁愿只重写INSERT导致我麻烦的查询.假设我有一个包含两个字段的数据库,id并且username,哪里id是主键并且username是唯一键.我基本上是在寻找能够做到的语法INSERT...IF NOT EXISTS.现在,我做到了

INSERT INTO `table`(`username`) 
    VALUES ('foo') 
    ON DUPLICATE KEY UPDATE `id`=`id`
Run Code Online (Sandbox Code Playgroud)

我只有一个线程写入数据库,所以我不需要任何类型的并发保护.建议?

mysql sql innodb auto-increment

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

Verilog inout导线出现问题

为了记录,我是一个完整的Verilog新手.我正在编写一个使用少量双向总线的模块.

inout wire [KEY_SIZE-1:0] prevKey;
inout wire [TAG_SIZE-1:0] prevTag;

inout wire [KEY_SIZE-1:0] nextKey;
inout wire [TAG_SIZE-1:0] nextTag;
Run Code Online (Sandbox Code Playgroud)

我知道如何从公共汽车上读取东西,但我该怎么写东西呢?如果我对a使用assign语句reg,reg当新数据进入线路时,get 的值是否会被破坏?处理一个inout值得麻烦的港口,还是我应该为每个港口做一个inputoutput公共汽车?

verilog

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

如何设置4字节长的底部3个字节,同时保留顶部字节不变?

相关代码是这样的:

typedef unsigned long int chunk_head;

typedef struct malloc_chunk
{
    // Contains the size of the data in the chunk and the flag byte.
    chunk_head      head;

    // Deliberately left unsized to allow overflow. 
    // Contains the payload of the chunk.
    unsigned int    data[];
};
Run Code Online (Sandbox Code Playgroud)

举个例子,"get"宏是这样的:

//Get the size of the data contained within the chunk.
#define GET_CHUNK_SIZE(chunk) ((chunk.head) & 0xFFFFFF)
Run Code Online (Sandbox Code Playgroud)

高位字节我正在使用标志位 - "inuse"和"可以合并",而我找到的任何其他字节都是有用的.

现在我已经完成了提供背景信息,正如我在标题中所说的那样,我需要能够将较低的3个字节更改为块的大小.我最初的本能是按位和大小的标头,因为它会正确对齐,但后来我意识到它也可能会覆盖标志字节,因为它会自动加上零,直到它的大小与长整数相匹配.我甚至不确定你可以按位和一个int和一个long.无论如何,帮助非常感谢.

c bit-manipulation bitwise-and

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