Eleip
数据格式
/data/ip.dat
buffer
文件
|--------|-----...----|------------|
| Header| Record | Index |
分为三个部分:Header、Record 及 Index 部分,分别为头信息、纪录区及索引区
Header 部分
|----|----|Record..
头信息部分指向了索引区的位置
分为两个部分,各4个字节,分别指向第一个索引位置和最后一个索引的位置
Record 部分
Header |--------0x00----0x00 ..... ---0x00-----0x00| Index
纪录区保存了我们从 csv 文件读取的需要的数据,以 /build/build.js 中 NEED_PROPERTY 常量数组为准,按序存储,每一段数据以 0x00 结尾标识
Index 部分
Record | ---- | ---- | ----| ...... --|
索引区保存了每个 ip 段的范围以及所属的纪录区的位置
每个索引包括三个字段,每个字段4个字节,共12字节长度
| ---- | ---- | ---- |
第一个字段为当前数据的开始 ip, 第二个字段为结束 ip,第三个字段指向了纪录区数据的位置
生成数据
运行npm run build
,将读取 /build/data.csv
的数据生成数据文件/data/ip.csv
注:当前保存的字段仅为isp
(运营商)数据。
注:如果要增加保存的数据,需要修改/build/build.js
文件内NEED_PROPERTY
数组,相应的要修改/lib/eleip.js
内的RECORD_PROPERTY
,保证正常保存和读取。
测试
输出 ip 搜索结果
npm test -- 1.0.0.1
benchmark
npm test -- -b 或者 npm test -- --benchmark