IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 手写jvm内置缓存 -> 正文阅读

[大数据]手写jvm内置缓存

用HashMap封装一个内置缓存:

开楼吧:

首先搭个框架:

SpringBoot+Mybatis

?然后编写内置缓存:

/**
 * 内置缓存工具类
 */
public class JvmMapCacheUtils {

    /**
     * 缓存容器
     */
    private static Map<String,String> caches = new ConcurrentHashMap<>();

    /**
     *根据key获取缓存List对象
     * @param key
     * @param t
     * @param <T>
     * @return
     */
       public static <T> List<T> listEntity(String key, Class<T> t){
           //return JSONObject.parseObject(caches.get(key),t);
           return JSONObject.parseArray(caches.get(key),t);
       }



    /**
     * 存放对象
     * @param key
     * @param o
     */
    public static void put(String key,Object o){
           caches.put(key,JSONObject.toJSONString(o));
       }


    /**
     * 存放单个对象
     * @param key
     * @param t
     * @param <T>
     * @return
     */
     public static <T> T getEntity(String key, Class<T> t){
         return JSONObject.parseObject(caches.get(key),t);
     }



}


我们来测试下:

 /**
     * 查询出用户
     *
     *
     * @throws
     */
    @PostMapping("/listUser")
    public ResponseMessage listUser(HttpServletRequest request){
        ResponseMessage responseMessage = new ResponseMessage(0);
        try{
            String token = request.getHeader("token");
            logger.info("token的值:【{}】"+token);
            List<User> user = null;
            user =  JvmMapCacheUtils.listEntity(token, User.class);
            //如果等于空
            if(StringUtils.isEmpty(user)){
                //模拟耗时时间
                Thread.sleep(1000);
                JvmMapCacheUtils.put(token,userService.getUser());
                responseMessage.setMessage(userService.getUser());
            }else {
                responseMessage.setMessage(user);
            }
        }catch (Exception ex){
            logger.error("查询用户信息信息异常", ex);
            throw new RuntimeException(ex.getMessage());
        }
        return responseMessage;
    }

走数据库耗时1270毫秒多

?走缓存,耗时9毫秒

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-06 13:53:32  更:2022-02-06 13:53:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:02:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码