JAVA开发常用类库UUID、Optional、ThreadLocal、TimerTask、Base64使用方法与实例详解
1、UUID类库
UUID根据时间戳实现自动无重复字符串定义
//获取UUID publicstaticUUIDrandomUUID() //根据字符串获取UUID publicstaticUUIDfromString(Stringname)
应用:对文件进行自动命名处理
importjava.util.UUID;
classDemo{
publicstaticvoidmain(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参数
classMessage{
privateStringmessage;
publicMessage(Stringmessage){
this.message=message;
}
publicStringgetMessage(){
returnthis.message;
}
}
classDemo{
publicstaticvoidshowMessage(Messagemessage){
if(message!=null){
System.out.println(message.getMessage());
}
}
publicstaticvoidmain(String[]args){
Messagemessage=newMessage("这是消息");
showMessage(message);
showMessage(null);
}
}
几个方法
publicfinalclassOptional{ publicstatic Optional empty(){ @SuppressWarnings("unchecked") Optional t=(Optional )EMPTY; returnt; } publicstatic Optional of(Tvalue){ returnnewOptional<>(value); } publicstatic Optional ofNullable(Tvalue){ returnvalue==null?empty():of(value); } publicTget(){ if(value==null){ thrownewNoSuchElementException("Novaluepresent"); } returnvalue; } publicTorElse(Tother){ returnvalue!=null?value:other; } }
使用示例
importjava.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:Novaluepresent System.out.println(optOf.orElse("default")); //message System.out.println(optOfNullable.orElse("default")); //message System.out.println(optOfNullableNull.orElse("default")); //default
自定义函数实现
classDemo{
publicstaticStringgetDefault(Stringobject,StringdefaultValue){
returnobject!=null?object:defaultValue;
}
publicstaticvoidmain(String[]args){
System.out.println(getDefault("message","default"));
//message
System.out.println(getDefault(null,"default"));
//default
}
}
3、ThreadLocal类库
ThreadLocal解决线程同步问题
publicTget() publicvoidset(Tvalue) publicvoidremove()
定义发送消息类
classMessage{
privateStringmessage;
publicMessage(Stringmessage){
this.message=message;
}
publicStringgetMessage(){
returnthis.message;
}
}
classChannel{
privatestaticMessagemessage;
publicstaticvoidsetMessage(Messagemsg){
message=msg;
}
publicstaticvoidsend(){
System.out.println(message.getMessage());
}
}
单线程下运行
classDemo{
publicstaticvoidmain(String[]args){
Messagemessage=newMessage("你好");
Chanel.setMessage(message);
Chanel.send();
//你好
}
}
多线程下运行,出现数据覆盖现象
classDemo{
publicstaticvoidmain(String[]args){
newThread(()->{
Channel.setMessage(newMessage("你好-1"));
Channel.send();
},"线程-1").start();
newThread(()->{
Channel.setMessage(newMessage("你好-2"));
Channel.send();
},"线程-2").start();
newThread(()->{
Channel.setMessage(newMessage("你好-3"));
Channel.send();
},"线程-3").start();
/**
*线程-2你好-3
*线程-1你好-1
*线程-3你好-3
*/
}
}
改造Channel
classChannel{
//privatestaticMessagemessage;
privatestaticfinalThreadLocalTHREAD_LOCAL=newThreadLocal();
publicstaticvoidsetMessage(Messagemsg){
THREAD_LOCAL.set(msg);
}
publicstaticvoidsend(){
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任务启动
//定时启动 publicvoidschedule(TimerTasktask,longdelay) //间隔任务 publicvoidscheduleAtFixedRate(TimerTasktask,longdelay,longperiod)
定义任务
importjava.util.TimerTask;
classMyTaskextendsTimerTask{
@Override
publicvoidrun(){
System.out.println("任务启动"+System.currentTimeMillis());
}
}
示例:定时启动,会卡主
importjava.util.Timer;
classDemo{
publicstaticvoidmain(String[]args){
Timertimer=newTimer();
timer.schedule(newMyTask(),100);
//任务启动1574260837613
}
}
示例:间隔任务
classDemo{
publicstaticvoidmain(String[]args){
Timertimer=newTimer();
timer.scheduleAtFixedRate(newMyTask(),100,1000);
}
}
5、Base64类库加密与解密
加密解密示例
Stringmessage="HelloJava";
StringencodeMessage=newString(Base64.getEncoder().encode(message.getBytes()));
System.out.println(encodeMessage);
//SGVsbG8gSmF2YQ==
StringdecodeMessage=newString(Base64.getDecoder().decode(encodeMessage));
System.out.println(decodeMessage);
//HelloJava
最好的方法是使用2-3中加密程序,进行多次加密
加密解密示例
importjava.util.Base64;
classCrypto{
//加密重复次数,越高越安全
privatestaticfinalintREPEAT=3;
/**
*加密处理
*@parammessage
*@return
*/
publicstaticStringencode(Stringmessage){
byte[]data=message.getBytes();
//重复加密
for(inti=0;i
本文主要介绍了JAVA开发过程中常用类库UUID、Optional、ThreadLocal、TimerTask、Base64的基础使用方法,更多关于UUID、Optional、ThreadLocal、TimerTask、Base64类库的详细使用方法请查看下面的相关链接
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。