小编bxs*_*shi的帖子

未定义的引用'shm_open',已在此处添加-lrt标志

我只是系统崩溃并重新安装Ubuntu 11.10,我的代码产生了这个奇怪的错误.

我写了一个简单的代码示例来测试问题所在:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/stat.h>

int main (void) {

    int i;

    i = shm_open ("/tmp/shared", O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);   printf ("shm_open rc = %d\n", i);

    shm_unlink ("/tmp/shared");

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

并且编译命令是

gcc -lrt test.c -o test

错误是:

/tmp/ccxVIUiP.o: In function `main':
test.c:(.text+0x21): undefined reference to `shm_open'
test.c:(.text+0x46): undefined reference to `shm_unlink'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

我已经添加了-lrt lib,为什么它仍然没有编译?

c linux

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

如何避免从闭包中访问可变变量

我有一些像这样的代码:

for(var id=0; id < message.receiver.length; id++){
   var tmp_id = id;
   zlib.gzip(JSON.stringify(message.json), function(err, buffer){
                        ...
   pushStatusPool[message.receiver[tmp_id]] = null; // fix memory leak
   delete pushStatusPool[message.receiver[tmp_id]];
   ...
   });
}
Run Code Online (Sandbox Code Playgroud)

我得到一个警告,tmp_id在闭包中使用可能会导致问题,因为它是一个可变变量.

我怎么能避免这种情况?我的意思是我怎么能发送一个不可变的变量回调,因为这是一个for循环,我不能改变代码zlib.gzip?或者换句话说,我怎么能把一个参数传递给一个闭包?

debugging closures node.js

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

TensorFlow使用向量连接一个可变大小的占位符

假设我有一个占位符

ph_input = tf.placeholder(dtype=tf.int32, [None, 1])

和一个矢量

h = tf.zeros([1,2], dtype=tf.int32)

在这个例子h中为了简单起见用零填充,但在实际情况下,它将被其他变量改变,并且将具有不同的值.

我想有效地做一个concaton ph_inputand hon维度1并获得一个新的张量形状[None, 1+2].不幸的是,concat除了concat_dim我的例子不符合之外,所有输入张量都需要具有相同的形状.

我正在考虑扩展h到与提供的数据相同的形状,ph_input但我不确定如何使用占位符本身.如果我直接从输入数据中获取形状,那么我想没有必要使用占位符.

concat tensorflow

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

当二进制文件运行时,它是否会立即将其整个二进制数据复制到内存中?我可以改变吗?

它在执行之前是否将整个二进制文件复制到内存中?我对这个问题很感兴趣,并希望将其改为其他方式.我的意思是,如果二进制文件是100M大(似乎不可能),我可以运行它,而我将它复制到内存中.这有可能吗?

或者你能告诉我如何看待它的运行方式吗?我需要哪些工具?

c linux binary

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

用memwatch-node识别闭包的内存泄漏

我的Node.js项目遭遇内存泄漏,我已经在闭包中将变量设置为null,我的意思是,我知道这样的代码:

var a = 0;
var b = 1;
var c = 0;
example_func(c, func(){
    console.log(b);
});
Run Code Online (Sandbox Code Playgroud)

会导致内存泄漏,所以我添加一些代码将这些变量设置为null;

var a = 0;
var b = 1;
var c = 0;
example_func(c, func(){
    console.log(b);
    a = null;
    b = null;
    c = null;
});
Run Code Online (Sandbox Code Playgroud)

但我仍然有泄密,所以我试着memwatch-node找出我的代码有什么问题.

结果显示closure导致泄漏,但未指定足够的目标.

我有这样的JSON

 { what: 'Closure',
   '+': 12521,
   size: '520.52 kb',
   '-': 5118,
   size_bytes: 533016 },
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以获得关于哪个封口泄漏的更具体的细节.

我为所有关闭分配了名称,但仍然无效.

closures memory-leaks node.js

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

在Spark的RDD中更新值的有效方法是什么?

我在写一个图形相关的程序ScalaSpark.数据集有400万个节点和400万个边缘(你可以将它视为一棵树),但是每次(a Iteration),我只编辑它的一部分,即由给定节点生根的子树和节点在给定节点和根之间的路径中.

Iteration有依赖,这意味着i+1 Iteration需求的结果来自何处i.所以我需要将每个结果存储到Iteration下一步.

我试图找到一种有效的更新方法RDD,但到目前为止还没有任何线索.我发现PairRDD有一个lookup函数可以将计算时间减少O(N)到O(M),N表示对象的总数RDDM表示数量每个分区中的元素.

所以我想反正有我可以更新的对象RDDO(M)?或者更理想的是,O(1)?(我在Spark的邮件列表中看到一封电子邮件说lookup可以修改以实现O(1))

另一件事是,如果我可以实现O(M)更新RDD,我可以将分区增加到比我拥有的内核数量更大的数量并获得更好的性能吗?

scala apache-spark

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

reduce_sum按特定维度

我有两个嵌入物张AB,它看起来像

[
  [1,1,1],
  [1,1,1]
]
Run Code Online (Sandbox Code Playgroud)

[
  [0,0,0],
  [1,1,1]
]
Run Code Online (Sandbox Code Playgroud)

我想要做的是按d(A,B)元素计算L2距离.

首先,我做了一个tf.square(tf.sub(lhs, rhs))

[
  [1,1,1],
  [0,0,0]
]
Run Code Online (Sandbox Code Playgroud)

然后我想做一个返回的元素减少

[
  3,
  0
]
Run Code Online (Sandbox Code Playgroud)

但是tf.reduce_sum不允许我按行减少.任何输入将不胜感激.谢谢.

tensorflow

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

Linux上的只读文件系统基准测试软件

更新:iozone有一个选项-+E可以使用非iozone文件来运行只读FS基准测试

我正在开发一个旨在制作2级缓存只读文件系统的项目,现在我需要测试它的性能.

我试过iozone,但似乎即使使用-i 1它也会创建一个临时文件,我无法支持.

你能给我一些关于用于iozone测试只读FS的建议吗?我真的不熟悉它

是否有任何基准测试软件可以测试只读FS?

谢谢你们!

linux filesystems benchmarking iozone

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

内存在Node.js集群的主进程中泄漏

问题解决了,只是删除silent属性cluster.setupMaster,然后它不会有内存泄漏问题,任何人都可以告诉我为什么会这样?

我正在做一个完成的项目Node.js,当我加入cluster以利用多CPU时,事情变得奇怪.

我的fork()工作流程来自主流程,而事情是我的工作流程工作得很好并且没有内存泄漏问题,但是主流程有它.

使用的主进程代码cluster是:

var cluster = require('cluster');
var numCPU = require('os').cpus().length;

cluster.setupMaster({
        exec : '../worker/worker.js',
        silent : true
});

if(cluster.isMaster){
    for(var i=0; i< numCPU;i++){
        cluster.fork();
    }
}
Run Code Online (Sandbox Code Playgroud)

memory-leaks node.js

5
推荐指数
0
解决办法
834
查看次数

部分更新json在postgres中提交

storehouse.storehouse我有这样的数据库:

CREATE TABLE storehouse
(
  user_id bigint NOT NULL,
  capacity integer NOT NULL,
  storehouse json NOT NULL,
  last_modified timestamp without time zone NOT NULL,
  CONSTRAINT storehouse_pkey PRIMARY KEY (user_id)
)
Run Code Online (Sandbox Code Playgroud)

storehouse.storehouse.slots[2]存储这样的数据:

{
    "slots":[
        {
            "slot" : 1,
            "id" : 938
        },
        {
            "slot" : 2,
            "id" : 127
        },
    ]
}
Run Code Online (Sandbox Code Playgroud)

问题是,我想更新storehouse.storehouse,但我不知道如何做到这一点,我知道如何改变整个json文件,但我想知道自json支持text类型,它应该支持部分修改,否则那将是没有json类型和text类型之间的区别.(我知道storehouse.storehouse类型也有不同的类型验证storehouse.storehouse.slots[2])

postgresql json postgresql-9.2

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