设为首页 加入收藏

TOP

Caffe源码中各种依赖库的作用及简单使用(四)
2015-11-10 13:45:44 来源: 作者: 【 】 浏览:35
Tags:Caffe 源码 各种 依赖 作用 简单 使用
xreaders(env, 1));
?E(mdb_env_set_mapsize(env, 10485760));
?//E(mdb_env_open(env, "./testdb", MDB_FIXEDMAP /*|MDB_NOSYNC*/, 0664));
?E(mdb_env_open(env, "E:/tmp/testLMDB", MDB_FIXEDMAP /*|MDB_NOSYNC*/, 0664));


?E(mdb_txn_begin(env, NULL, 0, &txn));
?E(mdb_dbi_open(txn, NULL, 0, &dbi));


?key.mv_size = sizeof(int);
?key.mv_data = sval;


?printf("Adding %d values\n", count);
?for (i = 0; i? sprintf(sval, "%03x %d foo bar", values[i], values[i]);
? /* Set in each iteration, since MDB_NOOVERWRITE may modify it */
? data.mv_size = sizeof(sval);
? data.mv_data = sval;
? if (RES(MDB_KEYEXIST, mdb_put(txn, dbi, &key, &data, MDB_NOOVERWRITE))) {
? ?j++;
? ?data.mv_size = sizeof(sval);
? ?data.mv_data = sval;
? }
?}
?if (j) printf("%d duplicates skipped\n", j);
?E(mdb_txn_commit(txn));
?E(mdb_env_stat(env, &mst));


?E(mdb_txn_begin(env, NULL, MDB_RDONLY, &txn));
?E(mdb_cursor_open(txn, dbi, &cursor));
?while ((rc = mdb_cursor_get(cursor, &key, &data, MDB_NEXT)) == 0) {
? printf("key: %p %.*s, data: %p %.*s\n",
? ?key.mv_data, (int)key.mv_size, (char *)key.mv_data,
? ?data.mv_data, (int)data.mv_size, (char *)data.mv_data);
?}
?CHECK(rc == MDB_NOTFOUND, "mdb_cursor_get");
?mdb_cursor_close(cursor);
?mdb_txn_abort(txn);


?j = 0;
?key.mv_data = sval;
?for (i = count - 1; i > -1; i -= (rand() % 5)) {
? j++;
? txn = NULL;
? E(mdb_txn_begin(env, NULL, 0, &txn));
? sprintf(sval, "%03x ", values[i]);
? if (RES(MDB_NOTFOUND, mdb_del(txn, dbi, &key, NULL))) {
? ?j--;
? ?mdb_txn_abort(txn);
? }
? else {
? ?E(mdb_txn_commit(txn));
? }
?}
?free(values);
?printf("Deleted %d values\n", j);


?E(mdb_env_stat(env, &mst));
?E(mdb_txn_begin(env, NULL, MDB_RDONLY, &txn));
?E(mdb_cursor_open(txn, dbi, &cursor));
?printf("Cursor next\n");
?while ((rc = mdb_cursor_get(cursor, &key, &data, MDB_NEXT)) == 0) {
? printf("key: %.*s, data: %.*s\n",
? ?(int)key.mv_size, (char *)key.mv_data,
? ?(int)data.mv_size, (char *)data.mv_data);
?}
?CHECK(rc == MDB_NOTFOUND, "mdb_cursor_get");
?printf("Cursor last\n");
?E(mdb_cursor_get(cursor, &key, &data, MDB_LAST));
?printf("key: %.*s, data: %.*s\n",
? (int)key.mv_size, (char *)key.mv_data,
? (int)data.mv_size, (char *)data.mv_data);
?printf("Cursor prev\n");
?while ((rc = mdb_cursor_get(cursor, &key, &data, MDB_PREV)) == 0) {
? printf("key: %.*s, data: %.*s\n",
? ?(int)key.mv_size, (char *)key.mv_data,
? ?(int)data.mv_size, (char *)data.mv_data);
?}
?CHECK(rc == MDB_NOTFOUND, "mdb_cursor_get");
?printf("Cursor last/prev\n");
?E(mdb_cursor_get(cursor, &key, &data, MDB_LAST));
?printf("key: %.*s, data: %.*s\n",
? (int)key.mv_size, (char *)key.mv_data,
? (int)data.mv_size, (char *)data.mv_data);
?E(mdb_cursor_get(cursor, &key, &data, MDB_PREV));
?printf("key: %.*s, data: %.*s\n",
? (int)key.mv_size, (char *)key.mv_data,
? (int)data.mv_size, (char *)data.mv_data);


?mdb_cursor_close(cursor);
?mdb_txn_abort(txn);


?printf("Deleting with cursor\n");
?E(mdb_txn_begin(env, NULL, 0, &txn));
?E(mdb_cursor_open(txn, dbi, &cur2));
?for (i = 0; i<50; i++) {
? if (RES(MDB_NOTFOUND, mdb_cursor_get(cur2, &key, &data, MDB_NEXT)))
? ?break;
? printf("key: %p %.*s, data: %p %.*s\n",
? ?key.mv_data, (int)key.mv_size, (char *)key.mv_data,
? ?data.mv_data, (int)data.mv_size, (char *)data.mv_data);
? E(mdb_del(txn, dbi, &key, NULL));
?}


?printf("Restarting cursor in txn\n");
?for (op = MDB_FIRST, i = 0; i <= 32; op = MDB_NEXT, i++) {
? if (RES(MDB_NOTFOUND, mdb_cursor_get(cur2, &key, &data, op

首页 上一页 1 2 3 4 5 6 下一页 尾页 4/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇AngularJS 的异步服务测试与Mocki.. 下一篇Linux下多线程编程互斥锁和条件变..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: