小编das*_*ndy的帖子

禁用Eclipse按住Ctrl键单击

我非常习惯用 - Ctrl点击我的光标下面的单词,在Eclipse中,作者似乎认为最好让它移动到定义.我不同意,但无法找到如何/在哪里解决这个问题.在互联网上搜索并在这里导致数百人想要Eclipse风格 - Ctrl点击无处不在 - 我想摆脱它.

怎么样?

eclipse

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

是否可以在HTTP POST请求中使用Content-Encoding:gzip?

我正在尝试将一些带压缩的文件上传到服务器.文件将相当大,服务器是标准的HTTP服务器,接口定义它们不被压缩.是否可以使用Content-Encoding之类的东西来表明上传请求是否被压缩,就像它用于下游压缩一样?

compression upload post http content-encoding

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

openssl AES 加密向输出添加了一个块大小的字节

我正在尝试在控制台上使用 openssl 进行加密,以匹配另一种 AES 实现生成的输出。所有的细节都是已知的。我在 128 位 CBC 模式下使用 AES。奇怪的是,无论文件大小如何,输出都会大 16 个字节。我认为 openssl 正在附加某种填充。

在另一个实现的方向上,这不是什么大问题,因为我可以删除最后 16 个字节,但另一方面是因为我无法发明 openssl 可能会检查有效性的字节。

我如何告诉 openssl 不要这样做?

命令行:

openssl enc -aes-128-cbc -K <pre-shared key in hex> -in rawfile.bin -out encfile.enc -iv <pre-shared IV in hex>
Run Code Online (Sandbox Code Playgroud)

bash openssl cryptography aes

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

Opengl几何着色器整数纹理提取失败

我正在尝试从GeForce 330m上运行的几何着色器中采样整数纹理.它似乎返回其他值而不是我加载到纹理中.我使用这个代码(基本上)来创建和加载纹理:

glGenTextures( 1, &textureId );
glBindTexture( GL_TEXTURE_2D, textureId );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32I, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glBindTexture( GL_TEXTURE_2D, 0);
glBindTexture( GL_TEXTURE_2D, textureId );
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32I, w, h, 0, GL_RGBA, GL_INT, <some 0-initialized large enough buffer>);
glBindTexture( GL_TEXTURE_2D, 0);
glBindTexture( GL_TEXTURE_2D, textureId );
    int data[] = { 3, 0, 36, 400 };
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 3, 1, 1, GL_RGBA, GL_INT, data);
glBindTexture( GL_TEXTURE_2D, 0);
Run Code Online (Sandbox Code Playgroud)

想法是将特定的一个像素设置为具有400的w值.然后我在几何着色器中使用它:

#version 330 …
Run Code Online (Sandbox Code Playgroud)

opengl integer texture-mapping geometry-shader opengl-3

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

确定性时的虚函数开销(c ++)

我知道虚函数本质上是包含在vtable上的函数指针,这使得多态调用由于间接等而变慢.但是当调用是确定性的时候我想知道编译器优化.确定性,我指的是以下情况:

  1. 对象是值而不是引用,因此不存在多态:
struct Foo
{
    virtual void DoSomething(){....}
};

int main()
{
    Foo myfoo;
    myfoo.DoSemthing();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)
  1. 参考是一个没有孩子的类:
struct Foo
{
    virtual void DoSomething();
};
struct Bar : public Foo
{
   virtual void DoSomething();
};

int main()
{
    Foo* a = new Foo();
    a->DoSomething(); //Overhead ? a doesn't seem to be able to change nature.

    Foo* b = new Bar();
    b->DoSomething(); //Overhead ? It's a polymorphic call, but b's nature is deterministic.

    Bar* c = new Bar();
    c->DoSomething(); //Overhead …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism

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

从非主线程加载的 VAO 崩溃

在我的代码中,我有一个由两个缓冲区对象和一个顶点数组对象支持的对象的包装类。我在构造函数中使用它生成它们(稍微简化):

glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
glGenBuffers(1, &ibo);
glGenBuffers(1, &vbo);
printf("Ind buffers %d %d %d\n", vao, ibo, vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
Run Code Online (Sandbox Code Playgroud)

printf 在主线程上的前几个创建中给出了这个。

Ind buffers 1 1 2
Ind buffers 3 4 5
Ind buffers 4 6 7
Ind buffers 5 8 9
Ind buffers 6 10 11
Ind buffers 7 12 13
Run Code Online (Sandbox Code Playgroud)

中间有一个非索引的,它需要 VAO #2 和缓冲区 #3。这对我来说看起来不错。每个数组对象都附有两个唯一的缓冲区。

我稍后也使用此代码加载后台资源(而不是生成它们)。每个线程都有自己的上下文,使用 glfwCreateContext 创建并与主窗口共享资源。首次创建这些资源时,会出现以下输出:

Ind buffers 1 14 15
Ind buffers 1 16 17
Ind buffers 1 18 19
Ind buffers 1 20 24 …
Run Code Online (Sandbox Code Playgroud)

c++ opengl multithreading openglcontext vao

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

在模板基类中的虚函数中使用前向声明的类,其中构造函数只需要前向声明?

我试图找出失败的原因.我正在使用的代码基本上压缩到下面的代码.我有一个简单的A类,我专门用一个模板.模板不需要这种类型来编译它的构造函数,并且我实际调用的构造函数(派生类型)没有公开,因此编译器此时无法为构造函数生成代码.

GCC和Clang没有.然而,MSVC(2008 + 2010)确实尝试编译虚拟成员,因此不进行编译.

这是错误的GCC和Clang,还是来自MSVC?或者我是否会进入UB领土?

class A;

template <typename X>
class S {
public:
    S() {}

    virtual int useX() { return X::value; }
};

class T : public S<A> {
public:
    T();
};

int main()
{
    new T();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ gcc templates visual-c++

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

我该如何解决?libc++abi.dylib:以未捕获的 std::invalid_argument 类型异常终止:stoi:无转换

#define REP(i,a,b) for(int i = a; i < b; i++)
#define FOR(i,n) REP(i,0,n)
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string>

using namespace std;
Run Code Online (Sandbox Code Playgroud)

下面的函数是通过字符串方法总结两个大整数的函数。输入可以大于 long long int 的限制。

string string_add(string a, string b) {
    string new_str = "";
    reverse(a.begin(), a.end());
    reverse(b.begin(), b.end());

    string long_s;
    string short_s;
    if (a.size() >= b.size()) {
        long_s = a;
        short_s = b;
    }
    else{
        long_s = b;
        short_s = a;
    }
    int carry = 0;
    int dif = long_s.size() - short_s.size();
    FOR(i, dif)
        short_s += "0";
    FOR(i, long_s.size()) …
Run Code Online (Sandbox Code Playgroud)

c++ exception-handling runtime-error

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

仅使用CMake / CTest运行更改或失败的测试?

我使用的大型代码库具有将近400个测试可执行文件,运行时间在0.001秒至1800秒之间变化。当一些代码更改时,CMake只会智能地重建已更改的目标,而所需时间比实际测试运行时间要短许多倍。

我所知道的唯一方法是手动过滤您想运行的测试。我的直觉是,我想重新运行任何未成功存储运行的测试套件-要么是因为失败,要么是因为重新编译了它。

这可能吗?如果是这样,怎么办?

c++ build-process unit-testing cmake ctest

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