随笔分类 -  Java

摘要:问题 String为什么要背设计成为不可变的 分析 主要是从性能和安全两方面考虑 性能考虑: 1.字符串常量池的需要 字符串常量池的存在就是为了性能优化,将常用的字符串缓存在常量池中,避免多次创建新对象,减少JVM内存占用,如果字符串是可变的,那么常量池就没有意义了,类似的缓存技术,有Integer 阅读全文
posted @ 2022-04-18 20:08 听风是雨 阅读(51) 评论(0) 推荐(0) 编辑
摘要:最近项目组有很多报表需求,需要做Excel模板填充,由于EasyExcel相比POI更加便捷,选定Excel技术框架为阿里开源的EasyExcel 在使用过程中遇到一些坑,特别再此记录; 驼峰命名变量填充失败 如下图,事先准备好的模板如下,需要填充的数据已经用变量处理好了 填充其他数据没有任何问题, 阅读全文
posted @ 2021-12-16 20:35 听风是雨 阅读(7577) 评论(0) 推荐(0) 编辑
摘要:/** * @author Sam.yang * @since 2021/10/27 10:37 */ @Data @ApiModel(value = "峰值人数响应") public class PeakAmountVO { @JSONField(serializeUsing = DateSeri 阅读全文
posted @ 2021-10-27 16:15 听风是雨 阅读(405) 评论(0) 推荐(0) 编辑
摘要:1.项目背景 项目中需要生成Excel报表,类似下图,由于需要动态生成表头,借此机会,整理EsayExcel使用流程 2.项目依赖 SpringBoot版本2.x <!--HuTool工具类--> <dependency> <groupId>cn.hutool</groupId> <artifact 阅读全文
posted @ 2021-10-22 20:26 听风是雨 阅读(3856) 评论(0) 推荐(0) 编辑
摘要:/** * @author: Sam.yang * @date: 2020/11/16 11:14 * @desc: Set集合操作工具类 */ public class SetOptUtils { /** * 取两数交集. * <P> * Example: * * <pre> * src={1,2 阅读全文
posted @ 2020-11-17 17:59 听风是雨 阅读(3660) 评论(0) 推荐(0) 编辑
摘要:1.获取表结构的DDL语句 2.获取修改表结构某一字段的DDL语句 设计表-修改表字段(记住不要保存)-SQL预览 阅读全文
posted @ 2020-10-26 14:09 听风是雨 阅读(3155) 评论(0) 推荐(0) 编辑
摘要:问题: 项目中常用@Validate 或者 @Valid 去对接口的入参做参数校验, 最近项目中遇到另外一种情况,仅使用注解似乎难以满足需求: 例如:实际情况中需要针对channel字段做进一步校验,如channel为1(也就是IOS),则需要进一步校验appId字段不能为空 public clas 阅读全文
posted @ 2020-10-24 18:02 听风是雨 阅读(871) 评论(0) 推荐(0) 编辑
摘要:swagger-bootstrap-ui是基于swagger-ui做了一些优化拓展: swagger-ui的界面: swagger-bootstrap-ui界面: 相比于原生的swagger-ui ,swagger-bootstarp-ui提供了更好的ui界面,以及入参,出参直观的分层;下面将swa 阅读全文
posted @ 2020-10-16 15:30 听风是雨 阅读(10685) 评论(0) 推荐(0) 编辑
摘要:1.swagger-bootstrap-ui swagger的升级版,美化界面 2.hutool工具包 阅读全文
posted @ 2020-10-12 00:25 听风是雨 阅读(329) 评论(0) 推荐(0) 编辑
摘要:日常工作中写接口时,往往需要校验前端传来的枚举状态码,例如"1","2"等等, 这里使用java 303规范的参数校验框架封装一个自定义参数校验器: /** * @author: yq * @date: 2020/9/22 22:15 * @description 自定义参数校验注解,加在指定的需要 阅读全文
posted @ 2020-09-22 23:11 听风是雨 阅读(3804) 评论(0) 推荐(0) 编辑
摘要:前提: 首先要铺垫几个前置的知识: Java中的锁如sychronize锁是对象锁,Java对象头中具有标识位,当对象锁升级为重量级锁时,重量级锁的标识位会指向监视器monitor, 而每个Java对象关联唯一的监视器monitor,因为该关系,Java对象可以做synchronize锁的锁对象,也 阅读全文
posted @ 2020-09-21 17:50 听风是雨 阅读(852) 评论(0) 推荐(0) 编辑
摘要:Hutool工具包中使用线程池的API是: ThreadUtil.execute() /** * 直接在公共线程池中执行线程 * * @param runnable 可运行对象 */ public static void execute(Runnable runnable) { GlobalThre 阅读全文
posted @ 2020-04-23 10:58 听风是雨 阅读(8166) 评论(0) 推荐(0) 编辑
摘要:问题 CompletableFuture.runAsync() 返回 CompletableFuture<Void>对象,调用CompletableFuture.allOf(f1,f2).join() 是否能够阻塞主线程 结论 public static void main(String[] arg 阅读全文
posted @ 2020-04-15 17:06 听风是雨 阅读(12873) 评论(0) 推荐(2) 编辑
摘要:一.相同点: join()和get()方法都是用来获取CompletableFuture异步之后的返回值 二.区别: 1.join()方法抛出的是uncheck异常(即未经检查的异常),不会强制开发者抛出, 会将异常包装成CompletionException异常 /CancellationExce 阅读全文
posted @ 2020-04-15 16:56 听风是雨 阅读(34561) 评论(0) 推荐(3) 编辑
摘要:布隆过滤器出现的背景: 如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash table)等等数据结构都是这种思路,存储位置要么是磁盘,要么是内存。很多时候要么是以时间换空间,要么是以空间换时间。 在响应时间要求比较严格 阅读全文
posted @ 2020-03-25 00:25 听风是雨 阅读(2580) 评论(0) 推荐(0) 编辑
摘要:不多逼逼,直接看注解上面的文档, @PostConsturct PostConstruct注释用于需要执行的方法在依赖注入完成后执行任何初始化。这个方法必须在类投入服务之前调用。 这个所有支持依赖关系的类都必须支持注解。即使调用带有PostConstruct注释的方法如果类不请求注入任何资源。 方法 阅读全文
posted @ 2020-03-17 15:09 听风是雨 阅读(1529) 评论(0) 推荐(0) 编辑
摘要:package com.gabriel.stage.utils; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import org.apache.commons.lang3.time.DateUt 阅读全文
posted @ 2020-03-14 18:33 听风是雨 阅读(823) 评论(0) 推荐(0) 编辑
摘要:一.什么是MapStruct? MapStruct是用于代码中JavaBean对象之间的转换,例如DO转换为DTO,DTO转换为VO,或Entity转换为VO等场景,虽然Spring库和 Apache 的库提供了类似BeanUtils用于转换对象,但是性能不佳(需要判断类是否被加载,如果没加载,还要 阅读全文
posted @ 2020-03-12 00:13 听风是雨 阅读(1931) 评论(0) 推荐(0) 编辑
摘要:0.死锁 两个或者两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞现象,若无外力作用,他们都将无法让程序进行下去; 死锁条件: 不可剥夺条件: T1持有的资源无法被T2剥夺 请求与保持条件: T1持有S1的同时,请求S2资源,但是不能立即获得(T表示任务,S表示资源) 互斥条 阅读全文
posted @ 2020-03-09 11:55 听风是雨 阅读(767) 评论(0) 推荐(0) 编辑

/* 看板娘 */
点击右上角即可分享
微信分享提示