一和二

如何做一个国产数据库一
如何做一个国产数据库二

1、数据结构重新定义

再次重新定义数据结构

typedef struct sdata
{uint32_t index;char vardata[128];
}sdata;typedef struct sdata_index
{uint32_t index;uint32_t offset;
}sdata_index;//增加的数据库上下文环境结构体
typedef struct db_context
{char v_tablename[256];sdata_index *v_index = NULL;uint32_t v_tindex = 0;uint32_t v_nindex = 0;
}db_context;

2、增删改查

此次增加了一个数据库的db_context 结构体,包含文件名称,索引内存保存,两个index的内存保存,在增加四个api函数,以前的函数变成工具,定义tool.h 和tool.cpp.

增加api.h 和api.cpp,增加四个函数声明:

int   Insert(void *data,db_context *v_context);
int   Delete(void *key, db_context *v_context);
int   Update(void *key, void *data, db_context *v_context);
void *Select(void *key, db_context *v_context);

今天实现Insert 函数,暂不测试,因为单元测试需要单独一个教程才行

xx xx xx xx | xx xx xx xx | xx xx xx xx – xx xx xx xx
4字节最大索引| 4字节当前索引 4bytes index 4bytes offset
data

*/
//2M的空间做索引
//uint32_t indext;//索引总长度
//uint32_t indexn;//索引长度,内容为x个索引 indexn <= indext

2.1 实现索引读的函数

#define INDEX_BYTES 2 * 1024 * 1024
//int index_num = INDEX_BYTES / sizeof(int) * 2; //max index number is 162144sdata_index* bfile_read_index(const char * file, uint32_t &indext,uint32_t &indexn)
{size_t nr;indext = 0;indexn = 0;FILE * fp = fopen(file, "rb");if (fp == NULL)return NULL;//读取最大的index值容量nr = fread(&indext, sizeof(uint32_t), 1, fp);if (nr == 0){fclose(fp);return NULL;}//读取存储的索引值nr = fread(&indexn, sizeof(uint32_t), 1, fp);if (nr == 0){fclose(fp);return NULL;}//4字节索引号 4字节偏移地址uint8_t * index = (uint8_t*)malloc(indexn * sizeof(uint32_t) * 2);nr = fread(index, indexn * sizeof(uint32_t) * 2, 1, fp);if (nr == 0){fclose(fp);free(index);return NULL;}return (sdata_index*)index;
}

2.2 实现初始化数据库的函数

该函数并不完整,等待完善,有很多需要注意的地方

int Initialize(const char *tname, db_context *context)
{if (context == NULL)return -1;strcpy(context->v_tablename,tname);if (context->v_index == NULL)context->v_index = bfile_read_index(tname,             /*filename*/context->v_tindex, context->v_nindex);if (context->v_index == NULL)return -1;return 0;
}

2.3实现插入

整个增加的流程为:

