小编Dun*_*nie的帖子

优化级别-O3在g ++中是危险的吗?

我从各种来源(虽然大多数来自我的同事)中听到过,-O3用g ++ 的优化级别进行编译在某种程度上是"危险的",并且除非被证明是必要的,否则应该避免.

这是真的,如果是的话,为什么?我应该坚持-O2吗?

c++ optimization g++ compiler-flags

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

通过SSH执行存储在文件中的Bash脚本

假设我在文件中存储了以下Bash脚本foo.sh:

#!/bin/bash
echo foo
Run Code Online (Sandbox Code Playgroud)

无需scp文件,我怎么能执行存储在foo.sh远程机器上的脚本?

我尝试了以下(有一些变化)但没有成功:

$ ssh root@remote eval `cat foo.sh`
Run Code Online (Sandbox Code Playgroud)

eval `cat foo.sh`似乎扩展到eval #!/bin/bash echo foo这里

ssh bash

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

C++中usleep(0)对Linux的影响

usleep文档说明调用usleep(0)没有效果.但是,在我的系统(RHEL 5.2)上运行下面的C++代码小片段时,我发现它实际上看起来效果与之相同usleep(1).这是预期的,如果是这样的话,为什么文档与我在现实生活中看到的内容之间存在差异?

图表A.

码:

#include <unistd.h>

