您现在的位置是:首页 > 游戏攻略

再见ip.taobao,全网显示 IP 归属地,快用这个开源库

掌游情报站 2024-11-17【游戏攻略】276人已围观

简介作为技术人,那!这个功能要怎么实现呢?下面,我就来讲讲,Java中是如何获取IP属地的,主要分为以下几步:通过HttpServletRequest对象,获取用户的IP地址通过IP地址,获取对应的省份、城市首先需要写一个IP获取的工具类,因为每一次用户的Request请求,都会携带上请求的IP地址放到...

作为技术人,那!这个功能要怎么实现呢?

下面,我就来讲讲,Java中是如何获取IP属地的,主要分为以下几步:

通过HttpServletRequest对象,获取用户的IP地址

通过IP地址,获取对应的省份、城市

首先需要写一个IP获取的工具类,因为每一次用户的Request请求,都会携带上请求的IP地址放到请求头中

通过此方法,从请求Header中获取到用户的IP地址

原来的请求源码如下:

可以看到日志log文件中,大量的therequestovermaxqpsforuser问题

下面,给大家介绍下之前在Github冲浪时发现的今天的主角:

Ip2region开源项目,github地址:

99.9%准确率:多查询客户端的支持

已经集成的客户端有:java、C

ccd到javabinding的根目录cdbinding/java/mvncompilepackage

然后会在当前目录的target目录下得到一个ip2region-{version}.jar的打包文件。

查询测试

可以通过java-jarip2region-{version}.jarsearch命令来测试查询:

➜javagit:(_xdb)✗java-jartarget/{version}.jarsearch[commandoptions]options:--dbstringip2regionbinaryxdbfilepath--cache-policystringcachepolicy:file/vectorIndex/content

例如:使用默认的data/文件进行查询测试:

➜javagit:(_xdb)✗java-jartarget/=../../data/,cachePolicy:vectorIndextype'quit'{region:美国|0|华盛顿|0|谷歌,ioCount:7,took:82μs}ip2region

输入ip即可进行查询测试,也可以分别设置cache-policy为file/vectorIndex/content来测试三种不同缓存实现的查询效果。

bench测试

可以通过java-jarip2region-{version}.jarbench命令来进行bench测试,一方面确保xdb文件没有错误,一方面可以评估查询性能:

➜javagit:(_xdb)✗java-jartarget/{version}.jarbench[commandoptions]options:--dbstringip2regionbinaryxdbfilepath--srcstringsourceiptextfilepath--cache-policystringcachepolicy:file/vectorIndex/content

例如:通过默认的data/和data/文件进行bench测试:

➜javagit:(_xdb)✗java-jartarget/=../../data/=../../data/,{cachePolicy:vectorIndex,total:3417955,took:8s,cost:2μs/op}

可以通过分别设置cache-policy为file/vectorIndex/content来测试三种不同缓存实现的效果。@Note:注意bench使用的src文件要是生成对应xdb文件相同的源文件。

如若觉得有用,欢迎收藏+点赞,如遇到什么问题,欢迎留言讨论

很赞哦!(104)