基于内存池的 简单高效的数据库 SDK简介

基于内存池的 简单高效的数据库 SDK简介

        下载地址:

https://gitee.com/tankaishuai/powerful_sdks/tree/master/shm_alloc_db_heap

        shm_alloc_db_heap 是一个基于内存池实现的简单高效的文件型数据存储引擎,利用它可以轻松地像访问内存块一样读、写、增、删、改、查、任意自定义记录于磁盘文件中。除此之外,还提供了数据库碎片整理、堆破坏有效性检测等实用功能。特别适合用作数据存储类应用之中。

以下简单讲解下常用的API:

(1)shm_struct* shm_open(unsigned int shm_size, const char *file, int keep);

创建/打开一个数据库连接,成功返回连接句柄,失败返回 NULL。

参数:

    shm_size: 初始化预分配数据库大小,建议取 1M 左右。

    file: 数据库文件存储路径。

    keep:  是否打开一个现有数据库。如果设为 0, 将完全新建数据库结构。

(2)void* shm_alloc(shm_struct* shm_head, int size);

         插入一条数据库记录。 成功返回记录指针,失败返回 NULL。

 参数:

      size: 待插入的记录字节数。

 注意:该接口在数据库已满时不会自动增长扩容,如果需要让数据库自动增长扩容,需使用以下高级接口:

       void* shm_map_alloc(shm_struct** shm_head_ptr, int size, int* allow_remap);

    初始化 int allow_remap = 0  并传入 &allow_remap 给第三个参数即可。

(3)void* shm_realloc(shm_struct* shm_head, void* ptr, int size);

         重新调整数据库中记录项的字节大小。成功返回记录指针,失败返回 NULL。

  参数:

        ptr: 待调整的记录指针。

        size: 记录需要的新的字节数。

(4)void shm_free(shm_struct* shm_head, void* ptr);

        删除一条记录。

  参数:

        ptr: 待删除的记录指针。

(5)int shm_list(shm_struct* shm_head, shm_pfn_t blk_pfn, shm_pfn_t free_pfn, void *u);

       遍历数据库中的所有记录。成功返回 0, 失败返回 错误码。

 参数:

       blk_pfn: 回调函数。其具有如下形式:

             int (*shm_pfn_t)(shm_struct* shm_head, void* ptr, unsigned int size, void *u);

             返回 0 继续,返回其他值则终止遍历。

       free_pfn:  一般传 NULL。

       u:  自定义数据。该参数直接透传给回调函数使用。

(6)void shm_close(shm_struct** shm_head_ptr, int defrag);

        关闭数据库连接。

  参数:

         defrag:  是否进行数据库碎片整理。

使用示例:

 

 

 

编译并链接 shm_alloc_db_heap32.dll (32位)或 shm_alloc_db_heap64.dll  (64位)即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1620740.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

pcDuino–voip服务器设置呼叫彩铃

2019独角兽企业重金招聘Python工程师标准>>> 首先需要几个工具,第一个txtvoice 第二个,音频转换软件 首先需要制作一段定制的彩铃。 在txtvoice里面输入: pcDuino是一款由美国技术团队研发新型学习开发板,被誉为“…

MT6853/MT6873 视频彩铃概率性无图像

