当前位置: 首页 > news >正文

基于内存池的 简单高效的数据库 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位)即可。

相关文章:

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

基于内存池的 简单高效的数据库 SDK简介 下载地址: https://gitee.com/tankaishuai/powerful_sdks/tree/master/shm_alloc_db_heap shm_alloc_db_heap 是一个基于内存池实现的简单高效的文件型数据存储引擎,利用它可以轻松地像访问内存块一样读、写、增…...

python实例方法,类方法和静态方法区别

为python中的装饰器 实例方法 实例方法时直接定义在类中的函数,不需要任何修饰。只能通过类的实例化对象来调用。不能通过类名来调用。 类方法 类方法,是类中使用classmethod修饰的函数。类方法在定义的时候需要有表示类对象的参数(一般命名为cls&#…...

Pyecharts教程(四):使用pyecharts绘制3D折线图

Pyecharts教程(四):使用pyecharts绘制3D折线图 作者:安静到无声 个人主页 目录 Pyecharts教程(四):使用pyecharts绘制3D折线图准备工作数据准备绘制3D折线图推荐专栏在这篇文章中,我们将学习如何使用pyecharts库来绘制一个3D折线图。pyecharts是一个用于生成Echarts图表的…...

【stable-diffusion使用扩展+插件和模型资源(下)】

插件模型魔法图片等资源:https://tianfeng.space/1240.html 书接上文:(上) 插件推荐 1.lobe theme lobe theme是一款主题插件,直接可以在扩展安装 界面进行了重新布局,做了一些优化,有兴趣的…...

一文了解SpringBoot中的Aop

目录 1.什么是Aop 2.相关概念 3.相关注解 4.为什么要用Aop 5.Aop使用案例 1.什么是Aop AOP:Aspect Oriented Programming,面向切面,是Spring三大思想之一,另外两个是 IOC-控制反转 DI-依赖注入 (Autowired、Qualifier、Re…...

android系统启动流程之zygote如何创建SystemServer进程

SystemServer:是独立的进程,主要工作是管理服务的,它将启动大约90种服务Services. 它主要承担的职责是为APP的运行提供各种服务,像AMS,WMS这些服务并不是一个独立的进程, 它们其实都是SystemServer进程中需要管理的的众多服务之一…...

【awd系列】Bugku S3 AWD排位赛-9 pwn类型

文章目录 二进制下载检查分析运行二进制ida分析解题思路exp 二进制下载 下载地址:传送门 检查分析 [rootningan 3rd]# file pwn pwn: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for …...

vcomp140.dll丢失的修复方法分享,电脑提示vcomp140.dll丢失修复方法

今天,我的电脑出现了一个奇怪的问题,打开某些程序时总是提示“找不到vcomp140.dll文件”。这个问题让我非常头疼,因为我无法正常使用电脑上的一些重要软件。为了解决这个问题,我在网上查找了很多资料,并尝试了多种方法…...

Docker file解析

文章目录 简介构建的三步骤Docker执行Dockerfile的大致流程DockerFile常用保留字指令创建第一个Dockerfile镜像的缓存特性 Docker file 解析 简介 Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本,记录了镜像构…...

工作与身体健康之间的平衡

大厂裁员,称35岁以后体能下滑,无法继续高效率地完成工作;体重上涨,因为35岁以后新陈代谢开始变慢;甚至坐久了会腰疼、睡眠困扰开始加重,在众多的归因中,仿佛35岁的到来,会为一切的焦…...

算法和数据结构

STL 【C】蓝桥杯必备 算法竞赛常用STL万字总结_蓝桥杯算法竞赛_Cpt1024的博客-CSDN博客 day1 1:正确 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 // 中序遍历一遍二叉树,并统计节点数目 class Solution { public:int c…...

商城-学习整理-集群-K8S-集群环境部署(二十四)

目录 一、MySQL集群1、mysql集群原理2、Docker安装模拟MySQL主从复制集群1、下载mysql镜像2、创建Master实例并启动3、创建 Slave 实例并启动4、为 master 授权用户来同步数据1、进入 master 容器2、进入 mysql 内部 (mysql –uroot -p)3、查看 master 状…...

利用多种机器学习方法对爬取到的谷歌趋势某个关键词的每日搜索次数进行学习

大家好,我是带我去滑雪! 前一期利用python爬取了谷歌趋势某个关键词的每日搜索次数,本期利用爬取的数据进行多种机器学习方法进行学习,其中方法包括:随机森林、XGBOOST、决策树、支持向量机、神经网络、K邻近等方法&am…...

ARL资产侦察灯塔 指纹增强

项目:https://github.com/loecho-sec/ARL-Finger-ADD 下载项目后运行 python3 ARl-Finger-ADD.py https://你的vpsIP:5003/ admin password该项目中的finger.json可以自己找到其他的指纹完善,然后运行脚本添加指纹。...

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

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

sql语句中的ddl和dml

操作数据库:CRUD C(create) 创建 *数据库创建出来默认字符集为utf8 如果要更改字符集就 Create database 名称 character set gbk(字符集) *创建数据库:create database 名称 *先检查是否有该数据库在…...

学习JAVA打卡第四十一天

字符串与字符数组、字节数组 ⑴字符串与字符数组 String类的构造方法String(char a[])和String(char a[]),int offset,int length,分别用数组a中的全部字符和部分字符创建string对象。 String类也提供将string对象的字符序列存…...

leetcode SQL题目

文章目录 组合两个表第二高的薪水第N高的薪水分数排名连续出现的数字超过经理收入的员工查找重复的电子邮件从不订购的客户部门工资最高的员工部门工资前三高的所有员工删除重复的电子邮箱上升的温度游戏玩法分析Ⅰ游戏玩法Ⅳ 组合两个表 SELECT firstName,lastName,city,stat…...

计算机组成原理学习笔记-精简复习版

一、计算机系统概述 计算机系统硬件软件 计算机硬件的发展: 第一代计算机:(使用电子管)第二代计算机:(使用晶体管)第三代计算机:(使用较小规模的集成电路)第四代计算机:(使用较大规模的集成电路) 冯诺依曼体系结构…...

聊一聊微前端框架的选型和实现 | 业务平台

一、项目背景 目前,我们开发维护的项目主要有 6 个,但是分别对应 PC 和 H5 两个端: 如上图所示,我们 6个项目最开始是一个一个进行开发维护的,但是到后期,这几个项目之间有的部分会有业务逻辑不同&#xff…...

PFC3D模拟含纤维混凝土材料单轴压缩破坏

PFC3D含纤维混凝土材料单轴压缩破坏模拟去年在实验室折腾PFC3D模拟含纤维混凝土压缩破坏的时候,发现这玩意儿真是让人又爱又恨。纤维像调皮的孩子,在混凝土基体里各种"搞事情",今天就跟大家唠唠这个"微观破坏现场"的观察…...

Beekeeper Studio:现代跨平台数据库管理工具的技术架构与实战应用

Beekeeper Studio:现代跨平台数据库管理工具的技术架构与实战应用 【免费下载链接】beekeeper-studio beekeeper-studio/beekeeper-studio: Beekeeper Studio 是一款开源的跨平台数据库客户端工具,支持多种数据库(如MySQL, PostgreSQL, SQLit…...

同架构大数据量HGDB到HGDB数据迁移

文章目录环境文档用途详细信息环境 系统平台:Linux x86-64 Red Hat Enterprise Linux 7,银河麒麟 (X86_64) 版本:4.5.8 文档用途 本文介绍同架构大数据量情况下,为了减少停机时间,先搭建流复制同步数据&…...

抖音视频批量下载效率革命:解放双手的douyin-downloader全攻略

抖音视频批量下载效率革命:解放双手的douyin-downloader全攻略 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 作为内容创作者,你是否曾为收集行业素材而重复点击下载按钮&#xff1f…...

Mermaid:文本驱动的可视化引擎深度指南

Mermaid:文本驱动的可视化引擎深度指南 【免费下载链接】mermaid mermaid-js/mermaid: 是一个用于生成图表和流程图的 Markdown 渲染器,支持多种图表类型和丰富的样式。适合对 Markdown、图表和流程图以及想要使用 Markdown 绘制图表和流程图的开发者。 …...

终极指南:如何在Open Interpreter中快速集成vLLM高速推理引擎

终极指南:如何在Open Interpreter中快速集成vLLM高速推理引擎 【免费下载链接】open-interpreter Open Interpreter 工具能够让大型语言模型在本地执行如Python、JavaScript、Shell等多种编程语言的代码。 项目地址: https://gitcode.com/GitHub_Trending/op/open…...

wan2.1-vae提示词评估体系:构建BLEU-Style指标量化中文提示词有效性

wan2.1-vae提示词评估体系:构建BLEU-Style指标量化中文提示词有效性 1. 为什么需要评估提示词质量 在AI图像生成领域,提示词的质量直接影响最终生成效果。好的提示词能准确表达创作意图,而模糊或不当的提示词可能导致生成结果与预期不符。特…...

OpenClaw对话式编程:Qwen3.5-9B解释代码与生成可执行脚本

OpenClaw对话式编程:Qwen3.5-9B解释代码与生成可执行脚本 1. 为什么需要对话式编程助手? 作为一个经常需要写脚本处理数据的开发者,我发现自己80%的时间都花在重复性工作上:查文档、调试语法错误、验证代码逻辑。直到尝试用Open…...

# 发散创新:用Python打造自动化渗透测试工具链,从扫描到利用的全流程实战在网络安全攻防对抗中,**自动化渗透测试工

发散创新:用Python打造自动化渗透测试工具链,从扫描到利用的全流程实战 在网络安全攻防对抗中,自动化渗透测试工具正逐步成为红队成员和安全研究人员的核心利器。传统工具如Nmap、Burp Suite虽强大,但缺乏灵活定制能力&#xff1b…...

Struts2拦截器实战:从零构建权限控制与日志记录

1. Struts2拦截器机制解析 Struts2拦截器是框架最核心的机制之一,它采用AOP(面向切面编程)思想,在Action执行前后插入自定义逻辑。想象一下拦截器就像地铁安检系统:每个乘客(请求)都必须经过安检…...