1、UUID类库
UUID 根据时间戳实现自动无重复字符串定义

十余年的镇原网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整镇原建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联公司从事“镇原网站设计”,“镇原网站推广”以来,每个客户项目都认真落实执行。
// 获取UUID public static UUID randomUUID() // 根据字符串获取UUID public static UUID fromString(String name)
应用:对文件进行自动命名处理
import java.util.UUID;
class Demo {
public static void main(String[] args) {
System.out.println(UUID.randomUUID());
// 85a8ccb1-88f8-4b3c-833d-d45b58e0204e
System.out.println(UUID.fromString("85a8ccb1-88f8-4b3c-833d-d45b58e0204e"));
// 85a8ccb1-88f8-4b3c-833d-d45b58e0204e
}
}2、Optional类库
Optional 主要功能是进行null空指针处理
JDK >= 1.8
示例:单独处理null参数
class Message{
private String message;
public Message(String message) {
this.message = message;
}
public String getMessage(){
return this.message;
}
}
class Demo {
public static void showMessage(Message message) {
if(message != null){
System.out.println(message.getMessage());
}
}
public static void main(String[] args) {
Message message = new Message("这是消息");
showMessage(message);
showMessage(null);
}
}几个方法
public final class Optional{ public static Optional empty() { @SuppressWarnings("unchecked") Optional t = (Optional ) EMPTY; return t; } public static Optional of(T value) { return new Optional<>(value); } public static Optional ofNullable(T value) { return value == null ? empty() : of(value); } public T get() { if (value == null) { throw new NoSuchElementException("No value present"); } return value; } public T orElse(T other) { return value != null ? value : other; } }
使用示例
import java.util.Optional; /** * 存入 */ OptionaloptOf = Optional.of("message"); // Optional optOfNull = Optional.of(null); // java.lang.NullPointerException Optional optOfNullable = Optional.ofNullable("message"); Optional optOfNullableNull = Optional.ofNullable(null); /** * 取出 */ System.out.println(optOf.get()); // message System.out.println(optOfNullable.get()); // message // System.out.println(optOfNullableNull.get()); // java.util.NoSuchElementException: No value present System.out.println(optOf.orElse("default")); // message System.out.println(optOfNullable.orElse("default")); // message System.out.println(optOfNullableNull.orElse("default")); // default
自定义函数实现
class Demo {
public static String getDefault(String object, String defaultValue){
return object != null ? object : defaultValue;
}
public static void main(String[] args) {
System.out.println(getDefault("message", "default"));
// message
System.out.println(getDefault(null, "default"));
// default
}
}3、ThreadLocal类库
ThreadLocal解决线程同步问题
public T get() public void set(T value) public void remove()
定义发送消息类
class Message{
private String message ;
public Message(String message) {
this.message = message;
}
public String getMessage(){
return this.message;
}
}
class Channel{
private static Message message;
public static void setMessage(Message msg){
message = msg;
}
public static void send(){
System.out.println(message.getMessage());
}
}单线程下运行
class Demo {
public static void main(String[] args) {
Message message = new Message("你好");
Chanel.setMessage(message);
Chanel.send();
// 你好
}
}多线程下运行,出现数据覆盖现象
class Demo {
public static void main(String[] args) {
new Thread(()->{
Channel.setMessage(new Message("你好-1"));
Channel.send();
}, "线程-1").start();
new Thread(()->{
Channel.setMessage(new Message("你好-2"));
Channel.send();
}, "线程-2").start();
new Thread(()->{
Channel.setMessage(new Message("你好-3"));
Channel.send();
}, "线程-3").start();
/**
* 线程-2 你好-3
* 线程-1 你好-1
* 线程-3 你好-3
*/
}
}改造 Channel
class Channel{
// private static Message message;
private static final ThreadLocal THREAD_LOCAL = new ThreadLocal();
public static void setMessage(Message msg){
THREAD_LOCAL.set(msg);
}
public static void send(){
System.out.println(Thread.currentThread().getName()
+ " "
+ THREAD_LOCAL.get().getMessage());
}
}
// 执行后数据对应
/**
线程-2 你好-2
线程-1 你好-1
线程-3 你好-3
*/ ThreadLocal, 只允许保存一个数据
4、TimerTask类库定时调度
定时器进行定时任务处理,实现了一种间隔触发操作
java.util.TimerTask 定时任务处理
java.util.Timer 任务启动
// 定时启动 public void schedule(TimerTask task, long delay) // 间隔任务 public void scheduleAtFixedRate(TimerTask task, long delay, long period)
定义任务
import java.util.TimerTask;
class MyTask extends TimerTask{
@Override
public void run() {
System.out.println("任务启动 " + System.currentTimeMillis());
}
}示例:定时启动,会卡主
import java.util.Timer;
class Demo {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new MyTask(), 100);
// 任务启动 1574260837613
}
}示例:间隔任务
class Demo {
public static void main(String[] args) {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new MyTask(), 100, 1000);
}
}5、Base64类库加密与解密
加密解密示例
String message = "Hello Java";
String encodeMessage = new String(Base64.getEncoder().encode(message.getBytes()));
System.out.println(encodeMessage);
// SGVsbG8gSmF2YQ==
String decodeMessage = new String(Base64.getDecoder().decode(encodeMessage));
System.out.println(decodeMessage);
// Hello Java
最好的方法是使用2-3中加密程序,进行多次加密
加密解密示例
import java.util.Base64;
class Crypto{
// 加密重复次数,越高越安全
private static final int REPEAT = 3;
/**
* 加密处理
* @param message
* @return
*/
public static String encode(String message){
byte[] data = message.getBytes();
// 重复加密
for (int i = 0; i < REPEAT; i++) {
data = Base64.getEncoder().encode(data);
}
return new String(data);
}
public static String decode(String message){
byte[] data = message.getBytes();
for (int i = 0; i < REPEAT; i++) {
data = Base64.getDecoder().decode(data);
}
return new String(data);
}
}
class Demo {
public static void main(String[] args) {
String message = "Hello Java";
String encodeMessage = Crypto.encode(message);
System.out.println(encodeMessage);
// VTBkV2MySkhPR2RUYlVZeVdWRTlQUT09
String decodeMessage = Crypto.decode(encodeMessage);
System.out.println(decodeMessage);
// Hello Java
}
}本文主要介绍了JAVA开发过程中常用类库UUID、Optional、ThreadLocal、TimerTask、Base64的基础使用方法,更多关于UUID、Optional、ThreadLocal、TimerTask、Base64类库的详细使用方法请查看下面的相关链接
文章标题:JAVA开发常用类库UUID、Optional、ThreadLocal、TimerTask、Base64使用方法与实例详解
转载源于:http://www.jxjierui.cn/article/ghogpi.html


咨询
建站咨询
