使用ApachePOI读取Excel的时候,如果单元格是日期的格式,通过判断cell.getCellType() 得到的是Cell.CELL_TYPE_NUMERIC,进而使用cell.getNumericCellValue() 获取到单元格内容,但是读取到的却是类似44840.611111这样的数字 经过一番查找资料,结论是,Excel单元格存储日期、时间均以数值类型进行存储,读取时POI先判断是是否是数值类型,再根据CellStyle来判断日期格式,再进行判断转化。 总结如下: 数值格式(CELL_TYPE_N…

2022-10-25 0条评论 1552点热度 0人点赞 admin 阅读全文

在使用ApachePOI做Excel导出的时候,如果遇到日期类型的单元格内容,我们不希望简单把单元格内容赋值成String文本,而是希望给单元格复制成Excel能认得的Date日期类型,以便在Excel中做一些计算或者统计。 如图代码很简单: Cell cell = row.createCell(i); Date date = new Date(); // 实际的日期从业务中来 cell.setCellValue(date); 不过生成了Excel后,就变成这样了(可以看到新建日期和更新日期里的内容都变成小数了):…

2022-10-20 0条评论 610点热度 0人点赞 admin 阅读全文

我们知道,如果要替换字符串中完全相同的内容,可以直接使用String.replace(replaceAll)来替换,如果要替换的内容是正则表达式的形式呢? 举个例子,我们在做短信模板的时候,一般有这样的: 恭喜${name}报名成功,请凭报名编号${code}到现场参加活动! 需要替换${xxx}里面的内容,可以使用正则表达式来查找符合${xxx}的内容,然后替换,这就用到了matcher.appendReplacement和matcher.appendTail了。 代码如下: public static void…

2022-10-15 0条评论 521点热度 1人点赞 admin 阅读全文

Java或者SpringBoot项目中,需要将Html(可以是模板引擎例如thymeleaf生成的html)转成图片或者PDF。 如果不是比较复杂的Html(例如Html里没有很多CSS3的语法,flex布局等、背景图,加载js外部css等),那么可以采用一个简单的类库:,因为只需要引入到pom.xml,几行代码就可以搞定生成图片或者PDF的问题了。 使用方法: pom.xml 增加如下依赖(使用的最新版是2.0.1,有很多地方还是显示的0.9版本,最近版本2.0.1在渲染html上要比0.9好很多): <d…

2022-10-13 0条评论 2093点热度 0人点赞 admin 阅读全文

写在前面 相信不少开发者在遇到项目对数据进行批量操作的时候,都会有不少的烦恼,尤其是针对数据量极大的情况下,效率问题就直接提上了菜板。 因此,开多线程来执行批量任务是十分重要的一种批量操作思路,其实这种思路实现起来也十分简单,就拿批量更新的操作举例: 整体流程图 步骤 获取需要进行批量更新的大集合A,对大集合进行拆分操作,分成N个小集合A-1 ~ A-N 。 开启线程池,针对集合的大小进行调参,对小集合进行批量更新操作。 对流程进行控制,控制线程执行顺序。 按照指定大小拆分集合的工具类 import com.goo…

2022-10-11 0条评论 354点热度 0人点赞 admin 阅读全文

synchronize是平时用得比较多的多线程问题的解决方案,一般说存在多线程问题,加个锁,就用synchronize吧,简单,方便。今天,就来深入了解一下synchronize知识点。 Synchronized可以加在对象上,也可以加在函数上。 Synchronized 介绍 1:Synchronized. 加在对象上 表示对这个对象加锁,当有线程进入函数后先获取对象的锁,如果获取到锁,进入同步块执行,获取失败,放入阻塞队列中。 public void getOneThings(){ synchronized (…

2022-10-05 0条评论 372点热度 0人点赞 admin 阅读全文

Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。 官方地址: https://projectlombok.org/ github地址: https://github.com/rzwitserloot/lombok 在IntelliJ IDEA 中的使用 (1)先安装lombok插件,步骤如下(新版的IDEA已经自带集成了Lombok插件,可以不用安装)。 菜单 File > Settings >…

2022-10-04 0条评论 531点热度 0人点赞 admin 阅读全文

电商当项目经验已经非常普遍了,不管你是包装的还是真实的,起码要能讲清楚电商中常见的问题,比如库存的操作怎么防止商品被超卖 解决方案 分析 基于数据库单库存 基于数据库多库存 基于redis 基于redis实现扣减库存的具体实现 初始化库存回调函数(IStockCallback) 扣减库存服务(StockService) 调用 在日常开发中有很多地方都有类似扣减库存的操作,比如电商系统中的商品库存,抽奖系统中的奖品库存等。 解决方案 使用mysql数据库,使用一个字段来存储库存,每次扣减库存去更新这个字段。 还是使用…

2022-09-26 0条评论 372点热度 0人点赞 admin 阅读全文

简介 布隆过滤器(BloomFilter)是一种用于判断元素是否存在的方式,它的空间成本非常小,速度也很快。 但是由于它是基于概率的,因此它存在一定的误判率,它的Contains()操作如果返回true只是表示元素可能存在集合内,返回false则表示元素一定不存在集合内。因此适合用于能够容忍一定误判元素存在集合内的场景,比如缓存。 它一秒能够进行上百万次操作(主要取决于哈希函数的速度),并且1亿数据在误判率1%的情况下,只需要114MB内存。 原理 数据结构 布隆过滤器的数据结构是一个位向量,也就是一个由0、1所组…

2022-09-25 0条评论 405点热度 0人点赞 admin 阅读全文

接口java.util.concurrent.ExecutorService 表述了异步执行的机制,并且可以让任务在后台执行。ExecutorService 的实现就是一个线程池的实现。 一、ExecutorService 示例代码 下面是使用Java 实现的ExecutorService 示例代码: import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ExecutorSer…

2022-09-20 0条评论 451点热度 0人点赞 admin 阅读全文
1234520