![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring
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 · 1751 阅读 · 0 评论 -
xxljob中执行器配置错误导致的NioEventLoopGroup未被正确回收的oom分析和解决
xxljob中执行器配置错误导致的NioEventLoopGroup未被正确回收的oom分析和解决一. mat内存分析报告中NioEventLoop占用了1.2g的容量,大部分的堆空间定位NioEventLoop正确的被引用位置应该为下图所示NioEventLoopGroup正确的被引用位置为下图所示但发现大量的NioEventLoopGroup没有被正确引用,却也没有回收掉故初步定位为:NettyHttpConnectClient 下的grou...原创 2021-11-15 10:34:06 · 4671 阅读 · 4 评论 -
使用refreshScope.refresh导致Eureka服务下线
使用refreshScope.refresh时报错:Caused by: java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask@727c01f4 rejected from java.util.concurrent.ScheduledThreadPoolExecutor@436a63f1[Terminated, po原创 2021-07-20 20:41:56 · 1208 阅读 · 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 · 753 阅读 · 0 评论 -
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 · 5410 阅读 · 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 · 3265 阅读 · 0 评论 -
java中基于spring aop(切面)的接口调用重试实现
java中基于spring aop(切面)的接口调用重试实现.在项目中需要调用第三方接口,但调用三方接口时可能出现网络错误等外部问题导致的接口调用失败,现需要在此场景下重新尝试调用,并指定重试(错误)的最大次数,超过最大次数后发送邮件通知原创 2020-11-23 17:52:52 · 1820 阅读 · 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 · 2341 阅读 · 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 · 1816 阅读 · 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 · 4579 阅读 · 1 评论 -
java 中的 list 如何聚合并转换类型为Map包Map里面在处理为其他类型, 如何使用 Collectors.groupingBy Collectors.collectingAndThen
java 中的 list 如何聚合并转换类型为Map包Map里面在处理为其他类型, 如何使用 Collectors.groupingBy Collectors.collectingAndThen原创 2020-09-17 16:21:33 · 2861 阅读 · 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 · 4298 阅读 · 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 · 458 阅读 · 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 · 1098 阅读 · 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 · 3469 阅读 · 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 · 8871 阅读 · 0 评论 -
Spring Boot最核心的20个注解
Spring Boot最核心的27个注解,你了解多少?导读Spring Boot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以方便地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较火热的微服务框架SpringCloud集成。而Spring Boot之所以能够轻松地实现应用的创建及与其他框架快速集成,最核心的原因就在于它极大地简化了项目的配置,最大化地实现了“约定大于配置”的原则。然而基于Spring Boot虽然极大地方便了开发,但是...转载 2020-06-01 16:07:39 · 198 阅读 · 0 评论 -
spring boot 读取文本文件,优先在系统相对路径(jar包相对路径)查找如果没有,再查找jar包中的resources目录下
在开发支付项目时需要读取密钥,为了保证密钥的安全性和项目的多环境兼容性,想出一个方案:优先在系统相对路径(jar包相对路径)查找如果没有,再查找jar包中的resource目录下1.密钥的安全性建立在:如果是生产环境读取系统相对jar包目录下的密钥文件,运维人员保密处理2.项目的多环境兼容性建立在:jar包resource中打包进默认的密钥,测试环境开发环境无需在jar目录中准备...原创 2020-03-09 18:29:05 · 3411 阅读 · 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 · 1236 阅读 · 0 评论 -
java DataFieldMaxValueIncrementer 生成序列号
/** * 生成对应的序列号 - hank * @param sequence DataFieldMaxValueIncrementer对象 * @param left 最左边拼接的串 * @param size 总长度 * @param character 数据库生成随机数字时补充字符 补充在中间 **/ public static String gene...原创 2020-03-03 21:17:59 · 984 阅读 · 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 · 1757 阅读 · 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 · 8703 阅读 · 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 · 7571 阅读 · 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 · 331 阅读 · 0 评论 -
java中ZonedDateTime,LocalDateTime,Date,Calendar,Instant,timestamp的比较区别
LocalDateTime,Date:没有(无法)包含时区(本地时间,隐式的指默认时区ZoneId.systemDefault)信息,其实就是本地时间,即没有包含时区信息,就像我们平时互相说的时间日期一样,意味着如果需要转换为其他有时区的时间或者转换为其他时区的时候需要传入时区,这里的传入的时区一般就是指ZoneId.systemDefault()系统默认时区,所以很多函数转换时不传会去取默认...原创 2020-01-17 15:53:40 · 6341 阅读 · 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 · 7443 阅读 · 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 · 1367 阅读 · 1 评论 -
logback.xml指定环境(spring 且& 或|)配置指定内容
<!-- 日志输出级别 --> <root level="${LOGLEVEL}"> <appender-ref ref="FILE" /> <!-- 生产环境将请stdout,testfile去掉 --> <appender-ref ref="STDOUT" /> <!--指定环境开启(LogDingDing...原创 2019-12-12 18:19:30 · 685 阅读 · 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 · 1662 阅读 · 0 评论 -
Junit4 多线程运行测试用例
Junit4测试默认不能开启多线程,这里借助Groboutils Core可以实现多线程下载jar包(不知道为什么我这边maven依赖不进去,只能导入jar包了):https://mvnrepository.com/artifact/net.sourceforge.groboutils/groboutils-core/5导入lib:编写代码:package com....原创 2019-11-07 17:59:29 · 612 阅读 · 0 评论 -
springfox swagger 没有定义bean时手写 入参出参
请求入参: @ApiOperation("客户端获得底部button") @PostMapping(value = "/getClientTabBar")// @ApiImplicitParam(dataType="string", value= "1.android 2.ios 3.小程序", required = true, paramType = "body"...原创 2019-10-17 15:52:25 · 664 阅读 · 0 评论 -
idea 启动spring spring boot项目 莫名其妙停住走不下去
之前有次使用idea启动(debug)spring boot项目的时候发现忽然停在一个位置(看console)不走了,打开端口也没办法访问,很奇怪也没有报错,各种找原因,后来发现是打了特殊断点,但是idea没有自动定位到断点的位置(具体原因未知),这里特别记录下解决办法:把下面的两个组的断点先去掉!再启动(debug)...原创 2019-09-12 14:00:21 · 5720 阅读 · 5 评论 -
logback pattern配置格式全面 内部 PatternLayout 源码
当定义logback的pattern时我们会去配置pattern,但是不知道还有那些可以用的参数和为什么这么写<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>这个时候可以从源码中找到ch.qos.logback.classic.Pattern...原创 2019-08-15 14:24:27 · 1448 阅读 · 0 评论 -
logback设置控制台输出色彩 不同级别不同色彩
logback.xml配置:<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输...原创 2018-10-08 17:10:24 · 9461 阅读 · 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 · 27626 阅读 · 3 评论 -
微服务架构:Eureka参数配置项详解
转自:https://www.cnblogs.com/fangfuhai/p/7070325.htmlEureka涉及到的参数配置项数量众多,它的很多功能都是通过参数配置来实现的,了解这些参数的含义有助于我们更好的应用Eureka的各种功能,下面对Eureka的配置项做具体介绍,供大家参考。 Eureka客户端配置 1、RegistryFetchIntervalSe...转载 2018-08-07 17:24:27 · 1215 阅读 · 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 · 32656 阅读 · 2 评论 -
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 · 3240 阅读 · 0 评论