小编use*_*485的帖子

Node.js/MySQL:在node.js中的错误日志中打印实际查询

我有一些Node.js代码尝试更新数据库,如下所示:

connection.query(command, function(err,rows) {
        if (err){
            console.log(command);
            console.log("ERROR");
            console.log(err);
            return;
        }
        console.log("good");
    });
Run Code Online (Sandbox Code Playgroud)

以上针对"命令"的不同值重复运行,从而对数据库生成不同的查询.问题是,当出现错误时,错误的查询将被打印出来console.log(command).这是因为查询添加到队列的时间以及查询实际执行的时间不同,因此每次这些时间的"命令"值都不相同.有没有解决的办法?

注意:console.log(err)打印错误本身,也是查询的一部分,但它只打印发生错误的行.我想打印整个查询.

mysql node.js

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

glReadPixels 导致崩溃

我有一个可以在显示器上渲染的 3D 场景。然而,除了渲染它以显示之外,我还希望能够将渲染的场景(例如每 100 帧一次)导出为图像(例如 JPG 或 PNG 图像),也许将其保存为文件在我的某个位置机器。

do{
    glfwPollEvents();
    glBindFramebuffer(GL_FRAMEBUFFER, framebuffername);
    drawScene();
    glDrawArrays(GL_TRIANGLES, 0, (GLsizei)vertices.size());
    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, depthTexture, 0);
    image = (GLuint*)malloc(windowWidth * windowHeight);
    glReadPixels(0, 0, windowWidth, windowHeight, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, &image);
    free(image);
    glBindFramebuffer(GL_FRAMEBUFFER, 0);
    drawScene();
    glfwSwapBuffers(window);
} // Check if the ESC key was pressed or the window was closed
while( glfwGetKey(window, GLFW_KEY_ESCAPE ) != GLFW_PRESS &&
       glfwWindowShouldClose(window) == 0 );
Run Code Online (Sandbox Code Playgroud)

我想做的是将场景渲染到显示器以及我定义的帧缓冲区对象。上面的崩溃并给我一个奇怪的 Visual Studio 错误:“ig75icd64.pdb 未加载”。但如果我注释掉这一行:

glReadPixels(0, 0, windowWidth, windowHeight, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, &image);
Run Code Online (Sandbox Code Playgroud)

然后程序不会崩溃,并且它会正确渲染到显示器(但我希望能够使用 glReadPixels 写入 2d …

c opengl glfw

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

手动删除拥有的对象后,std :: unique_ptr超出范围时如何工作?

我可能未正确输入标题,但在以下示例中更容易解释,然后有人可以编辑标题。

考虑以下代码片段:

#include <iostream>
#include <memory> // for std::unique_ptr

class Resource
{
public:
    Resource() { std::cout << "Resource acquired\n"; }
    ~Resource() { std::cout << "Resource destroyed\n"; }
};

int main()
{
    Resource* res = new Resource;
    std::unique_ptr<Resource> res1(res); // Resource created here
    delete res;

    std::cout << "res1 is " << (static_cast<bool>(res1) ? "not null\n" : "null\n");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

打印:

$ ./a.out 
Resource acquired
Resource destroyed
res1 is not null
Resource destroyed
Run Code Online (Sandbox Code Playgroud)

我们创建了动态分配的资源,然后创建了拥有此资源的唯一指针(res1)。唯一指针使我们不必担心必须手动删除资源。

但是,让我们假设像上面的代码一样,我们还是手动删除了资源(之后没有将其设置为null)。然后,当res1超出范围时,难道不是要删除已经被释放的东西吗?

c++ smart-pointers unique-ptr c++11

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

即使我在 std::set 中插入了 20 个(不同的)元素,它的大小也只有 14?

typedef vector<int> vec;

struct classcomp {
    bool operator() (const vec& vec1, const vec& vec2) const{
        if (vec1[0] > vec2[0]){
            return true;
        }
    
        return false;
    }            
};

int main() {
    set<vec, classcomp> v; 

    for (int i = 0; i < 20; i++) {
        v.insert({rand() % 20, i});
    }

    cout << "size: " << v.size() << endl;

    for (auto e : v) {
        cout << e[0] << " " << e[1] << endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的 C++ 代码中,我定义了一个自定义比较器和一组有序向量,该向量根据向量的第一个条目进行排序。我知道该集合不存储重复项,但我插入了 20 个不同的向量(每个向量的第二个条目都是唯一的),但我的集合的大小只有 14。这是为什么?

c++ stl

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

标签 统计

c++ ×2

c ×1

c++11 ×1

glfw ×1

mysql ×1

node.js ×1

opengl ×1

smart-pointers ×1

stl ×1

unique-ptr ×1