自己动手写工具(一)一个用Java8实现的内存级别的缓存
有的时候需要用因为效率问题需要使用一些最底层的代码开发,免不了部分地方又要采用高级一点的功能,因此,此时需要自己动手实现一部分逻辑,此处使用map做内存级别的缓存,类似hibernate里面的一级缓存。此处的实现不只是可以在数据库上使用,其它地方也可以。
至于原理,很简单,利用map而已。复杂的实现在此处就不写了,感兴趣的童鞋可以访问我的包,下载全版的实现。
package xyz.cunzi.function.cache;import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Supplier;/*** 一个内存级别的缓存实现,不建议放入static当中,否则会造成Java无法内存回收,此时应当主动调用clear方法清除* * @author xyz.cunzi**/
public class MemoryCache {private Map<String, Object> map = new ConcurrentHashMap<String, Object>();private MemoryCache() {}/*** 初始化一个新的缓存器* * @return*/public static MemoryCache instance() {return new MemoryCache();}/*** * @param key* 主键生成器,调用此函数应当返回要查询的主键* @param clazz* 查询到的值得存储类型* @param load* 如果没找到,那么使用主键从此函数中查询* @return*/public <T, V> T load(Supplier<V> key, Class<T> clazz, Function<V, T> load) {V k = key.get();return load(k, clazz, load);}/*** * @param key* 主键* @param clazz* 查询到的值得存储类型* @param load* 如果没找到,那么使用主键从此函数中查询* @return*/@SuppressWarnings("unchecked")public <T, V> T load(V key, Class<T> clazz, Function<V, T> load) {Object t = map.get(clazz.getName() + "." + key);if (t == null) {t = load.apply(key);map.put(clazz.getName() + "." + key, t);}if (t.getClass() == clazz) {return (T) t;}return null;}public void clear() {map.clear();}
}
自己动手写工具(一)一个用Java8实现的内存级别的缓存相关推荐
- 自己动手写工具:百度图片批量下载器
开篇:在某些场景下,我们想要对百度图片搜出来的东东进行保存,但是一个一个得下载保存不仅耗时而且费劲,有木有一种方法能够简化我们的工作量呢,让我们在离线模式下也能爽爽地浏览大量的美图呢?于是,我们想到了 ...
- 【原创】自己动手写工具----签到器[Beta 1.0]
写在前面 最近公司没有什么项目,想通过项目练练手的机会也没有,只能自己学习了,因此空下来的时间也挺多的,就打开网页看看吧,哎,一打开就让签到(像什么百度知道啊.百度云盘啊之类的),我签到的目的是获取积 ...
- 80行代码自己动手写一个表格拆分与合并小工具(文末附工具下载)
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 瑶池阿母绮窗开,黄竹歌声动地哀. ...
- CowNew开源团队新书《自己动手写开发工具》隆重上市
<自己动手写开发工具--基于Eclipse的工具开发> 本书系统地介绍了SWT.Draw2D.GEF.JET等与Eclipse插件开发相关的基础知识,并且以实际的开发案例来演示这些知识的实 ...
- 《自己动手写开发工具》试读版电子书及光盘
<自己动手写开发工具>系统地介绍了SWT.Draw2D.GEF.JET等与Eclipse插件开发相关的基础知识,并且以实际的开发案例来演示这些知识的实战性应用,通过对这些实际开发案例的学习 ...
- 自己动手写一个 strace
这次主要分享一下一个动手的东西,就是自己动手写一个 strace 工具. 用过 strace 的同学都知道,strace 是用来跟踪进程调用的 系统调用,还可以统计进程对 系统调用 的统计等.stra ...
- 吕文翰 php,自己动手写一个 iOS 网络请求库(三)——降低耦合
自己动手写一个 iOS 网络请求库(三)--降低耦合 2015-5-22 / 阅读数:16112 / 分类: iOS & Swift 本文中,我们将一起降低之前代码的耦合度,并使用适配器模式实 ...
- 自己动手写一个推荐系统,推荐系统小结,推荐系统:总体介绍、推荐算法、性能比较, 漫谈“推荐系统”, 浅谈矩阵分解在推荐系统中的应用...
自己动手写一个推荐系统 废话: 最近朋友在学习推荐系统相关,说是实现完整的推荐系统,于是我们三不之一会有一些讨论和推导,想想索性整理出来. 在文中主要以工程中做推荐系统的流程着手,穿插一些经验之谈,并 ...
- 自己动手写一个简单的bootloader
自己动手写一个简单的bootloader 15年10月31日19:44:27 (一) start.S 写这一段代码前,先要清楚bootloader开始的时候都做什么了.无非就是硬件的初始化,我们想要写 ...
最新文章
- java 笔记(3)多态 容易理解
- ctf图片隐写之修改图片高度
- java反射 面试题_使用Java反射更改私有静态最终字段
- IBastis配置实例
- 如何查找业务用例和业务执行者
- WAIC开发者日倒计时一天,收藏好这份完整日程
- ROS在类中发布和接受消息(自定义消息)
- 【华为云技术分享】漫谈LiteOS-Huawei_IoT_Link_SDK_OTA 开发指导
- (86)FPGA读文件激励(readmemh)
- 人工智能/数据科学比赛汇总 2019.5
- HTML、CSS、JS对unicode字符的不同处理
- yii2 错误处理
- epson连接计算机后无法打印,如何解决连接到Epson打印机后计算机无法打印的问题...
- modal 可拖拽 elementui antd
- 病毒conime.exe、mmlucj.exe、severe.exe 查杀办法
- python 百度翻译爬虫(可翻译句子及文章)(偷偷说一句,保姆级教程哦)
- CKA考试指南和攻略
- 交大网院计算机第五次作业答案,2015交大网院计算机第三次作业word操作题
- 无线网卡驱动正常却搜索不到无线信号
- 我的世界服务器显示大字,我的世界上面指令让界面出现字体 | 手游网游页游攻略大全...
热门文章
- Aprioriall算法
- 机器学习_评价指标Accuracy(准确率)、Precision(精准度/查准率)、Recall(召回率/查全率)、F1 Scores详解
- timeit.Timer()与timeit.timeit()
- 01 TVM环境编译
- ROS安装/// rosdep update/the read operation is timed out
- 实现GB28181平台级联到海康平台的级联
- 枚举Word表格AutoFormat样式
- 关于设置背景图片的透明度(html+css)
- java处理解析xml文件的几种方法及每种方法的区别
- 【Unity 3D游戏开发】在Unity使用NoSQL数据库方法介绍