int main()
{
    for( int i = 0; i < 10000; i++ )
    {
        usleep(1);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

$ time ./test
real   0m10.124s
user   0m0.001s
sys    0m0.000s
Run Code Online (Sandbox Code Playgroud)

图表B

码:

#include <unistd.h>

int main()
{
    for( int i = 0; i < 10000; i++ )
    {
        usleep(1);
        usleep(0);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

$ time ./test
real   0m20.770s
user   0m0.002s
sys    0m0.001s
Run Code Online (Sandbox Code Playgroud)

c++ linux usleep

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

从公共方法返回InputStream

我有一个课程,一方面,InputStream从公共方法返回一个感觉是正确的,例如

public class MyClass {

    private File _file;

    ...

    public InputStream getInputStream() {
        return new FileInputStream( _file );
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我对这样做也非常谨慎,因为它让调用者有责任关闭这个流.我有什么方法可以避免这个问题?

java io inputstream

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

在表行之间插入隐藏输入是否有效?

背景:我正在编写一个自动生成HTML表的Java应用程序.除了添加表格行,此应用程序还可以插入隐藏的输入.但是,目前它只是在下次机会时将它们插入表中,例如:

<table>
    <tr> ... </tr>
    <input type="hidden" />
    <tr> ... </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

所以,我的问题:在这样的行之间插入隐藏输入是否有效,或者这可能会导致问题?

html

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

在单个字节中表示浮点数

我有一种情况需要float一个单一的代表char.这个'minifloat'需要表示的范围是0到10e-7,所以我们总是假设数字是+ ve,而指数-ve是为了节省空间.

我考虑过的表示是3位指数和5位尾数(带有1个隐含位),指数在基数10中,即x = man * 10^exp.

要从float转换为我的minifloat,我打算使用frexp,并使用一些数学从base 2转换为base 10.

这是一种明智的做法吗?或者有更好的方法来实现这一目标吗?

c++ floating-point

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

纯虚函数和二进制兼容性

现在,我知道向非叶类添加新的虚函数通常是不好的,因为它破坏了尚未重新编译的任何派生类的二进制兼容性.但是,我的情况略有不同:

我有一个接口类和实现类编译成共享库,例如:

class Interface {
    public:
        static Interface* giveMeImplPtr();
        ...
        virtual void Foo( uint16_t arg ) = 0;
        ...
}

class Impl {
    public:
        ...
        void Foo( uint16_t arg );
        ....
}
Run Code Online (Sandbox Code Playgroud)

我的主应用程序使用这个共享库,基本上可以写成:

Interface* foo = Implementation::giveMeImplPtr();
foo->Foo( 0xff );
Run Code Online (Sandbox Code Playgroud)

换句话说,应用程序没有任何派生类Interface,它只是使用它.

现在,说我想重载Foo( uint16_t arg )Foo( uint32_t arg ),我是安全的这样:

 class Interface {
    public:
        static Interface* giveMeImplPtr();
        ...
        virtual void Foo( uint16_t arg ) = 0;
        virtual void Foo( uint32_t arg ) = 0;
        ...
} …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance binary-compatibility

6
推荐指数
3
解决办法
3381
查看次数

将元素宽度设置为兄弟宽度

我有一个稍微不寻常的CSS挑战需要克服.

我有一个两列布局,其中左列的宽度由主图像的宽度设置,右边允许填充剩余的空间.主图像下方有一个容器,其自然宽度可能大于主图像.但是,我希望这个div与主图像的宽度相同,并且要隐藏溢出.以下是我尝试这样做的努力:

.outer {
  margin-right: 5px;
  position: relative;
}
.left {
  float: left;
}
.right {
  width: auto;
  overflow: hidden;
}
.contentOuter {
  overflow: hidden;
}
.content {
  width: 500px;
}
.inner {
  background-color: grey;
  color: white;
  width: 100%;
  height: 150px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="outer left">
  <div class="image">
    <img src="http://placehold.it/350x150" />
  </div>
  <div class="contentOuter">
    <div class="content">
      <img src="http://placehold.it/500x50" />
    </div>
  </div>
</div>
<div class="outer right">
  <div class="inner">
    Hello world!
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

但正如您所看到的.contentOuter,无论我尝试什么,都会延伸到其内容的宽度.

我有一个主要的警告是,除了.content有一个固定的宽度,我不希望我的CSS中有任何其他硬编码宽度; 一切都应该是完全流动的,并且柱子的尺寸由尺寸决定.image img. …

html css width

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

Eclipse不会在Web部署中更新依赖项JAR

在Eclipse中,我有一个名为ProjectA的项目,它是一个动态Web模块。ProjectB是ProjectA使用的库。我已将ProjectB添加到ProjectA的Web部署程序集中,并带有部署路径/WEB-INF/lib/ProjectB.jar

当我将ProjectA部署到Tomcat v6.0服务器上时,一切正常。但是,如果我对ProjectB进行了任何更改,无论我做什么,这些更改似乎都不会被部署吸收。

我从主菜单中尝试了以下选项Project-> Clean ...,从服务器的上下文菜单中尝试了Clean Module Work Directory ...,但均无效。唯一可行的方法是删除项目,然后将其重新导入到Eclipse中。

任何想法将不胜感激!

谢谢

java eclipse

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

正确性和硬件写入

说我有以下成员函数:

void CFoo::regWrite( int addr, int data )
{
  reg_write( addr, data ); // driver call to e.g. write a firmware register
}
Run Code Online (Sandbox Code Playgroud)

显然,调用此函数不会修改调用它的对象的内部状态.但是,它会更改此Foo实例所代表的任何状态.

在这些情况下,应该Foo::regWrite(int addr, int data)是const函数吗?

c++ const-correctness

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

将多个Iterables包装到单个Interable中

说我有两个Collections:

Collection< Integer > foo = new ArrayList< Integer >();
Collection< Integer > bar = new ArrayList< Integer >();
Run Code Online (Sandbox Code Playgroud)

并说有时我想单独迭代它们,但有时一起.有没有一种方法围绕创建一个包装foo,并bar让我可以在联合对迭代,但也随时更新foobar改变?(即Collection.addAll()不适合).

例如:

Collection< Integer > wrapper = ... // holds references to both bar and foo

foo.add( 1 );
bar.add( 99 );

for( Integer fooInt : foo ) {
    System.out.println( fooInt );
} // output: 1

for( Integer barInt : bar ) {
    System.out.println( barInt );
} // output: …
Run Code Online (Sandbox Code Playgroud)

java collections

3
推荐指数
1
解决办法
727
查看次数

看到Linux系统()调用偶尔阻塞

我们有一个多线程的嵌入式应用程序,由于这里讨论的硬件限制太平凡,每当它输出到文件时,必须将其文件系统重新安装为RW.

我们目前通过system()调用和运行mount命令来执行此操作.但是,此调用会不时阻塞,并导致应用程序陷入死锁.

在我的调试过程中,我已经system(NULL)在原始system()调用之前放置了,这似乎有时也会阻塞.

一般来说,在什么情况下可能会system()阻止所有永恒?

c++ linux embedded multithreading

3
推荐指数
1
解决办法
1052
查看次数