小编Ulr*_*rdt的帖子

深度嵌套循环的缓存中毒问题

我正在编写一个数学方法的代码(Incomplete Cholesky),我遇到了一个奇怪的障碍.请参阅以下简化代码.

for(k=0;k<nosUnknowns;k++)
{
    //Pieces of code
    for(i=k+1;i<nosUnknowns;i++)
    {
        // more code
    }
    for(j=k+1;j<nosUnknowns;j++)
    {
        for(i=j;i<nosUnknowns;i++)
        {
            //Some more code 
            if(xOk && yOk && zOk)
            {
                if(xDF == 1 && yDF == 0 && zDF == 0)
                {
                    for(row=0;row<3;row++)
                    {
                        for(col=0;col<3;col++)
                        {
                            // All 3x3 static arrays This is the line
                            statObj->A1_[row][col] -= localFuncArr[row][col];
                        }
                    }
                }
            }
        }//Inner loop i ends here
    }//Inner loop j ends here
}//outer loop k ends here
Run Code Online (Sandbox Code Playgroud)

对于上下文,

statObj是一个包含许多3x3静态双数组的对象.我通过调用new函数初始化statObj.然后我使用一些数学函数填充其中的数组.一个这样的数组是A1_.变量 …

c++ performance

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

shell脚本运行多个文件

我想在for循环中使用shell脚本,并行运行100个文件.

目前,我有一个以下格式的shell脚本:

#!/bin/bash
NUM=10
python a1.py $((NUM + 0)) &
python a2.py $((NUM + 2)) &
python a3.py $((NUM + 4)) &
python a4.py $((NUM + 6)) &
python a5.py $((NUM + 8)) &
Run Code Online (Sandbox Code Playgroud)

现在,如果我有a1.py,a2.py,a3.py... ... a100.py,我想并行运行它们,我怎么做,在for循环?

parallel-processing bash shell

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

如何解释linux内核陷阱错误行?

我有一个用 C++ 编写的套接字应用程序,它在 Linux 上运行。今天早上它崩溃了,当我检查 /var/log/messages 时,我在崩溃时看到了以下行:

kernel: traps: LogProcessor[9364] general protection ip:4f2555 sp:7fbd529b1670 error:0 in MyPrg[400000+21a000]
Run Code Online (Sandbox Code Playgroud)

我想深入研究代码并找到原因,但我不知道如何解释错误行中的值。
这是否意味着错误是由 LogProcessor 引起的?“ip”、“sp”、“error:0”、MyPrg[400000+21a000] 的值是什么?

c linux debugging

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

为什么 C++ 不允许将 void 参数传递给具有零参数的函数?

void f()
{}

void f(int)
{
    return f(); // #1: ok
}

void g(auto fn)
{
    f(fn());
}

int g1()
{
    return 0;
}

void g2()
{}

int main()
{
    g(g1); // #2: ok
    g(g2); // #3: error
}
Run Code Online (Sandbox Code Playgroud)

C++ 允许显式返回一个空值,如 所示#1,我认为它是优雅和通用的。

但是,不能以#3相同的方式应用该规则。

为什么 C++ 不允许将 void 参数传递给具有零参数的函数?

c++ templates overloading void language-lawyer

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

如何使用 x 和 y 坐标对点进行透视变换

所以我写了这个小程序,它允许我在两个图像上选择 4 个点。

使用这些点我得到一个变换矩阵。之后,我在其中一张图像上选择一个点,并希望可视化该点在其他图像上的位置。

假设我的观点是这样标记的 -> (x,y)- 所以它是一个元组。我应该如何在图像上格式化这个“位置”,以便可以对其进行转换。

我查看了perspectiveTransform() 方法的文档,并认为我应该将其存储为以下形状:

numpy.array([
        [self.points[self.length-1][0]],
        [self.points[self.length-1][1]]
        ], dtype="float32")
Run Code Online (Sandbox Code Playgroud)

只需单击一下,我就会得到这种格式:

Point= [[ 2300.]
        [  634.]]
Run Code Online (Sandbox Code Playgroud)

这种格式似乎不起作用,我使用这个转换矩阵:

M = [[ -1.71913123e+00  -4.76850572e+00   5.27968944e+03]
     [  2.07693562e-01  -1.09738424e+01   6.35222770e+03]
     [  1.02865125e-04  -4.80067600e-03   1.00000000e+00]]
Run Code Online (Sandbox Code Playgroud)

在这种方法中(并得到以下错误):

cv2.perspectiveTransform(src, M)
OpenCV Error: Assertion failed (scn + 1 == m.cols) in cv::perspectiveTransform, file C:\builds\master_PackSlaveAddon-win64-vc12-static\opencv\modules\core\src\matmul.cpp
Run Code Online (Sandbox Code Playgroud)

欢迎任何建议或提示。

python opencv

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

如何在 Ubuntu 15 中安装 graphviz 来为 XGBoost 绘制决策树?

我想绘制 XGBoost 的决策树。我按照此网页的说明进行操作。我收到此错误:

 ImportError: You must install graphviz to plot tree
Run Code Online (Sandbox Code Playgroud)

我尝试从graphviz安装 graphviz_2.38.0-1~saucy_amd64.deb 。但我收到此错误:

 *Dependency is not satisfiable:libgraphviz4(>=2.18)*
