小编alf*_*alf的帖子

malloc结构指针数组与结构数组

有什么区别

struct mystruct *ptr = (struct test *)malloc(n*sizeof(struct test));
Run Code Online (Sandbox Code Playgroud)

struct mystruct **ptr = (struct test *)malloc(n*sizeof(struct test *));
Run Code Online (Sandbox Code Playgroud)

他们都工作正常,我只是好奇两者之间的实际差异.第一个是否分配了一个结构数组,而第二个是结构指针数组?另一种方式?另外,哪一个内存占用较小?

c arrays malloc struct pointers

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

理解node.js事件队列和process.nextTick

我很难理解它究竟是怎么process.nextTick回事.我以为我理解了,但我似乎无法复制我觉得这应该有效:

var handler = function(req, res) {
    res.writeHead(200, {'Content-type' : 'text/html'});
    foo(function() {
        console.log("bar");
    });
    console.log("received");
    res.end("Hello, world!");
}

function foo(callback) {
    var i = 0;
    while(i<1000000000) i++;
    process.nextTick(callback);
}

require('http').createServer(handler).listen(3000);
Run Code Online (Sandbox Code Playgroud)

虽然foo是循环的,我会在几个请求发送,假设handler将排队几次身后foocallback只在被排队foo完成.

如果我对这是如何工作正确的,我认为结果将如下所示:

received
received
received
received
bar
bar
bar
bar
Run Code Online (Sandbox Code Playgroud)

但它没有,它只是顺序的:

received
bar
received
bar
received
bar
received
bar
Run Code Online (Sandbox Code Playgroud)

我看到它foo在执行之前正在返回,callback这是预期的,但似乎callback是NEXT在队列中,而不是在队列的末尾,在所有请求进入后面.这是否有效?也许我只是不明白节点中的事件队列是如何工作的.请不要指我在这里.谢谢.

javascript callback eventqueue node.js

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

磁盘数据结构的架构

我最接近最终理解磁盘 btree 架构的是这个.

它很简单,很容易阅读和理解。但是我还是觉得很迷茫。似乎根本没有内存数据结构。我错过了什么吗?是什么让这成为一个 btree?是否只是“指向”其子节点键的 long 数组?这样有效率吗?大多数数据库和文件系统就是这样设计的吗?

是否有在内存中的磁盘 btree(或其他数据结构)上实现的方法?每个节点在哪里包含文件偏移量之类的?

c database filesystems b-tree disk

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

使用node-redis获取多个密钥

我正试图从redis实例中获取一堆密钥.我正在使用node-redis.我正在使用循环:

for( var i=1; i<=num; ++i ){
    client.get(key + ':' + num, function (err, reply) {
        obj[num] = reply;
    });
}
return obj;
Run Code Online (Sandbox Code Playgroud)

但是obj只是未定义.我觉得我可能遇到问题,因为get显然是异步调用.还有另一种方法来实现这一目标吗?我应该只将值存储在有序集中吗?

javascript asynchronous redis node.js node-redis

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