准确率99.9%的离线IP地址定位库
准确率99.9%的离线IP地址定位库。
Ip2region 是一个离线 IP 地址定位库,准确率高达 99.9%,搜索性能为 0.0x 毫秒。DB 文件只有几兆字节,其中存储了所有 IP 地址。支持 Java、PHP、C、Python、Nodejs、Golang、C#、lua 等查询绑定。查询算法使用二叉树、B树和内存搜索算法。
功能特性
查询准确率高达99.9%
数据来源于一些知名的 IP 查询提供商,经测试比纯 IP 定位更准确一些。
• >80%,淘宝IP地址库:http://ip.taobao.com
• ≈10%,GeoIP: https://geoip.com
• ≈2%,纯真IP库: http://www.cz88.net
文件体积小
数据库文件 ip2region.db 只有几 MB 大小,最小的版本不超过 1.5MB,最大的不超过 8MB。
标准数据格式
每条 ip 数据段都固定了格式,目前只有国内的数据可以精确到城市级别,其他国家只有部分可以定位到国家,其余无法确认的数据默认值为 0 。
城市Id|国家|区域|省份|城市|ISP
查询速度快
所有客户端单次查询都在0.x毫秒级别,内置了三种查询算法:
• memory算法:整个数据库全部载入内存,单次查询都在0.1x毫秒内,C语言的客户端单次查询在0.00x毫秒级别。
• binary算法:基于二分查找,基于 ip2region.db文件,不需要载入内存,单次查询在0.x毫秒级别。
• b-tree算法:基于btree算法,基于 ip2region.db文件,不需要载入内存,单词查询在0.x毫秒级别,比 binary 算法更快。
多种查询客户端的支持
客户端已经集成 java、C#、php、c、python、nodejs、php 扩展(php5和php7)、golang、rust、lua、lua_c、nginx。
快捷安装
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
composer require zoujingli/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 'quit' to exit program |
+----------------------------------+
p2region>> 101.105.35.57
2163|中国|华南|广东省|深圳市|鹏博士 in 0.02295 millseconds
输入 IP 地址开始测试,第一次会稍微有点慢,在运行命令后面接入 binary、memory 来尝试其他算法,建议使用 b-tree 算法,速度和并发需求的可以使用memory 算法,具体集成请参考不同 binding 下的测试源码。
—END—
开源地址:https://github.com/zoujingli/ip2region
相关文章
- SpriteBuilder中子节点的相对位置(%百分比定位)
- 让HTML5来为你定位(转)
- 模拟位置 定位 钉钉打卡 运动轨迹 MD
- 大叔问题定位分享(30)mesos agent启动失败:Failed to perform recovery: Incompatible agent info detected
- 【原创】大叔问题定位分享(13)HBase Region频繁下线
- 大叔问题定位分享(7)Spark任务中Job进度卡住不动
- 无法定位程序输入点
- 成功解决python.exe 无法找到程序入口 无法定位程序输入点
- git bisect:让你闭眼都能定位疑难 bug的利器
- 面试题 17.11. 单词距离-双下标定位法
- 【CSS】使用绝对定位 / 浮动解决外边距塌陷问题 ( 为父容器 / 子元素设置内边距 / 边框 | 为子元素设置浮动 | 为子元素设置绝对定位 )
- CSS3与页面布局学习总结(三)——BFC、定位、浮动、7种垂直居中方法
- 背景图片定位
- Appium自动化测试基础 — 元素定位(一)
- 【ASP.NET 进阶】根据IP地址进行百度地图定位
- 老杨说运维 | 如何快速进行日志异常检测和根因定位