- 博客(82)
- 资源 (8)
- 收藏
- 关注
原创 Java Formatter 类上的中文注释
打印格式字符串的解释器。该类提供了对布局调整和对齐数字、字符串和日期/时间数据的通用格式以及特定于语言环境的输出的支持。支持常用 Java 类型 {@code byte}, {@link java.math.BigDecimal BigDecimal} 和 {@link Calendar}。可以通过 {@link Formattable} 接口为任意用户类型提供有限的格式定制。对于多线程访问,格式化程序不一定是安全的。线程安全是可选的,是该类中方法用户的责任。
2023-08-11 15:02:05
418
原创 Springboot项目使用原生Websocket
*** 机器人模块WebSocket接口* 每一次websocket请求,RobotWebSocketServer都是一个新的实例,所以成员变量是安全的* 以致虽然类由@Component注释,但不可使用@Autowired等方式注入bean/*** 所有初始化操作都写在@OnOpen注释的方法中* 连接成功log . info("连接成功:{}, {}" , id , this . user . getUserCode());
2023-06-21 13:45:13
2762
原创 RSA签名加密解密
支持的密钥长度包括4种 RSA512、RSA1024、RSA2048、RSA4096支持的签名算法包括7种 MD2withRSA、MD5withRSA、SHA1withRSA、SHA224withRSA、SHA256withRSA、SHA384withRSA、SHA512withRSAJava 和 Javascript 支持的生成密钥对签名加密解密功能可以通用。
2023-02-24 12:13:26
1804
原创 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
原创 基于Jackson2的JsonSchema实现java实体类生成json(二)
同时支持Json和Xml核心工具类Json2Utils.java怎么使用测试用的实体类Base.javaBaseDt.javaScore.javaTestMap.javaStudent.java用法JsonUtils类转Springboot2以代码的方式统一配置Jackson->Jackson工具类
2022-11-16 12:01:18
1397
原创 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
原创 通过xsd校验xml
throw new NullPointerException("未找到" + xsdPath + "校验文档");valid) {throw new RuntimeException("校验程序出错");throw new RuntimeException("校验程序出错" , e);} if(!
2022-09-07 15:50:34
2132
1
原创 基于LibreOffice转换文档
LibreOffice开源免费,支持Windows、Linux、MacOS平台,需要先在服务器上安装LibreOffice软件,如果转换结果出现乱码,则还需要在服务器上安装字体。安装过程,略本文重点在于java代码的封装,其中使用过程基于SpringBoot不需要手动启动LibreOffice软件,一切由框架掌握,转换效果不输其它框架。...
2022-08-07 00:07:30
1415
原创 Mybatis返回的对象列表包含null
当Mybatis查询到的结果映射到的实体(包括Map)字段都为null时,则不实例化对象,而是直接返回null
2022-07-17 16:29:47
1054
原创 一次恶心的删除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
19145
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
4658
原创 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
原创 Mysql更新百万历史数据
场景目前在main库里有一张main_test表,数据大约1000万CREATE TABLE main.main_test ( id BIGINT NOT NULL COMMENT '主键ID', name VARCHAR(100) COMMENT '名称', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='主表';需求为给main_test表
2022-04-02 18:51:30
3169
原创 OpenFeign根据服务名动态调用服务
本文作为springboot注解Aspect文章的补充,切面拦截方法,将方法所有信息及服务名称持久化到数据库。审批的时候,从数据库获取服务名称动态调用服务。实体类示例中的响应实体类@Getter@Setterpublic class Response<T> { private String code; private String msg; private String description; private T data;}示例中的方法参数
2022-03-28 11:31:23
3711
1
原创 Elasticsearch使用script更新long类型的数据
项目里有人用script,更新部分字段大概是这样的POST sz_index_mean/_update_by_query{ "query": { "match_phrase": { "sz.sz_title": "Java加密技术" } }, "script": { "source": "ctx._source.sz['sz_top_time'] = long类型的数据", }}当long类型的数据在int类型范围内时,"source": "
2022-03-24 15:58:00
2869
原创 Spring获取参数的泛型信息
本文作为springboot注解Aspect文章的补充,让使用者不再手动指定拦截方法的参数类型。最根本的是使用spring的 ResolvableType 工具类获取方法的参数类型Jackson工具类package com.proc.util;import java.lang.reflect.Type;import com.fasterxml.jackson.core.type.TypeReference;import com.fasterxml.jackson.databind.JavaT
2022-01-16 14:41:26
1462
原创 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
原创 springboot注解Aspect
目录目标实现POM一些实体类CheckedParamProcessDbModel测试用的入参对象一些工具类JacksonCanonicalUtilStringZipUtilBase64UtilSpringBootBeanUtilProcessBeanUtilCheckedTransmitableUtilPrivateTransmitableUtil一些BeanPostProcessTestCheckPostProcessAspect注解切面类 CheckedAop线程池配置持久化service审批用的ser
2022-01-08 22:13:40
1966
原创 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
原创 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
2818
1
原创 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
原创 网页版俄罗斯方块
兼容性兼容IE10,现代浏览器效果图项目结构tetris css tetris.css js tetris.js tetris.htmltetris.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>俄罗斯方块</title> <link rel="stylesheet
2021-11-20 21:00:00
3840
原创 Spring 注入多例 Bean
如何在单例 bean 中注入多例 Bean ?目录配置多例 Bean再来个单例 Bean错误示例方式一 使用 @Lookup方式二 使用 ObjectProvider@Lookup 的局限及 ObjectProvider 的强大使用 @Lookup 注入使用 ObjectProvider 注入结语配置多例 Beanpublic interface ProtoService { void test1(); void test2();}//使用 @Service 注册@Service@
2021-11-14 00:50:51
6000
原创 Spring boot 当@Primary遇到循环依赖
今天debug代码时,遇到一个坑public interface LoopService { void testLoop(); void testInnerLoop();}@Servicepublic class DefaultLoopService implements LoopService { private static final Logger log = LoggerFactory.getLogger(DefaultLoopService.class); @Overri
2021-11-10 22:09:35
707
原创 网页版空当接龙
已经一年没写前端代码了,为了上班划水,三天写了个空当接龙游戏兼容性兼容现代浏览器效果图项目结构free-cell css free-cell.css img 存放图片素材 js free-cell.js free-cell.html图片素材命名规则num-color-type.pngnum–数字(1 - 13)color–颜色(1-红色 2-黑色)type–类型(1–红心 2-黑桃 3-梅花 4-方块)free-cell.html<!D
2021-10-30 18:31:06
7763
4
原创 使SpringBoot配置文件application.properties支持中文
目录版本说明为什么不支持中文PropertySourceLoader接口PropertiesPropertySourceLoader类OriginTrackedPropertiesLoader类重写读取application.properties文件的逻辑1.创建OriginTrackedPropertiesLoader文件2.创建PropertiesPropertySourceLoader文件3.创建spring.factories文件测试最后版本说明本文不完全基于springboot-2.4.5,各
2021-10-14 14:42:16
1313
原创 Spring Aspect切面执行顺序(一)
目录@Aspect 5种通知单一切面新版本执行顺序旧版本执行顺序多切面新版本执行顺序旧版本执行顺序@Aspect 5种通知通知类型类型名称执行时间点可获取返回值目标方法异常时是否会执行@Before前置通知方法执行之前否是@Around环绕通知环绕方法执行是自己控制@After后置通知方法执行之后否是@AfterReturning返回通知方法执行之后是否@AfterThrowing异常通知方法抛出异常之后否是
2021-08-30 20:26:21
1453
原创 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
5362
原创 基于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
原创 基于Redis获取全局唯一序列
目录原理缺点使用示例核心逻辑Redis分布式锁锁key的枚举类分布式锁工具类基于哨兵模式Jedis工具类的部分代码原理前提redis全局唯一,可以是哨兵模式。redis每天按日期为key保存序列已被使用的值的限。客户端每次从redis申请5000个序列值,申请到的序列值用完后或客户端重启后,再从redis申请5000个序列值,这样只要客户端没有可用的序列,就从redit中申请。缺点客户端重启,会浪费掉原先申请到的序列;redis服务器未将序列实时保存到硬盘时,重启redis,可能造成大量序列冲突。
2021-05-10 17:18:09
830
原创 一劳永逸 让SpringBoot项目所有框架使用logback打印日志
目录Maven全局排除依赖Maven排除依赖的方式有三种使用同名空jar包替换的方式,实现全局排除依赖功能pom.xml配置spring-boot-starter-loggingjcl-over-slf4j替换commons-logginglog4j-over-slf4j替换log4jjul-to-slf4j替换java.util.logginglog4j-to-slf4j替换log4j-slf4j-impllogback-spring.xml部分配置最后声明Maven全局排除依赖Maven排除依赖的方
2021-04-29 17:36:44
478
翻译 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
2027
原创 mysql不同条件批量更新
准备工作create table mastertable (id INT,uname VARCHAR(32),primary key (id))create table slavetable (id INT,uname VARCHAR(32),primary key (id))两表关联更新将表mastertable中与表slavetable的id相等的数据的uname字段更新为表slavetable的uname字段的值。UPDATE mastertable m INNER JOIN
2021-03-30 20:45:15
671
EsJsonTool.zip ES报文辅助生成工具
2023-01-08
Hibernate-Validator-6.2.0中文参考文档.pdf
2021-01-20
Thymeleaf + Spring-3.0.11中文参考手册.zip
2020-10-31
dialog-1.0.1.zip
2020-08-16
jquery-easyui1.9.4中文参考手册.zip
2020-06-26
win7中electron打包exe必须的系统底层程序.zip
2020-04-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人