硬雜湊表的輪子V4 0 基本完成全部邏輯

2021-09-30 00:27:40 字數 3517 閱讀 7404

放進去演算法

測試成功

進一步的比較即將開始!在v5.0完成吧!

#include "hwhaxi.h"

#include "chipflash.h"

#define gramdataflag_cnt_add 0x0807e000//僅僅利用前面的u32標識雜湊表大小

#define gramdataflag_flash_add 0x0807e800//全部儲存資料的雜湊值

#define gramdata_flash_add 0x0807f000//全部儲存資料

static grampage_t dt, dtfg;

static chipflash_t *c = &chipflash;

//static

uint8_t commonbuf[2048];

static uint8_t *phaxibuf = commonbuf;//公共資源 還需要加鎖 目前沒有 是分時復用

void g_print(char *name,gramdataflag_t* a,uint16_t len)

//擦掉一頁 必須是明確的起始位址

void gram_clear(uint32_t readaddr)

void gram_write( uint32_t addr,uint8_t* pbuffer, uint16_t numbyte)

void show_grampagedataflag_t(grampage_t *p)

void show_grampagedata_t(grampage_t *p)

void gram_data_init(void)

//完成'4'-->4 『a』-->10

unsigned char mystrtobyte(unsigned char ddata)

//"1234"--->0x12,0x34

char mystrstobytes(void* strings,char len,void* bytes)

return j;

}//清除

void gram_clear(void)

//寫入魔術

void gram_write_totocnt(uint32_t localcnt)

uint32_t gram_read_totocnt(void)

//寫入資料

//先把2048全部讀出來-在格式化flash-在修改2048中部分資料再次寫入

//id標識中的第幾個結構體

void gram_write_data(uint32_t id,gramdata_t *gdatat)

void gram_write_dataflag(uint32_t id,gramdataflag_t *gdataflagt)

void gram_pagewrite(void)

/*折半查詢

準備乙個陣列 排好序的*/

直接找陣列:

int iterbisearch_u16(uint16_t data, const uint16_t x, int beg, int last)

else if (x < data[mid])

else if (x > data[mid])

return -1;

} 陣列擴大為結構體:

int iterbisearch_t(gramdataflag_t *data, const uint32_t x, int beg, int last)

else if (x < adata)

else if (x > adata)

return -1;

}//排序

void myswap( gramdataflag_t *x, gramdataflag_t *y )

void myquicksort(gramdataflag_t *a,int left,int right)

int iterbisearch_ti(const uint32_t x, int beg, int last)

else if (x < adata)

else if (x > adata)

return -1;

}//查詢

int isoneofgups( const uint16_t x,uint16_t n)

//查詢

//傳入引數 乙個陣列 目前len是寫死的11 而內部flash的位址沒有傳參 也是寫死的

char isoneof(uint8_t *indata,uint8_t len)

//開始挨個比較

gramdataflag_t every_flag;

gramdataflag_t machbank[5];

uint8_t machcnt=0;

for( i=0;i大把雜湊頁整理好

gram_dataflag_sort();

//演算法查詢

gupflag = haxi.haxifun(gupbyte,11);

printf("[gupflag=%04x]\r\n",gupflag);

int id= isoneofgups(gupflag,gram_read_totocnt());

if(id>0)

printf("ok--%d[此時雜湊值已經命中 可以進一步比較]\r\n",id);

else

printf("fail\r\n");

}

#ifndef hwhaxi_h

#define hwhaxi_h

#include "gunit.h"

//操作的資料結構

typedef struct

gramdata_t;

typedef struct

gramdataflag_t;

/*//其實全部都是巨集定義

typedef struct

grampagedata_t;

typedef struct

grampagedataflag_t;

*/typedef struct

node;

uint8_t nodesize;

uint32_t nodecnt;

uint32_t pageadd;

uint16_t pagesize;

}grampage_t;

//可以優化的雜湊函式

typedef uint16_t (*haxi_func)(uint8_t *data, uint16_t leng) ;

typedef struct

haximap_t;

extern haximap_t haxi;

extern void haximap_test(void);

#endif

硬雜湊表的輪子V5 0 完成全部邏輯

include hwhaxi.h include chipflash.h define gramdataflag cnt add 0x0807e000 僅僅利用前面的u32標識雜湊表大小 define gramdataflag flash add 0x0807e800 全部儲存資料的雜湊值 defi...

潤幹V5中設計的報表如何在V4中展現

潤幹v5與潤幹v4設計器功能大致相同,都能夠通過簡單的操作展現需要展現的資料,然而由於潤幹v4基於c s架構,而潤幹v5是基於b s架構的,要讓兩個版本所設計的潤幹報表能夠相容,相互相容使用,就需要我們對v4做一些必要的處理。首先需要做的準備工作是乙個潤幹v5最新的應用包,在應用包的資料管理選單子項...

AJAX校驗在潤幹V4填報表中的使用

ajax的好處就是非同步進行互動,讓我們感覺頁面並沒有其他的動作 重新整理 讓我們感覺頁面做的更友好了,互動性更能跟上現在的web應用。利用ajax進行校驗能夠在不重新整理頁面的情況下完成和伺服器端的互動,並根據資料的處理結果按你想要的方式對頁面作出即時更改。潤幹的填報表校驗功能,可以在使用者填報資...