小编spr*_*aff的帖子

为什么python在我用echo管道代码而不是用cat管道时立即退出?

#!/bin/bash

echo "print('Hello 1')" | python3

cat | python3 -u <<EOF
print('Hello 2')
EOF

echo "print('Hello 3')" | python3
Run Code Online (Sandbox Code Playgroud)

这输出

Hello 1
Hello 2
Run Code Online (Sandbox Code Playgroud)

在打印决赛之前,它会等我按回车键Hello 3.它也使用python的-u标志进行无缓冲输出.

为什么这样做cat但不是为了echo

python bash echo cat python-3.x

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

为什么我不能在多重继承期间"侧向"动态广播?

以下代码抛出std :: bad_cast

struct Foo {
    void foo () {}
};

struct Bar {
    Bar () {
        dynamic_cast <Foo &> (*this) .foo ();
    }
    virtual ~ Bar () {}
};

struct Baz : public Foo, public Bar {
};

int main ()
{
    Baz b;
}
Run Code Online (Sandbox Code Playgroud)

我记得曾经读过dynamic_cast如何进行实现性能权衡,因为"它遍历了完整的继承格"以便正确评估.编译器在这里需要做的是先强制然后再次向下.

可以进行上述工作还是需要添加 virtual Foo* Bar::as_foo()=0;

c++ inheritance constructor dynamic-cast object-lifetime

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

什么是"降低vtable引用"?

Clang自己的诊断宣传包含以下内容:

由于Clang具有范围突出显示功能,因此您无需再将代码打印出来.这在G ++中尤其糟糕(它经常发出包含降低的vtable引用的错误),但是在某些情况下,即使GCC在尝试执行此操作时也会产生难以理解的错误消息.

谷歌搜索这个短语并没有给出任何非常有用的信息,后续的例子完全不相关.

有人可以发一个它正在谈论的例子吗?

谢谢.

gcc compiler-errors clang vtable compiler-warnings

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

CSS创建一个宽度:100%停止浮动对象

试试这个:

<div style="float:left"><p>LEFT</p></div>
<div style="float:right"><p>RIGHT</p></div>
<div><p>
    <input type="text" style="width:100%" />
    <input type="submit" />
    <a href="">Link</a>
</p></div>
Run Code Online (Sandbox Code Playgroud)

最终,LEFT和RIGHT位于第一行,文本输入占据整个第二行,"Submit"和"Link"位于第三行.

我希望所有这些都在一行上,如果窗口加宽,文本输入应该加宽.没有桌子我该怎么做?

html css

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

SQL密钥长度错误没有意义

以下内容对我来说非常合理:

CREATE TABLE `mydb`.`Temp` (
 `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
 `x` VARCHAR ( 300 ) NOT NULL ,
 `id_foo` INT NULL DEFAULT NULL,
 FOREIGN KEY ( `id_foo`) REFERENCES `Foo` (`id`) ON DELETE CASCADE ,
 INDEX (`id_foo`),
 INDEX (`x`),
 UNIQUE (`id_foo`, `x`)
) ENGINE = INNODB;
Run Code Online (Sandbox Code Playgroud)

使用MySQL,这会产生错误

#1071 - Specified key was too long; max key length is 767 bytes
Run Code Online (Sandbox Code Playgroud)

这似乎是错误的,因为整行是309字节:小于767,甚至不是一半.这是怎么回事?

mysql

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

std :: deque <char>上的简单insert-erase-insert会产生奇怪的结果

这是一个简单的程序

#include <iostream>
#include <deque>
#include <string.h>

std :: deque <char> d;

int main ()
{
    const char * X = "abcdefg";

    d .insert (d .end (), X, X + strlen (X));

    d .erase  (d .begin (), d .begin () + 4);

    d .insert (d .end (), X, X + strlen (X));

    std :: cout .write (& d [0], d .size ());
}
Run Code Online (Sandbox Code Playgroud)

我希望输出为"efgabcdefg",实际输出为十六进制

65 66 67 00  00 00 00 C9  0B 02
Run Code Online (Sandbox Code Playgroud)

这是"efg ???????"

出了什么问题?

c++ stl deque

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

什么时候OpenGL对象名称为零?或者,零是否有语义?

我一直想知道:OpenGL对象"名称",由glGenTextures等生成的整数,似乎永远不会为零,所以我使用零来表示未初始化的句柄并检查错误.到目前为止一切都还好.

我还被告知,在完成一个对象之后调用glBind*(0)是一个好习惯,以确保之后不会意外地操纵延迟绑定的对象.听起来很明智.

是否有任何情况下OpenGL对象ID为零,使我的测试无效,或者以这种方式使用零会产生令人惊讶的效果,因为它不引用非对象?

PS是否存在零作为非对象的符号名称?

PPS是否会因大量使用绑定/解除绑定模式而遭受性能损失?(由于封装,代码的某些部分主要是冗余的重新绑定.)

opengl

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

glGetAttribLocation有时只能工作

我可以编译,链接和运行GLSL程序,但不能提取所有属性的句柄.

const std :: string v = shaders .read_file (VERTEX_SHADER);
const std :: string f = shaders .read_file (FRAGMENT_SHADER);

std :: cout
    << "Vertex shader:\n" << v
    << "Fragment shader:\n" << f
    << "End of shaders.\n";

// Create objects
auto f_id = glCreateShader (GL_FRAGMENT_SHADER);
auto v_id = glCreateShader (GL_VERTEX_SHADER);
auto p = glCreateProgram ();

// Success flags
GLint v_ok, f_ok, p_ok;

// Compile vertex shader
const GLchar * source = v .c_str ();
GLint length = v .size ();
glShaderSource …
Run Code Online (Sandbox Code Playgroud)

opengl glsl

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

setrlimit另一个进程

我知道我可以使用setrlimit来限制我的程序可以使用的资源,但是如果我的程序启动另一个进程,我该如何设置其他进程的相应限制?

N ..是的,我可以降低我自己的(硬)限制,然后分叉,但是没有特权,将无法再次恢复我自己的限制.这不是解决方案.

unix linux resources posix limit

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

Javascript:在document.onload之前访问DOM

我有一个页面,document.body.onload=function(){...}但由于该文档还包含外部<img>标签等,因此会出现延迟; onload似乎只有在这些外部网站提供某种响应后才被解雇.

我把代码放进去是onload因为我认为DOM树在那之前还没有完全可用(例如,如果过早调用,document.getElementById(x)可能会返回null).

是否有一个事件在DOM中的所有内容都可访问后触发,但在所有内容都被加载之前触发?

html javascript dom

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