Java 根据IP获取IP地址信息(离线)

     <!-- https://mvnrepository.com/artifact/org.lionsoul/ip2region --><dependency><groupId>org.lionsoul</groupId><artifactId>ip2region</artifactId><version>2.7.0</version></dependency>

地址:https://gitcode.com/lionsoul2014/ip2region/overview

将数据文件下载下来放到resources:


public class IPUtil {/*** 将整个xdb文件加载到内存中*/private final static Searcher SEARCHER;static {try {ClassPathResource resource = new ClassPathResource("ip2region.xdb");String path = resource.getURL().getPath();byte[] cBuff = Searcher.loadContentFromFile(path);SEARCHER = Searcher.newWithBuffer(cBuff);} catch (Exception e) {throw new RuntimeException("初始化ip2region.xdb异常!");}}/*** @Description 获取ip地址信息* @param ipStr 192.168.0.1* @Throws * @Return java.util.List<java.lang.String>  返回结果形式(国家|区域|省份|城市|ISP)* @Date 2024-03-08 17:43:45* @Author WangKun*/public static List<String> getIpAddress(String ipStr) {return getIpAddress(ipStr, null);}/*** @Description 获取ip地址信息* @param ipStr ip 经过转换后的* @param index * @Throws* @Return java.util.List<java.lang.String> * @Date 2024-03-08 17:43:51* @Author WangKun*/public static List<String> getIpAddress(String ipStr, int[] index) {try {long ip = Searcher.checkIP(ipStr);return getIpAddress(ip, index);} catch (Exception e) {throw new RuntimeException("ip解析为long系统异常!");}}/*** @Description 获取ip地址信息* @param ip* @param index* @Throws * @Return java.util.List<java.lang.String> * @Date 2024-03-08 17:43:55* @Author WangKun*/public static List<String> getIpAddress(Long ip, int[] index) {//获取xdb文件资源List<String> regionList = new ArrayList<>();try {String region = SEARCHER.search(ip);String[] split = region.split("\\|");if (index == null) {regionList = Arrays.asList(split);} else {for (int i : index) {regionList.add(split[i]);}}//关闭资源SEARCHER.close();} catch (Exception e) {throw new RuntimeException("ip解析地址异常!");}return regionList;}}

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

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

相关文章

【计算机网络】1.5 分组交换网中的时延、丢包和吞吐量

A.分组交换网中的时延 当分组从一个节点沿着路径到后一节点时&#xff0c;该分组在沿途的各个节点经受了几种不同类型的时延。 时延的类型 处理时延 - d n o d a l d_{nodal} dnodal​ 处理时延包括以下部分—— a. 检查分组首部 b. 决定分组导向 排队时延 - d p r o c d_{…

算法基础杂项

目录 1算法最优解 2.时间复杂度排序 3.对数器 1算法最优解 1.首先&#xff0c;保证时间复杂度最低 2.其次&#xff0c;保证空间复杂度最低 3.常数项低不低&#xff0c;一般没人管 2.时间复杂度排序 3.对数器 import java.util.Arrays;public class Test {public static …

Elasticsearch使用Kibana进行基础操作

一、Restful接口 Elasticsearch通过RESTful接口提供与其进行交互的方式。在ES中&#xff0c;提供了功能丰富的RESTful API的操作&#xff0c;包括CRUD、创建索引、删除索引等操作。你可以用你最喜爱的 web 客户端访问 Elasticsearch 。事实上&#xff0c;你甚至可以使用 curl …

Autoware.auto源码安装

自 2022 年以来&#xff0c;已将 Autoware 的开发迁移到 GitHub。目前Auto版本并没有进行最新维护 一、官网 Autoware.Auto (autowarefoundation.gitlab.io) 二、介绍 Autoware是世界上第一个由Autoware基金会托管的用于自动驾驶汽车的“一体化”开源软件。基于 ROS 2 的 Au…

C语言例:表达式(a=2,3),a+1的值

题目&#xff1a;设int a; 则表达式(a2,3),a1的值 #include<stdio.h> int main(void) {int a0;int b;int c;b (a2,4);c (a2,3),a1;printf("a1%d\n",a1); //a1 3;printf("a2,4的值为&#xff1a;%d\n",b); //a2,4的值为&…

开源模型应用落地-业务优化篇(八)

一、前言 在之前的学习中&#xff0c;我相信您已经学会了一些优化技巧&#xff0c;比如分布式锁、线程池优化、请求排队、服务实例扩容和消息解耦等等。现在&#xff0c;我要给您介绍最后一篇业务优化的内容了。这个优化方法是通过定时统计问题的请求频率&#xff0c;然后将一些…

【进阶五】Python实现SDVRP(需求拆分)常见求解算法——蚁群算法(ACO)

基于python语言&#xff0c;采用经典遗传算法&#xff08;ACO&#xff09;对 需求拆分车辆路径规划问题&#xff08;SDVRP&#xff09; 进行求解。 目录 往期优质资源1. 适用场景2. 代码调整3. 求解结果4. 代码片段参考 往期优质资源 经过一年多的创作&#xff0c;目前已经成熟…

Go函数全景:从基础到高阶的深度探索

目录 一、Go函数基础1.1 函数定义和声明基础函数结构返回值类型和命名返回值 1.2 参数传递方式值传递引用传递 二、Go特殊函数类型2.1 变参函数定义和使用变参变参的限制 2.2 匿名函数与Lambda表达式何为匿名函数Lambda表达式的使用场景 2.3 延迟调用函数&#xff08;defer&…

Arcgis新建位置分配求解最佳商店位置

背景 借用Arcgis帮助文档中的说明:在本练习中,您将为连锁零售店选择可以获得最大业务量的商店位置。主要目标是要将商店定位在人口集中地区附近,因为这种区域对商店的需求量较大。设立这一目标的前提是假设人们往往更多光顾附近的商店,而对于距离较远的商店则较少光顾。您…

禁止ie自动跳转edge

因为微软对ie已经彻底停止维护了&#xff0c;对于没有升级系统的用户来说&#xff0c;会自动更新edge然后将ie给禁止使用。下面方法有效的解决windows10下&#xff0c;禁止ie自动跳转edge。 方法一&#xff1a;对于2023年10月份前的更新可用 打开控制面板&#xff0c;点击网络…

STM32使用常见错误合集(正在更新版)

本文章记录一些学习STM32的一些错误问题 一、编译、烧录类问题 1、烧录不成功&#xff0c;Keil提示RDDI-DAP Error【场景&#xff1a;PWM驱动直流电机】 解决方案&#xff1a;将电机断开再进行烧录&#xff0c;断开后就可以美美烧录不报错啦~ 二、Keil使用问题 1、打开一个…

2 .Gen<I>Cam模块介绍

模块组成&#xff1a;GenApi&#xff0c;SFNC&#xff0c;GenTL&#xff0c;GenDC&#xff0c;GenCP。 首先让我来看下 GenTL (Transport Layer) GenApi( sometimes simply called the GenICam Standard) 传统相机应用程序二次开发&#xff0c;是基于相机厂家提供的sdk。使用…

IBM:《2024年消费者调研:无处不在的人工智能彻底变革零售业》

1月17日&#xff0c;IBM商业价值研究院最近发布了第三份两年一度的消费者调研报告。 这项名为《无处不在的人工智能彻底改变零售业&#xff1a;客户不会等待》的报告&#xff0c;对包含中国在内的全球近20000名消费者进行了调研&#xff0c;相关结果反映了消费者对零售体验的普…

Java中 常见的开源树库介绍

阅读本文之前请参阅------Java中 树的基础知识介绍 在 Java 中&#xff0c;有几种流行的开源树库&#xff0c;它们提供了丰富的树算法和高级操作&#xff0c;可以帮助开发者更高效地处理树相关的问题。以下是几种常见的 Java 树库及其特点和区别&#xff1a; JTree 特点…

使用SpaceDesk实现iPad成为电脑拓展屏(保姆级教程)

使用SpaceDesk实现iPad成为电脑拓展屏 SpaceDesk是一个开源的软件, 所以说对学生和平民用户非常的友好, 连接后的画质也非常不错, 而且具有无线和有线两种连接方式. 接下来就开始教程: 1. 安装SpaceDesk电脑版 首先我们要下载SpaceDesk电脑版安装好: SpaceDesk官网 注意: …

探索数据结构:双向链表的灵活优势

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty’s blog 1. 前言 前面我们学习了单链表&#xff0c;它解决了顺序表中插入删除需…

day-20 括号生成

思路:用dfs遍历所有的可能的括号组合&#xff0c;再通过istrue&#xff08;&#xff09;方法判断是否合法 code: class Solution {List<String> ansnew ArrayList<>();public List<String> generateParenthesis(int n) {int ln,rn;String s"";de…

在线考试系统,答题小程序 毕业设计作品

在线考试系统 介绍 在线考试系统&#xff0c;答题小程序&#xff0c;包含web版和小程序版&#xff0c; 支持全平台使用&#xff01;&#xff01;&#xff01; 这是一款 java vue 的前后端分离的考试系统。主要优点是开发、部署简单快捷、界面设计友好、代码结构清晰。支持we…

将Linux curl命令转换为windows平台的Python代码

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

3款国产良心软件,免费又实用,内存满了都舍不得卸载

以下三款软件质量卓越&#xff0c;失之交臂&#xff0c;实为遗憾。 1、文电通PDF 曾经一直依赖adobe reader来浏览PDF&#xff0c;但自从遇见文电通PDF&#xff0c;它的界面与Word如出一辙&#xff0c;让我这个习惯使用office的用户感到分外亲切。它不仅完全免费&#xff0c;…