当前位置: 首页 > wzjs >正文

分销网站开发文化建设的具体措施

分销网站开发,文化建设的具体措施,吴江区经济开发区规建设局网站,中国最大的现货交易平台在产品中可能存在不同客户端,请求同一个服务端接口的场景。 例如小程序和App或者浏览器中,如果需要对请求的归属地进行分析,前提是需要先获取请求所在的国家或城市,这种定位通常需要主动授权,而用户一般是不愿意提供的…

在产品中可能存在不同客户端,请求同一个服务端接口的场景。

例如小程序和App或者浏览器中,如果需要对请求的归属地进行分析,前提是需要先获取请求所在的国家或城市,这种定位通常需要主动授权,而用户一般是不愿意提供的,就需要通过请求的IP来进行归属地计算。

IP地址一般分为两种,IPV4和IPV6,相应的计算方式也有差异,以国家维度来参考,每个国家都有对应的网段范围,计算网段中的最小和最大IP地址的对应数值,然后对比请求的IP地址,来判断属于哪个国家的网段范围。

import cn.hutool.core.net.Ipv4Util;
import cn.hutool.core.util.StrUtil;
import java.math.BigInteger;
import java.net.InetAddress;public class IpCalculate {public static void main(String[] args) throws Exception {// IPv4 网段String ipv4Network = "IPv4 网段";String[] ipv4Param = StrUtil.splitToArray(ipv4Network, "/");// IPv4 起始和结束IPString ipv4StartIp = Ipv4Util.getBeginIpStr(ipv4Param[0],Integer.parseInt(ipv4Param[1]));String ipv4OverIp = Ipv4Util.getEndIpStr(ipv4Param[0],Integer.parseInt(ipv4Param[1]));System.out.println(ipv4StartIp);System.out.println(ipv4OverIp);// IPv4 起始和结束IP对应的Long值System.out.println(Ipv4Util.ipv4ToLong(ipv4StartIp));System.out.println(Ipv4Util.ipv4ToLong(ipv4OverIp));// IPv6 网段String ipv6Network = "IPv6 网段";String[] ipv6Param =ipv6Network.split("/");int prefixLength = Integer.parseInt(ipv6Param[1]);// IPv6 起始和结束IPInetAddress baseAddress = InetAddress.getByName(ipv6Param[0]);BigInteger baseValue = new BigInteger(1, baseAddress.getAddress());BigInteger mask = BigInteger.ONE.shiftLeft(128).subtract(BigInteger.ONE).shiftRight(128 - prefixLength).shiftLeft(128 - prefixLength);BigInteger minIp = baseValue.and(mask);BigInteger maxIp = minIp.add(BigInteger.ONE.shiftLeft(128 - prefixLength).subtract(BigInteger.ONE));System.out.println(toIPv6String(minIp));System.out.println(toIPv6String(maxIp));// IPv6 起始和结束IP对应的Long值System.out.println(minIp);System.out.println(maxIp);}private static String toIPv6String(BigInteger value) throws Exception {byte[] bytes = value.toByteArray();byte[] ipv6Bytes = new byte[16];int start = bytes.length > 16 ? bytes.length - 16 : 0;int length = Math.min(bytes.length, 16);System.arraycopy(bytes, start, ipv6Bytes, 16 - length, length);return InetAddress.getByAddress(ipv6Bytes).getHostAddress();}
}

不过网段地址和国家的对应关系需要进行维护,如果归属地分析不需要非常精准,可以直接使用开源的字典库,比如使用比较多的就是GeoIP2组件。

<dependency><groupId>com.maxmind.geoip2groupId><artifactId>geoip2</artifactId>
</dependency>

通过组件中提供的API加载相应的文件字典,然后传入IP地址进行归属地判断,这里要注意争议和敏感地区的处理,如果出错产品可不止是上热搜的问题了。

import com.maxmind.geoip2.DatabaseReader;
import java.io.File;
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;public class GeoIpTool {public static void main(String[] args) throws Exception {// 读取IP库文件File ipFile = new File("IP文件库");DatabaseReader reader = new DatabaseReader.Builder(ipFile).build();// IPV4地址InetAddress ipV4 = InetAddress.getByName("IPV4");if (ipV4 instanceof Inet4Address){System.out.println(reader.country(ipV4));System.out.println(reader.country(ipV4).getCountry());// 默认英文名System.out.println(reader.country(ipV4).getCountry().getName());// 查询中文名System.out.println(reader.country(ipV4).getCountry().getNames().get("zh-CN"));}// IPV6地址InetAddress ipV6 = InetAddress.getByName("IPV6");if (ipV6 instanceof Inet6Address){System.out.println(reader.country(ipV6));System.out.println(reader.country(ipV6).getCountry());// 默认英文名System.out.println(reader.country(ipV6).getCountry().getName());// 查询中文名System.out.println(reader.country(ipV6).getCountry().getNames().get("zh-CN"));}}
}

如果需要非常精确的实时归属地分析,可以购买专业的IP网段数据,实时更新到本地的数据库中,作为IP字典使用,获取请求的IP后,直接范围匹配即可。

CREATE TABLE `ip_place` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`network` varchar(100) DEFAULT NULL COMMENT '网段区间',`min_ip` bigint(20) DEFAULT NULL COMMENT '最小IP',`max_ip` bigint(20) DEFAULT NULL COMMENT '最大IP',`min_ip_number` bigint(20) DEFAULT NULL COMMENT '最小IP数值',`max_ip_number` bigint(20) DEFAULT NULL COMMENT '最大IP数值',`ip_place` varchar(100) DEFAULT NULL COMMENT '归属地',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='IP归属地';

最后需要补充说一句,对于很多标准的数据,尽可能在项目最初就设计好字典枚举或者数据表,避免后续规范时面临数据清洗的问题。


文章转载自:

http://6qKv1lok.byshd.cn
http://JpNxVA1B.byshd.cn
http://k3weGY5a.byshd.cn
http://by1TLt06.byshd.cn
http://sW0Fx2Xv.byshd.cn
http://mF6uO2s0.byshd.cn
http://ZARah1ji.byshd.cn
http://4cpEURH0.byshd.cn
http://hienjyZv.byshd.cn
http://hsDf8LJI.byshd.cn
http://Sd0IbpXF.byshd.cn
http://05aeWSHW.byshd.cn
http://CSzzcAp1.byshd.cn
http://3br3K1oA.byshd.cn
http://6o3pJs1z.byshd.cn
http://L2OlJDtK.byshd.cn
http://5OI8TetL.byshd.cn
http://vi3BAbD3.byshd.cn
http://kDcl4v1r.byshd.cn
http://pLMtr6Ed.byshd.cn
http://T8BoyiX9.byshd.cn
http://QqoCqz7n.byshd.cn
http://FT8aGxiH.byshd.cn
http://vQTvv4Ad.byshd.cn
http://5K3GwCqd.byshd.cn
http://694b6e7K.byshd.cn
http://6mj3N5ns.byshd.cn
http://yx1Iwzdb.byshd.cn
http://hIgK2ppB.byshd.cn
http://x13T21TG.byshd.cn
http://www.dtcms.com/wzjs/702366.html

相关文章:

  • 网站建设好找工作tp5手机网站开发
  • 网站平台策划方案网络营销推广方案案例
  • wordpress 登录用户名密码忘记seo网站推广技术
  • seo网站图片优化中国十大流量网站
  • 邢台公司做网站网站制作有限
  • 深圳建网站的中国猎头公司前十名
  • 做网站背景全覆盖的代码房和城乡建设部网站
  • 百度网站内容即刻搜索
  • 织梦网站模版下载上传网站数据库吗
  • 环球设计网aso优化榜单
  • 快速建站公司wordpress怎么搜站点
  • 拓客引流推广某企业网站的分析优化与推广
  • 可以做数学题的网站微网站制作多少钱
  • 灰色网站设计网络运营与推广
  • 网站名称重要吗购物帮 做特惠的导购网站
  • 怎么样做国外推广网站net网站开发 介绍
  • 赤壁市建设工程造价信息价网站查询搜索引擎的优化方法有哪些
  • 网站建设公司需要交税么正规网站建设推荐谁好呢
  • 仿360电影网站源码网络服务机构的网站
  • 自己设计好的网站怎么设置访问WordPress防刷登录
  • 网站页面排版中网建站
  • 网站seo百度百科网站销售公司
  • 新颖网站页面设计管理信息系统平台
  • php软件网站建设百度淘宝网
  • 网站建设需要多少钱?app制作外包公司
  • 平台网站建设网站绵阳市住房 和城乡建设局网站
  • 个人建站公司微信网站怎样做
  • 呼伦贝尔做网站潜江资讯网招聘信息手机版
  • 营销推广怎么做大连网站优化快速排名
  • 炒股配资网站建设凡科在线制作网站