iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >浅谈Java中GuavaCache返回Null的注意事项
  • 826
分享到

浅谈Java中GuavaCache返回Null的注意事项

2024-04-02 19:04:59 826人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

Guava在实际的Java后端项目中应用的场景还是比较多的,比如限流,缓存,容器操作之类的,有挺多实用的工具类,这里记录一下,在使用GuavaCache,返回null的一个问题 I

Guava在实际的Java后端项目中应用的场景还是比较多的,比如限流,缓存容器操作之类的,有挺多实用的工具类,这里记录一下,在使用GuavaCache,返回null的一个问题

I. 常见使用姿势


@Test
public void testGuava() {
    LoadinGCache<String, String> cache = CacheBuilder.newBuilder().build(new CacheLoader<String, String>() {
        @Override
        public String load(String key) throws Exception {
            if ("hello".equals(key)) {
                return "Word";
            }
            return null;
        }
    });

    String word = cache.getUnchecked("hello");
    System.out.println(word);

    System.out.println(cache.getUnchecked("word"));
}

上面是一个非常简单的测试case,需要注意的是,cache.get("word") 的执行,并不如逾期的返回的是null,而是会抛一个异常出来

word
com.Google.common.cache.CacheLoader$InvalidCacheLoadException: CacheLoader returned null for key word.
 at com.google.common.cache.LocalCache$Segment.getAndRecordStats(LocalCache.java:2287)
...

从异常描述能看出,不允许返回null,这一块之前倒是没怎么注意,因此对于null的情况,要么定义一个标记表示不存在,要么在load()方法中主动抛一个异常出来,在使用的时候注意下,通过异常的使用方式,可以如下


public class NoVlainGauvaException extends Exception {
    public NoVlaInGauvaException(String msg) {
        super(msg);
    }

    @Override
    public synchronized Throwable fillInStackTrace() {
        return this;
    }
}

说明:为什么重写fillInStackTrace方法

对于这种缓存未命中的情况下,一般而言是不需要关注完整的堆栈信息的,没有数据而已,可以节省一点点性能(当然除非是在高频率的抛出时,才会有表现症状)

其次就是get与getUnchecked的区别了

  • get要求显示处理exception状况
  • getUnchecked 一般是可确认不会有问题的场景,直接调用

改造之后,我们的cache如下


LoadingCache<String, String> cache = CacheBuilder.newBuilder().build(new CacheLoader<String, String>() {
    @Override
    public String load(String key) throws Exception {
        if ("hello".equals(key)) {
            return "word";
        }
        throw new NoVlaInGauvaException();
    }
});

到此这篇关于浅谈Java中GuavaCache返回Null的注意事项的文章就介绍到这了,更多相关GuavaCache返回Null内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 浅谈Java中GuavaCache返回Null的注意事项