#mermaid-svg-LnXl96nwWtNZ1uYc .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-LnXl96nwWtNZ1uYc .label text{fill:#333}#mermaid-svg-LnXl96nwWtNZ1uYc .node rect,#mermaid-svg-LnXl96nwWtNZ1uYc .node circle,#mermaid-svg-LnXl96nwWtNZ1uYc .node ellipse,#mermaid-svg-LnXl96nwWtNZ1uYc .node polygon,#mermaid-svg-LnXl96nwWtNZ1uYc .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-LnXl96nwWtNZ1uYc .node .label{text-align:center;fill:#333}#mermaid-svg-LnXl96nwWtNZ1uYc .node.clickable{cursor:pointer}#mermaid-svg-LnXl96nwWtNZ1uYc .arrowheadPath{fill:#333}#mermaid-svg-LnXl96nwWtNZ1uYc .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-LnXl96nwWtNZ1uYc .flowchart-link{stroke:#333;fill:none}#mermaid-svg-LnXl96nwWtNZ1uYc .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-LnXl96nwWtNZ1uYc .edgeLabel rect{opacity:0.9}#mermaid-svg-LnXl96nwWtNZ1uYc .edgeLabel span{color:#333}#mermaid-svg-LnXl96nwWtNZ1uYc .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-LnXl96nwWtNZ1uYc .cluster text{fill:#333}#mermaid-svg-LnXl96nwWtNZ1uYc div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-LnXl96nwWtNZ1uYc .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-LnXl96nwWtNZ1uYc text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-LnXl96nwWtNZ1uYc .actor-line{stroke:grey}#mermaid-svg-LnXl96nwWtNZ1uYc .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-LnXl96nwWtNZ1uYc .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-LnXl96nwWtNZ1uYc #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-LnXl96nwWtNZ1uYc .sequenceNumber{fill:#fff}#mermaid-svg-LnXl96nwWtNZ1uYc #sequencenumber{fill:#333}#mermaid-svg-LnXl96nwWtNZ1uYc #crosshead path{fill:#333;stroke:#333}#mermaid-svg-LnXl96nwWtNZ1uYc .messageText{fill:#333;stroke:#333}#mermaid-svg-LnXl96nwWtNZ1uYc .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-LnXl96nwWtNZ1uYc .labelText,#mermaid-svg-LnXl96nwWtNZ1uYc .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-LnXl96nwWtNZ1uYc .loopText,#mermaid-svg-LnXl96nwWtNZ1uYc .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-LnXl96nwWtNZ1uYc .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-LnXl96nwWtNZ1uYc .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-LnXl96nwWtNZ1uYc .noteText,#mermaid-svg-LnXl96nwWtNZ1uYc .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-LnXl96nwWtNZ1uYc .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-LnXl96nwWtNZ1uYc .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-LnXl96nwWtNZ1uYc .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-LnXl96nwWtNZ1uYc .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LnXl96nwWtNZ1uYc .section{stroke:none;opacity:0.2}#mermaid-svg-LnXl96nwWtNZ1uYc .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-LnXl96nwWtNZ1uYc .section2{fill:#fff400}#mermaid-svg-LnXl96nwWtNZ1uYc .section1,#mermaid-svg-LnXl96nwWtNZ1uYc .section3{fill:#fff;opacity:0.2}#mermaid-svg-LnXl96nwWtNZ1uYc .sectionTitle0{fill:#333}#mermaid-svg-LnXl96nwWtNZ1uYc .sectionTitle1{fill:#333}#mermaid-svg-LnXl96nwWtNZ1uYc .sectionTitle2{fill:#333}#mermaid-svg-LnXl96nwWtNZ1uYc .sectionTitle3{fill:#333}#mermaid-svg-LnXl96nwWtNZ1uYc .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LnXl96nwWtNZ1uYc .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-LnXl96nwWtNZ1uYc .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LnXl96nwWtNZ1uYc .grid path{stroke-width:0}#mermaid-svg-LnXl96nwWtNZ1uYc .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-LnXl96nwWtNZ1uYc .task{stroke-width:2}#mermaid-svg-LnXl96nwWtNZ1uYc .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LnXl96nwWtNZ1uYc .taskText:not([font-size]){font-size:11px}#mermaid-svg-LnXl96nwWtNZ1uYc .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LnXl96nwWtNZ1uYc .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-LnXl96nwWtNZ1uYc .task.clickable{cursor:pointer}#mermaid-svg-LnXl96nwWtNZ1uYc .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-LnXl96nwWtNZ1uYc .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-LnXl96nwWtNZ1uYc .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-LnXl96nwWtNZ1uYc .taskText0,#mermaid-svg-LnXl96nwWtNZ1uYc .taskText1,#mermaid-svg-LnXl96nwWtNZ1uYc .taskText2,#mermaid-svg-LnXl96nwWtNZ1uYc .taskText3{fill:#fff}#mermaid-svg-LnXl96nwWtNZ1uYc .task0,#mermaid-svg-LnXl96nwWtNZ1uYc .task1,#mermaid-svg-LnXl96nwWtNZ1uYc .task2,#mermaid-svg-LnXl96nwWtNZ1uYc .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-LnXl96nwWtNZ1uYc .taskTextOutside0,#mermaid-svg-LnXl96nwWtNZ1uYc .taskTextOutside2{fill:#000}#mermaid-svg-LnXl96nwWtNZ1uYc .taskTextOutside1,#mermaid-svg-LnXl96nwWtNZ1uYc .taskTextOutside3{fill:#000}#mermaid-svg-LnXl96nwWtNZ1uYc .active0,#mermaid-svg-LnXl96nwWtNZ1uYc .active1,#mermaid-svg-LnXl96nwWtNZ1uYc .active2,#mermaid-svg-LnXl96nwWtNZ1uYc .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-LnXl96nwWtNZ1uYc .activeText0,#mermaid-svg-LnXl96nwWtNZ1uYc .activeText1,#mermaid-svg-LnXl96nwWtNZ1uYc .activeText2,#mermaid-svg-LnXl96nwWtNZ1uYc .activeText3{fill:#000 !important}#mermaid-svg-LnXl96nwWtNZ1uYc .done0,#mermaid-svg-LnXl96nwWtNZ1uYc .done1,#mermaid-svg-LnXl96nwWtNZ1uYc .done2,#mermaid-svg-LnXl96nwWtNZ1uYc .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-LnXl96nwWtNZ1uYc .doneText0,#mermaid-svg-LnXl96nwWtNZ1uYc .doneText1,#mermaid-svg-LnXl96nwWtNZ1uYc .doneText2,#mermaid-svg-LnXl96nwWtNZ1uYc .doneText3{fill:#000 !important}#mermaid-svg-LnXl96nwWtNZ1uYc .crit0,#mermaid-svg-LnXl96nwWtNZ1uYc .crit1,#mermaid-svg-LnXl96nwWtNZ1uYc .crit2,#mermaid-svg-LnXl96nwWtNZ1uYc .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-LnXl96nwWtNZ1uYc .activeCrit0,#mermaid-svg-LnXl96nwWtNZ1uYc .activeCrit1,#mermaid-svg-LnXl96nwWtNZ1uYc .activeCrit2,#mermaid-svg-LnXl96nwWtNZ1uYc .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-LnXl96nwWtNZ1uYc .doneCrit0,#mermaid-svg-LnXl96nwWtNZ1uYc .doneCrit1,#mermaid-svg-LnXl96nwWtNZ1uYc .doneCrit2,#mermaid-svg-LnXl96nwWtNZ1uYc .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-LnXl96nwWtNZ1uYc .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-LnXl96nwWtNZ1uYc .milestoneText{font-style:italic}#mermaid-svg-LnXl96nwWtNZ1uYc .doneCritText0,#mermaid-svg-LnXl96nwWtNZ1uYc .doneCritText1,#mermaid-svg-LnXl96nwWtNZ1uYc .doneCritText2,#mermaid-svg-LnXl96nwWtNZ1uYc .doneCritText3{fill:#000 !important}#mermaid-svg-LnXl96nwWtNZ1uYc .activeCritText0,#mermaid-svg-LnXl96nwWtNZ1uYc .activeCritText1,#mermaid-svg-LnXl96nwWtNZ1uYc .activeCritText2,#mermaid-svg-LnXl96nwWtNZ1uYc .activeCritText3{fill:#000 !important}#mermaid-svg-LnXl96nwWtNZ1uYc .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LnXl96nwWtNZ1uYc g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-LnXl96nwWtNZ1uYc g.classGroup text .title{font-weight:bolder}#mermaid-svg-LnXl96nwWtNZ1uYc g.clickable{cursor:pointer}#mermaid-svg-LnXl96nwWtNZ1uYc g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-LnXl96nwWtNZ1uYc g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-LnXl96nwWtNZ1uYc .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-LnXl96nwWtNZ1uYc .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-LnXl96nwWtNZ1uYc .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-LnXl96nwWtNZ1uYc .dashed-line{stroke-dasharray:3}#mermaid-svg-LnXl96nwWtNZ1uYc #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-LnXl96nwWtNZ1uYc #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-LnXl96nwWtNZ1uYc #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-LnXl96nwWtNZ1uYc #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-LnXl96nwWtNZ1uYc #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-LnXl96nwWtNZ1uYc #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-LnXl96nwWtNZ1uYc #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-LnXl96nwWtNZ1uYc #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-LnXl96nwWtNZ1uYc .commit-id,#mermaid-svg-LnXl96nwWtNZ1uYc .commit-msg,#mermaid-svg-LnXl96nwWtNZ1uYc .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LnXl96nwWtNZ1uYc .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LnXl96nwWtNZ1uYc .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LnXl96nwWtNZ1uYc g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LnXl96nwWtNZ1uYc g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-LnXl96nwWtNZ1uYc g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-LnXl96nwWtNZ1uYc g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-LnXl96nwWtNZ1uYc g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-LnXl96nwWtNZ1uYc g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-LnXl96nwWtNZ1uYc .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-LnXl96nwWtNZ1uYc .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-LnXl96nwWtNZ1uYc .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-LnXl96nwWtNZ1uYc .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-LnXl96nwWtNZ1uYc .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-LnXl96nwWtNZ1uYc .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-LnXl96nwWtNZ1uYc .edgeLabel text{fill:#333}#mermaid-svg-LnXl96nwWtNZ1uYc .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LnXl96nwWtNZ1uYc .node circle.state-start{fill:black;stroke:black}#mermaid-svg-LnXl96nwWtNZ1uYc .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-LnXl96nwWtNZ1uYc #statediagram-barbEnd{fill:#9370db}#mermaid-svg-LnXl96nwWtNZ1uYc .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-LnXl96nwWtNZ1uYc .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-LnXl96nwWtNZ1uYc .statediagram-state .divider{stroke:#9370db}#mermaid-svg-LnXl96nwWtNZ1uYc .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-LnXl96nwWtNZ1uYc .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-LnXl96nwWtNZ1uYc .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-LnXl96nwWtNZ1uYc .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-LnXl96nwWtNZ1uYc .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-LnXl96nwWtNZ1uYc .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-LnXl96nwWtNZ1uYc .note-edge{stroke-dasharray:5}#mermaid-svg-LnXl96nwWtNZ1uYc .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-LnXl96nwWtNZ1uYc .error-icon{fill:#522}#mermaid-svg-LnXl96nwWtNZ1uYc .error-text{fill:#522;stroke:#522}#mermaid-svg-LnXl96nwWtNZ1uYc .edge-thickness-normal{stroke-width:2px}#mermaid-svg-LnXl96nwWtNZ1uYc .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-LnXl96nwWtNZ1uYc .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-LnXl96nwWtNZ1uYc .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-LnXl96nwWtNZ1uYc .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-LnXl96nwWtNZ1uYc .marker{fill:#333}#mermaid-svg-LnXl96nwWtNZ1uYc .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-LnXl96nwWtNZ1uYc {color: rgba(0, 0, 0, 0.75);font: ;}

