Java专栏
Java开发语言特性。
流沙QS
秉承开源,分享快乐;并非造火箭,只为更快搬砖。
展开
-
如何调用Java接口中默认方法?
那么就会陷入无限循环中。因此,只能采取其他方式,比如以上获取的是接口的默认实现方法;当然,如果是接口的抽象方法,那么就可以在代理方法java.lang.reflect.InvocationHandler#invoke实现自己的逻辑,比如调用外部接口的处理逻辑等等。原因很简单,JDK动态代理接口的对象本身就是java.lang.reflect.InvocationHandler,如果再调用。那么,如果该接口我们不想有实现类,又想要调用。注意:接口没有实现,不能直接通过反射调用!,从而可动态调用方法。原创 2024-04-30 12:05:59 · 667 阅读 · 2 评论 -
动态创建运行时Java Bean
基于Java字节码技术,如ASM、Javassist,前者偏底层、构建复杂,但性能相对较高;后者提供了友好的API接口方法,优雅简单,但性能稍弱。原创 2024-04-23 23:32:36 · 183 阅读 · 2 评论 -
一个Java反射小工具
利用JDK提供的反射工具类,可实现简单的Java Bean的属性赋值、获取属性值、获取所有属性及指定属性名的属性等。原创 2024-04-23 23:15:40 · 285 阅读 · 0 评论 -
如何根据nacos config动态刷新实时做你要想要做的事?
原理:利用Spring提供的监听器,侦听nacos发布事件(SpringCloud提供):org.springframework.cloud.endpoint.event.RefreshEvent即可完成。比如:根据配置动态修改bean等。原创 2024-04-03 16:55:09 · 236 阅读 · 0 评论 -
巧用lambda表达式构建各种“树”
利用jdk8 lambda表达式分组函数,可巧妙构建各种树,比如地区树,可以利用其多线程特性充分利用CPU提高性能。以下为处理构建地区树的核心逻辑。原创 2024-04-03 16:31:26 · 425 阅读 · 0 评论 -
IText5填充PDF表单使用自定义字体中文生效而英文和数字不生效?
为什么使用IText5填充PDF时,使用自定义字体(特别是某些新兴的字体)时中文生效,英文和数字不生效?查了相关资料,发现无果,或者都不生效。原创 2024-03-19 21:56:12 · 558 阅读 · 2 评论 -
如何读取java类的注释?
利用jdk的tools.jar提供的接口,便可轻松获取java类的文档注释。如类、构造方法、普通方法、成员属性等,都可以获得其注释相关信息。原创 2024-03-15 11:25:19 · 387 阅读 · 1 评论 -
Java正则提取地址的省市区(县/市)
Java正则提取地址的省市区县值。原创 2024-03-15 11:10:22 · 373 阅读 · 0 评论 -
一文读取微信支付宝PDF文件数据
主要读取PDF的表格数据,以微信支付宝为例子展开,开箱即用。原创 2024-03-08 14:27:46 · 223 阅读 · 1 评论 -
Java合并图片(开箱即用)已解决透明背景色处理为黑色的问题
1.通过 ImageIO#read 读取图片文件为 java.awt.image.BufferedImage。原创 2024-01-30 15:12:48 · 331 阅读 · 5 评论 -
itext5动态创建表格
【代码】itext5动态创建表格。原创 2024-01-01 20:01:50 · 884 阅读 · 3 评论 -
PDF模板填充,基于IText5(改进版)
【代码】PDF模板填充,基于IText5(改进版)原创 2024-01-01 19:57:51 · 802 阅读 · 0 评论 -
PDF模板填充,基于IText5
对于PDF模板填充,有很多现有的Java库,付费版本略过。较出名的有Apache的PDFBox,以及ITextPdf。而后者具有两个很大的版本ITextPdf-5和ITextPdf-7,ITextPdf-7功能更强大,但可能存在商业版权问题。之前也用过一阵,没驾驭住。今天使用 ITextPdf-5,支持文本填充、图片填充 及 添加页码。动态表格想实现,但较困难,知道的大佬欢迎骚扰(⊙o⊙)…原创 2023-12-29 17:24:01 · 1008 阅读 · 2 评论 -
基于IText7 PDF模板填充?
后记:有一点没处理好,就是设置字体,有知道的大佬支招!原创 2023-12-06 01:34:35 · 859 阅读 · 0 评论 -
Gson序列化反序列化之日期时间处理?
【代码】Gson序列化反序列化之日期时间处理?原创 2023-12-01 21:46:05 · 762 阅读 · 0 评论 -
Gson序列化/反序列化完美适配方案?
目前支持自定义枚举字典(Enum)、数字(int、long、float、double)及其包装类、BIgDecimal、List。后期添加对Date、LocalDate及LocalDateTime的支持。原创 2023-11-30 00:27:13 · 694 阅读 · 0 评论 -
SpringBoot 实现跨域的六种方式
【代码】SpringBoot 实现跨域的六种方式。原创 2023-07-31 22:52:30 · 2903 阅读 · 0 评论 -
字符串编码相互转换
一个字符串编码格式转换小工具,实现一个编码的字符串转换的另一个编码的字符串。原创 2023-04-27 16:05:07 · 330 阅读 · 1 评论 -
一个简易版的分布式全局ID生成器实现思路
【代码】一个简易版的分布式全局ID生成器实现思路。原创 2022-12-26 09:54:45 · 255 阅读 · 0 评论 -
常用文件类型判断(防止文件后缀被篡改)
特殊情况:目前,对于文本文件(*.txt)的文件无法校验,其读取的文件字节码几乎都不一样。当然还可能存在其他的。一般而言,如果手工修改文件的后缀,其内部文件字节码是不会发生变化的,以此来作为判断的标准。判断原理:定义好常用格式的文件后缀,以及对应文件的字节码前N位,作为判断的一句。因此,工作中,定义一个简要的工具来对常用的文件格式进行校验也是必要的。以下是定义好的常用几种文件格式的校验,若有需要,可以自行增加。原创 2022-12-20 17:16:46 · 1458 阅读 · 3 评论 -
如何读取PDF中的表格数据(交易流水读取实战)?
如何读取PDF中的表格数据?一开始,也是百思不得其解,相关的资料也是少之又少。刚开始的思路也是先读取PDF,再根据坐标定位其中的文字信息,从而读取出来。思路差不多,关键是解决了问题。本文使用该工具包,并以支付宝流水和微信流水的PDF文件作为实战,需要的拿走。若支付宝微信官方没变更文档格式,截止目前,基本可以直接使用。原创 2022-12-20 17:03:41 · 2444 阅读 · 1 评论 -
基于XStream的JavaBean与XML相互转换
基于XStream的JavaBean与XML相互转换原创 2022-10-28 17:28:41 · 472 阅读 · 0 评论 -
JAXB实现JavaBean与XML相互转换(详尽)
JDK1.6中自带的这个JAXB版本是2.0,比起1.0(JSR 31)来,JAXB2(JSR 222)用JDK5的新特性Annotation来标识要作绑定的类和属性等,这就极大简化了开发的工作量。原创 2022-10-28 10:51:18 · 2161 阅读 · 0 评论 -
住房贷款等额本息(等额本金)还款计划计算
java版实现房贷等额本息以及等额本金还款计划原创 2022-10-21 23:15:39 · 1876 阅读 · 0 评论 -
Redis配置序列化反序列化Jackson ObjectMapper 中的 enableDefaultTyping 方法从 2.10.0 开始标记为过期
Redis配置序列化反序列化Jackson ObjectMapper 中的 enableDefaultTyping 方法从 2.10.0 开始标记为过期原创 2022-10-05 14:34:57 · 3384 阅读 · 2 评论 -
利用JDK8函数式编程特性读取getter属性名
利用JDK8函数式编程特性读取getter属性名原创 2022-09-24 18:38:54 · 585 阅读 · 0 评论 -
swagger多个包扫描支持
swagger多个包扫描支持Docket.apis(com.google.common.base.Predicate selector)的selector。需引入Google Guava依赖。Swagger一般包含。原创 2022-09-21 01:08:12 · 847 阅读 · 0 评论 -
Spring全局异常处理你可能不知道的那些事儿(细而全)
此部分可以借助Spring提供的全局异常处理机制来处理如Filter中的异常,此部分异常无法到达Controller层,因此Spring提供的全局异常处理机制无法捕获。此部分处理有两种方式:网上大部分处理的方式为,在Filter中抛出异常的地方,重定向到指定的一个Controller层去,这样就可以借助Spring的全局异常处理器()来进行处理,此处不再赘述。主要谈的是第二种,即实现接口的异常处理。原创 2022-09-12 19:24:50 · 723 阅读 · 4 评论 -
Gson反序列化List<T>数据返回问题解决方案
Gson反序列化List数据返回问题解决方案Gson使用遇到的坑。原创 2022-09-10 20:40:47 · 764 阅读 · 0 评论 -
Base64编解码工具
Base64编解码工具原创 2022-08-31 09:55:40 · 1659 阅读 · 0 评论 -
Java如何实现连接Linux 执行Bash命令?
方便程序直接操作Linux命令行。原创 2022-08-23 16:32:36 · 394 阅读 · 0 评论 -
同一字符串如何实现不同编码之间的转换?
基于Java实现同一字符串不同编码之间的转换。原创 2022-08-23 16:19:01 · 183 阅读 · 0 评论 -
Date与LocalDate(或LocaldateTime)之间的如何转换?
Date与LocalDate(或LocaldateTime)之间的如何转换?稍显复杂却如此简单原创 2022-08-23 16:07:15 · 1322 阅读 · 0 评论 -
如何修改文件最后一次修改时间?
如何修改文件最后一次修改时间?Java版实现原创 2022-08-23 16:01:46 · 1104 阅读 · 0 评论 -
alibaba EasyExcel简单读取Excel(去掉空行数据)实战,开箱即用
alibaba EasyExcel简单读取Excel(去掉空行数据)实战。拿来即用原创 2022-08-23 15:58:22 · 8668 阅读 · 0 评论 -
OCR识别身份证及营业执照图片(Java版)
本文基于百度智能云平台提供的OCR识别技术,对身份证图片及营业执照图片识别处理。原创 2022-07-19 21:49:09 · 2370 阅读 · 6 评论 -
HTML之img展示base64图片
base64图片示例原创 2022-06-22 17:58:47 · 3531 阅读 · 0 评论 -
解决EasyExcel工具读取Excel空数据行的问题
官网地址:https://easyexcel.opensource.alibaba.com/感兴趣可自己琢磨,该工具简单易上手,且性能相对比较高。首先解释为什么会产生空数据行:简单解释就是你在Excel中设置了单元的样式,却没有给单元格设值。因此,该工具在读取数据时便没有判断这一步,直接读取到整行数据均为null。理解了核心问题后,要解决这个问题,实现思路也不难。莫非就是把这种空数据行过滤即可。本文是基于批处理监听器实现数据读取的,自定义集成该监听器(com.alibaba.excel.read.liste原创 2022-06-03 13:27:49 · 14862 阅读 · 13 评论 -
Spring Boot配置日志输出
日志在一个系统中充当这重要角色。本文主要就如何配置日志进行实战。本文基于logback的方式。直接上代码,代码中有详细的说明。1. 在springboot全局配置文件中指定日志配置文件的路径# 日志配置logging: config: classpath:logback-spring-dev.xml file: name: qs-server.log path: ./logs2. logback.xml配置文件详细配置<?xml version="原创 2022-05-24 17:36:09 · 3838 阅读 · 2 评论 -
java序列化的隐藏方法
当一个java类实现了Serializable接口时,便自动赋能了几个隐藏方法。private Object writeReplace()private Object readResolve()private void writeObject(ObjectOutputStream out)private void readObject(ObjectInputStream in)其语法格式必须如上(访问修饰符可自定义,建议使用private),且定义了以上方法的实体类必须实现Serializ原创 2022-04-24 17:35:05 · 523 阅读 · 0 评论