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

大型网站建站公司软文网站模板

大型网站建站公司,软文网站模板,跟公司产品做网站,房价成交数据官网查询某些业务需要获取请求IP以及将IP解析成省份之类的#xff0c;于是我写了一个工具类#xff0c;可以直接COPY /*** IP工具类* author xxl* since 2023/11/9*/ Slf4j public class IPUtils {/*** 过滤本地地址*/public static final String LOCAL_ADDRESS 127.0.0.1于是我写了一个工具类可以直接COPY /*** IP工具类* author xxl* since 2023/11/9*/ Slf4j public class IPUtils {/*** 过滤本地地址*/public static final String LOCAL_ADDRESS 127.0.0.1;public static final String LOOP_BACK_ADDRESS 0:0:0:0:0:0:0:1;/*** 离线查询IP地址的数据文件,这个文件去ip2region GitHub官方仓库获取*/private static String IP_ADDRESS_FILE_PATH ;/*** 前从 xdb 文件中加载出来 VectorIndex 数据然后全局缓存* 每次创建 Searcher 对象的时候使用全局的 VectorIndex 缓存可以减少一次固定的 IO 操作* 从而加速查询减少 IO 压力。*/private static byte[] vIndex null;private static Searcher searcher null;static {try {//这个ip2region.xdb我是放在/resources/data/ip2region.xdb目录下的String fileName /data/ip2region.xdb;File existFile FileUtil.file(FileUtil.getTmpDir() FileUtil.FILE_SEPARATOR fileName);if(!FileUtil.exist(existFile)) {InputStream resourceAsStream IPUtils.class.getResourceAsStream(fileName);FileUtil.writeFromStream(resourceAsStream, existFile);}IP_ADDRESS_FILE_PATH existFile.getPath();// 从 db 中预先加载 VectorIndex 缓存并且把这个得到的数据作为全局变量后续反复使用。vIndex Searcher.loadVectorIndexFromFile(IP_ADDRESS_FILE_PATH);// 使用全局的 vIndex 创建带 VectorIndex 缓存的查询对象。searcher Searcher.newWithVectorIndex(IP_ADDRESS_FILE_PATH, vIndex);} catch (Exception e) {throw new RuntimeException(IPUtils class load error, e);}}/*** 每个线程需要单独创建一个独立的 Searcher 对象但是都共享全局的制度 vIndex 缓存。* param ip IP* return IP地址*/public static String getCity(String ip) {String search null;try {search searcher.search(ip);} catch (Exception e) {throw new RuntimeException(getCity fail,e);}return search;}/*** 获取 IP** param request 请求* return 字符串*/public static String getIp(HttpServletRequest request) {String ip null;try {//解析IPip new ChainUtils(request.getHeader(X-Forwarded-For))//多次反向代理后会有多个ip值第一个ip才是真实ip.chain(re - StrUtil.isNotBlank(re) ? (re.contains(DOT) ? re.substring(0, re.indexOf(DOT)) : EMPTY) : re)//依次查找IP.chain(re - StrUtil.isNotBlank(re) ? re : request.getHeader(X-Real-IP)).chain(re - StrUtil.isNotBlank(re) ? re : request.getHeader(Proxy-Client-IP)).chain(re - StrUtil.isNotBlank(re) ? re : request.getHeader(WL-Proxy-Client-IP)).chain(re - StrUtil.isNotBlank(re) ? re : request.getHeader(HTTP_CLIENT_IP)).chain(re - StrUtil.isNotBlank(re) ? re : request.getHeader(HTTP_X_FORWARDED_FOR)).chain(re - StrUtil.isNotBlank(re) ? re : request.getRemoteAddr())//过滤本地地址.chain(re - StrUtil.isNotBlank(re) ? (LOOP_BACK_ADDRESS.equals(re) ? LOCAL_ADDRESS : re) : re).getValue(true);} catch (Exception e) {log.error(getIp fail, e);}return ip;} }使用以上工具类需要以下依赖和一个自定义工具类 !-- 解析IP -- dependencygroupIdorg.lionsoul/groupIdartifactIdip2region/artifactIdversion2.7.0/version /dependency !-- hutool -- dependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.8.20/version /dependencyChainUtil为什么写这个工具类在解析请求中的IP参考了https://blog.csdn.net/chwshuang/article/details/71940858此博客中部分代码如下图可以发现有很多if判断很难看不好维护。于是就写了以下的工具类 /*** author: xxl* since: 2023/11/9* description: 解决ifelse地狱*/ AllArgsConstructor public class ChainUtilT {/*** 存储的值*/private T value;public E ChainUtilE chain(FunctionT,E function) {return new ChainUtil(function.apply(value));}/*** 获取存储的值** param isNullForException 如果存储的值为null是否抛出异常* return T*/public T getValue(boolean isNullForException) {if (isNullForException) {Assert.notNull(value, () - new RuntimeException(chain value is null));}return value;} }if地狱
http://www.w-s-a.com/news/343806/

相关文章:

  • 用jsp做的可运行的网站推广网络
  • 电商网站设计论文wordpress子文件夹建站
  • 临沂网站优化如何如何做公司的网站建设
  • 建设部网站 光纤到户沈阳网页设计兼职
  • 企业网站建设作用宁波企业网站推广效果好
  • wordpress课件站模板做网站的公司 贵阳
  • 低价格网站建设网站建设中的板块名称
  • 青岛网站建设华夏h5链接是什么意思
  • 贸易公司如何做网站百度做的网站一般在什么后台
  • 东莞网站设计方案广州做服装电商拿货的网站
  • 部队网站建设设计dede个人网站模板
  • 个人网站怎么自己备案重庆怎样网站推广
  • 做电影网站挣钱吗重庆网站建设技术托管
  • 网站建设用户登录网站商业授权含义
  • 接做室内效果图的网站wordpress制作上传图片
  • 维护一个网站一年多少钱网站微信登录怎么做的
  • 中国建设银行网站E路护航官网如何在招聘网站上选个好公司做销售
  • 网站开发质量管理招聘网站建设方案
  • 有没有那个的网站seo编辑的工作内容
  • 平度那里有做网站的昆明建设招聘信息网站
  • 邯郸城乡建设部网站首页唐山市住房城乡建设部网站主页
  • 慕课联盟网站开发实战六安品牌网站建设电话
  • 制作企业网站首页贵州小程序制作开发
  • 什么是网站后台郑州众志seo
  • 做线上交互的网站分销平台
  • 培训机构网站开发江门cms模板建站
  • 网站描述模板建筑模型网站有哪些
  • 域名注册费用张家界seo
  • 淘宝联盟怎么自己做网站山西省住房与城乡建设厅网站
  • 最新网站建设常见问题使用微信推广的各种方法