zoukankan      html  css  js  c++  java
  • 新报: 根据IP获取物理地址不需要调用接口啦

    一、 复制data文件夹到自己的项目当中

    可以进行加载到这个文件即可 博主放入在项目的根目录当中

    请移步Gitee pull 该文件 https://gitee.com/yangbuyi/ip_file

    https://gitee.com/yangbuyi/ip_file

    获取点击量来一波 https://www.yangbuyi.top/login.html

    https://www.yangbuyi.top/login.html
    代码图

    带入maven依赖 因为这个编辑器的原因 复制依赖 显示不出来淦!!!! 图片自己打吧

      
            
                org.lionsoul
                ip2region
                1.7.2
            
    

    二、最重要的一步 编译地理位置

    找到自己的项目地址

    执行打开cmd 执行这段代码

    java -Dfile.encoding=utf-8 -jar dbMaker-1.2.2.jar -src ./data/ip.merge.txt -region ./data/global_region.csv

    java -Dfile.encoding=utf-8 -jar dbMaker-1.2.2.jar -src ./data/ip.merge.txt -region ./data/global_region.csv
    


    请跟着一步步来


    代码开始 创建iputils

    package top.yangbuyi.system.webapi;
    
    import org.lionsoul.ip2region.DataBlock;
    import org.lionsoul.ip2region.DbConfig;
    import org.lionsoul.ip2region.DbSearcher;
    import org.lionsoul.ip2region.Util;
    
    import java.io.File;
    import java.io.UnsupportedEncodingException;
    import java.lang.reflect.Method;
    import java.net.URLDecoder;
    
    /**
     * description:  杨不易网站 :www.yangbuyi.top
     * program:  yangbuyi-erp-2020
     * ClassName:  iputils
     * create:  2020-07-10 09:20
     *
     * @author: yangbuyi
     * @since: JDK1.8
     * @iputils:
     **/
    
    /**
     * 具体请看 SQL当中的 data文件  和jar包
     * 通过下面语句进行 编译 地理位置
     * java -jar dbMaker-1.2.2.jar -src ./data/ip.merge.txt -region ./data/global_region.csv
     */
    
    public class iputils {
          
          public static String getCityInfo(String ip) throws UnsupportedEncodingException {
                //db
                String dbPath = new File("SQL/data/ip2region.db").getPath();
                dbPath = URLDecoder.decode(dbPath, "UTF-8");
                File file = new File(dbPath);
                if (file.exists() == false) {
                      System.out.println("Error: Invalid ip2region.db file");
                }
                //查询算法
                int algorithm = DbSearcher.BTREE_ALGORITHM; //B-tree
                //DbSearcher.BINARY_ALGORITHM //Binary
                //DbSearcher.MEMORY_ALGORITYM //Memory
                try {
                      DbConfig config = new DbConfig();
                      DbSearcher searcher = new DbSearcher(config, dbPath);
                      //define the method
                      Method method = null;
                      switch (algorithm) {
                            case DbSearcher.BTREE_ALGORITHM:
                                  method = searcher.getClass().getMethod("btreeSearch", String.class);
                                  break;
                            case DbSearcher.BINARY_ALGORITHM:
                                  method = searcher.getClass().getMethod("binarySearch", String.class);
                                  break;
                            case DbSearcher.MEMORY_ALGORITYM:
                                  method = searcher.getClass().getMethod("memorySearch", String.class);
                                  break;
                      }
                      DataBlock dataBlock = null;
                      if (Util.isIpAddress(ip) == false) {
                            System.out.println("Error: Invalid ip address");
                      }
                      dataBlock = (DataBlock) method.invoke(searcher, ip);
                      String decode = URLDecoder.decode(dataBlock.getRegion(), "UTF-8");
                      return decode;
                } catch (Exception e) {
                      e.printStackTrace();
                }
                return null;
          }
          
          public static void main(String[] args) throws Exception {
                System.err.println(iputils.getCityInfo("106.18.167.102"));
          }
          
    }
    

    最后 测试代码

    太累了吧!!!!

  • 相关阅读:
    尝试一个“建立知识”的过程
    webscheduler 开源定时服务和延迟服务
    两款自定义表单设计器
    IIS应用池保持激活工具开发
    写文章 使用conda管理python环境
    conda 虚拟环境
    Java设计模式
    转:数据标准化/归一化normalization
    转:理解矩阵
    转:为何梯度反方向是函数值下降最快的方向
  • 原文地址:https://www.cnblogs.com/Yangbuyi/p/13280997.html
Copyright © 2011-2022 走看看