技术日常
文章平均质量分 64
雨夜归人93
这个作者很懒,什么都没留下…
展开
-
日常设计-- 延迟队列
最近项目需要用到延迟队列,本来考虑使用MQ实现,但由于目前使用RocketMq,不支持灵活的延迟时间配置,最终采用redis实现延迟功能。一. Redis ZSET实现延迟队列大体思路:使用ZSet结构,以messageId作为value,延迟时间delayTIme作为score。每次获取小于当前时间的数据。推送消息推送消息只是简单将数据以及延迟时间放入延迟队列中。 public void push(long messageId,long delayTime) { long s原创 2021-11-23 22:24:36 · 929 阅读 · 0 评论 -
SpringBoot - JWT实现登录刷新token
1. 什么是JWTJson web token (JWT) 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。简答理解就是一个身份凭证,用于服务识别。JWT本身是无状态的,这点有别于传统的session,不在服务端存储凭证。这种特性使其在分布式场景,更便于扩展使用。2. JWT组成部分JWT有三部分组成,头部(header),载荷(payload),是签名(signature)。头部头部主要声明了类型(jwt),以及使用的加密算法( HMAC SHA256)载荷载荷就是存放原创 2021-09-27 22:32:53 · 4735 阅读 · 6 评论 -
Poi-Tl 自定义插件实现图片浮动于文字上
最近项目中使用了word合成,使用了poi-tl 进行处理。但是遇到要渲染一个图片,就一言难尽了。官网默认的图片渲染结果会占住word的空间大小,导致整体间距会被拉大。迫不得已,只能实现一个图片渲染的插件来实现图片浮动效果。1.渲染类CustomPictureRenderData 是对原poi-tl图片渲染类的扩展,添加了左偏移和上偏移属性。这两属性用于图片位置的调整。public class CustomPictureRenderData implements RenderData {原创 2021-08-09 21:14:16 · 2423 阅读 · 4 评论 -
NIO Url文件资源打包下载
最近有个任务是根据获取到的地址一批url,打包成一个zip文件下载。这里有两个考虑:不创建本来临时文件,临时文件创建涉及到临时目录,文件的创建删除等操作,吃力不讨好。整个过程尽可能节省时间及内存空间基于上面两个考虑,整个过程都在流缓冲区,这时考虑到NIO的Pipe管道。为了不使管道中数据过大,读满一个缓冲区,就写出流数据。1. 导出包裹对象FileExport 是一个包裹对象,包含了文件全称,以及路径地址@Data@NoArgsConstructorpublic class File原创 2021-06-23 15:00:37 · 215 阅读 · 0 评论 -
Idea显示service面板及启动页
本文基于IDEA 2020.3废话不多说,直接干货。1. 显示Service面板IDEA加载项目时,有时不会显示Service面板,这时就需要手动设置。1.修改workspace.xml方式打开根目录下的.idea文件夹里面的workspace.xmlworkspace.xml添加如下配置 <component name="RunDashboard"> <option name="configurationTypes"> <set>原创 2021-04-07 21:50:51 · 4101 阅读 · 0 评论 -
BeanCopier浅拷贝嵌套对象分析
最近项目中使用了BeanCopier,但是使用过程中,存在有些数据无法拷贝成功的情况,故特地进行了整理。1. 素材准备对象A,A1,A2表示源对象,B,B1,B2表示目标对象。A1,B1表示嵌套对象的场景A2,B2表示嵌套集合的场景示例如下:@Data@NoArgsConstructor@AllArgsConstructorpublic class A { private String name;}@Data@NoArgsConstructor@AllArgsConstr原创 2021-01-12 21:56:26 · 1075 阅读 · 0 评论 -
IDEA常用设置-方法注释
分享一个自己使用的方法注释。1.创建模板首先创建一个Template Group选中自己的创建Template Group,点击Live Template,创建模板。 填写具体模板点击Define按钮,选择模板的生效范围,例如java接着输入如下信息Abbreviation 中填写快捷方式,这里填写 **。Expand with 这里选择 Default(Tab), 这个表示点击快捷键生成模板。至于不选择Space 方式,是为了不覆盖默认的注释生成。** * * @a原创 2020-10-21 23:05:23 · 264 阅读 · 0 评论 -
java 金额转为中文大写
网上没看到合适的,自己写了个。public class ChineseCapitalUtil { private final static String[] number = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; private final static String[] INTEGER_UNIT = {"拾", "佰", "仟"}; private final static String[] DECIMAL_UN原创 2020-10-15 19:22:45 · 278 阅读 · 0 评论 -
SpringBoot 自定义Validation注解
最近新开了一个项目,虽然hibernate-validator很好用,但是有时不能满足稍微复杂一些的业务校验。为了不在业务代码中写校验逻辑,以及让代码更优雅,故而采用了自定义校验注解的方式。一. 场景说明本例注解应用场景: 填写表单时,某一项数据存在时,对应的一类数据都应存在,一同提交。二.源码1.类注解主注解用于标记要在校验的实体类@Target( { TYPE })@Retention(RUNTIME)@Constraint(validatedBy = RelateOtherValida原创 2020-09-14 22:37:53 · 1276 阅读 · 3 评论 -
SpringBoot word文档转pdf
一.背景项目中有个需求大体意思是,上传一个word模板,根据word模板合成word文件,再将word文件转为pdf。二.方案选择Spire.Doc for Java方案Spire.Doc for Java这个是商用收费的,不过API文档丰富且集成简单,免费版仅支持3页转换。类似的还有ITEXT,这个商用也是受限制的。docx4j方案开源可商用,仅支持docx格式的word。jodconverter+LibreOffice 方案开源可商用,调用本地office服务,进行pdf转换原创 2020-09-27 18:33:57 · 5281 阅读 · 3 评论 -
springboot 接收LocalDateTime
本文基于jdk8。1.标准日期格式转换本类型是指前端传递类似"yyyy-MM-dd HH:mm:ss"格式字符串,后端以 LocalDateTime类型接收。spring默认的使用jackson,故添加maven依赖,可参考官方文档:<dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-parameter-names原创 2020-10-12 19:39:30 · 7136 阅读 · 1 评论 -
MyBatis-Plus 更新时间注入失败
项目中使用了MyBatis-Plus(version:3.3.2),为了自动注入时间,按照官方文档进行如下设置:@Componentpublic class CustomMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this.strictInsertFill(metaObject, "gmtCreate"原创 2020-10-12 19:13:52 · 957 阅读 · 1 评论