日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA计时函数的库_JAVA开发常用类库UUID、Optional、ThreadLocal、TimerTask、Base64使用方法与实例详解...

發布時間:2024/7/23 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA计时函数的库_JAVA开发常用类库UUID、Optional、ThreadLocal、TimerTask、Base64使用方法与实例详解... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、UUID類庫

UUID 根據時間戳實現自動無重復字符串定義

// 獲取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;

/**

* 存入

*/

Optional optOf = 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计时函数的库_JAVA开发常用类库UUID、Optional、ThreadLocal、TimerTask、Base64使用方法与实例详解...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。