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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/14744.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT day2

second.h文件&#xff1a; #ifndef SECOND_H #define SECOND_H#include <QWidget> #include <QWidget> #include <QDebug> #include <QIcon> #include <QButtonGroup> #include <QPushButton> #include <QLabel> #include <QLin…

Python+CNN 手写公式识别计算系统

系统&#xff1a;Win10 环境&#xff1a;Pycharm/Vscode Python3.7 效果图&#xff1a; 部分代码如下&#xff1a; import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets,transforms#定义…

尚硅谷Docker实战教程-笔记06【Docker容器数据卷】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址&#xff1a;尚硅谷Docker实战教程&#xff08;docker教程天花板&#xff09;_哔哩哔哩_bilibili 尚硅谷Docker实战教程-笔记01【理念简介、官网介绍、平台入门图解、平台架构图解】尚硅谷Docker实战教程-笔…

K8s 内存泄漏处理方法

问题描述&#xff1a; 1. 安装go环境 2. 下载地址: https://golang.google.cn/dl/[rootk8s-master home]# rm -rf /usr/local/go && tar -C /usr/local/ -zxvf go1.17.3.linux-amd64.tar.gz3. 永久配置go 环境[rootk8s-master home]# vim /etc/profile export GOPATH…

Openpose原理总结

Openpose是一种开源的实时多人姿态估计库&#xff0c;由卡耐基梅隆大学开发。它通过分析图像或视频中的人体关键点来估计人体的姿态&#xff0c;识别身体的各个部分&#xff0c;并推断出人体的姿势信息。 Openpose能够同时检测和跟踪多个人的姿态&#xff0c;可以用于人机交互、…

Linux 内核级通用内存池 —— kmalloc 体系

目录 kmalloc 内存池中都有哪些尺寸的内存块 kmalloc 内存池如何选取合适尺寸的内存块 kmalloc 内存池的整体架构 KMALLOC_RECLAIM 表示需要分配可以被回收的内存&#xff0c;RECLAIM 类型的内存页&#xff0c;不能移动&#xff0c;但是可以直接回收&#xff0c;比如文件缓存页…

[NSSRound#13 Basic]flask?jwt?解题思路过程

过程 打开题目链接&#xff0c;是一个登录框&#xff0c;不加验证码&#xff0c;且在注册用户名admin时提示该用户名已被注册&#xff0c;因此爆破也是一种思路。不过根据题目名字中的提示&#xff0c;jwt&#xff0c;且拥有注册入口&#xff0c;注册一个用户先。 注册完用户…

8、动手学深度学习——现代卷积神经网络:AlexNet

1、学习表征 在2012年前&#xff0c;图像特征都是机械地计算出来的。事实上&#xff0c;设计一套新的特征函数、改进结果&#xff0c;并撰写论文是盛极一时的潮流 另一组研究人员&#xff0c;包括Yann LeCun、Geoff Hinton、Yoshua Bengio、Andrew Ng、Shun ichi Amari和Juer…

测试编排必要性

目录 前言&#xff1a; 测试编排定义 测试编排和自动化 测试编排的好处 自动化的测试编排策略 自动化/编排工具 测试编排和CI/CD 学点啥 前言&#xff1a; 编排是一种组织和安排信息的过程&#xff0c;它在各种情境中都是非常重要的。在撰写文章、演讲或其他形式的表达…

【真题解析】系统集成项目管理工程师 2022 年上半年真题卷(综合知识)

本文为系统集成项目管理工程师考试(软考) 2022 年上半年真题&#xff08;全国卷&#xff09;&#xff0c;包含答案与详细解析。考试共分为两科&#xff0c;成绩均 ≥45 即可通过考试&#xff1a; 综合知识&#xff08;选择题 75 道&#xff0c;75分&#xff09;案例分析&#x…

【Elasticsearch】索引库操作

目录 2.索引库操作 2.1.mapping映射属性 2.2.索引库的CRUD 2.2.1.创建索引库和映射 基本语法&#xff1a; 示例&#xff1a; 2.2.2.查询索引库 2.2.3.修改索引库 2.2.4.删除索引库 2.2.5.总结 2.索引库操作 索引库就类似数据库表&#xff0c;mapping映射就类似表的…

软件设计模式与体系结构-软件体系-层次软件体系结构

目录 四、层次软件体系结构简介代码两种方式的区别双向分层分层风格 VS 主程序-子过程风格&#xff1a;二者的不同层次软件体系结构的优点层次软件体系结构的缺点 课程作业 四、层次软件体系结构 层次之间存在接口&#xff0c;通过接口形成call/return的关系&#xff0c;上层是…