小编Pra*_*mar的帖子

如何一次将gdb调试限制为一个线程

我想通过控制哪些线程执行时调试多线程程序.我正在使用C++和gdb.除主线程之外我有两个线程(对于示例程序),我想调试一个线程,同时保持另一个线程停止.

这是我写的示例程序:

#include <iostream>
#include <pthread.h>
#include <stdlib.h>

#define NUM_THREADS 2

using namespace std;

void * run (void *) {
  for (int i = 0; i < 3; ++i) {
    sleep(1);
    cout << i << " " << pthread_self() << endl;
  }
  pthread_exit(NULL);
}

int main (int argc, char** argv) {
  cout << "Start..." << endl;
  int rc;

  pthread_t threads[NUM_THREADS];
  for (int i = 0; i < NUM_THREADS; ++i) {
    rc = pthread_create(&threads[i], NULL, run, NULL);
    if (rc) {
      cout …
Run Code Online (Sandbox Code Playgroud)

gdb pthreads

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

如何理解char*ch ="123"?

我该怎么理解char * ch="123"

'1'是一个char,所以我可以使用:

char x = '1';
char *pt = &x;
Run Code Online (Sandbox Code Playgroud)

但我怎么理解char *pt="123"?为什么能char *pt指向字符串?

pt的价值为第一地址值"123"?如果是这样,我如何得到指向的字符串的长度pt

c++ char

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

在C中通过引用传递数组

我是C的新手,我有一个疑问.

由于C函数创建了它的参数的本地副本,我想知道为什么以下代码按预期工作:

void function(int array[]){

    array[0] = 4;
    array[1] = 5;
    array[2] = 6;   
}

int main(){

    int array[] = {1,2,3};

    function(array);

    printf("%d %d %d",array[0],array[1],array[2]);

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

线路输出为4 5 6.

为什么这样做有效而以下情况不然?

void function(int integer){

    integer = 2;
}

int main(){

    int integer = 1;

    function(integer);

    printf("%d",integer);

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

在这种情况下,输出仅为1.

简短版本:为什么函数可以修改父变量的值,如果它们作为数组传递?

谢谢你们!

c arrays reference function

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

VBA变量/数组默认值

考虑一下声明

Dim x As Double
Dim avg(1 To 10) As Double
Run Code Online (Sandbox Code Playgroud)

什么是默认值xavg

通过测试,我想说它x被初始化为零.同样,我想说所有元素avg都被初始化为零.

但是,我可以编写依赖于此的代码吗?或者默认的初始化值实际上是不确定的?

arrays vba default-value

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

二进制堆和二项式堆有什么区别?

我需要知道二进制和二进制堆之间的主要区别,不管它们的结构差异,二元堆只能有两个子(树表示),二项堆可以有任意数量的子.

我实际上只是想知道组织二项式树结构的特别之处在于第一个孩子在一个节点上有第二个有两个第三个有四个等等吗?

如果我们使用一些普通的树而没有两个孩子的限制然后应用联合过程而只是让一个堆成为其他堆的左子?

algorithm priority-queue binary-heap data-structures binomial-heap

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

为什么这个迭代的Collat​​z方法比它在Python中的递归版本慢30%?

序幕

我有两个特定问题的实现,一个递归和一个迭代,我想知道是什么原因导致迭代解决方案比递归解决方案慢约30%.

给定递归解决方案,我编写了一个迭代解决方案,使堆栈显式化.
显然,我只是模仿递归正在做什么,所以当然Python引擎更好地优化来处理簿记.但是我们能编写一个具有类似性能的迭代方法吗?

我的案例研究是Euler项目的问题#14.

找到最长的Collat​​z链,起始编号低于一百万.

这是一个简约的递归解决方案(由于问题线程中的veritas以及来自jJjjJ的优化而归功于此):

def solve_PE14_recursive(ub=10**6):
    def collatz_r(n):
        if not n in table:
            if n % 2 == 0:
                table[n] = collatz_r(n // 2) + 1
            elif n % 4 == 3:
                table[n] = collatz_r((3 * n + 1) // 2) + 2
            else:
                table[n] = collatz_r((3 * n + 1) // 4) + 3
        return table[n]
    table = {1: 1}
    return max(xrange(ub // 2 + 1, ub, …
Run Code Online (Sandbox Code Playgroud)

python iteration recursion performance

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

使用--no-site-packages在virtualenv中安装pyopencv

我正在尝试将pyopencv安装到使用--no-site-packages选项创建的virtualenv:

pip install pyopencv
Run Code Online (Sandbox Code Playgroud)

但是我在Ubuntu 10.04.3上遇到以下错误:

CMake Error at CMakeLists.txt:186 (find_package):

Could not find a configuration file for package OpenCV.
Set OpenCV_DIR to the directory containing a CMake configuration file for

OpenCV.  The file will have one of the following names:
  OpenCVConfig.cmake
  opencv-config.cmake
Run Code Online (Sandbox Code Playgroud)

我已经安装了numpy,scipy和OpenCV(libboost-dev libboost-python1.40.0 libboost-python1.40-dev cmake libcv4 libcv-dev libcvaux4 libcvaux-dev).有任何想法吗?

PS我知道有预先构建的Ubuntu包python-opencv,但我不知道如何使用--no-site-packages将它安装到virtualenv中(可能symlink会起作用,但它很难看......).

python opencv numpy scipy

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

在Matlab中查找具有高互相关矩阵的组

给定包含互相关值的下三角矩阵(100x100),其中条目'ij'是信号'i'和'j'之间的相关值,因此高值意味着这两个信号属于同一类对象,并且知道数据集中最多有四个不同的类,有人知道一种快速有效的方法来对数据进行分类并将所有信号分配给4个不同的类,而不是搜索和交叉检查所有条目. ?以下7x7矩阵可能有助于说明这一点:

 1      0       0       0       0       0       0
.2      1       0       0       0       0       0
.8      .15     1       0       0       0       0
.9      .17     .8      1       0       0       0
.23     .8      .15     .14     1       0       0
.7      .13     .77     .83.    .11     1       0
.1      .21     .19     .11     .17     .16     1
Run Code Online (Sandbox Code Playgroud)

这个例子中有三个类:

class 1: rows <1 3 4 6>,
class 2: rows <2 5>,
class 3: rows <7>
Run Code Online (Sandbox Code Playgroud)

matlab cluster-analysis correlation

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

SSH通过中间主机加工

在我与我的教授的工作中,我必须ssh到我们的服务器,然后从那里我进入每个节点来运行我们的程序.我正在尝试编写一个python程序,它将让我从本地计算机上执行远程节点上需要执行的所有操作.我将在节点上运行的命令是:

  • 从本地计算机到远程节点的cp文件
  • 在每个节点上运行程序
  • 从节点检索文件到我的本地计算机
  • 也许可以复制一个fortran程序并在节点上编译它,并检查节点以查看是否有任何程序正在运行.

现在我在我的本地机器上创建我的输入文件,将它们scp到服务器,然后我将文件复制到每个节点并在每个节点上运行我们的fluid_dynamics程序.然后我反过来将输出恢复到我的本地机器.

我正在看paramiko,但我无法弄清楚如何使用它从我的本地机器到节点,因为我必须通过服务器.local -ssh - > server -ssh - > nodes

有没有办法在python中执行此操作,或者我应该尝试其他方法,如:using:

os.system(ssh -t server ssh node 'command')   
Run Code Online (Sandbox Code Playgroud)

或者在服务器上为每个不同的命令(compile.sh,move_inputs.sh,retrieve_outputs.sh)创建一个bash脚本,然后只连接到服务器并运行bash脚本.

对不起,如果这没有意义或措辞不当,任何帮助表示赞赏.

附加信息:我使用python的原因是因为我希望程序能够生成输入文件,将它们发送到节点并检索输出文件,并最终生成我们数据的图形.我已经有了一些代码来生成输入文件并从输出中生成图形.

python ssh

10
推荐指数
3
解决办法
6188
查看次数

C++库中的快速梯度下降实现?

我希望运行梯度下降优化来最小化变量实例化的成本.我的程序计算量很大,所以我正在寻找一个快速实现GD的流行库.什么是推荐的库/参考?

c++ optimization visual-studio-2010 numerical-methods gradient-descent

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