spring boot
hank009
这个作者很懒,什么都没留下…
展开
-
sping boot(Jackson)中Long转换为JSON数值溢出的处理
**//*** 所有的Long自动转换为String,编码json最大值溢出*/@Bean注意: 使用这种方式所有的VO,DTO中的Long都将序列化为json的string类型,如果某些Long属性需要序列化为json number型需要添加序列化注解/**//*** 分页信息*/@ApiModel@Data@ApiModelProperty(value = "总记录数")@ApiModelProperty(value = "数据列表")原创 2023-01-05 17:11:25 · 1717 阅读 · 0 评论 -
java redis分布式互斥锁(基于lua脚本保证原子性)
锁代码:package com.wjj.application.util;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.data.redis.core.script.DefaultRedisScript;import org.sprin.原创 2021-03-23 21:00:51 · 735 阅读 · 0 评论 -
maven依赖原则,maven依赖冲突以及解决方法
一、maven依赖原则1、依赖路径最短优先原则一个项目Demo依赖了两个jar包,其中A-B-C-X(1.0) , A-D-X(2.0)。由于X(2.0)路径最短,所以项目使用的是X(2.0)。2、pom文件中申明顺序优先如果A-B-X(1.0) ,A-C-X(2.0) 这样的路径长度一样怎么办呢?这样的情况下,maven会根据pom文件声明的顺序加载,如果先声明了B,后声明了C,那就最后的依赖就会是X(1.0)。3,覆写优先子pom内声明的优先于父pom中的依赖。二、如何...转载 2021-03-11 16:37:11 · 2228 阅读 · 1 评论 -
spring中javaMail使用ssl的方法发送邮件,javaMail导入证书,忽略证书的方法
使用配置## 基础邮箱配置(每个环境可以覆盖配置)# 发送者的邮箱地址spring.mail.username=xxxx# 发送者的邮箱密码spring.mail.password=xxx# 发送邮箱对应的SMTP地址spring.mail.host=xxxxspring.mail.port=465发送邮件是出现报错sun.security.validator.ValidatorException: PKIX path building failed: sun.security.原创 2021-02-25 14:40:41 · 5086 阅读 · 2 评论 -
java Hmac实现,md5加密实现
package com.wjj.application.facade.ca.casdk.util;import javax.crypto.Mac;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;import java.math.BigInteger;import java.nio.charset.Charset;import java.nio.charset.StandardCharsets;impo.原创 2020-12-23 11:48:05 · 3163 阅读 · 0 评论 -
java中基于spring aop(切面)的接口调用重试实现
java中基于spring aop(切面)的接口调用重试实现.在项目中需要调用第三方接口,但调用三方接口时可能出现网络错误等外部问题导致的接口调用失败,现需要在此场景下重新尝试调用,并指定重试(错误)的最大次数,超过最大次数后发送邮件通知原创 2020-11-23 17:52:52 · 1758 阅读 · 4 评论 -
spring boot 不同环境读取不同的配置文件(yml)
配置类:package com.wjj.application.facade.kangmei;import lombok.Data;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Laz原创 2020-11-20 18:32:06 · 2314 阅读 · 0 评论 -
java虚拟机oom定位, java内存分析
场景:项目在使用springcloud的zuul时,在uat环境下发生oom,并且设置堆内存(-Xmx3072M)大小为3gb任然占满任然oom定位过程:第一步获取堆内存dump文件: 这里的内存是缓慢上升的所以可以通过以下方法获取堆内存dump文件:通过命令 jmap加上jar进程号打印出dump文件,进程号可以通过以下命令查看: ps aux|grep jar 得到进程号后,打印dump文件命令(其中12176为进程号) jmap -dum...原创 2020-11-20 18:24:51 · 1575 阅读 · 0 评论 -
logback动态修改配置(动态添加一个Appender)
logback可以通过:LoggerContext lc = (LoggerContext) StaticLoggerBinder.getSingleton().getLoggerFactory();获取到LoggerContext 上下文动态修改配置,例子(动态添加一个Appender):package com.wjj.application.config;import ch.qos.logback.classic.Level;import ch.qos.logback.cla...原创 2020-10-20 18:55:08 · 4504 阅读 · 1 评论 -
logback配置载入顺序,配置文件命名优先级
logback配置类的初始化在:org.slf4j.impl.StaticLoggerBinder类中的静态代码块中:初始化调用了上下文初始化的自动配置方法:自动配置中的关键代码调用 findURLOfDefaultConfigurationFile,去查找配置文件类:会通过这四个地方查找logback的配置文件findConfigFileURLFromSystemProperties函数查找的是: final public static String CONFIG原创 2020-10-20 11:08:40 · 3382 阅读 · 2 评论 -
java 中的 list 如何聚合并转换类型为Map包Map里面在处理为其他类型, 如何使用 Collectors.groupingBy Collectors.collectingAndThen
java 中的 list 如何聚合并转换类型为Map包Map里面在处理为其他类型, 如何使用 Collectors.groupingBy Collectors.collectingAndThen原创 2020-09-17 16:21:33 · 2810 阅读 · 1 评论 -
jackson使用@JsonSerialize格式化BigDecimal解决.00不显示问题
步骤1.创建一个BigDecimal格式化工具import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.databind.JsonSerializer;import com.fasterxml.jackson.databind.SerializerProvider;import java.io.IOException;import java.math.BigDecimal;public clas转载 2020-07-30 11:33:09 · 4252 阅读 · 0 评论 -
SpringBoot配置的优先级
读取顺序(同一个配置按顺序读取,读取到就是当前值不会用下面的): 1.jar包的同一目录下config文件夹下的配置文件 2.jar包的同级目录的配置文件 3.代码中(jar包中)的classpath(resources)下的config文件夹 4.代码中(jar包中)的classpath(resources)下的配置文件。 5.启动参数,启动jar包时传 --参数key=参数值,例如: --enable...原创 2020-07-20 15:13:24 · 453 阅读 · 1 评论 -
获得指定日期添加指定天数后的0点(昨天0点,前天0点,明天0点,后天0点,十天后零点)
/** * 获得指定日期添加指定天数后的0点 * * @param date 指定日期 * @param plusDays 添加指定天数 * @return 指定日期添加指定天数后的0点 * @author hank */ public static Date getPlusDayInitial(Date date, long plusDays) { LocalDateTime nextDayZe...原创 2020-07-10 16:24:14 · 1068 阅读 · 0 评论 -
JAVA 导入信任证书 (Keytool 的使用)
文章目录1. 问题背景 2. 诊断方式 3. 解决方式 1). 列出 keystore 中的证书。 2). 导入证书。 4.附加内容:如何获取一个网站的证书1. 问题背景使用 ssl 连接时,遇到不信任的证书,应用程序一般都会拒绝连接。浏览网站时,我们可以通过在浏览器的设置中导入证书,把证书加入到信任列表中。而在 JAVA 直接进行 SSL 连接应用时,默认没有一个界面来导入证书。JAVA 进行不信任的 ssl 连接时,会报如下异常:javax.net.ssl.SSL转载 2020-06-19 17:23:34 · 3253 阅读 · 0 评论 -
SpEL表达式总结(@Value(#SpEL表达式))
转载:https://www.jianshu.com/p/e0b50053b5d3,https://www.cnblogs.com/chinda/p/6490896.htmlSpEL 字面量:整数:#{8} 小数:#{8.8} 科学计数法:#{1e4} String:可以使用单引号或者双引号作为字符串的定界符号。 Boolean:#{true}SpEL引用bean , 属性和方法:引用其他对象:#{car} 引用其他对象的属性:#{car.brand} 调用其它方法 , 还可...转载 2020-06-11 21:18:57 · 8416 阅读 · 0 评论 -
Spring Boot最核心的20个注解
Spring Boot最核心的27个注解,你了解多少?导读Spring Boot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以方便地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较火热的微服务框架SpringCloud集成。而Spring Boot之所以能够轻松地实现应用的创建及与其他框架快速集成,最核心的原因就在于它极大地简化了项目的配置,最大化地实现了“约定大于配置”的原则。然而基于Spring Boot虽然极大地方便了开发,但是...转载 2020-06-01 16:07:39 · 194 阅读 · 0 评论 -
elasticsearch 中获得 分词匹配 +(or) 全词模糊匹配 的查询结果(boolQuery)
@Override public Response selectStructuredDataList(StructuredDataDTO structuredDataDTO) { StructuredDataTypeEnum structuredDataTypeEnum = StructuredDataTypeEnum.getByStructuredType(structuredDataDTO.getStructuredType()); // 是否需要中转到ai库..原创 2020-05-13 17:10:07 · 2452 阅读 · 1 评论 -
spring boot 读取文本文件,优先在系统相对路径(jar包相对路径)查找如果没有,再查找jar包中的resources目录下
在开发支付项目时需要读取密钥,为了保证密钥的安全性和项目的多环境兼容性,想出一个方案:优先在系统相对路径(jar包相对路径)查找如果没有,再查找jar包中的resource目录下1.密钥的安全性建立在:如果是生产环境读取系统相对jar包目录下的密钥文件,运维人员保密处理2.项目的多环境兼容性建立在:jar包resource中打包进默认的密钥,测试环境开发环境无需在jar目录中准备...原创 2020-03-09 18:29:05 · 3376 阅读 · 1 评论 -
java(包括springboot)读取resources下文件方式
1、使用项目内路径读取,该路径只在开发工具中显示,类似:src/main/resources/resource.properties。只能在开发工具中使用,部署之后无法读取。(不通用) File file = new File("src/main/resources/resource.properties");@Test public void testReadFil...转载 2020-03-04 11:05:41 · 1186 阅读 · 0 评论 -
java DataFieldMaxValueIncrementer 生成序列号
/** * 生成对应的序列号 - hank * @param sequence DataFieldMaxValueIncrementer对象 * @param left 最左边拼接的串 * @param size 总长度 * @param character 数据库生成随机数字时补充字符 补充在中间 **/ public static String gene...原创 2020-03-03 21:17:59 · 954 阅读 · 2 评论 -
java AES工具类
package com.wjj.application.paysdk.crypt.tools;import javax.crypto.*;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.PBEKeySpec;import javax.crypto.spec.SecretKeySpec;import j...原创 2020-03-03 18:53:39 · 1750 阅读 · 1 评论 -
在Java下进行RSA加密(私钥加密,公钥解密)
加密过长的会报错:Data must not be longer than 245 bytes原因是应为不同长度的密钥对应可以加密不同最大长度的原文,2048就对应245解决办法是:1.分段2.RSA加密是有长度限制的.单纯用RSA加密较长数据时得使用分段加密,效率低下.用RSA+AES是比较主流的做法:AES加密数据产生密文,RSA加密AES密钥产生加密后的AES密钥,然后将...原创 2020-03-03 17:29:44 · 8157 阅读 · 0 评论 -
使用bouncycastle在Java下进行RSA加密(私钥加密,公钥解密)
maven pom依赖:<!-- https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on --> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk...原创 2020-03-03 17:28:04 · 7333 阅读 · 2 评论 -
利用hsdis和JITWatch查看分析HotSpot JIT compiler生成的汇编代码,ByteCode
安装hsdis要查看JIT生成的汇编代码,要先装一个反汇编器:hsdis。从名字来看,即HotSpot disassembler。实际就是一个动态链接库。网络上有已经编绎好的文件,直接下载即可。国内的:http://hllvm.group.iteye.com/也可以自己编绎,只是编绎hsdis,还是比较快的。windows下下载对应版本解压得到dll,保存到jdk目录下\jre\...转载 2020-01-20 17:06:27 · 322 阅读 · 0 评论 -
java中ZonedDateTime,LocalDateTime,Date,Calendar,Instant,timestamp的比较区别
LocalDateTime,Date:没有(无法)包含时区(本地时间,隐式的指默认时区ZoneId.systemDefault)信息,其实就是本地时间,即没有包含时区信息,就像我们平时互相说的时间日期一样,意味着如果需要转换为其他有时区的时间或者转换为其他时区的时候需要传入时区,这里的传入的时区一般就是指ZoneId.systemDefault()系统默认时区,所以很多函数转换时不传会去取默认...原创 2020-01-17 15:53:40 · 6227 阅读 · 0 评论 -
java时间日期获得0点0分0秒(本地时间(时区)),获取当天零点零分时间(本地时间(时区))
获取当天零点零分时间(本地时间(时区))返回LocalDateTime:LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0);获取当天零点零分时间(本地时间(时区))返回Date: /** * 获得当天零时零分零秒 * @auth hank * @retu...原创 2020-01-17 14:37:27 · 7230 阅读 · 0 评论 -
集合拼接成字符串代码,拼接Collection : join(coll, CLASS:getField)的形式拼接
代码:package com.application.util;import java.util.Collection;import java.util.Iterator;import java.util.function.Function;import java.util.stream.Stream;/** * @author hank * @since 2020/1/...原创 2020-01-02 16:42:17 · 1326 阅读 · 1 评论 -
maven修改包名大小写后无效(mvn install, mvn deploy)
maven修改包名大小写后无效(mvn install, mvn deploy)解决:先mvnclean下原创 2019-12-29 20:45:33 · 1217 阅读 · 1 评论 -
mybatis plus自动生成代码tinyint(1)自动转换为Boolean 的解决办法
说明下为什么会自动转换为Boolean,是因为mybtisplus提供的默认的mysql类型转换器MySqlTypeConvert上特别写了这一段:对症下药的解决办法是重写一个,在注入到配置里:/** * 自定义类型转换 */class MySqlTypeConvertCustom extends MySqlTypeConvert implements ITypeConvert...原创 2019-12-23 16:00:20 · 13739 阅读 · 1 评论 -
swagger(springfox)配置分组(根据uri分组,url分组等)
swagger(springfox)配置分组(根据uri分组,url分组等)原创 2019-12-16 11:14:54 · 3415 阅读 · 0 评论 -
Redisson(redlock, redis锁, 分布式锁) 核心代码(加锁解锁)介绍说明
加锁核心代码(RedissonLock.tryLockInnerAsync): <T> RFuture<T> tryLockInnerAsync(long leaseTime, TimeUnit unit, long threadId, RedisStrictCommand<T> command) { internalLockLe...原创 2019-11-26 11:35:27 · 1641 阅读 · 0 评论 -
datasource $username被替换为PC用户名的解决方案
在idea下运行springboot项目遇到datasource中设置好了username却被设置成了计算机用户名(windows)Administrator排查问题打断点,发现在初始化bean的时候就被传入的Administrator给替换掉username;所以检查环境变量,确实取得是环境变量,很诡异,各种折腾没解决;后来发现是使用了@ConfigurationProp...原创 2019-11-21 18:33:55 · 691 阅读 · 0 评论 -
springboot下使用Redisson(redlock, redis锁, 分布式锁)
springboot下使用Redisson(redlock, redis锁, 分布式锁)原创 2019-11-06 10:13:49 · 5848 阅读 · 1 评论 -
OkHttpUtils java post 异步post 提交
工具package com.wjj.application.util;import com.alibaba.fastjson.JSON;import okhttp3.*;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Component;i...原创 2018-07-24 14:29:25 · 3163 阅读 · 0 评论 -
springCloud Eureka 报错解决方案
在根据大神的文章安装eureka过程遇到些报错,这里记录下比较好的解决方案https://blog.csdn.net/forezp/article/details/70148833/启动Eurekaserver直接启动报错:EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT...原创 2018-08-07 17:04:32 · 32372 阅读 · 2 评论 -
微服务架构:Eureka参数配置项详解
转自:https://www.cnblogs.com/fangfuhai/p/7070325.htmlEureka涉及到的参数配置项数量众多,它的很多功能都是通过参数配置来实现的,了解这些参数的含义有助于我们更好的应用Eureka的各种功能,下面对Eureka的配置项做具体介绍,供大家参考。 Eureka客户端配置 1、RegistryFetchIntervalSe...转载 2018-08-07 17:24:27 · 1196 阅读 · 0 评论 -
关于 spring boot 的 Duration (java.time.Duration) 在yml properties 中的配置方法
在新版本的springboot中的redis的时间相关的配置使用了java.time.Duration类在配置时间时发现与老版本不同,就研究了下,发现使用了新的方式配置时间,这里记录下从源码中可以看出时间配置应该诸如: 1s 1.5s 0s0.001S 1h 2d 1m 1M -PT0.001S形式/** * Obtains a {@code Du...原创 2018-08-13 10:16:52 · 27345 阅读 · 3 评论 -
logback 钉钉机器人通知 LogDingDingAppender
package com.wjj.application.config;import ch.qos.logback.classic.Level;import ch.qos.logback.classic.PatternLayout;import ch.qos.logback.classic.spi.LoggingEvent;import ch.qos.logback.core.Unsyn...原创 2019-08-15 17:31:33 · 1110 阅读 · 0 评论 -
spring boot 微服务 启动指定目录所有jar包脚本(windows git bash(mintty))
在开发过程遇到项目依赖很多服务,想在本地调试,但是idea启动这么多服务很费事,而且平时也不需要修改,但是服务之间有依赖,这时候写了个自动启动当前目录jar包(springboot)的脚本,把jar包(springboot)打好,放到目录里,run下就可以启动所有的jar包了!用了git安装的时候带的mintty文件名: run.sh#!/bin/bashallJar=`...原创 2019-09-04 14:51:16 · 1428 阅读 · 0 评论