UUID类
根据时间戳实现一个自动的无重复的字符串定义。
- 获取UUID:public static UUID randomUUID();
- 根据字符串获取UUID内容:public static UUID fromString(String name);
Optional类
- 返回空数据:public static Optional empty();
- 获取数据:public T get();
- 保存数据,但是不允许出现null static Optional of(T value);
- 保存数据,允许为空: public static Optional ofNullable(T value);
- 空的时候返回其他数据:public T orElse(T other);
ThreadLocal类
范例:
对于当前的实例,使用的是单线程模式来实现的。那么如果在多线程模式下,能不能实现同样的效果。
这个时候消息处理产生了影响,在设置消息的时候,可能第一个人的消息还没发出去,就已经被第二个人给修改了message内容。导致数据覆盖不同步。
在保持Channel(所有消息发送的通道)核心结构不改变的情况下,需要考虑到每个人线程独立操作问题。发现对于Channel类而言除了要保留有发送的消息之外,还应该多存放有一个每一个线程的的标记(当前线程)那么这时候就可以用ThreadLocal类来保存数据。在ThreadLocal类里面提供有如下的操作方法:
- 构造方法:public ThreadLocal();
- 设置数据::public void set(T value);
- 取出数据:public T get();
- 删除数据 :public void remove();
范例:解决线程同步问题
定时调度
- java.util.TimerTask类:实现定时任务处理
- java.util.Timer类:进行任务的启动,启动的方法;
- 任务启动:public void schedule(TimerTask task, long delay);
- 间隔触发:public void schedule(TimerTask task, long delay, long period);
范例:实现定时任务的处理
base64的加密与解密
Base64有两个内部类:
- Base64.Encoder:进行加密处理
- 加密处理:public byte[] encode(byte[] src);
- Base64.Decoder:进行解密处理
- 解密处理:public byte[] decode(byte[] src);
范例:实现加密与解密操作
公版加密意义不大,不存在安全性可言,所以还需要加盐操作。
改版:
尽管现在有盐值,但也不是很好。
改版: