
java
文章平均质量分 69
daodfs1
这个作者很懒,什么都没留下…
展开
-
Java Formatter 类上的中文注释
打印格式字符串的解释器。该类提供了对布局调整和对齐数字、字符串和日期/时间数据的通用格式以及特定于语言环境的输出的支持。支持常用 Java 类型 {@code byte}, {@link java.math.BigDecimal BigDecimal} 和 {@link Calendar}。可以通过 {@link Formattable} 接口为任意用户类型提供有限的格式定制。对于多线程访问,格式化程序不一定是安全的。线程安全是可选的,是该类中方法用户的责任。原创 2023-08-11 15:02:05 · 420 阅读 · 0 评论 -
Springboot项目使用原生Websocket
*** 机器人模块WebSocket接口* 每一次websocket请求,RobotWebSocketServer都是一个新的实例,所以成员变量是安全的* 以致虽然类由@Component注释,但不可使用@Autowired等方式注入bean/*** 所有初始化操作都写在@OnOpen注释的方法中* 连接成功log . info("连接成功:{}, {}" , id , this . user . getUserCode());原创 2023-06-21 13:45:13 · 2763 阅读 · 0 评论 -
PCM音频格式转WAV音频格式
目前只支持文件和二进制数组。java原生代码pcm转wav原创 2023-05-27 22:21:04 · 920 阅读 · 0 评论 -
RSA签名加密解密
支持的密钥长度包括4种 RSA512、RSA1024、RSA2048、RSA4096支持的签名算法包括7种 MD2withRSA、MD5withRSA、SHA1withRSA、SHA224withRSA、SHA256withRSA、SHA384withRSA、SHA512withRSAJava 和 Javascript 支持的生成密钥对签名加密解密功能可以通用。原创 2023-02-24 12:13:26 · 1805 阅读 · 0 评论 -
swf 图片转 pdf
java swf 图片转 pdf原创 2023-01-10 13:02:08 · 682 阅读 · 2 评论 -
ES报文辅助生成工具-JavaFX
此程序为基于 Java8 开发的 JavaFX Maven 工程,是 Java 组装ElasticSearch请求报文工具的辅助 Java 代码生成工具,方便开发者快速编写代码。现学现用,写得不好。应用图标路径CharEnum.javaLineToken.javaFormatConfig.javaCodeFormatUtils.java核心类FileUtils.java用于持久化ConfigScheduledService.java保存配置的任务FormatScheduledS原创 2023-01-09 10:03:11 · 856 阅读 · 0 评论 -
基于Jackson2的JsonSchema实现java实体类生成json(二)
同时支持Json和Xml核心工具类Json2Utils.java怎么使用测试用的实体类Base.javaBaseDt.javaScore.javaTestMap.javaStudent.java用法JsonUtils类转Springboot2以代码的方式统一配置Jackson->Jackson工具类原创 2022-11-16 12:01:18 · 1398 阅读 · 0 评论 -
java原生代码验证xml是否存在语法错误
*** 验证xml文档是否存在语法错误* @throws RuntimeException 校验程序出错* @throws IllegalArgumentException 校验未通过try {if(!throw new IllegalArgumentException("xml:" + xml + "语法错误" , errorHandler . getFatalErrorExceptions() . get(0));原创 2022-10-25 18:39:07 · 980 阅读 · 0 评论 -
通过xsd校验xml
throw new NullPointerException("未找到" + xsdPath + "校验文档");valid) {throw new RuntimeException("校验程序出错");throw new RuntimeException("校验程序出错" , e);} if(!原创 2022-09-07 15:50:34 · 2133 阅读 · 1 评论 -
基于LibreOffice转换文档
LibreOffice开源免费,支持Windows、Linux、MacOS平台,需要先在服务器上安装LibreOffice软件,如果转换结果出现乱码,则还需要在服务器上安装字体。安装过程,略本文重点在于java代码的封装,其中使用过程基于SpringBoot不需要手动启动LibreOffice软件,一切由框架掌握,转换效果不输其它框架。...原创 2022-08-07 00:07:30 · 1415 阅读 · 0 评论 -
Mybatis返回的对象列表包含null
当Mybatis查询到的结果映射到的实体(包括Map)字段都为null时,则不实例化对象,而是直接返回null原创 2022-07-17 16:29:47 · 1055 阅读 · 0 评论 -
Java组装ElasticSearch请求报文工具
本文工具类不依赖第三方,尽可能直观用Java代码展示Json报文结构原创 2022-06-19 01:13:01 · 596 阅读 · 0 评论 -
一次恶心的删除minio文件之旅
刚入职一家公司,需求下来了需求由于minio占用空间极速扩大,目前已有3.5T,其中有一个桶buket1下的images目录(就是存放图片的)所占空间为1.5T,只保留最近几天的文件,两天内删除以前全部的文件。分析image目录下都是1KB-1MB的小文件,每天按日期yyyyMMdd产生一个目录,并且文件都放在各自的md5目录下,这就导致一个目录下存在几万甚至十几万个目录文件。举个栗子:http://ip:port/buket1/images/20210601/526F6BCD5661D393CA原创 2022-05-03 00:14:06 · 19157 阅读 · 9 评论 -
POI安全-压缩炸弹
今天用poi操作xlsx文件时,报错如下18:49:22.124 [main] ERROR org.apache.poi.openxml4j.opc.internal.marshallers.ZipPartMarshaller - Cannot write: /xl/media/image1.emf: in ZIPjava.io.IOException: Zip bomb detected! The file would exceed the max. ratio of compressed file原创 2022-05-01 20:07:58 · 4660 阅读 · 0 评论 -
do while 的妙用
准备工作有下面这样一个类结构class R1 { private String t1; public R1(String t1) { this.t1 = t1; } public String getT1() { return t1; } public void setT1(String t1) { this.t1 = t1; } }class R2 { private R1 r1; public R2(R1 r1) { this.r1 = r1原创 2022-04-23 00:31:40 · 560 阅读 · 0 评论 -
java 获取调用代码所在的类
package com.xxx.demo.common.util;public abstract class ClazzUtil { /** * @return 调用方的全限定类名 */ public final String getClazzName() { return getClazz().getName(); } /** * @return 调用方的全限定类 */ public final Class<?> getClazz() { retu原创 2022-01-08 23:38:01 · 1439 阅读 · 0 评论 -
Jackson自定义注解修改字段名
自定义一个注解 JsonName.classimport static java.lang.annotation.ElementType.FIELD;import static java.lang.annotation.ElementType.METHOD;import static java.lang.annotation.RetentionPolicy.RUNTIME;import java.lang.annotation.Retention;import java.lang.annotat原创 2021-12-19 23:13:29 · 1483 阅读 · 0 评论 -
Jackson序列化Xml声明
目录公共实体类最简单的序列化添加Xml声明Jackson生成xml声明源码第一步在XML声明中使用双引号创建 WstxOutputFactory 的子类创建XmlMapper对象完整代码优化 WstxOutputFactory 的子类公共实体类@JacksonXmlRootElement(localName = "stu")public class Stu { private String name; private String age; public String getName()原创 2021-12-18 23:56:31 · 2821 阅读 · 0 评论 -
Jackson自定义注解
目录用三种方案实现共用类适配实体类 CcyAmt.class序列化实现类 CcySerializer.class反序列化实现类 CcyDeserializer.class1、最简单的实现Ccy注解 直接指定策略在 Person.class 字段上直接添加Cyy注解简单使用 XmlMapper打印结果2、使用 MixIn 功能仍然是Ccy注解 直接指定策略未添加注解的 Person.classCcyMixIn.class 给指定字段混入注解使用 XmlMapper 添加混入策略打印结果3、使用 Annotat原创 2021-12-12 21:01:17 · 1961 阅读 · 0 评论 -
Spring Aspect切面执行顺序(一)
目录@Aspect 5种通知单一切面新版本执行顺序旧版本执行顺序多切面新版本执行顺序旧版本执行顺序@Aspect 5种通知通知类型类型名称执行时间点可获取返回值目标方法异常时是否会执行@Before前置通知方法执行之前否是@Around环绕通知环绕方法执行是自己控制@After后置通知方法执行之后否是@AfterReturning返回通知方法执行之后是否@AfterThrowing异常通知方法抛出异常之后否是原创 2021-08-30 20:26:21 · 1453 阅读 · 0 评论 -
springboot以代码的方式配置sharding-jdbc水平分表
多数项目可能是已经运行了一段时间,才开始使用sharding-jdbc。本教程就如何配置sharding目录关于依赖shardingsphere-jdbc-core-spring-boot-startershardingsphere-jdbc-core数据源DataSource原DataSourceShardingJdbcDataSource完整的ShardingJdbcDataSource配置分表策略主要的类其他的分表配置类groovy行表达式说明properties配置结语关于依赖sharding原创 2021-08-17 02:20:04 · 610 阅读 · 2 评论 -
生成银行卡号校验位和校验银行卡号
大多数银行卡为16位或19位,所以只支持16位或19位的银行卡最后一位是校验位,银行卡校验规则基于Luhn算法以卡号6212280200141664948为例校验过程为:去掉校验位 8,得621228020014166494卡号倒数偶数位相加,即 9 + 6 + 1 + 1 + 0 + 0 + 2 + 1 + 6 = 26卡号倒数奇数位分别乘以2,即 4、4、6、4、0、2、8、2、2分别乘以2,得 8、8、12、8、0、4、16、4、4奇数位乘以2得到的如果是两位数,则个位和十位相加.原创 2021-07-14 21:29:07 · 5365 阅读 · 0 评论 -
基于Jackson2的JsonSchema实现java实体类生成json(一)
除Swagger等文档插件,全网首发目录核心工具类Json2Utils.java怎么使用测试用的实体类Base.javaBaseDt.javaScore.javaTestMap.javaStudent.java用法转换结果核心工具类Json2Utils.javapackage com.xxx.demo.common.util;import java.util.Arrays;import java.util.Iterator;import java.util.Map;import jav原创 2021-06-20 23:08:10 · 1574 阅读 · 0 评论 -
基于Redis获取全局唯一序列
目录原理缺点使用示例核心逻辑Redis分布式锁锁key的枚举类分布式锁工具类基于哨兵模式Jedis工具类的部分代码原理前提redis全局唯一,可以是哨兵模式。redis每天按日期为key保存序列已被使用的值的限。客户端每次从redis申请5000个序列值,申请到的序列值用完后或客户端重启后,再从redis申请5000个序列值,这样只要客户端没有可用的序列,就从redit中申请。缺点客户端重启,会浪费掉原先申请到的序列;redis服务器未将序列实时保存到硬盘时,重启redis,可能造成大量序列冲突。原创 2021-05-10 17:18:09 · 830 阅读 · 0 评论 -
SLF4J官网统一日志框架教程(翻译)
SLF4J官网http://www.slf4j.org/legacy.html翻译:桥接旧版API通常,您依赖的某些组件依赖于SLF4J以外的日志API。 您可能还假设这些组件在不久的将来不会切换到SLF4J。 为了处理这种情况,SLF4J附带了几个桥接模块,这些模块会将对log4j,JCL和java.util.logging API的调用重定向,就好像是对SLF4J API进行的操作一样。 下图说明了这个想法。从Jakarta Commons Logging(JCL)迁移到SLF4Jjcl-翻译 2021-04-29 02:17:02 · 2028 阅读 · 0 评论 -
基于javacv的视频截图、转码、提取音频
目录目标依赖截图配置类转码配置类源视频处理结果类核心类怎么使用目标将所有格式的视频转码为H5能播放的mp4格式,也可以截取任意一帧图片依赖<dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-platform</artifactId> <version>1.5.3</version></dependency>原创 2021-01-31 20:55:55 · 2871 阅读 · 0 评论 -
基于javacv的视频转码(升级版)
目录目标依赖VideoFormat.javaVideo.java怎么使用目标将所有格式的视频 转码为mp4格式依赖<!-- 依赖很多,不需要的自行排除 --><!-- 转码功能只需要以ffmpeg、javacpp、javacv、openblas、opencv开头的jar包依赖 --><dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-原创 2021-01-29 00:10:46 · 2756 阅读 · 5 评论 -
java冷门小功能代码收集
目录1. 获取本地文件的Mimetype2. 获取超大图片的尺寸3. 使用itextpdf获取pdf文件的尺寸1. 获取本地文件的Mimetypeimport java.net.URLConnection;String contentType = URLConnection.getFileNameMap().getContentTypeFor(filePath);2. 获取超大图片的尺寸import java.util.Iterator;import javax.imageio.ImageI原创 2021-01-25 15:28:04 · 660 阅读 · 0 评论 -
Springboot2以代码的方式统一配置Jackson
目录说明6个序列化和反序列化规则Jackson统一配置类Jackson工具类结语说明本文主要配置Jackson对Long、Date、LocalDate、LocalDateTime的序列化和反序列化。由于js中整数可精确表示范围小于java Long的范围,故将Long序列化为String,反序列化Jackson会自动处理String转Long,故不需要显式配置。由于时间戳在各语言间的兼容性良好,故将Date、LocalDate、LocalDateTime序列化为Long(目前时间戳类的Long类型原创 2021-01-10 22:33:02 · 651 阅读 · 0 评论 -
List与树互转
JavaScript版本请点击这里目录辅助类TreeConverterException.classTreeConverterId.classTreeConverterParent.classTreeConverterChildren.classTreeConverterLevel.classList2TreeConverterBean.classTree2ListConverterBean.classLevelStrategy.class核心类TreeConverter.class使用示例实体类Depa原创 2020-11-07 14:25:56 · 316 阅读 · 0 评论 -
记一次线上BUG - pdf转图片
目录先吐槽一下bug感性描述定位bug复现bug猜想源代码解决方案后记先吐槽一下最近接手一个项目,前任代码非常烂,如果骂人等于杀人,那么他不知道死了多少回了。1、项目代码是从以前几个项目中拼凑来的,本身就很烂,没有全局处理器,包含很多以前的无用代码,勉强能用。2、mybatis动态SQL全部字符串拼接,不能防sql注入攻击。3、批量插入和更新数据库用for循环。4、随意使用数据库事务,该加事务时不加,不该加时乱加,controller层写大量业务逻辑和操作数据库代码。5、前端不能防csrf、x原创 2020-07-23 16:01:25 · 644 阅读 · 0 评论 -
基于javacv的视频编码格式判断及转码
目录目标依赖从网上找的代码遇到问题眼前的希望最终代码目标将所有格式的视频转码为mp4格式依赖<dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv</artifactId> <version>1.5.3</version></dependency>从网上找的代码咱没做过音视频开发,咱啥也不懂,只能从网上原创 2020-06-23 10:42:02 · 5039 阅读 · 8 评论 -
mybatis注解动态sql中foreach工具方法
目录实现目标工具类测试集成进spring后的使用方法Mapper层Provider层实现目标由于在注解版mybatis中手动循环拼接动态sql容易出错请看mybatis注解动态sql注入map和list(防sql注入攻击),所以封装了这个类似于foreach标签的工具方法。只支持单层循环哦!工具类package com.xxx.common.util;import java.util.Arrays;import java.util.HashMap;import java.util.Li原创 2020-06-10 12:10:34 · 4240 阅读 · 1 评论 -
POI获取excel文件单元格中的值
public static String getCellValue(Cell cell) { return getCellValue(cell, "yyyy-MM-dd HH:mm:ss"); } /** * * Description: 获取单元格的值 * @param cell * @param datetimeFormat * @return 单元格中的值 */ public static String getCellValue(Cell cell, Stri.原创 2020-05-20 21:03:37 · 808 阅读 · 0 评论 -
CountDownLatch应用
目录应用一(模拟压力测试,一个接口同时处理多个请求)应用二 (模拟请求多个接口,最后一个接口参数依赖前面接口的响应)应用三 (模拟操作流程,前面的操作第一阶段完成,后面的操作才能开始)应用一(模拟压力测试,一个接口同时处理多个请求)import java.util.concurrent.CountDownLatch;import java.util.concurrent.TimeUnit;public class CountDownLatchTest { private static fina原创 2020-05-13 14:13:20 · 149 阅读 · 0 评论 -
oracle分页sql工具类
话不多说,直接上代码package com.xxx.common.util;public final class PagerHelper { /** * 获得总数的sql语句 * @param sql 原SQL语句 * @return 获得总记录数的SQL语句 */ public static CharSequence getTotalResultSql(CharSequ...原创 2020-04-27 09:39:03 · 285 阅读 · 0 评论 -
java文字合成图片工具类
只能合成横排文字话不多说直接上代码package com.xxx.common.utils;import java.awt.Color;import java.awt.Font;import java.awt.FontMetrics;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Render...原创 2020-04-27 09:23:35 · 590 阅读 · 0 评论 -
Spring事务传播详解
目录说明Propagation.MANDATORY(强制性)说明本文只介绍Spring的@Transactional注解的propagation属性Propagation.MANDATORY(强制性)org.springframework.transaction.IllegalTransactionStateException: No existing transaction found ...原创 2020-04-26 09:28:11 · 245 阅读 · 0 评论 -
mybatis注解动态sql注入map和list(防sql注入攻击)
目录网上的教程我的教程(防sql注入攻击)注入Map注入List网上的教程配置xml注解中写xml脚本@Select()使用Java类中的Java方法拼写sql语句(不防sql注入攻击的纯字符串拼接)我的教程(防sql注入攻击)注入MapMapper层代码@Repositorypublic interface ManageMapper { @SelectProvider...原创 2020-04-20 11:49:19 · 1523 阅读 · 0 评论 -
统一社会信用代码校验和生成
目录java版javascript版java版import java.util.HashMap;import java.util.Map;public class CompanySocialUtil { private static final int[] orgCodeWeight = {3, 7, 9, 10, 5, 8, 4, 2}; private static fin...原创 2020-04-08 12:43:13 · 10389 阅读 · 2 评论