UUID类
UUID(since 1.5 java.util.UUID)是一种生成无重复字符串的程序类,这种程序类的主要功能是根据时间戳实现一个自动的无重复的字符串定义。所谓的无重复只出现概率很低,有可能是千万亿分之一。’
一般在获取UUID的时候往往都是随机生成一个内容(不用它的构造方法),所以可以通过如下方式获取:
在对一些文件进行自动命名处理的情况下,UUID类型非常好用,当你在网上盗取一些图片的时候往往图片的名字就是UUID生成的
Optional类(since 1.8 新类java.util.Optional<T>)
Optional类的主要功能是进行null的相关处理,在以前进行程序开发的时候,如果为了防止程序之中出现空指向异常,往往会追加有空的验证。
传统的引用传递是一种被动的组成,在引用接收的一方往往都是被动的进行判断,所以为了解决这种被动的处理操作,在Java类中提供有一个Optional类,这个类可以实现null的处理操作,在这个类里面提供有如下的一些操作方法
如果说现在保存的内容是null,则就会在保存处出现异常
由于Optional类中允许保存有null的内容,所以在数据获取的时候也可以进行null的处理。但是如果为null,在使用get获取数据的时候就会出现“
的异常信息,所以此时可以更换为orElse()方法。
在所有引用数据类型的处理之中,null是一个重要的技术问题,所以JDK1.8后提供的这个新的类对于null的处理
很有帮助,同时也是日后在进行项目开发之中使用次数很多的一种程序类。所以一定要理解它是怎么回事。
ThreadLocal类(至关重要的类,解决了核心资源与多线程并发访问的处理情况)
在真正去了解ThreadLocal类作用的时候下面编写一个简单的程序做一个简单的程序进行分析。
定时调度(base模块 java.util.Timer java.util.TimerTask)
java.util包里面牵扯太多的数据结构的问题了,这个包中的类要是全部掌握透彻了,面试只有自己面别人的份,大部分程序都干写。
TimerTask实现了Runnable接口,所以多线程的操作其实就是一个定时任务,每个任务就是一个线程,
定时器的主要操作是进行定时任务的处理,就好比你们每天早晨起来的铃声不一样。在java里面提供有定时任务的支持,但是这种任务的处理只是实现了间隔触发的操作(比喻一一个闹钟12个小时,一个小时响一次,不能做到准时的几点几分去响)。
如果要想实现定时的处理操作主要需要有一个定时操作的主体类,以及一个定时任务的控制。可以使用两个类实现:
|-间隔触发:public void scheduleAtFixedRate(TimerTask task,long delay,long period)
定时任务在Timer和TimerTask中的确可以实现,但是这种实现可以有一点点麻烦的。如果你现在希望它在某年某月某天的某一时刻执行,要想做到这样的间隔触发麻烦(比如每年的1月1日清空所有记录)。定时任务是java底层提供的操作,它能实现的关键的依据是电脑中的时钟(时钟的出现是让计算机质飞跃的一大重要因素,电脑关机的时候依然可以准确的计时,它有一个时钟器)。
这种定时是由JDK最原始的方式提供的支持,但是实际上开发中利用此类方式进行的定时处理实现的代码会非常的复杂,后面会接触到一些更加专业性的定时调度组件
Base64加密与解密(Base64加密工具处理类)
正常来讲加密基本上永远都要伴随着解密,所谓的加密或者是解密往往都需要有一个所谓的规则(模仿游戏电影)。在JDK1.8开始(1.6的api查不到)提供有一组新的机密处理操作类,Base64处理,在这个类里面有两个内部类:
虽然Base64可以实现加密与解密处理,但是其由于是一个公版的算法,所以如果直接对数据进行加密往往并不安全,那么最好的做法是使用 盐值 操作。
现在觉得虽然加了盐值,但是盐值毕竟是明文还是觉得不安全。
即便现在有盐值实际上发现加密的效果也不是很好,最好的做法是多次加密
最好的做法是使用2-3种加密程序,同时再找到一些完全不可解密的算法。