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 这个工具类,这个工具类使用起来还是比较方便的。


相关文章
|
6月前
|
运维 监控 网络协议
IPv6地址之间的转换技术:NAT66
【4月更文挑战第25天】
864 0
IPv6地址之间的转换技术:NAT66
|
5月前
|
网络协议 网络架构
网络地址转换
网络地址转换
|
11月前
IP地址转换函数
IP地址转换函数
49 0
|
JSON 分布式计算 数据处理
IP 转换_环境准备 | 学习笔记
快速学习 IP 转换_环境准备
IP 转换_环境准备 | 学习笔记
|
缓存 分布式计算 关系型数据库
IP 转换_功能实现 | 学习笔记
快速学习IP 转换_功能实现
130 0
IP 转换_功能实现 | 学习笔记
|
算法 Java BI
IP 转换_IP2Region | 学习笔记
快速学习IP 转换_IP2Region
864 0
IP 转换_IP2Region | 学习笔记
|
存储
G - IP地址转换
IP地址总是由4个0-255的数字以"."隔开的形式来显示给用户,例如192.168.0.1。在计算机中,一个IP地址用4字节来依次存储其从右到左的4个数字部分,每个字节(8比特)以2进制的形式存储相应的IP地址数字,请你实现一个从IP地址的显示格式到计算机存储格式的转换。
942 0
|
网络安全 数据安全/隐私保护 网络架构
|
网络架构 应用服务中间件 网络安全