[Description] 最近客户经常提问,使用CMCC测试会出现概率性下发视频彩铃无图像的情况。[SOLUTION] 归纳发现,当彩铃中心下发480*640分辨率的彩铃时,网络会将视频端口置为inactive。 UPDATE sip:8613818731094[2409:8804:8044:A65C:0BEE:2BF3…

为广东制造业数字化转型“助跑”!企企通应邀出席“广东省制造业数字化转型50人会”

广东省制造业数字化转型工作起步较早、走在全国前列,是首批 2个国家级工业互联网示范区之一。为落实省委、省政府关于“制造业当家”的工作部署,推动制造业数字化转型,8月12日,“广东省制造业数字化转型50人会”启动会议暨“行业平…

解决Spring Boot项目中pom.xml环境配置 打包后生效 但idea版本运行无效的问题

上文 Spring Boot中通过maven进行多环境配置 中我们通过pom.xml配置了环境选择 但这个只有在打包出来的jar中生效 我们直接通过 idea启动 这个东西确实是有点问题 其实 我们执行一下 compile 手工编译一下 然后重新启动 很明显 我们这里配置就已经生效了 这个就是 我们每次…

【Docker系列】Docker-核心概念/常用命令与项目部署实践

写在前面 Docker是一种开源的容器化技术,它允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中,从而实现快速部署和高效运行。Docker的核心概念包括镜像、容器、仓库等。本文将详细介绍Docker的基本概念、安装方法以及常用命令。 一、Doc…

webassembly004 ggml wasm_eval 与js代码交互 调试

试用 $:~/ggml/ggml$cd examples/mnist $:~/ggml/ggml/examples/mnist$ emcc -I../../include -I../../include/ggml -I../../examples ../../src/ggml.c main.cpp -o web/mnist.js -s EXPORTED_FUNCTIONS["_wasm_eval","_wasm_random_digit","_mall…

cesium 使用天地图

天地图的 key 可以到 天地图官网申请 我的天地图账号是如下 天地图的最大层级是17 ,当我们设置maximumLevel 小于 等于17 级时,当相机移到LOD大于17时,会对天地图 最大层级图像进行切分; 当设置maximumLevel 大于17级时&#xf…

ArcGis for JavaScript 4.23版本接入国家天地矢量地图

申请天地图开发权限 注册天地图控制台创建应用,应用类型选浏览器端,因为我们是浏览器使用创建完成后进入资源服务选择使用的地图,此处我使用经纬度矢量地图点击进去可以看到地图服务的URL 后面要用 ArcGis 接入天地图 ArcGis 4x版本中使用…

cesium-加载天地图影像

cesium-加载天地图影像 天地图 “天地图”网站装载了覆盖全球的地理信息数据,这些数据以矢量、影像、三维3种模式全方位、多角度展现,可漫游、能缩放。其中中国的数据覆盖了从宏观的中国全境到微观的乡镇、村庄。普通公众登录“天地图”网站&#xff0…

Android 加载天地图

Android 通过ArcGis 来加载天地图,研究了一个星期 整理成了一个小demo,附上部分源码,底部附上源码demo, package com.luao.arcgisdemo;import android.Manifest; import android.annotation.SuppressLint; import android.app.admin.SystemUpdateInfo;…

天地图各级比例尺

国家地理信息公共服务平台天地图 在实际调用中发现国际级可用的为1到18级 ,点击省市服务可放大到20级,以下提供1到20级的比例尺供大家参考。 天地图 4.0 API 点击省市服务可放大到20级 L1 1:295829355.45456564 L2 1:147914677.7272828…

OpenLayers集成天地图

1、安装OpenLayers 使用以下方式将OpenLayers添加为对您的应用程序的依赖 npm i -S ol 此时,您可以要求NPM通过运行以下命令来添加所需的开发依赖项 npm i --save-dev parcel-bundler 2、注册天地图 注册地址:https://uums.tianditu.gov.cn/registe…

天地图之自定义标记点

需求:在地图上标记监控点位,地图引入的过程就不多啰嗦,可参考此专栏前几篇文章,下面直接介绍实现步骤 1.绘制标记点(如果多个点则需要放到循环体循环渲染) 点的坐标 var position new T.LngLat(经度, 纬…

java+天地图,天地图开发之Android-天地图显示

最近开始学Android地图开发,由于做天地图api的人不多,想把自己这一段时间的劳动成果分享给大家,顺便可以一起学习。我用的版本是天地图移动API(Android)V2.1版。 1.下载天地图移动API库 2.第一个天地图map应用 第一步:在工程里新建…

Cesium调用天地图的新问题

在开发CSTK 的过程中,尝试在Cesium上加载天地图,这个过程在2021年的年中已经解决了。 使用了网上的代码 viewer new Viewer("cesiumContainer", {// imageryProvider: imageryProvider,// imageryProvider: imgMap,baseLayerPicker: hasBase…

【天地图】使用天地图api绘制GeoJson数据

天地图没有直接提供加载GeoJson数据或者文件的api,但是我们可以借助绘制多边形的方式实现 1 实现效果 绘制如下的矢量多边形效果; 2 实现技术 (1) 首先用ajax请求geojson文件,从文件解析并获取到坐标数据 下面这个方法就是解析geojson返回的featurecol…

【自学笔记】天地图添加标注

知识点 MarkTool类:标注工具,用来让用户在地图上标注一个点,可以通过该工具获得用户标点的经纬度位置。构造函数:MarkTool(map:Map[,opts:MarkToolOptions])。参数说明:map为地图对象;opts:Mar…

离线地图最终解决方案

离线地图最终解决方案 前言 ​ 能找到这个帖子的朋友应该是公司要求做离线地图,但是没了解过的吧,我前一段也是公司要求做离线地图但是我没了解过,我就去搜了很多文章,找了很多方案,最后和leader定下来了两个方案,一个是使用一张固定缩放的图片,然后将像素转化为px来做…

天地图入门使用

“天地图”是国家测绘地理信息局建设的地理信息综合服务网站。集成了来自国家、省、市(县)各级测绘地理信息部门,以及相关政府部门、企事业单位 、社会团体、公众的地理信息公共服务资源,如果做的项目是政府部门、企事业单位尽量选…

javaee spring 自动注入,如果满足条件的类有多个如何区别

如图IDrinkDao有两个实现类 方法一 方法二 Resource(name“对象名”) Resource(name"oracleDrinkDao") private IDrinkDao drinkDao;