IP 转换_GeoLite | 学习笔记

简介: 快速学习IP 转换_GeoLite

开发者学堂课程【2020版大数据实战项目之 DMP 广告系统(第五阶段)IP 转换_GeoLite】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/680/detail/11808


IP 转换_GeoLite

 

选用 GeoLite 确定经纬度

1、本课程学习 GeoLite 如何使用?可以把 IP 转为省市信息,使用 GeoLite获取经纬度信息。使用 GeoLite 分为三步,第一步要复制一个数据集,这个数据集叫做 GeoLiteCity.dat ,把这个文件拷贝到 dataset 下,这个文件就是 GeoLite 框架附赠的数据集。第二步需要在 Maver pom.xml 配置文件当中导入两个依赖。

com. maxmind. geoip

gecip-api

1.3.0


com. maxmind.geoip2

geoip2

2.12.0


第一个叫做 geoip-api ,第二个叫做 geoip2。第三步就可以进行详细的编写。

val lookupService= new LookupService("dataset/GeoLiteCity. dat",

LookupService.GEOIP_MEMORY_CACHE)

val location = lookupService.getLocation("121.76.98.134")

println(location. latitude, location. longitude)

2、第一步拷贝 GeoLiteCity.dat 数据文件,进入到 files 目录下,在 files 目录下有一个叫 GeoLiteCity.dat 的文件,把它拷贝到 dataset 目录下,然后就可以进行相应 Maver 的导入。复制 Maver 的 dependency,复制完以后回到 IDEA 中,打开 pom.xml 文件,在 pom.xml 文件 IP 后面追加两个新的库,一个叫 geoip-api,一个叫 geoip2,这两个加载完以后就可以进行具体的代码编写。在进行代码编写时,还是先创建一个新的文件,打开 test,在 IPTest 当中先创建一个方法。location 一般指经纬度信息,把 ip 转为 Longitude 和 Latitude,一个是经度,一个是纬度。

3、转换整体步骤分为三步,第一步新创建搜索类,第二步进行搜索,第三步进行打印。入口叫做 service,service 叫做 LookupService 类,LookupService 当中接收两个参数,第一个参数是数据集的位置,数据集在 dataset 下叫做 GeoLiteCity.dat 。还有一个参数需要设置,这个参数是缓存的方式,缓存的方式

LookupService.GEOIP_MEMORY_CACHE,在内存里面缓存。Service 已经创建完成,一般情况下有两个参数,一行写不完可以分为两行。

下面进行搜索,service 有一个方法叫 getLocation,getLocation 当中还要进行 IP 的搜索,IP 用121.76.98.134。这个时候就获取到了一个对象,对象是 location 的对象。Location 对象的类型是一个叫做 Location 的类型。

4、最后进行打印,location.longitude,location.latitude,这个时候就已经把信息打印出来了,打印出来以后运行这段代码。

/**

*IP->Longitude, Latitude

*/

@Test

def ip2Location(): Unit = {

// 1.创建入口

val service=new LookupService(databaseFile= "dataset/

GeoLitCity. dat",

LookupService.GEOIP MEMORY CACHE

)

//2.搜索

val location:Location=service.getLocation(str="121.76.98.134")

//3.打印

println(location. Longitude, location. Latitude)

}

}

结果已经打印出来了,39969是经度,0455934纬度。

image.png

这样就结束了,会发现这些小工具使用起来还是比较方便简单的。之前提到过 GeoLite 里面会有一些问题,这个问题可以 location 打印一下,然后可以看到 area,看到 city、countryCode,还有 region,region 指的是省。

image.png

location.city 再来运行一下,看看他的省和市打印出来的内容是怎样的?直接region 的话打印的是 region 的 code,市的信息打印出来的是上海,但是它是拼音。如果想把拼音转化为中文,还是很麻烦的,所以干脆使用 ip2Region 这个工具类,这个工具类使用起来还是比较方便的。


相关文章
|
算法 JavaScript Java
使用强大的离线IP地址定位库ip2region获取城市信息
ip2region - 准确率99.9%的离线IP地址定位库,0.0x毫秒级查询,ip2region.db数据库只有数MB,提供了java、php、c、python、nodejs、golang、c#等查询绑定和Binary,B树,内存三种查询算法。
使用强大的离线IP地址定位库ip2region获取城市信息
|
关系型数据库 MySQL 数据库
【Navicat 连接MySQL时出现错误1251:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端】
【Navicat 连接MySQL时出现错误1251:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端】
1168 0
|
存储 Java Android开发
Android插件化动态加载apk
支付宝作为一个宿主apk提前将要集成的apk作为一个插件(plugin)下载到本地,然后当使用该plugin(apk)的时候再去加载对应plugin(apk)的资源文件以及对应的native页面。就是不去安装plugin(apk)就可以直接运行该plugin(apk)中的页面。
930 0
|
4月前
|
安全 数据安全/隐私保护
Burpsuite Proxy代理功能
Burpsuite Proxy代理功能
|
3月前
|
网络协议 应用服务中间件 网络安全
2024阿里云免费版SSL证书申请流程,跟着教程一步步,非常简单!
2024年最新阿里云免费SSL证书申请流程,品牌为Digicert,每个阿里云账号可免费申请20张单域名证书,免费时长为3个月。申请流程包括登录数字证书管理服务控制台、创建证书、域名验证和下载证书。详情请参考阿里云官方页面。
3691 2
|
4月前
|
SQL 关系型数据库 MySQL
MySQL异常一之: You can‘t specify target table for update in FROM clause解决办法
这篇文章介绍了如何解决MySQL中“不能在FROM子句中指定更新的目标表”(You can't specify target table for update in FROM clause)的错误,提供了错误描述、需求说明、错误做法和正确的SQL写法。
1263 0
|
9月前
|
关系型数据库 MySQL 数据库
实时计算 Flink版操作报错合集之sqlserver mysql都用的胖包,sqlserver的成功了,mysql报这个错如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
381 6
|
9月前
|
人工智能 机器人 API
【Python+微信】【企业微信开发入坑指北】3. 如何利用企业微信API给微信群推送消息
【Python+微信】【企业微信开发入坑指北】3. 如何利用企业微信API给微信群推送消息
377 0
|
9月前
|
开发框架 JavaScript API
uniapp如何实现跨端适配
uniapp如何实现跨端适配
273 0
|
算法 Java BI
IP 转换_IP2Region | 学习笔记
快速学习IP 转换_IP2Region
891 0
IP 转换_IP2Region | 学习笔记

热门文章

最新文章