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类库的详细使用方法请查看下面的相关链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java程序员越来越多工资反而越高?

Java语言是一种面向对象的语言&#xff0c;它通过提供最基本的方法来完成指定的任务&#xff0c;只需理解一些基本的概念&#xff0c;就可以用它编写出适合于各种情况的应用程序。Java略去了运算符重载、多重继承等模糊的概念&#xff0c;并且通过实现自动垃圾收集大大简化了程…

java fileinputstream.read(byte[])_Java分享笔记:FileInputStream流的 read()方法 和 read(byte[] b)方法...

1 /*------------------------ 2 FileInputStream: 3 ....//输入流&#xff0c;字节流 4 ....//从硬盘中存在的一个文件中读取内容&#xff0c;读取到程序中 5 ....//read()方法&#xff1a;从此输入流中读取一个数据字节 6 ....//read(byte[] b)方法&#xff1a;从此输入流中将…

10个理由告诉你为何要学Java编程?

为什么要学习Java编程语言&#xff1f;这个只要学习Java的小伙伴都会有答案&#xff0c;比如它的易学、面向对象&#xff0c;开源工具和库等。在Java中获得经验可以确保有一个收入丰厚的工作岗位。有一长串的编程语言仍然存在它们的优点和缺点&#xff0c;使我们的生活更容易。…

java股票数据_java抓取东方财富股票数据(附源码)

背景前段时间给朋友写了一个自动抓取同花顺股票数据的程序&#xff0c;不少人觉得不错。这几天后台有粉丝给我留言让我也抓一下东方财富的数据&#xff0c;说东方财富的数据特别难抓&#xff0c;我还真不一定能搞得定。本来我是一个德艺双磬且与世无争的佛系程序员&#xff0c;…

JDK文档是Java程序开发不可缺少的编程词典

Java 构建商业应用程序或者某种物联网设备&#xff0c;构建了Android 操作系统&#xff0c;它为智能手机行业做出了杰出的贡献。借助 Android 操作系统&#xff0c;手机厂商才得以在早期与黑莓抗衡&#xff0c;之后又能够打破苹果的主导地位。 JDK文档包含有关Java API、Java命…

java string 转 inputstream_String和inputstream互转【转文】

URLConnection urlConn url.openConnection(); // 打开网站链接sBufferedReader reader new BufferedReader(new InputStreamReader(urlConn.getInputStream(), "UTF-8")); // 实例化输入流&#xff0c;并获取网页代码String s; // 依次循环&#xff0c;至到读的值…

如何准备Java初级和高级技术的面试呢?

IT行业的崛起带动了一大批的新兴职业&#xff0c;Java数据开发就是其中之一&#xff0c;作为IT行业的刚需职位&#xff0c;企业对合格的Java开发人员求贤若渴, 在各大主流招聘平台上, Java相关职位数量一直名列前茅&#xff0c;那么我们如何准备Java初级和高级技术的面试呢&…

新手学完Java可以面试哪些岗位?

在这个个时代是互联网时代&#xff0c;也是JavaEE人才稀缺的时代。由于中国人才缺口比较大&#xff0c;JavaEE也迅速成为行业和市场的热点&#xff0c;更多的企业无论是对人才的招聘还是在培训都成了市场刚需&#xff0c;这也促使JavaEE人才的薪资在同岗位中是最高的&#xff0…

java adminlte 使用_AdminLTE2管理后台自定义

项目中需要用到 AdminLTE 管理后台模板&#xff0c;所以&#xff0c;这里对后台进行一个简单的布局修改&#xff0c;然后结合后端语言进行快速开发一个管理后台。一、示例后台布局这个示例后台带了许多开箱即用的脚手架&#xff0c;我们项目中只需要简单的东东&#xff0c;所以…

php rpoplpush,RPOPLPUSH命令_视频讲解_用法示例-redis编程词典-php中文网

pop英 [pɒp] 美 [pɑ:p]vi.(意外地、突然地)出现;突然出现;发出爆裂声;(突然地)行动vt.(突然地)伸出;(突然地)提出问题;(把准备好的东西)突然拿出来;敲击n.流行音乐;汽水;(尤用作称呼)爸;(迅速打上的)记号adj.流行音乐的;通俗风格的;通俗的;现代的adv.爆炸&#xff1b;砰地a…

php论坛系统教程,国内php原创论坛

国内php原创论坛发布时间&#xff1a;2016-06-17 来源&#xff1a; 点击:次国内php原创论坛 ofstar ctb wdb discuz fastboard之比较-----个人总结由于旅行的fastboard加密了就不做比较了--当然是款不错的程序下面的比较单从技术角度出发,不考虑个人专好,毕竟个人专好,因人而异…

学习Java编程面向对象的五大基本原则

Java 是面向对象的高级编程语言&#xff0c;类和对象是 Java 程序的构成核心。围绕着 Java 类和 Java 对象&#xff0c;有三大基本特性&#xff1a;封装是 Java 类的编写规范、继承是类与类之间联系的一种形式、而多态为系统组件或模块之间解耦提供了解决方案。 单一职责原则&…

php实现多条件查找分页,Yii2.0框架实现带分页的多条件搜索功能示例

本文实例讲述了Yii2.0框架实现带分页的多条件搜索功能。分享给大家供大家参考&#xff0c;具体如下&#xff1a;方法一在控制器中public function actionShow(){$where[title]Yii::$app->request->get(title);$where[content]Yii::$app->request->get(content);$qu…

小白学习Java技术知识点总结,其实学习Java没那么难

边学习边记录是程序员快速进步的途径&#xff0c;只有你不断累积知识&#xff0c;才能有质的飞跃&#xff0c;不断的coding&#xff0c;累积经验。 第一讲&#xff0c;主要是Java环境变量的配置。 搭建好环境才能干活。要理解什么是编译、什么是运行。编译是Javac.exe程序在负…

php二维数组 xml,xml 怎样通过php解析到二维数组里面

localhost1root123<?php $doc new DOMDocument(1.0,utf-8); $doc->load("config.xml"); $roots$doc->documentElement;//获取根节点也就是config(仅有一个) $childs$roots->childNodes;//获取根节点下所有子节点也就是 db smarty for($i0;$ilength;$i)…

为什么说Java 程序员必须掌握 Spring Boot?

大部分人选择学习Java&#xff0c;自然是因为看上了Java的薪资待遇,java的地位可谓在编程界属于大佬&#xff0c;最近Spring Boot 2.0 的推出来后&#xff0c;又激起了一阵学习 Spring Boot 的热潮&#xff0c;那么&#xff0c; 使用 Spring Boot 会带来什么样的变革?一起来了…

matlab实现图片区水印,怎么在含有水印的图像中提取出水印

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼%水印嵌入代码M 256;%原始图像长度N 32; %水印图像长度K 8;I zeros(M, M);J zeros(N, N);BLOCK zeros(K, K);%显示原始图像subplot(221);I imread(C:\Users\Rocky\Documents\MATLAB\cameraman.bmp);imshow(I);title(原始图像…

你想成为Java架构师吗?掌握这六项就够了!

Java架构师&#xff0c;应该算是一些Java程序员们的一个职业目标了吧。很多码农码了五六年的代码也没能成为架构师。 我在这里分享6个专题来提高大家的编程能力 开源框架解析-架构师筑基-高性能架构-微服务架构-团队协作开发-B2C商城实战 一、开源框架解析&#xff1a; 程序…

主机不支持php5.4,GoDaddy Linux主机不再支持PHP5.3版本 | Godaddy美国主机中文指南

近日小编发现GoDaddy的Linux虚拟主机已经不再支持PHP5.3版本了&#xff0c;默认的都是5.4以上。也许是考虑到PHP5.4及以上版本性能更优&#xff0c;所以GoDaddy官方去掉了5.3的版本。GoDaddy的Linux虚拟主机支持PHPMySQL等程序环境&#xff0c;而PHP是目前网站程序中非常流行的…

Java并发编程以及并发须知的几个概念:什么是线程安全?

众所周知&#xff0c;在Java的知识体系中&#xff0c;并发编程是非常重要的一环&#xff0c;也是面试的必问题&#xff0c;一个好的Java程序员是必须对并发编程这块有所了解的。为了追求成为一个好的Java程序员&#xff0c;我决定从今天开始死磕Java的并发编程&#xff0c;尽量…