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

kvstore (二)协议层设计 + 引擎层初识(array数组)

前言

介绍

所谓kvstore就是类似于redis服务器的一种思想,通过自定义的一些协议,能够根据网络层recv到的数据进行解析,然后去到kvstore中的引擎层拿到想要的数据,最后封装组织回发。
自定义协议可以如下–CRUD:

  1. SET:set key value
  2. GET:get key
  3. DEL:del key
  4. MOD:mod key value
  5. EXIST:exist key

基于上一章节kvstore (一) 网络层设计,我们已经实现了将接收完数据后获取接收数据,并进行处理(上节只是做了简单打印)的函数kvs_protocol(char* msg , int length , char * response)通过函数指针的方式可以传递到各个网络框架的recvsend层面,本节就要对该业务方法进行实现。具体思路如下:

  1. 分割解析字符串 --msg:将字符串按照协议格式进行分割,并将指针存储到数组中。kvs_filter_token(char*msg , char *token[])
  2. 解析字符串(过滤器/分析器):对分割后的字符串进行识别,并在其内部调用引擎层的方法,比如:kvs_array_set()等方法

协议层设计

intkvs_protocol(char*msg,intlength,char*response){//其实此处按照协议格式只需要为3,但是为了防止set key value1 value2 ....这种,可以设定大一些char*tokens[kvs_max_tokens]={0};//分割字符串(为解析协议做准备)intcount=kvs_split_token(msg,tokens);//识别分割的字符串,并分别调用对应的业务逻辑set、get....returnkvs_filter_protocol(tokens,count,response);}

1. 分割解析字符串

核心思想:

  1. 利用strtok()方法,将msg进行“ ”分割,并且按照索引存到tokens数组中
  2. 分解后的tokens[0]:set/get/mod/del,tokens[1]:key,tokens[2]:key
kvs_split_token(char*msg,char*tokens[]){......}

2. 解析字符串tokens[0],tokens[1],tokens[2]

2.1 定义一个枚举和指针数组

此处为了方便循环遍历,我么可以定义一个枚举,里面对应着指针数组char *command[]中的具体执行参数。

....
.....

2.2 根据解析到的cmd,分别调用不同的方法

利用2.1中定义的方便遍历的enum,可以通过switch - case进行处理:

  1. KVS_CMD_SET:----kvs_array_set
  2. KVS_CMD_GET:----kvs_array_get
  3. KVS_CMD_MOD:----kvs_array_MOD
  4. KVS_CMD_EXIST:----kvs_array_EXIST
......

引擎array初步实现

根据上述所讲,已经可以实现接收到的数据包的解析,因此我们需要一个数据结构作为引擎对数据进行存储、修改、删除等
这里先使用简单的array数组捋清楚引擎层的思路,后续引入更为高效的数据结构。


数组数据结构图片 –


http://www.gsyq.cn/news/164393.html

相关文章:

  • 使用官方TensorFlow镜像,一键启动深度学习任务
  • 模型逆向攻击防御:TensorFlow镜像的安全加固措施
  • path.resolve
  • 如何防止他人窃取你在TensorFlow镜像中训练的模型
  • 单节锂电池充电芯片核心选型,高可靠性充电方案技术精要
  • 医学影像分析:在TensorFlow镜像中训练3D U-Net
  • 手写汉字识别:基于TensorFlow镜像的CNN-LSTM架构
  • “AI智能体‘通货膨胀‘程序员避坑指南:从‘嘴强王者‘到‘真香行动派‘的进化史,别再被PPT忽悠了!“
  • 2025去离子水品牌推荐榜:实验室、冷却、清洗全场景覆盖 - 品牌推荐大师1
  • 2025—2026年年广州电话亭/模块化建筑/户外房/后院屋/拼装太空/太空隔音舱厂家实力榜:技术壁垒与市场品牌双维度深度解析 - 海棠依旧大
  • 深入解析:【docker】Docker Register(镜像仓库)
  • 网络安全专业的在校大学生生活费不够花,如何赚外快实现财富自由?
  • kubeadm 初始化k8s1.25集群报错
  • 如何实现TensorFlow镜像中模型的灰度发布
  • 2025年最新GEO排名服务商权威评测与推荐,企业短视频矩阵/视频矩阵/GEO排名/ai数字人矩阵/ai排名GEO排名厂商推荐排行榜单 - 品牌推荐师
  • 模型解释性很重要!TensorFlow镜像集成SHAP值分析
  • OpenAI收费高昂?试试Open-AutoGLM:低成本高效率的替代方案(附部署教程)
  • 2025年哈尔滨靠谱客厅瓷砖品牌公司排行榜,口碑服务双优客厅瓷砖品牌推荐 - 工业设备
  • 别把 AI Agent 当客服机器人:一个是“工具”,一个是“数字员工”
  • 2025年黑龙江哑光时尚砖品牌推荐,大型企业生产的哑光瓷砖与墙砖选购指南 - 工业品网
  • 毕设开源 stm32的火灾监控与可视化系统(源码+硬件+论文)
  • 多传感器融合:TensorFlow镜像构建高级驾驶辅助系统
  • 初创企业福利:低成本使用TensorFlow镜像训练大模型
  • 记录-探索VS构建Qt项目
  • 详细介绍:.NET Framework中报错命名空间System.Text中不存在类型或命名空间名Json
  • 如何为TensorFlow镜像配置持久化存储卷(Persistent Volume)
  • 基础练习6
  • 如何为TensorFlow镜像添加健康检查端点
  • 2025年黑龙江靠谱哑光地砖品牌排行榜,资深/实力厂家优选推荐 - 工业设备
  • 2025最新!专科生必看9款AI论文工具测评,毕业论文轻松过