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


相关文章
makeinfo:未找到命令
makeinfo:未找到命令
540 0
|
5月前
|
人工智能 关系型数据库 API
Higress MCP 服务管理,助力构建私有 MCP 市场
Higress MCP 服务管理模块通过 OpenAPI、数据库及直接路由等方式快速构建 AI Agent 可调用的 MCP 服务,支持认证授权、流量控制等能力,助力企业高效打造私有化 MCP 市场。
|
8月前
|
人工智能 达摩院 搜索推荐
通义大模型:解码中国AI的"通"与"义"
“通义”取自中国传统文化中“通晓大义”,寓意技术与人文的结合。作为阿里巴巴旗下的超大规模语言模型,通义在知识蒸馏、动态稀疏激活和文化感知模块上实现三大突破,大幅提升效率与适切性。其已在医疗、司法、文化传播等领域落地,如辅助病历处理、法律文书生成及文物解说等。测试显示,通义在中文诗歌创作、商业报告生成等方面表现优异。同时,开放的开发者生态已吸引5万+创新者。未来,通义将探索长期记忆、自我反思及多智能体协作,向AGI迈进,成为智能本质的载体。其对中文语境情感的精准把握,更是中国AI“通情达义”的典范。
2100 22
|
消息中间件 负载均衡 NoSQL
TencentOS Server 配置 docker / docker-compose 一键部署 redis,rabbitmq 容器
TencentOS Server (tlinux 3.1)配置 docker,compose 工具,并一键部署多容器(redis,rabbitmq)。TencentOS Server 是腾讯公司自主研发的定制化服务器操作系统。该系统集成了众多服务 器系列的优点,加入自主研发的软件,便于用户操作使用,提供全方位(内核及用户态)的 操作系统支持...
2686 0
TencentOS Server 配置 docker / docker-compose 一键部署 redis,rabbitmq 容器
|
传感器 运维 物联网
蓝牙Mesh网络:连接未来的智能解决方案
蓝牙Mesh网络:连接未来的智能解决方案
2506 12
WK
|
机器学习/深度学习 运维 Java
Python 相对于 C++ 有哪些明显的优势
C++是一种强大且高效的编程语言,被广泛应用在系统软件、游戏开发、嵌入式系统等多个领域。然而Python在某些方面展现出显著优势:Python语法简洁直观,易于学习与使用,提高了代码的可读性和团队协作效率;拥有丰富的第三方库和框架资源,能有效提升开发效率;具备良好的跨平台性,无需大量修改即可适应不同操作系统;
WK
453 0
|
存储 持续交付 开发工具
clang-format
clang-format
1009 7
|
存储 监控 NoSQL
MongoDB介绍
MongoDB介绍
397 1
|
弹性计算 应用服务中间件 双11
阿里云2核2G4M轻量应用服务器49.68元一年(多配置可选)
2022阿里云双十一优惠活动2核2G轻量应用服务器4M带宽优惠价49.68元一年,多配置可选,配置不同价格不同,不只是轻量应用服务器还可以选择云服务器ECS
1142 0
阿里云2核2G4M轻量应用服务器49.68元一年(多配置可选)
DHCP的option43
DHCP的option43
826 4