怎么从queue队列中获取一定长度的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么从queue队列中获取一定长度的数据相关的知识,希望对你有一定的参考价值。
参考技术A Queue对象底层有一个数组,你若不指定大小,他会默认给定一个大校 若数据比这个数组的大小多,他会重新分配数组,大概是原来的一倍大,然后把旧有数据copy进去。 如果你反复大量添加数据,又没有指定足够大的初始大小,他会做很多次数组拷贝,消...本回答被提问者采纳Berkeley DB:如何从 QUEUE 获取特定的 KEY
【中文标题】Berkeley DB:如何从 QUEUE 获取特定的 KEY【英文标题】:Berkeley DB: How to GET a specific KEY from QUEUE 【发布时间】:2012-02-23 17:50:41 【问题描述】:我正在将一些固定长度的记录写入 Berkeley DB 中的 QUEUE,并在每次 PUT 后取回记录号。因此,例如,如果我将 4 条消息放在队列中,我将返回 1、2、3、4。
现在我想根据它的 KEY 从队列中检索一条消息....
所以如果我尝试:
db_recno_t keyval;
DBT key, data;
memset(&key, 0, sizeof(DBT));
memset(&data, 0, sizeof(DBT));
keyval = 2;
key.data = &keyval;
key.ulen = sizeof(keyval);
ret = q->get(q, NULL, &key, &data, DB_CONSUME);
printf("Key peek = %i\n", keyval);
printf("Data peek = %s\n", data.data);
我不断取回队列中的第一条记录,而不是我用键指定的记录(在本例中为“2”)
我知道队列中的键是 1、2、3、4,所以我想知道我在这里做了什么愚蠢的事情?
感谢您的帮助,非常感谢 ;-)
林顿
【问题讨论】:
【参考方案1】:如果您需要随机访问,请尝试使用 DB_QUEUE 以外的其他数据库格式。
【讨论】:
以上是关于怎么从queue队列中获取一定长度的数据的主要内容,如果未能解决你的问题,请参考以下文章
5分钟入门JavaScript队列(Queue)数据结构JavaScript数据结构与算法系列