准确率99.9%的离线IP地址定位库,0.0x毫秒级查询,数据库文件大小只有1.5M,提供了java,php,c,python,nodejs,golang,c#等查询绑定和Binary,B树,内存三种查询算法

Ip2region是什么?

ip2region - 准确率99.9%的离线IP地址定位库,0.0x毫秒级查询,ip2region.db数据库只有数MB,提供了java,php,c,python,nodejs,golang,c#等查询绑定和Binary,B树,内存三种查询算法。

Ip2region特性

99.9%准确率

数据聚合了一些知名ip到地名查询提供商的数据,这些是他们官方的的准确率,经测试着实比经典的纯真IP定位准确一些。

ip2region的数据聚合自以下服务商的开放API或者数据(升级程序每秒请求次数2到4次):

01, >80%, 淘宝IP地址库, http://ip.taobao.com/

02, ≈10%, GeoIP, https://geoip.com/

03, ≈2%, 纯真IP库, http://www.cz88.net/

备注:如果上述开放API或者数据都不给开放数据时ip2region将停止数据的更新服务。

标准化的数据格式

每条ip数据段都固定了格式:

_城市Id|国家|区域|省份|城市|ISP_

只有中国的数据精确到了城市,其他国家有部分数据只能定位到国家,后前的选项全部是0,已经包含了全部你能查到的大大小小的国家(请忽略前面的城市Id,个人项目需求)。

体积小

包含了全部的IP,生成的数据库文件ip2region.db只有几MB,最小的版本只有1.5MB,随着数据的详细度增加数据库的大小也慢慢增大,目前还没超过8MB。

查询速度快

全部的查询客户端单次查询都在0.x毫秒级别,内置了三种查询算法

  1. memory算法:整个数据库全部载入内存,单次查询都在0.1x毫秒内,C语言的客户端单次查询在0.00x毫秒级别。

  2. binary算法:基于二分查找,基于ip2region.db文件,不需要载入内存,单次查询在0.x毫秒级别。

  3. b-tree算法:基于btree算法,基于ip2region.db文件,不需要载入内存,单词查询在0.x毫秒级别,比binary算法更快。

任何客户端b-tree都比binary算法快,当然memory算法固然是最快的!

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下的测试源码。

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

# 插件来自:https://github.com/zoujingli/ip2region
composer require zoujingli/ip2region

ip2region 并发使用

  1. 全部binding的各个search接口都不是线程安全的实现,不同线程可以通过创建不同的查询对象来使用,并发量很大的情况下,binary和b-tree算法可能会打开文件数过多的错误,请修改内核的最大允许打开文件数(fs.file-max=一个更高的值),或者使用持久化的memory算法。

  2. memorySearch接口,在发布对象前进行一次预查询(本质上是把ip2region.db文件加载到内存),可以安全用于多线程环境。

ip2region.db的生成

从1.8版本开始,ip2region开源了ip2region.db生成程序的java实现,提供了ant编译支持,编译后会得到以下提到的dbMaker-{version}.jar,对于需要研究生成程序的或者更改自定义生成配置的请参考

从ip2region 1.2.2版本开始里面提交了一个dbMaker-{version}.jar的可以执行jar文件,用它来完成这个工作:
1.确保你安装好了java环境(不玩Java的童鞋就自己谷歌找找拉,临时用一用,几分钟的事情)
2.cd到ip2regionroot/maker/java内的java源码。然后运行如下命令:

java -jar dbMaker-{version}.jar -src 文本数据文件 -region 地域csv文件 [-dst 生成的ip2region.db文件的目录]# 文本数据文件:db文件的原始文本数据文件路径,自带的ip2region.db文件就是/data/ip.merge.txt生成而来的,你可以换成自己的或者更改/data/ip.merge.txt重新生成
# 地域csv文件:该文件目的是方便配置ip2region进行数据关系的存储,得到的数据包含一个city_id,这个直接使用/data/origin/global_region.csv文件即可
# ip2region.db文件的目录:是可选参数,没有指定的话会在当前目录生成一份./data/ip2region.db文件
  1. 获取生成的ip2region.db文件覆盖原来的ip2region.db文件即可

  2. 默认的ip2region.db文件生成命令:

cd ${ip2region_root}/java/
java -jar dbMaker-1.2.2.jar -src ./data/ip.merge.txt -region ./data/global_region.csv# 会看到一大片的输出

