聚合数据api请求次数([开源]仅数MB,准确率99.9%的离线IP地址定位库,0.0x毫秒级查询)
聚合数据api升级程序每秒请求次数2到4次,聚合数据是一款API聚合类应用,致力于基于API技术向客户提供覆盖多领域、多场景的标准化API技术服务与集API治理...
聚合数据api请求次数
聚合数据api升级程序每秒请求次数2到4次,聚合数据是一款API聚合类应用,致力于基于API技术向客户提供覆盖多领域、多场景的标准化API技术服务与集API治理、数据治理和相关技术服务于一体的数字化整体解决方案,助力企业客户实现数字化升级。通过HiFlow场景连接器,一线业务人员无需编程,零代码,可以使用聚合数据开放API和其他业务系统对接,定时发送通知、数据自动归档等。比如定时发送天气预报、新闻头条、空气质量等。聚合数据api请求次数拓展阅读
[开源]仅数MB,准确率99.9%的离线IP地址定位库,0.0x毫秒级查询
Ip2region - 准确率99.9%的离线IP地址定位库,0.0x毫秒级查询,ip2region.db数据库只有数MB,提供了java,php,c,python,nodejs,golang,c、php、c、python、nodejs、php扩展(php5和php7)、golang、rust、lua、lua_c, nginx。
binding | 描述 | 开发状态 | binary查询耗时 | b-tree查询耗时 | memory查询耗时 |
c | ANSC c binding | 已完成 | 0.0x毫秒 | 0.0x毫秒 | 0.00x毫秒 |
c binding | 已完成 | 0.x毫秒 | 0.x毫秒 | 0.1x毫秒 | |
golang | golang binding | 已完成 | 0.x毫秒 | 0.x毫秒 | 0.1x毫秒 |
java | java binding | 已完成 | 0.x毫秒 | 0.x毫秒 | 0.1x毫秒 |
lua | lua实现的binding | 已完成 | 0.x毫秒 | 0.x毫秒 | 0.x毫秒 |
lua_c | lua的c扩展 | 已完成 | 0.0x毫秒 | 0.0x毫秒 | 0.00x毫秒 |
nginx | nginx的c扩展 | 已完成 | 0.0x毫秒 | 0.0x毫秒 | 0.00x毫秒 |
nodejs | nodejs | 已完成 | 0.x毫秒 | 0.x毫秒 | 0.1x毫秒 |
php | php实现的binding | 已完成 | 0.x毫秒 | 0.1x毫秒 | 0.1x毫秒 |
php5_ext | php5的c扩展 | 已完成 | 0.0x毫秒 | 0.0x毫秒 | 0.00x毫秒 |
php7_ext | php7的c扩展 | 已完成 | 0.0毫秒 | 0.0x毫秒 | 0.00x毫秒 |
python | python bindng | 已完成 | 0.x毫秒 | 0.x毫秒 | 0.x毫秒 |
rust | rust binding | 已完成 | 0.x毫秒 | 0.x毫秒 | 0.x毫秒 |
ip2region快速测试
请参考每个binding下的README说明去运行cli测试程序,例如C语言的demo运行如下:
cd binding/c/
gcc -g -O2 testSearcher.c ip2region.c
./a.out ../../data/ip2region.db
会看到如下cli界面:
initializing B-tree ...
+----------------------------------+
| ip2region test script |
| Author: chenxin619315@gmail.com |
| Type &39; to exit program |
+----------------------------------+
p2region>> 101.105.35.57
2163|中国|华南|广东省|深圳市|鹏博士 in 0.02295 millseconds
输入IP地址开始测试,第一次会稍微有点慢,在运行命令后面接入binary,memory来尝试其他算法,建议使用b-tree算法,速度和并发需求的可以使用memory算法,具体集成请参考不同binding下的测试源码。
ip2region安装
具体请参考每个binding下的README文档和测试demo,以下是一些可用的快捷安装方式:
maven仓库地址
<dependency>
<groupId>org.lionsoul</groupId>
<artifactId>ip2region</artifactId>
<version>1.7.2</version>
</dependency>
nodejs
npm install node-ip2region --save
nuget安装
Install-Package IP2Region
php composer
文本数据文件:db文件的原始文本数据文件路径,自带的ip2region.db文件就是/data/ip.merge.txt生成而来的,你可以换成自己的或者更改/data/ip.merge.txt重新生成
ip2region.db文件的目录:是可选参数,没有指定的话会在当前目录生成一份./data/ip2region.db文件
- 获取生成的ip2region.db文件覆盖原来的ip2region.db文件即可
- 默认的ip2region.db文件生成命令:
cd ${ip2region_root}/java/
java -jar dbMaker-1.2.2.jar -src ./data/ip.merge.txt -region ./data/global_region.csv
39;city_id&39;region' => substr($this->dbBinStr, $dataPtr + 4, $dataLen - 4) // 获取其他数据
);
?>
源码请查阅 ip2region php client 的 binarySearch 方法。
b-tree 搜索
b-tree 搜索用到了 HEADER INDEX,第一步先在 HEADER INDEX 中搜索,再定位到 INDEX 中的某个 4k index分区搜索。
步骤:
- 把ip值通过ip2long 转为长整型
- 使用二分法在 HEADER INDEX 中搜索,比较得到对应的 header index block
- header index block 指向 INDEX 中的一个 4K 分区,所以直接把搜索范围降低到 4K
- 采用二分法在获取到的 4K 分区搜索,得到对应的 index block
- 拿到该 index block 的后面四个字节, 分别得到数据长度和数据地址
- 从数据地址读取拿到的所得长度的字节,即是搜索结果
具体源码请查阅 ip2region php client 中的 btreeSearch 方法。
六、源码地址
访问一飞开源:https://code.exmay.com/
以上就是关于聚合数据api请求次数([开源]仅数MB,准确率99.9%的离线IP地址定位库,0.0x毫秒级查询)的所有内容,希望对你有所帮助。