打开数据库
初始化读取
读取上次索引信息
写入当次索引+偏移
写入索引量last+1
int Insert(void *data, db_context *context)
{if (context->v_nindex < context->v_tindex){FILE * fp = fopen(context->v_tablename, "wb");if (fp == NULL)return -1;fpos_t pos = 4 + 4 + (context->v_nindex) * (8);fsetpos(fp, &pos);//int last_index = context->v_nindex - 1;uint32_t  indexlast = context->v_index[context->v_nindex - 1].index ;uint32_t  indexinsert = indexlast + 1;size_t n = fwrite(&indexinsert, sizeof(uint32_t), 1, fp);if (n != sizeof(uint32_t)){fclose(fp);return -1;}sdata *pdata = (sdata*)data;size_t vsize = sizeof(pdata->vardata);uint32_t datasize = vsize * indexlast;fpos_t offset = 4 + 4 + INDEX_BYTES + datasize;n = fwrite(&offset, sizeof(uint32_t), 1, fp);if (n != sizeof(uint32_t)){fclose(fp);return -1;}fsetpos(fp, &offset);n = fwrite(data, vsize, 1, fp);if (n != vsize){fclose(fp);return -1;}fpos_t index = sizeof(uint32_t);fsetpos(fp, &index);uint32_t newnindex = context->v_nindex + 1;n = fwrite(&newnindex, sizeof(uint32_t), 1, fp);if (n != sizeof(int)){fclose(fp);return -1;}fclose(fp);return 0;}return -1;
}int   Delete(void *key, db_context *v_context)
{}
int   Update(void *key, void *data, db_context *v_context)
{}
void *Select(void *key, db_context *v_context)
{}

上面说了,先实现增加函数,其他先不实现,也不测试,单元测试需要一个严格的定义和测试用例,此次先为增加流程的初步代码实现,有待完善。

如何做一个国产数据库(三)相关推荐

  1. 如何做一个国产数据库(七) 网络传输 java做订阅客户端

    如何做一个国产数据库一 如何做一个国产数据库二 如何做一个国产数据库三 如何做一个国产数据库四 如何做一个国产数据库五 如何做一个国产数据库六 server端协议定义 再次强调一下我们的protoco ...

  2. 如何做一个国产数据库(六) 网络传输 nodejs做测试客户端

    如何做一个国产数据库一 如何做一个国产数据库二 如何做一个国产数据库三 如何做一个国产数据库四 如何做一个国产数据库五 网络实战服务器 我们再四中说过使用tcp进行协议的链接,对我们所定义的协议如果有 ...

  3. 如何做一个国产数据库(二)

    如果做一个国产数据库一链接 承接上文,继续 1.重新定义数据结构 typedef struct sdata {uint32_t index;char vardata[128]; }sdata;type ...

  4. 如何做一个国产数据库(四)

    网络 这次要用到网络了,存储的时候我们都使用网络来输入输出,当然,像本机是可以使用进程间通信的,不过为了简单,我们此次都使用tcp协议. 协议 此次使用libuv来做网络的传输,我们首先定一个协议,做 ...

  5. 如何做一个国产数据库系统(一)

    做国产数据库之二 做一个国产数据库 做一个数据库系统真的是要懂的是基础,各种基础,网络,文件系统,操作系统,性能,测试,各方面都要懂 使用基本方法 索引文件+数据文件+ B+ 树 ,hash空间 如图 ...

  6. 如何用Excel做一个战斗模拟器(三)战斗过程模拟

    如何用Excel做一个战斗模拟器(一)升级经验表 如何用Excel做一个战斗模拟器(二)属性表 目录索引 定义战斗子过程 定位战斗双方基础属性 利用基础属性与战斗公式进行计算 战斗过程的运算与输出 判 ...

  7. 如何做一个mysql数据库_如何创建一个简单的mysql数据库

    这篇文章主要介绍了操作MySQL日志的一些方法,对日志的删除操作做了重点讲解,需要的朋友可以参考下. 一.创建数据库 注:已经安装好mysql. windows下运行cmd进入命令窗口,本人用的是wi ...

  8. 做一个回填数据库的报表

    BI 软件市场越来越热闹,但由此也给软件用户带来了"选择恐惧症",在貌似功能类似的情况下,用户会转而关注到底哪款软件更加炫酷.便捷.易上手.但事实上,仍旧有不少实用性的功能是 BI ...

  9. 2020年11月国产数据库排行:GaussDB砥砺前行成第八,EsgynDB 4.2亿战绩晋级20强!

    编辑说明:国产数据库流行度排行榜,是墨天轮网站根据数据库的受欢迎程度对国产数据库进行排名,排行榜每月更新. 转眼间11月来了,2020年也只剩下1个月左右了,墨天轮2020年11月国产数据库排行榜新鲜 ...

最新文章

  1. 库克喜提 8 亿年终奖,2020 年整体薪酬增长 28%
  2. app专项测试(稳定性测试、安全性测试)
  3. python100以内孪生素数_python用递归筛选法求N以内的孪生质数(孪生素数)
  4. java retry 实现,java-retry实现
  5. Html5 Egret游戏开发 成语大挑战(五)界面切换和数据处理
  6. eclipse 环境安装
  7. kindle文件转PDF文件
  8. 字道-最美中国字硬笔书法教学|培养孩子正确的执笔写字姿势有多重要?看完你就明白了!
  9. web test performance tools / linux performance tools / windows performance tools
  10. matlab:matlab神经网络工具的使用
  11. tp6 防止XSS攻击之表单提交安全校验
  12. 2021年华为总监知乎1867赞的Java面试题全集解析助我修行,不吃透感觉都对不起他(上)
  13. HYBBS2.3轻论坛M-TOUCH模板源码
  14. 数据结构之中缀表达式计算
  15. day19TreeSet类
  16. 人工神经元的数学模型,神经元模型图片
  17. psim什么版本能和matlab联合仿真,psim与simulink联合仿真步骤
  18. 在电脑上弹钢琴是什么体验?
  19. phpwind index.php?m=designc=api,phpwind v9存在命令执行漏洞(登陆后台)
  20. 借助国内ChatGPT平替+MindShow,飞速制作PPT

热门文章

  1. [2014]Hiring Report of IT Company
  2. 数据结构与算法 相关经典书籍推荐
  3. 苹果今年秋季或发布史上最多新品
  4. 判4年!旷视科技司机敲诈董事长300万元未遂
  5. 国产性能车天花板?145万买极星1,认真的么?
  6. 农夫山泉终于“玩砸了”
  7. 亿元大奖后抑郁被网友质疑卖惨 信小呆:不想再被打扰
  8. 外媒:特斯拉申请新商标 寻求进入餐饮业
  9. RedmiK40系列首销5分钟破30万台 旗舰焊门员实至名归
  10. 运营九年,这款音乐手游宣布停服!将从应用商店下架...