1、介绍
纯真社区版IP库是免费和公开的。该IP库文件同时支持IPv4和IPv6地理位置数据,具有占用内存小,访问速度快,数据更新快,集成方便快捷的特点。
2、下载
第一步、在纯真官网(https://www.cz88.com)上注册并登录。在菜单中点击离线库,选择“纯真社区版IP库”。
第二步、在纯真社区版IP库介绍页面上(https://www.cz88.com/geo-public),任意选取一种方式进行授权。
第三步、文件下载,下载CZCB格式,并复制密钥
3、使用 (Java Maven 项目)
添加依赖
<dependency>
<groupId>net.cz88</groupId>
<artifactId>czdb-search</artifactId>
<version>${cz88db.version}</version>
</dependency>
第一步、 创建实例
DbSearcher 支持2种查询类型:MEMORY 和 BTREE。
MEMORY:此模式是线程安全的,将数据存储在内存中。
BTREE:此模式使用 B-tree 数据结构进行查询。它不是线程安全的。不同的线程可以使用不同的查询对象。
你可以在创建 DbSearcher 实例时选择查询类型。
// 线程安全
DbSearcher searcher = new DbSearcher("数据库文件路径", QueryType.MEMORY, "密钥");
// 线程不安全
DbSearcher searcher = new DbSearcher("数据库文件路径", QueryType.BTREE, "密钥");
第二步、 查询
使用 search 方法来根据提供的 IP 地址在数据库中搜索数据。
String region = searcher.search("IP地址");
如果搜索成功,search 方法将返回找到的数据块的区域。如果搜索失败,它将返回 null。
返回的字符串格式为 “国家–省份–城市–区域 ISP”。例如,对于一个位于中国上海市虹口区的IP地址,返回的字符串可能是 “中国–上海–上海–虹口区 电信”。如果搜索失败,它将返回 null。
第三步、 释放资源
查询结束释放所有使用的资源,并关闭对数据库文件的访问。
什么时候释放取决于应用逻辑,并非是每次查询结束后就必须关闭,也可以是线程结束时才需要关闭数据库(每个线程一个DbSearcher )。
searcher.close();
注意事项:
高并发环境下使用 BTREE 查询模式,可能会导致打开的文件过多的错误,此情况可以通过增加内核中允许打开的最大文件数(fs.file-max)的方式进行控制;或者直接使用MEMORY方式进行查询。
官方支持编程语言(截至到2024-11-15)
★ JAVA语言 https://github.com/tagphi/czdb-search-java
★ PHP语言 https://github.com/tagphi/czdb_searcher_php
★ C语言 https://github.com/tagphi/czdb-search-c
★ Node.js 语言解析程序 https://github.com/limkim0530/czdb-search-node
★ Python 语言解析程序 https://github.com/tagphi/czdb_searcher_python