ip地址查询精确位置_准确率超高的ip地址定位库
ip地址查询精确位置_准确率超⾼的ip地址定位库
ip2region - 最⾃由的ip地址查询库,ip到地区的映射库,提供Binary,B树和纯内存三种查询算法,妈妈再也不⽤担⼼我的ip地址定位。
99.9%准确率,定时更新:
数据聚合了⼀些知名ip到地名查询提供商的数据,这些是他们官⽅的的准确率,经测试着实⽐纯真啥的准确多了。
每次聚合⼀下数据需要1-2天,会不定时更新。
标准化的数据格式:
每条ip数据段都固定了格式:城市Id|国家|区域|省份|城市|ISP
只有中国的数据精确到了城市,其他国家只能定位到国家,后前的选项全部是0,已经包含了全部你能查到的⼤⼤⼩⼩的国家。 (请忽略前
⾯的城市Id,个⼈项⽬需求)
体积⼩:
⽣成的数据库⽂件ip2region.db只有1.5M(1.2版本前是3.5M)
多查询客户端的⽀持,0.0x毫秒级别的查询
已经集成的客户端有:java、C#、php、c、python、nodejs、php扩展(php5和php7)、golang、rust、lua、lua_c。
提供了两种查询算法,响应时间如下:客户端/binary算法/b-tree算法/Memory算法:c#/0.x毫秒/0.x毫秒/0.x毫秒java/0.x毫秒/0.x毫秒/0.1x毫秒 (使⽤RandomAccessF
任何客户端b-tree都⽐binary算法快,当然Memory算法固然是最快的!
maven仓库地址:
org.lionsoul ip2region 1.7.2
nuget安装命令
Install-Package IP2Region
测试程序:
C#、Node.js、lua_c的测试请具体参考⽂件夹中README.md 说明。
java:
cd binding/javaant alljava -jar ip2region-{version}.jar ./data/ip2region.db
php:
php binding/php/testSearcher.php ./data/ip2region.db
c:
cd binding/c/gcc -g -O2 testSearcher./a.out ../../data/ip2region.db
python:
如何查看ip地址python binding/python/testSearcher.py ./data/ip2region.db
lua:
cd binding/lua/lua testSearcher.lua ../../data/ip2region.db
均会看到如下界⾯:
initializing B-tree ... +----------------------------------+| ip2region test script || Author: chenxin619315@gmail || Type 'quit' to exit program |+------------------
输⼊ip地址开始测试,第⼀次会稍微有点慢,在运⾏命令后⾯接⼊binary,memory来尝试其他算法,建议使⽤b-tree算法,速度和并发需求
的可以使⽤memory算法。
具体集成请参考不同客户端的测试源码。
如何⽣成ip2region.db⽂件
从ip2region 1.2.2版本开始⾥⾯提交了⼀个dbMaker-{version}.jar的可以执⾏jar⽂件,⽤它来完成这个⼯作:
1, 确保你安装好了java环境(不玩Java的童鞋就⾃⼰⾕歌拉,临时⽤⼀⽤,⼏分钟的事情)
2, cd到ip2region的根⽬录,然后运⾏如下命令:
java -jar dbMaker-{version}.jar -src ⽂本数据⽂件 -region 地域csv⽂件 [-dst ⽣成的ip2region.db⽂件的⽬录]# ⽂本数据⽂件:db⽂件的原始⽂本数据⽂件路径,⾃带
3, 获取⽣成的ip2region.db⽂件覆盖原来的ip2region.db⽂件即可
4, 默认的ip2region.db⽂件⽣成命令:
cd ip2region项⽬根⽬录java -jar dbMaker-1.2.2.jar -src ./txt -region ./data/global_region.csv# 会看到⼀⼤⽚的输出
5, 数据库⽂件的结构和原理请阅读 @冬芽 的blog:“ip2region数据库⽂件的结构和原理:
dongyado/tool/2016/08/18/structure-of-ip2region-database-file/”
其他备注
1, 全部binding的各个search接⼝都不是线程安全的实现,不同线程可以通过创建不同的查询对象来使⽤。
2, memorySearch接⼝,在发布对象前进⾏⼀次预查询,可以安全⽤于多线程环境。
项⽬地址

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。