- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 C 程序,用于从 BerkeleyDB DBTree 数据库中提取数据值与特定模式匹配的记录。我创建数据库,打开它,将键的 DBT 和数据的另一个 DBT 清零,将 DBT 标志设置为 DB_DBT_USERMEM,为 DBT 的数据成员分配大缓冲区,将 DBT ulen 插槽设置为分配的缓冲区的大小,得到光标,来到这一行
ret = 游标->get(游标, &key, &data, DB_NEXT);
尽管分配的缓冲区为 2056 个字符,并且 key.data 的大小为 25,data.data 的大小为 75,但 ret 始终为 DB_BUFFER_SMALL。
我做错了什么?
最佳答案
感谢您提出问题。它引导我找到了解决方案,那就是
/* Initialize key/data structures. */
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
key.flags = DB_DBT_USERMEM;
data.flags = DB_DBT_USERMEM;
key.data = (char *)malloc(dataSize);
key.ulen = dataSize;
data.data = (char *)malloc(dataSize);
data.ulen = dataSize;
memset(key.data, 0, sizeof(key.data));
memset(data.data, 0, sizeof(data.data));
而不是
/* Initialize key/data structures. */
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
key.flags = DB_DBT_USERMEM;
data.flags = DB_DBT_USERMEM;
key.data = (char *)malloc(dataSize);
key.ulen = dataSize;
data.data = (char *)malloc(dataSize);
data.ulen = dataSize;
memset(&(key.data), 0, sizeof(key.data));
memset(&(data.data), 0, sizeof(data.data));
我将一个指向 char * 指针的指针传递给 memset,而不是传递指针本身。你的问题让我对初始化代码产生了疑问。
谢谢
关于c - 如何让 DBCursor->get(...) 识别我为 key.data 和 data.data 分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29978054/
这是我的代码。我正在尝试将购物车商品移至订单商品表中。它不工作可能是什么问题? CREATE PROCEDURE `insert_order_details` (IN `customer_id` V
我预计getServerAddress返回实际处理查询的 Mongo 服务器(副本集节点之一)的地址。 我正在记录 getServerAddress 的输出并只看到主要地址,尽管我非常确定某些查询是由
如果 DBCursor 在遍历所有项后未关闭 会发生什么情况。我明白 DBCursor 应该关闭。我想知道如果不是这样会怎样。 看起来它不会导致任何内存泄漏。文档说游标将关闭 如果客户端用完游标 或超
这应该是一个简单的问题,但我在任何地方都找不到答案。 我想通过在对集合进行更改之前将其加载到内存中来对集合进行快照。然后我想将快照与新更新的集合进行比较。 我的问题是,如果我加载 DBCursor s
我有以下代码: mongoClient = new MongoClient( "localhost" , 27017 ); db = mongoClient.getDB("hcm"); DBCo
我有一个 java 应用程序,我想在其中将 json 数据从 servlet 发送到 jsp。我使用 mongodb 作为 Json 的数据库和 Gson 库。 我是 Java 和 Mongo 的新手
我有一个使用 Mongodb 作为数据存储的 grails 应用程序。我在服务器端有一些方法需要 dbcursor进行迭代。 光标可能非常大。即超过 20k 条目。 迭代光标后,我的一些方法包含附加逻
我有一个 groovy 脚本,它使用 Mongo Java 驱动程序 mongo-java-driver-2.8.0.jar 访问单个集合中的所有记录,更新任何与预期结构不匹配的记录。该脚本运行得非常
在我的tomcat应用程序中,我使用DBCursor查询mongodb中的记录,当记录过多时,游标会停留在.next(),然后抛出SocketTimeoutException。 虽然,如果我在独立的
我正在尝试使用游标遍历文档,我想将它们存储在一个列表中,然后返回一个 DBOject 类型的列表。 这是我正在尝试的: public List getResultsInDescendingOrderB
我有一个名为 MyCollection 的集合,它在 mongodb 的 bd MyDB 中包含 200 个元素 > use MyDB switched to db MyDB > db.MyColle
我知道 Mongo Java 驱动程序会重试 collection.find() ,以及大多数其他读取操作,根据 Mongo docs . 但我在文档或 driver source 中看不到任何地方-
我在语句 DBCursor.hasNext() 中遇到“未与主机通信且重试已用完”的异常。 当我搜索时,得到了设置首选项的解决方案。我仍然遇到这个问题。 我的代码如下: public void sam
我正在使用 MongoDB java 驱动程序 3.8 开发 MongoDB。我想知道是否有人可以帮助我理解 DBCursor 和 MongoCursor 之间的区别,因为我可以看到两者都存在于 mo
我正在开发一个 C 程序,用于从 BerkeleyDB DBTree 数据库中提取数据值与特定模式匹配的记录。我创建数据库,打开它,将键的 DBT 和数据的另一个 DBT 清零,将 DBT 标志设置为
我是一名优秀的程序员,十分优秀!