Java专栏
Java开发语言特性。
流沙QS
秉承开源,分享快乐;并非造火箭,只为更快搬砖。
展开
-
基于Spring事务模板编程式事务小工具
基于Spring事务,官方推荐使用@Transactional注解的声明式事务,使用便捷,无需关心底层实现,只需关心注解中的参数含义及使用规则。然而在很多场景下(特别是复杂的业务逻辑、更甚在子线程、多线程中),往往声明式事务会出现意想不到的结果。这时候针对特定场景,这时编程式事务更加得心应手。原创 2024-11-01 10:58:22 · 179 阅读 · 0 评论 -
PDF模板填充新姿势,开箱即用
由于之前使用Itext5工具填充PDF模板后,会导致填充后的PDF文件体积变得很庞大。怀疑了嵌入字体、PDF模板编辑转换和编辑等等的原因,但最后都无功而返,查阅了官方文档,也没得出解决方案。因此,退而求其次,换上了Itext7,官方说过,性能相较Itext5更出色。原创 2024-08-01 10:47:18 · 347 阅读 · 0 评论 -
Java图片压缩
前言:压缩原理,基于工具thumbnailator,其底层也是基于JDK提供的BufferedImage及Graphics2D重新绘制图片。原创 2024-07-26 18:44:56 · 200 阅读 · 0 评论 -
简易版接口防重实现(分布式锁)
接口防重亦是分布式锁的一种特殊形式。市面上最典型的就是大名鼎鼎的Redisson实现的分布式锁。但使用Redisson仅仅作为一个锁,未免大材小用,同时也显得臃肿。因此,有必要实现一个类似功能且安全高效的、简单的分布式锁。利用Spring提供的切面技术,SpringEl表达式语言,JDK自定义注解,Redis及Lua等。2.定义切面逻辑处理3.原理说明利用Redis Client执行Lua的原子特性,在判断Redis中是否存在当前的Key,如果存在,则抛出异常,表示当前请求的数据已被占用原创 2024-06-11 10:42:03 · 444 阅读 · 0 评论 -
如何调用Java接口中默认方法?
那么就会陷入无限循环中。因此,只能采取其他方式,比如以上获取的是接口的默认实现方法;当然,如果是接口的抽象方法,那么就可以在代理方法java.lang.reflect.InvocationHandler#invoke实现自己的逻辑,比如调用外部接口的处理逻辑等等。原因很简单,JDK动态代理接口的对象本身就是java.lang.reflect.InvocationHandler,如果再调用。那么,如果该接口我们不想有实现类,又想要调用。注意:接口没有实现,不能直接通过反射调用!,从而可动态调用方法。原创 2024-04-30 12:05:59 · 1062 阅读 · 2 评论 -
动态创建运行时Java Bean
基于Java字节码技术,如ASM、Javassist,前者偏底层、构建复杂,但性能相对较高;后者提供了友好的API接口方法,优雅简单,但性能稍弱。原创 2024-04-23 23:32:36 · 299 阅读 · 2 评论 -
一个Java反射小工具
利用JDK提供的反射工具类,可实现简单的Java Bean的属性赋值、获取属性值、获取所有属性及指定属性名的属性等。原创 2024-04-23 23:15:40 · 329 阅读 · 0 评论 -
如何根据nacos config动态刷新实时做你要想要做的事?
原理:利用Spring提供的监听器,侦听nacos发布事件(SpringCloud提供):org.springframework.cloud.endpoint.event.RefreshEvent即可完成。比如:根据配置动态修改bean等。原创 2024-04-03 16:55:09 · 281 阅读 · 0 评论 -
巧用lambda表达式构建各种“树”
利用jdk8 lambda表达式分组函数,可巧妙构建各种树,比如地区树,可以利用其多线程特性充分利用CPU提高性能。以下为处理构建地区树的核心逻辑。原创 2024-04-03 16:31:26 · 515 阅读 · 0 评论 -
IText5填充PDF表单使用自定义字体中文生效而英文和数字不生效?
为什么使用IText5填充PDF时,使用自定义字体(特别是某些新兴的字体)时中文生效,英文和数字不生效?查了相关资料,发现无果,或者都不生效。原创 2024-03-19 21:56:12 · 909 阅读 · 2 评论 -
如何读取java类的注释?
利用jdk的tools.jar提供的接口,便可轻松获取java类的文档注释。如类、构造方法、普通方法、成员属性等,都可以获得其注释相关信息。原创 2024-03-15 11:25:19 · 1197 阅读 · 1 评论 -
Java正则提取地址的省市区(县/市)
Java正则提取地址的省市区县值。原创 2024-03-15 11:10:22 · 952 阅读 · 0 评论 -
一文读取微信支付宝PDF文件数据
主要读取PDF的表格数据,以微信支付宝为例子展开,开箱即用。原创 2024-03-08 14:27:46 · 317 阅读 · 1 评论 -
Java合并图片(开箱即用)已解决透明背景色处理为黑色的问题
1.通过 ImageIO#read 读取图片文件为 java.awt.image.BufferedImage。原创 2024-01-30 15:12:48 · 495 阅读 · 5 评论 -
itext5动态创建表格
【代码】itext5动态创建表格。原创 2024-01-01 20:01:50 · 1171 阅读 · 3 评论 -
PDF模板填充,基于IText5(改进版)
【代码】PDF模板填充,基于IText5(改进版)原创 2024-01-01 19:57:51 · 989 阅读 · 0 评论 -
PDF模板填充,基于IText5
对于PDF模板填充,有很多现有的Java库,付费版本略过。较出名的有Apache的PDFBox,以及ITextPdf。而后者具有两个很大的版本ITextPdf-5和ITextPdf-7,ITextPdf-7功能更强大,但可能存在商业版权问题。之前也用过一阵,没驾驭住。今天使用 ITextPdf-5,支持文本填充、图片填充 及 添加页码。动态表格想实现,但较困难,知道的大佬欢迎骚扰(⊙o⊙)…原创 2023-12-29 17:24:01 · 1183 阅读 · 2 评论 -
基于IText7 PDF模板填充?
后记:有一点没处理好,就是设置字体,有知道的大佬支招!原创 2023-12-06 01:34:35 · 1026 阅读 · 0 评论 -
Gson序列化反序列化之日期时间处理?
【代码】Gson序列化反序列化之日期时间处理?原创 2023-12-01 21:46:05 · 1119 阅读 · 0 评论 -
Gson序列化/反序列化完美适配方案?
目前支持自定义枚举字典(Enum)、数字(int、long、float、double)及其包装类、BIgDecimal、List。后期添加对Date、LocalDate及LocalDateTime的支持。原创 2023-11-30 00:27:13 · 925 阅读 · 0 评论 -
SpringBoot 实现跨域的六种方式
【代码】SpringBoot 实现跨域的六种方式。原创 2023-07-31 22:52:30 · 4315 阅读 · 0 评论 -
字符串编码相互转换
一个字符串编码格式转换小工具,实现一个编码的字符串转换的另一个编码的字符串。原创 2023-04-27 16:05:07 · 401 阅读 · 1 评论 -
一个简易版的分布式全局ID生成器实现思路
【代码】一个简易版的分布式全局ID生成器实现思路。原创 2022-12-26 09:54:45 · 380 阅读 · 0 评论 -
常用文件类型判断(防止文件后缀被篡改)
特殊情况:目前,对于文本文件(*.txt)的文件无法校验,其读取的文件字节码几乎都不一样。当然还可能存在其他的。一般而言,如果手工修改文件的后缀,其内部文件字节码是不会发生变化的,以此来作为判断的标准。判断原理:定义好常用格式的文件后缀,以及对应文件的字节码前N位,作为判断的一句。因此,工作中,定义一个简要的工具来对常用的文件格式进行校验也是必要的。以下是定义好的常用几种文件格式的校验,若有需要,可以自行增加。原创 2022-12-20 17:16:46 · 2029 阅读 · 3 评论 -
如何读取PDF中的表格数据(交易流水读取实战)?
如何读取PDF中的表格数据?一开始,也是百思不得其解,相关的资料也是少之又少。刚开始的思路也是先读取PDF,再根据坐标定位其中的文字信息,从而读取出来。思路差不多,关键是解决了问题。本文使用该工具包,并以支付宝流水和微信流水的PDF文件作为实战,需要的拿走。若支付宝微信官方没变更文档格式,截止目前,基本可以直接使用。原创 2022-12-20 17:03:41 · 2827 阅读 · 4 评论 -
基于XStream的JavaBean与XML相互转换
基于XStream的JavaBean与XML相互转换原创 2022-10-28 17:28:41 · 496 阅读 · 0 评论 -
JAXB实现JavaBean与XML相互转换(详尽)
JDK1.6中自带的这个JAXB版本是2.0,比起1.0(JSR 31)来,JAXB2(JSR 222)用JDK5的新特性Annotation来标识要作绑定的类和属性等,这就极大简化了开发的工作量。原创 2022-10-28 10:51:18 · 2484 阅读 · 0 评论 -
住房贷款等额本息(等额本金)还款计划计算
java版实现房贷等额本息以及等额本金还款计划原创 2022-10-21 23:15:39 · 2534 阅读 · 0 评论 -
Redis配置序列化反序列化Jackson ObjectMapper 中的 enableDefaultTyping 方法从 2.10.0 开始标记为过期
Redis配置序列化反序列化Jackson ObjectMapper 中的 enableDefaultTyping 方法从 2.10.0 开始标记为过期原创 2022-10-05 14:34:57 · 3767 阅读 · 2 评论 -
利用JDK8函数式编程特性读取getter属性名
利用JDK8函数式编程特性读取getter属性名原创 2022-09-24 18:38:54 · 621 阅读 · 0 评论 -
swagger多个包扫描支持
swagger多个包扫描支持Docket.apis(com.google.common.base.Predicate selector)的selector。需引入Google Guava依赖。Swagger一般包含。原创 2022-09-21 01:08:12 · 976 阅读 · 0 评论 -
Spring全局异常处理你可能不知道的那些事儿(细而全)
此部分可以借助Spring提供的全局异常处理机制来处理如Filter中的异常,此部分异常无法到达Controller层,因此Spring提供的全局异常处理机制无法捕获。此部分处理有两种方式:网上大部分处理的方式为,在Filter中抛出异常的地方,重定向到指定的一个Controller层去,这样就可以借助Spring的全局异常处理器()来进行处理,此处不再赘述。主要谈的是第二种,即实现接口的异常处理。原创 2022-09-12 19:24:50 · 793 阅读 · 4 评论 -
Gson反序列化List<T>数据返回问题解决方案
Gson反序列化List数据返回问题解决方案Gson使用遇到的坑。原创 2022-09-10 20:40:47 · 847 阅读 · 0 评论 -
Base64编解码工具
Base64编解码工具原创 2022-08-31 09:55:40 · 1816 阅读 · 0 评论 -
Java如何实现连接Linux 执行Bash命令?
方便程序直接操作Linux命令行。原创 2022-08-23 16:32:36 · 423 阅读 · 0 评论 -
同一字符串如何实现不同编码之间的转换?
基于Java实现同一字符串不同编码之间的转换。原创 2022-08-23 16:19:01 · 212 阅读 · 0 评论 -
Date与LocalDate(或LocaldateTime)之间的如何转换?
Date与LocalDate(或LocaldateTime)之间的如何转换?稍显复杂却如此简单原创 2022-08-23 16:07:15 · 1359 阅读 · 0 评论 -
如何修改文件最后一次修改时间?
如何修改文件最后一次修改时间?Java版实现原创 2022-08-23 16:01:46 · 1246 阅读 · 0 评论 -
alibaba EasyExcel简单读取Excel(去掉空行数据)实战,开箱即用
alibaba EasyExcel简单读取Excel(去掉空行数据)实战。拿来即用原创 2022-08-23 15:58:22 · 9754 阅读 · 0 评论 -
OCR识别身份证及营业执照图片(Java版)
本文基于百度智能云平台提供的OCR识别技术,对身份证图片及营业执照图片识别处理。原创 2022-07-19 21:49:09 · 2599 阅读 · 6 评论