#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)
gramdataflag_t iterbisearch_ti(const uint32_t x, int beg, int last)
; int mid = -1;
mid = (beg + last) / 2;
if(beg>last) return no;
gramdataflag_t adata = get_st_data(mid);
if (x == adata.data_flag)
else if (x < adata.data_flag)
else if (x > adata.data_flag)
return no;
}//查詢
gramdataflag_t 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);
gramdataflag_t node= isoneofgups(gupflag,gram_read_totocnt());
if(node.data_add>0)
}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
硬雜湊表的輪子V4 0 基本完成全部邏輯
放進去演算法 測試成功 進一步的比較即將開始!在v5.0完成吧!include hwhaxi.h include chipflash.h define gramdataflag cnt add 0x0807e000 僅僅利用前面的u32標識雜湊表大小 define gramdataflag flas...
csdn部落格的css樣式 v5
馬永佔,myz,mayongzhan 面對csdn極其xx的改版,徹底xx。改吧。csdn把左右對調了一下,左邊是文章,右邊是導航,我x,你要換也要給個配置,可以手動調節行不?左右換了之後document.ready就不需要了,注釋掉。去公告條相容首頁和內容頁。去掉收藏按鈕的樣式修改 調整了一下cs...
潤幹報表V5如何訪問WEB INF下的JSP展現
web inf下面的檔案都是受保護的,把需要限制訪問的資源 比如說jsp 放到web應用的web inf目錄下,對於web inf及其子目錄,都是不允許直接訪問的,所以就可以起到保護這些 未經授權的訪問和窺視,更好的保護了源 結合頁面的跳轉方式 一 redirect 方式,二 forward 方式。...