本文链接: https://www.lsjlt.com/news/155985.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 浅谈Java中GuavaCache返回Null的注意事项
    Guava在实际的Java后端项目中应用的场景还是比较多的,比如限流,缓存,容器操作之类的,有挺多实用的工具类,这里记录一下,在使用GuavaCache,返回null的一个问题 I...
    99+
    2024-04-02
  • Java中GuavaCache返回Null的注意事项有哪些
    本篇内容介绍了“Java中GuavaCache返回Null的注意事项有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Guava在实际的J...
    99+
    2023-06-25
  • 浅谈java中null是什么,以及使用中要注意的事项
    1.null既不是对象也不是一种类型,它仅是一种特殊的值,你可以将其赋予任何引用类型,你也可以将null转化成任何类型,例如:Integer i=null;Float f=null;String s=null;但是不能把null赋值给基本类...
    99+
    2023-05-31
    java null ava
  • Java方法的返回值及注意事项小结
    目录方法的返回值为什么要有带返回值的方法呢?带返回值方法的定义和调用:1.带返回值方法定义的格式:2.带返回值方法的调用格式:练习1:练习2:方法的注意事项:return关键字:方法...
    99+
    2023-05-17
    Java方法的返回值 Java返回值
  • golang函数返回值的注意事项
    函数返回值类型须与签名相匹配。函数可返回多个值或不返回值,后者使用 () 表示。return 语句可提前结束函数并返回给定值。多个返回值使用 return 多个值返回。 Go 语言函数...
    99+
    2024-04-23
    返回值 golang
  • 浅谈Java中的this作为返回值时返回的是什么
    有时会遇到this作为返回值的情况,那么此时返回的到底是什么呢?返回的是调用this所处方法的那个对象的引用,读起来有点绕口哈,有没有想起小学语文分析句子成份的试题,哈哈。一点点分析的话,主干是“返回的是引用”;什么引用呢?“那个对象的引用...
    99+
    2023-05-30
    java this 返回值
  • Java中Collections.emptyList()的注意事项
    偶然发现有小伙伴错误地使用了Collections.emptyList()方法,这里记录一下。她的使用方式是: public void run() { ...... Li...
    99+
    2024-04-02
  • angular2中http请求返回结果的subcribe注意事项有哪些
    这篇文章主要为大家展示了“angular2中http请求返回结果的subcribe注意事项有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“angular2中...
    99+
    2024-04-02
  • 关于Spring中@Transactional事务回滚的注意事项
    目录一、Spring 默认事务1.1、抛出 unchecked 和 checked 异常都回滚1.2、总结二、使用 Spring中 @Transactional 注解的注意事项一、S...
    99+
    2023-05-19
    Spring @Transactional Spring 事务回滚
  • Java中Collections.emptyList()的注意事项是什么
    小编给大家分享一下Java中Collections.emptyList()的注意事项是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!偶然发现有小伙伴错误地使用...
    99+
    2023-06-14
  • html中load的注意事项
    这篇文章主要介绍了html中load的注意事项,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   由于浏览器的安全限制,大多数“Ajax”...
    99+
    2024-04-02
  • 详解Python中深浅拷贝的使用及注意事项
    目录一、Python深浅拷贝概念二、Python深浅拷贝使用场景三、Python深浅拷贝注意事项四、Python深浅拷贝实现1. 使用copy模块2. 使用pickle模块五、总结一...
    99+
    2023-05-15
    Python深浅拷贝使用 Python深浅拷贝 Python深拷贝 Python浅拷贝
  • Java HashSet的Removals()方法注意事项
    目录前言那么如何解决?前言 我有一个集合,实际上是一个HashSet。我想从中删除一些item…其中许多item可能不存在。事实上,在我们的测试用例中,“r...
    99+
    2024-04-02
  • Python中深浅拷贝的使用及注意事项是什么
    这篇文章主要讲解了“Python中深浅拷贝的使用及注意事项是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中深浅拷贝的使用及注意事项是什么”吧!一、Python深浅拷贝概念在...
    99+
    2023-07-05
  • 浅谈TypeScript3.7中值得注意的3个新特性
    目录前言Optional ChainingNullish CoalescingUncalled Function Checks其他前言 距typescript 3.7正式发布已经有一...
    99+
    2024-04-02
  • java中float赋值要注意哪些事项
    在Java中,给float类型变量赋值时要注意以下事项: 在赋值时,需要在数字后面加上"F"或"f"后缀,以表示这是一个floa...
    99+
    2023-10-25
    java
  • java遍历的注意事项有哪些
    1. 确保正确设置起始条件和结束条件。2. 注意遍历顺序,遵循先进先出的原则。3. 确保遍历过程中不会出现越界或空指针异常。4. 遍...
    99+
    2023-09-27
    java
  • Java中Process类的使用与注意事项说明
    目录Process类的使用与注意事项说明1、在项目开发中2、在这里就需要认识一下process类3、来说说今天业务需求[waitfor()]:4、前不久遇到一个奇怪的问题就是ajax...
    99+
    2024-04-02
  • java中守护线程的注意事项有哪些
    小编给大家分享一下java中守护线程的注意事项有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!java基本数据类型有哪些Java的基本数据类型分为:1、整数类...
    99+
    2023-06-14
  • Springboot中@RequestBody注解使用的注意事项
    这篇文章将为大家详细讲解有关Springboot中@RequestBody注解使用的注意事项,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。@RequestBody注解踩坑@RequestBody json...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作