Run Code Online (Sandbox Code Playgroud)

所以我做了这个链接上的内容

由于它仍然不起作用我下载了源代码:graphviz-2.40.1.tar.gz 但它仍然不起作用。我想可能是我把它安装在了错误的路径中。那么这是什么意思:确保包含 dot 可执行文件的目录在您的系统路径上?

我已经将它安装在 /etc 中。

我在 conda 中使用虚拟环境

关于我做错了什么的任何建议?

编辑:

我使用了 pip install graphviz。现在我收到这个错误:

CalledProcessError: Command '['dot', '-Tpng']' returned non-zero exit status 1
Run Code Online (Sandbox Code Playgroud)

任何的想法?

python xgboost

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

缺少依赖项时如何使 LoadLibrary 显示错误对话框

假设我们有两个动态库libfoo.dlllibbar.dll,鉴于这libbar.dll取决于libfoo.dll。此外,我们编译一个可执行文件test.exe,加载我们libbar.dll使用的 WinAPI 函数LoadLibrary()

如果我们text.exe在 Windows XP 上运行missing libfoo.dll,则LoadLibrary()显示对话框警告而不是libfoo.dll实际丢失并设置LastErrorERROR_MOD_NOT_FOUND(126)。

如果我们text.exe在相同条件下在 Windows 10 上运行相同,LoadLibrary()设置LastErrorERROR_MOD_NOT_FOUNDonly,则不会出现对话框。

在这两种情况下ErrorMode都是 0。那么是否有可能在LoadLibrary()调用过程中捕获缺少依赖项的名称,或者至少,如何 LoadLibrary()在 Windows 10 上显示错误对话框?

这是一个示例代码(使用 MinGW):

foo.c

int foo(int a, int b)
{
    return a + b;
}
Run Code Online (Sandbox Code Playgroud)

编译: gcc foo.c -o libfoo.dll -fPIC -shared

酒吧

int foo(int …
Run Code Online (Sandbox Code Playgroud)

c dll winapi loadlibrary windows-10

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

比较Python中两个PyInstaller生成的Linux可执行文件

问题很简单,但我没有看到任何样本.

我需要比较PyInstaller生成的两个可执行文件,并确定哪个是较新的(但不是简单的时间戳).时间戳可能更新,但内容保持不变.只有当两个时间戳都更新且内容不同时,才需要替换旧文件.

任何示例解决方案 例如PyInstaller中的简单版本标签(奇怪但无法找到很多信息,在手册中仅说明使用Windows版本文件)

更新:

  • Linux可执行文件
  • 有权访问文件生成过程.
  • 它是cli应用程序,最好是不使用vcs,一些简单的解决方案.
  • 实际比较过程将在Python脚本中进行
  • filecmp按照建议尝试- 它False甚至返回生成2次相同的构建(带shallow=False标志).

就我的观点而言,最佳选择是比较内容和时间戳.如果时间戳更新且内容不同=>表示新版本.

python pyinstaller python-3.x

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

非静态成员函数的std :: add_pointer实现

该问题是有关std :: add_pointer实现的A问题的后续内容

std :: add_pointer下

有以下参考:

否则(如果T是cv或ref限定的函数类型),则提供成员typedef类型,即类型T。

基于阅读非静态成员函数:const,volatile和ref限定成员函数,我的理解是对于具有给定cv和/或ref限定条件的非静态成员函数,

a)在cv函数this范围内,函数的资格也适用于指针

b)该ref函数的限定不适用于this该函数范围内的指针

鉴于此,为什么在非静态成员函数具有或资格的情况下std::add_pointer不能为成员提供?typedef type T*cvref

c++ std language-lawyer

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

通过REGEX删除CSS注释时出错

证明这两个序列(以前都有效)

"`([\n\A;]+)\/\*(.+?)\*\/`ism" => "$1",     // error
"`([\n\A;\s]+)//(.+?)[\n\r]`ism" =>"$1\n",  // error
Run Code Online (Sandbox Code Playgroud)

现在在PHP 7.3中引发错误

警告:preg_replace():编译失败:转义序列在字符类偏移量4中无效

语境:考虑一下这个技巧,它可以从字符串中删除CSS注释

$buffer = ".selector {color:#fff; } /* some comment to remove*/";
$regex = array(
"`^([\t\s]+)`ism"=>'',
"`^\/\*(.+?)\*\/`ism"=>"",
"`([\n\A;]+)\/\*(.+?)\*\/`ism"=>"$1",     // 7.3 error
"`([\n\A;\s]+)//(.+?)[\n\r]`ism"=>"$1\n", // 7.3 error
"`(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+`ism"=>"\n"
);
$buffer = preg_replace(array_keys($regex),$regex,$buffer);
//returns cleaned up $buffer value with pure css and no comments
Run Code Online (Sandbox Code Playgroud)

请参阅:https//stackoverflow.com/a/1581063/1293658

Q1 -任何想法什么是错,在这种情况下,正则表达式?该线程似乎表明它只是放错了反斜杠 https://github.com/thujohn/twitter/issues/250

Q2 -这是一个PHP 7.3的错误或与此代码正则表达式序列的问题?

php regex php-7.3

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