Guava CacheLoader中当load方法返回null

Guava LoadingCache在实际工作中用的还是比较频繁的。但是最近在review代码时,发现有些同学在使用CacheLoader时没有注意到 CacheLoader#load方法的注释: 源码中明确指出了这个方法不能返回null。但是在review代码时发现很多同学没注意到到这个,而在部分情况下存在返回null的情况。 一般使用Optional封装一下就好了。 这篇文章主要说一下当loa

java.util.MissingFormatArgumentException: Format specifier ‘%s’

今天在写代码的时候遇到了这个异常: 以前其实没咋遇到过java.util.MissingFormatArgumentException,所以记录一下。 其实这个异常描述起来很简单,就是我在使用String.format方法时传递的参数的数量比代码中的%s要少 ,所以出现这个异常。比如下面的代码可以重现: 但是当我传递的参数的数量多于代码中的%s的数量的时候缺没问题。挺奇怪的

Spring Boot 和Mybatis整合出现Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required问题

我今天在测试Trace对SQL的收集过程中搞了一个测试工程,使用的Maven配置如下: 发现在应用启动的时候出现Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required异常。 排查原因发现是因为mybatis-spring-1.2.0中取消了自动注入SqlSessionFactory和SqlSessionTemplate:

Java SPI 简单描述

SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。SPI是一种动态替换发现的机制, 比如有个接口,想运行时动态的给它添加实现,你只需要添加一个实现。 关于Java的SPI没啥好说的,如果你想直接看代码的话,可以看 – https://github.com/xkrivzooh/spi-samples 这几天我会抽时间完善一下这

Can I access/modify workbooks/documents/slideshows in multiple threads? What are the multi-threading guarantees that Apache POI makes

前几天和财务的朋友聊天的时候,他说他们那边的Excel导出比较慢,因为导出的数据量比较大,往往几百万条,而使用单线程导出的。所以我今天项目提测以后就来写了个Demo尝试基于POI来写一个多线程的Excel导出,demo写完以后发现运行结果经常不正确,检查完程序逻辑以后,就感觉可能POI不支持多线程操作,于是上网查询了一波, 果然: 官网原文地址:Can I access/modify workbo