0
点赞
收藏
分享

微信扫一扫

201230:PropUtils的使用-List<Map>进行排序-RestTemplate详解-内网、外网区别

向上的萝卜白菜 2021-09-28 阅读 22
每日复盘

一. PropUtils的使用

Java读取和修改properties文件

方法说明:

  1. Properties getProperties(String filepath):根据路径读取属性文件,返回Properties类;
  2. void saveProperties(Properties prop,String filepath):保存属性到指定路径(如果文件不存在,请先创建File);
  3. String getConfigValue(String key):获取指定Key的属性;
  4. void setConfigValue(String key,String value):设置指定Key的属性值。
package com.tompai.util;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.Properties;

/**
* @desc: demo
* @name: PropUtils.java
* @author: tompai
* @email:liinux@qq.com
* @createTime: 2020年1月11日 下午10:41:06
* @history:
* @version: v1.0
*/

public class PropUtils {
    public static String LOCATION;
    public static final String CONFIG = "application.properties";

    static{
        try {
            String temp = URLDecoder.decode(PropUtils.class.getProtectionDomain().getCodeSource().getLocation().getFile(), "UTF-8");
            LOCATION = temp.substring(1, temp.lastIndexOf('/'));
        } catch (UnsupportedEncodingException e) {
            LOCATION = "";
        }

    }
    /**
     * @param args
     * @throws Exception 
     */
    public static Properties getProperties(String filepath) throws Exception {
        Properties prop = new Properties();
        FileInputStream fis = new FileInputStream(LOCATION+"/"+filepath);
        prop.load(fis);
        return prop;
    }

    public static void saveProperties(Properties prop,String filepath) throws Exception {
        FileOutputStream fos = new FileOutputStream(LOCATION+"/"+filepath);
        prop.store(fos, "@author tompai");
        fos.close();
    }

    public static String getConfigValue(String key) {
        try {
            Properties properties = getProperties(CONFIG);
            if(properties.get(key)!=null){
                return properties.get(key).toString();
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        return "";
    }

    public static void setConfigValue(String key,String value){
        try {
            Properties properties = getProperties(CONFIG);
            properties.setProperty(key, value);
            saveProperties(properties, CONFIG);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

二. List集合里面是map类型进行排序

Collections.sort(mapList,new Comparator<>(){...})

/**1.根据用户浏览量进行排序
//   例:
List<Map<String,Object>> mapList= new ArrayList<>();
注:mapList里面存在 browserNum属性
*/ 
//排序 倒序
    if (mapList != null && mapList .size() > 1) {
            Collections.sort(mapList , new Comparator<Map<String, Object>>() {
                @Override
                public int compare(Map<String, Object> o1, Map<String, Object> o2) {
                    Integer o1Value = Integer.valueOf(o1.get("browserNum").toString());
                    Integer o2Value = Integer.valueOf(o2.get("browserNum").toString());
                    return o1Value.compareTo(o2Value);
                }
            });
        }
            return mapList;
//想要顺序的话可以调换一下返回值

三. RestTemplate详解

RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。

1. 简述RestTemplate

RestTemplate能大幅简化了提交表单数据的难度,并且附带了自动转换JSON数据的功能,但只有理解了HttpEntity的组成结构(header与body),且理解了与uriVariables之间的差异,才能真正掌握其用法。这一点在Post请求更加突出,下面会介绍到。

该类的入口主要是根据HTTP的六个方法制定:

此外,exchange和excute可以通用上述方法。

在内部,RestTemplate默认使用HttpMessageConverter实例将HTTP消息转换成POJO或者从POJO转换成HTTP消息。默认情况下会注册主mime类型的转换器,但也可以通过setMessageConverters注册其他的转换器。

RestTemplate详情看这篇文章

四. 内网、外网、宽带、带宽、流量、网速之间的区别与联系

1. 内网ip和外网ip区别

如图,假设我们的计算机是设备一,想要访问百度。

这个过程就跟淘宝购物差不多。

这对刚接触互联网的人来说有些难以理解内网ip和公网ip的区别,那我们在举一个例子

注意点

1、公网ip具有世界范围的唯一性,而内网ip只在局域网内部具有唯一性

2、一个局域网里所有电脑的内网IP互不相同的,共用一个外网IP

3、在局域网中,每台电脑都可以自己分配自己的IP,但是这个IP只在局域网中有效。而如果你将电脑连接到互联网,你的网络提供商的服务器会为你分配一个IP地址,这个IP地址才是你在外网的IP。两个IP同时存在,一个对内,一个对外。

4、互联网上的IP(即外网IP)地址统一由一个叫“IANA(互联网网络号分配机构)”的组织来管理。由于分配不合理以及IPv4协议本身存在的局限,现在互联网的IP地址资源越来越紧张。IANA将A、B、C类IP地址的一部分保留下来,留作局域网使用。具体如下

IP地址空间:

a类网
10.0.0.0 ~ 10.255.255.255

b类网
172.16.0.0 ~ 172.31.255.255

c类网
192.168.0. 0~ 192.168.255.255

也就是说,如果你查到的ip地址在以上A、B、C类IP地址的范围内,它一定就是局域网的ip地址,否则就是公网的地址。

5、实际生活中不仅有一级NET技术,还有二级NET技术。也就是可能你的校园网关也只是个局域网。通过多级转换可以得到更多的地址。

1.经验法

1、一般电信ADSL带宽在未升级大带宽前是(动态)公网IP。如果花费很少的钱给你升级为100M光纤上网,99.99%是内网IP,那0.01%是我还没有发现过案例。

2、代理网络运营商99.99%都是内网IP,如长城带宽、聚友E家等。

3、光纤上网的99.99%都是内网IP。

2.直观法

以下IP段的地址都是内网IP地址

10.0.0.0 到 10.255.255.255
172.16.0.0 到172.31.255.255
192.168.0.0 到192.168.255.255

详细区别情况该文章

举报

相关推荐

0 条评论