LFUCache,最少使用,根据使用次数来判定对象是否被持续缓存,当缓存满时清理过期对象,清理后依旧满的情况下清除最少访问的对象并将其他对象的访问数减去这个最少访问数,以便新对象进入后可以公平计数。
Cache<String, String> lfuCache = CacheUtil.newLFUCache(3);lfuCache.put("key1", "沉默王一");
// 使用次数+1
lfuCache.get("key1");
lfuCache.put("key2", "沉默王二");
lfuCache.put("key3", "沉默王三");
lfuCache.put("key4", "沉默王四");
// 由于缓存容量只有 3,当加入第 4 个元素的时候,最少使用的将被移除(2,3被移除)
String value2 = lfuCache.get("key2");
String value3 = lfuCache.get("key3");
LRUCache,最近最久未使用,根据使用时间来判定对象是否被持续缓存,当对象被访问时放入缓存,当缓存满了,最久未被使用的对象将被移除。
Cache<String, String> lruCache = CacheUtil.newLRUCache(3);lruCache.put("key1", "沉默王一");
lruCache.put("key2", "沉默王二");
lruCache.put("key3", "沉默王三");
// 使用时间近了
lruCache.get("key1");
lruCache.put("key4", "沉默王四");
// 由于缓存容量只有 3,当加入第 4 个元素的时候,最久使用的将被移除(2)
String value2 = lruCache.get("key2");
System.out.println(value2);
17、加密解密
加密分为三种:
对称加密(symmetric),例如:AES、DES 等
非对称加密(asymmetric),例如:RSA、DSA 等
摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC 等
Hutool 针对这三种情况都做了封装:
对称加密 SymmetricCrypto
非对称加密 AsymmetricCrypto
摘要加密 Digester
快速加密工具类 SecureUtil 有以下这些方法:
1)对称加密
SecureUtil.aes
SecureUtil.des
2)非对称加密
SecureUtil.rsa
SecureUtil.dsa
3)摘要加密
SecureUtil.md5
SecureUtil.sha1
SecureUtil.hmac
SecureUtil.hmacMd5
SecureUtil.hmacSha1
只写一个简单的例子作为参考:
/*** @author 微信搜「沉默王二」,回复关键字 PDF
*/
public class SecureUtilDemo {
static AES aes = SecureUtil.aes();
public static void main(String[] args) {
String encry = aes.encryptHex("沉默王二");
System.out.println(encry);
String oo = aes.decryptStr(encry);
System.out.println(oo);
}
}
18、其他类库
Hutool 中的类库还有很多,尤其是一些对第三方类库的进一步封装,比如邮件工具 MailUtil,二维码工具 QrCodeUtil,Emoji 工具 EmojiUtil,小伙伴们可以参考 Hutool 的官方文档:https://www.hutool.cn/
项目源码地址:https://github.com/looly/hutool
PS:需要 Java 书单的话,我在 GitHub 上发现了一个宝藏项目,里面的书单可谓应有尽有。需要的小伙伴可以按需自取,地址如下所示:
https://github.com/itwanger/JavaBooks
最后,日常求个赞吧,满满的干货,我先干为敬,你随意