ip2region——准确率 99.9% 的 ip 地址定位库,0.0x 毫秒级查询,数据库文件大小只有 1.5M,提供了 java、php、c、python、node.js、golang 查询绑定和 Binary、B 树、内存三种查询算法,妈妈再也不用担心我的 ip 地址定位!
1. 99.9%准确率,定时更新:
数据聚合了一些知名 ip 到地名查询提供商的数据,这些是他们官方的的准确率,经测试着实比纯真啥的准确多了。
每次聚合一下数据需要 1-2 天,会不定时更新。
2. 标准化的数据格式:
每条 ip 数据段都固定了格式:城市Id|国家|区域|省份|城市|ISP
只有中国的数据精确到了城市,其他国家只能定位到国家,后前的选项全部是0,已经包含了全部你能查到的大大小小的国家。
(请忽略前面的城市 Id,个人项目需求)
3. 体积小:
生成的数据库文件 ip2region.db 只有 1.5M (1.2 版本前 3.5M)
4. 多查询客户端的支持,0.0x 毫秒级别的查询
已经集成的客户端有:java, php, c,python,php扩展,nodejs,golang。
提供了两种查询算法,响应时间如下: 客户端/binary算法/b-tree算法/Memory算法: java/0.x毫秒/0.x毫秒/0.1x毫秒 (使用RandomAccessFile) php/0.x毫秒/0.1x毫秒/0.1x毫秒 (php扩展将有更快的速度) c/0.0x毫秒/0.0x毫秒/0.00x毫秒(b-tree算法基本稳定在0.02x毫秒级别) python/0.x毫秒/0.1x毫秒/0.1x毫秒
任何客户端b-tree都比binary算法快
5. 测试程序:
java:
cd binding/java ant all java -jar ip2region-{version}.jar ./data/ip2region.db
php:
php binding/php/testSearch ./data/ip2region.db
c:
cd binding/c/ gcc -g -O2 testSearch.c ip2region.c ./a.out ../../data/ip2region.db
均会看到如下界面:
initializing B-tree ... +----------------------------------+ | ip2region test script | | Author: chenxin619315@gmail.com | | Type 'quit' to exit program | +----------------------------------+ ip2region>>
输入ip地址开始测试,第一次会稍微有点慢,在运行命令后面接入binary,memory来尝试对应算法,建议使用b-tree算法,有速度和并发追求的使用memory算法。具体集成请参考不同客户端的测试源码。
Ip2region 是什么 ip2region v2.0 - 是一个离线IP地址定位库和IP定位数据管理框架,10微秒级别的查询效率,提供了众多主流编程语言的 xdb 数据生成和查询客户端实现。 GitHub首页 xdb包下载 java使用首页 支持Python、Java、Go 等多种主流开发语言,详情见首页 ip2region xdb java 查询客户端实现 使用方式 maven 仓库: <d
nameNotFoundException:无法解析“localds”。已解决“”;剩余名称“localds” 有谁能帮忙吗。我遵循了这个stackOverflow问题Tomcat vs Weblogic JNDI查找中的说明,但没有任何成功。
问题内容: 如何在不使用Hibernate类的情况下在JPA中映射Map? 问题答案: 以下内容对您没有帮助吗? 可以是任何实体类型,包括。
我正在构建一个REST API, 和ActiveBid类 和我的泽西请求映射器,它具有获取数据的逻辑 有人能帮我吗?我不知道和卡桑德拉共事会这么难。
问题内容: 我正在一个小型嵌入式系统上工作。当我的linux启动到用户空间时,我知道物理内存中的设备在哪里。我想将它们映射到用户空间虚拟地址。目前,我正在通过内核模块进行操作。我使用vmalloc / kmalloc(取决于大小),然后在返回的虚拟地址上使用ioremap_page_range映射我的物理地址。我不认为这是正确的方法。首先,我分配内存,然后要求内核将虚拟地址空间重新映射到一些不同的
问题 你有一段通过下标访问列表或者元组中元素的代码,但是这样有时候会使得你的代码难以阅读, 于是你想通过名称来访问元素。 解决方案 collections.namedtuple() 函数通过使用一个普通的元组对象来帮你解决这个问题。 这个函数实际上是一个返回 Python 中标准元组类型子类的一个工厂方法。 你需要传递一个类型名和你需要的字段给它,然后它就会返回一个类,你可以初始化这个类,为你定义
当我重命名应用程序packagename并尝试启动springboot时,我得到一条错误消息。错误消息如下:
问题内容: 我有一个用于运行Web应用程序的docker-compose.yml文件。 在我的服务的容器内: 因此,我可以查找Web主机名并将其映射到IP地址,但在文件中看不到它。 如何专门设置这个知道IP地址的容器? 问题答案: Docker提供了DNS服务(搜索“容器之间的自动DNS解析”),而Docker Compose提供了使用它的默认“用户定义”网络 。如果您查看容器内部,它应该指向一个
名称映射规则 跟名称相关的函数包含在 xorm.io/xorm/names 下。名称映射规则主要负责结构体名称到表名和结构体 field 到表字段的名称映射。由 names.Mapper 接口的实现者来管理,xorm 内置了三种 Mapper 实现:names.SnakeMapper , names.SameMapper和names.GonicMapper。 SnakeMapper 支持struc