开发支持类库

开发支持类库

1、UUID类

  • 方法

获取UUID对象:public static UUID randomUUID()
根据字符串获取UUID内容:public static UUID fromString(String name)
  • 作用

对文件进行自动命名,使用UUID类

2、Optional类

  • 作用

对null做一些相关处理
  • 方法

返回数据:public static<T> Optional<T> empty()
获取数据 public T get()
保存数据但不允许出现null:public static <T> Optional<T> of(T value)
保存数据允许有null:public static <T> Optional<T> ofNullable(T value)
null的时候返回其他数据:public T orElse(T other)
  • 范例

public class Test02 {
   public static void main(String[] args) {
       // 为null,报错java.util.NoSuchElementException: No value present
       //Message02.getMessage03().get().useMessage02();
       // 处理办法
       Message02.getMessage03().orElse(Message02.getMessage02()).useMessage02();
  }
}
class Message02{
   private Message02(){
  }
   public static Message02 getMessage02() {
       return new Message02();
  }
   public static Optional<Message02> getMessage03() {
       //return Optional.of(getMessage02());// 不为空
       //return Optional.of(null); // 为空,报错java.lang.NullPointerException
       // 为空处理办法
       return Optional.ofNullable(null);// 可以为空
  }
   public  void useMessage02(){
       System.out.println("hello world");
  }
}

3、ThreadLocal类

  • 作用

把对象与线程对象绑定在一起,保证线程同步。
每个线程通过ThreadLocal只允许保存一个数据
  • 方法

构造方法:public ThreadLocal()
设置数据:public void set(T value)
取出数据:public T get();
删除数据:public void remove()
public class Test03 {
   public static void main(String[] args) {
       new Thread(()->{
           Message message=new Message();  // 创建message对象
           message.setInfo("hello A");   // 设置信息
           Channel.setMessage(message);// 设置要发送的信息
           Channel.sendMessage();// 发送信息
      },"发送消息A").start();
       new Thread(()->{
           Message message=new Message();  // 创建message对象
           message.setInfo("hello B");   // 设置信息
           Channel.setMessage(message);// 设置要发送的信息
           Channel.sendMessage();// 发送信息
      },"发送消息B").start();
       new Thread(()->{
           Message message=new Message();  // 创建message对象
           message.setInfo("hello C");   // 设置信息
           Channel.setMessage(message);// 设置要发送的信息
           Channel.sendMessage();// 发送信息
      },"发送消息C").start();
  }
}
// 消息对象
class Message{
   private String info;
   public String getInfo() {
       return this.info;
  }
   public void setInfo(String info) {
       this.info = info;
  }
}

class Channel{
   private final static ThreadLocal<Message> THREAD_LOCAL=new ThreadLocal<>();
   private Channel(){}
   public static void setMessage(Message m) {
       THREAD_LOCAL.set(m);// 把对象与当前线程绑定在一起
  }
   public static void sendMessage(){
       System.out.println(Thread.currentThread().getName()+":消息发送:"+THREAD_LOCAL.get().getInfo());// 从当前线程中获取Message对象
  }
}
发送消息B:消息发送:hello B
发送消息C:消息发送:hello C
发送消息A:消息发送:hello A

4、定时调度

  • 作用

进行定时任务的处理,实现固定年月日时分秒实现很复杂,不适用此场景。
  • TimerTask抽象类

  • Timer类

启动定时任务:public void schedule(TimerTask task,long delay)
间隔启动定时任务:public void scheduleAtFixedRate(TimerTask task,long delay,long period)
  • 范例

public class Test04 {
    public static void main(String[] args) {
        Demo01 demo01=new Demo01();
        Timer timer=new Timer();
        //timer.schedule(demo01,1000);// 延迟1000毫秒后启动
        // 延迟1000秒后 每隔1000秒启动一次
        timer.scheduleAtFixedRate(demo01,1000,1000);
    }
}
class Demo01 extends TimerTask{
    @Override
    public void run() {
        // 需要处理的定时任务
        System.out.println(Thread.currentThread().getName()+":定时任务执行,"+System.currentTimeMillis());
    }
}

5、Base64加密和解密

加密:Base64.Encoder
	-- 加密处理:public byte[] encode(byte[] src)
解密:Base64.Decoder
	-- 解密处理: public byte[] decode(String src)
  • 范例

public class Test05 {
    private static final String SALT="hdsjijgd"; // 加密的盐值
    private static final int REPATE=3;  //加密的次数
    public static void main(String[] args) {
        String message="hello";
        message=encode(message);
        System.out.println("加密后:"+message);
        message=decode(message);
        System.out.println("解密后:"+message);
    }
    // 加密处理
    public static String encode(String str){
        String temp=str+"{"+SALT+"}";
        byte[] data=temp.getBytes();
        for (int i = 0; i <REPATE; i++) {
            data= Base64.getEncoder().encode(data);//重复加密
        }
        return new String(data);s
    }
    // 解密处理
    public static String decode(String str){
        byte[] data=str.getBytes();
        for (int i = 0; i <REPATE; i++) {
            data= Base64.getDecoder().decode(data);// 重复解密
        }
        return new String(data).replaceAll("\\{\\w+\\}","");// 正则处理字符串
    }
}
加密后:WVVkV2MySkhPVGRoUjFKNllXMXNjVm95VWprPQ==
解密后:hello

 

posted @ 2021-08-17 23:01  黎白昼  阅读(54)  评论(0)    收藏  举报