推荐一个准确率99.9%的离线IP地址定位服务!相关推荐

  1. 准确率99.9%的离线IP地址定位库

    准确率99.9%的离线IP地址定位库. Ip2region 是一个离线 IP 地址定位库,准确率高达 99.9%,搜索性能为 0.0x 毫秒.DB 文件只有几兆字节,其中存储了所有 IP 地址.支持 ...

  2. 准确率 99.9% 的离线IP地址定位库

    点击关注公众号,利用碎片时间学习 Ip2region 是一个离线 IP 地址定位库,准确率高达 99.9%,搜索性能为 0.0x 毫秒.DB 文件只有几兆字节,其中存储了所有 IP 地址. 支持 Ja ...

  3. 一个还不错的离线 IP 地址定位库,99.9% 准确率!

    点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2020 超神之路,很肝~ 中文详细注释的开源项目 ...

  4. 开源:推荐一个不错的离线IP地址定位库

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | https://gitee.com/lions ...

  5. 毫秒级查询的离线IP地址定位库,太实用了!

      大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!   咱们程序员开发任何系统, ...

  6. 使用强大的离线IP地址定位库ip2region获取城市信息

    文章目录 一.简介 二.ip2region的使用 1.引入依赖 2.下载ip2region.db 3.IpUtils工具类 一.简介    ip2region - 准确率99.9%的离线IP地址定位库 ...

  7. Ip2region 离线IP地址定位库和IP定位数据管理框架

    老板要我做一个 IP 属地功能!我摸索了 1 天,搞定了.♥️ 细心的朋友应该会发现,最近,继新浪微博之后,头条.腾讯.抖音.知乎.快手.小红书等各大平台陆陆续续都上线了"网络用户IP地址显 ...

  8. Ip2region 离线IP地址定位库

    Ip2region 是什么 ip2region v2.0 - 是一个离线IP地址定位库和IP定位数据管理框架,10微秒级别的查询效率,提供了众多主流编程语言的 xdb 数据生成和查询客户端实现. Gi ...

  9. 若依集成ip2region实现离线IP地址定位

    离线IP地址定位库主要用于内网或想减少对外访问http带来的资源消耗. 目录 一.引入依赖 二.添加工具类RegionUtil.java 三.修改AddressUtils.java 四.添加离线IP地 ...

  10. IP问问:如何验证IP地址定位的准确率

    到底什么是IP地址定位准确的标准?与GPS定位的方式不同,GPS返回的是单一的经纬度,是一个点.而IP地址定位返回的是IP地址背后互联网用户群出现的位置,是一个面.在此,埃文科技提供了IP地址定位准确 ...

最新文章

  1. 解决nginx 502 bad gateway--团队的力量
  2. Linux_查看CPU信息、机器型号等硬件信息
  3. PAT 乙级 1009
  4. 玩转CSS选择器(一) 之 使用方法介绍
  5. leedcode344. 反转字符串
  6. 计算机网络实用期末试题和答案,计算机网络期末考试试题及答案(1)
  7. Fabric chaincode开发调试
  8. ubuntu ftp服务器_如何在Ubuntu上安装FTP服务器?
  9. 2020低压电工作业考试题库及低压电工模拟考试系统
  10. java sql 工具类_Java防SQL注入工具类
  11. 利用Matlab求解Stewart并联机构位置正解,方法为牛顿迭代法
  12. xdb 服务_[20200115]监听中没有xdb服务.txt
  13. 计算机专用英语词汇1500词
  14. 使用GnuRadio + OpenLTE + SDR 搭建4G LTE 基站(上)
  15. VGA显示器字符显示
  16. 全球及中国轮胎行业发展方向与销售前景状况分析报告2022年
  17. mysql权限问题_Mysql 数据库的权限问题
  18. html投影电脑,投影仪怎么连接笔记本电脑
  19. java智慧农业系统-农业云端农产品仓储子系统
  20. 张飞实力电子经验(电子学习心路,创业心得)

热门文章

  1. windows 监控
  2. 【python游戏编程之旅】第一篇---初识pygame
  3. java学习——线程
  4. 编程之美之寻找发帖“水王” 的算法问题
  5. 「leetcode」1356.根据数字二进制下1的数目排序【如何计算二进制中1的数量】详解!
  6. hdu 4336 Card Collector 容斥原理 多校联合赛(四) 第六题
  7. Illustrator 教程,如何在 Illustrator 中创建和编辑图层?
  8. iOS开发之审核时间
  9. SQLPro for SQLite for Mac(数据库管理软件)
  10. Screaming Frog SEO Spider for Mac进行网页抓取和数据提取的技巧