java
文章平均质量分 64
BruceChao5211
java、linux、mysql、redis
展开
-
线上频繁fullgc、oldgc,MybatisPlus踩坑
近期遇到线上出现504报错,查看gc情况发现频繁oldgc,于是尽快回滚线上代码,然后开始排查问题原因。本期需求中优化了一些数据缓存组件,一度怀疑是这里导致的问题,几经排查还是不能确定。于是在运维老师那里启动了一个容器来部署本期最新代码的服务,并把nacos下线,避免线上流量进入。在容器内部查看内存、CPU信息完全正常,定时任务执行也很正常,于是模拟调用线上接口,一段时间后终于发生了oldGC,查看占用cpu较高的线程为GC线程,dump堆内存进行分析,终于发现了问题所在:前四个线程占用内.原创 2021-08-10 16:58:03 · 1708 阅读 · 5 评论 -
拓展swagger插件,简化字典类属性注释
近期需求中会有如下一部分代码,复杂臃肿且不易维护:@Data@ApiModel("Xxx desc")public class Xxx { @ApiModelProperty(value = "课程状态;取自字典 course_state") private Integer state; @ApiModelProperty(value = "排序字段:startTime 课程开始时间、endTime 课程结束时间、orderIncomeNum 成单数、orderRefun原创 2021-07-27 17:01:59 · 940 阅读 · 0 评论 -
Spring中具有多个实现类的接口集合是如何自动注入的?(List如何autowired)
与朋友聊到了一个博客上给出的demo,一个接口集合可以自动注入所有实现类,这种spring注入的写法在工作中还不太常见,一般这种我们见框架里使用SPI的形式居多测试代码// 定义接口public interface MultiService {}// 实现类1@Servicepublic class MultiServiceImpl1 implements MultiService {}// 实现类2@Servicepublic class MultiServiceImpl2原创 2021-04-20 14:17:39 · 3144 阅读 · 0 评论 -
String.intern()方法小记
关于String.intern()方法,源码中有很完善的描述 /** * Returns a canonical representation for the string object. * <p> * A pool of strings, initially empty, is maintained privately by the * class {@code String}. * <p> * When t原创 2021-01-25 17:52:19 · 180 阅读 · 2 评论 -
SpringMVC Controller中成员变量注入HttpServletRequest为何线程安全?
我们在Controller中使用request对象的时候往往会直接Autowired到成员变量中,如下@RestControllerpublic class XController { @Autowired private HttpServletRequest request; @PostMapping("/test") public Object orderInfo() { String o = request.getXxx();原创 2020-12-21 16:41:31 · 685 阅读 · 0 评论 -
关于spring事务传播行为引发的Transaction rolled back because it has been marked as rollback-only
偶尔博客闲逛发现有人讨论这个问题(我自己没有遇到过),翻了几个帖子没有几个讲清楚的,自己测试下吧测试类:package com.web.service;import com.StudyApplication;import com.web.service.i.TransactionalOuter;import lombok.extern.slf4j.Slf4j;import org.junit.Test;import org.junit.runner.RunWith;import or原创 2020-12-14 11:41:55 · 814 阅读 · 0 评论 -
一次线上JVM内存泄露的排查解决
问题的发现 听云监控显示JVM堆内存老年代经过多次FullGC仍然无法回收,gc次数过多且STW过长,会影响线上业务,暂时联系运维老师重启了服务器(-Xmx4G -Xms4G) 问题排查 通过导出的dump文件分析了解到占用内存最大的对象是alibaba.fastjson的ParseConfig对象及其内部的IdentityHashMap对象,当前现象与测试环境dump结果一致 ParseConfig及IdentityHashMap对象的作用 项目中在使用fastjson进行反序列化的时候会调用p原创 2020-09-15 10:57:30 · 573 阅读 · 0 评论 -
关于MapStruct使用expression表达式的小坑
最近项目中使用了mapStruct进行对象属性拷贝,关于原理不做赘述!最近在使用中发现了mapStruct框架的一个小坑,在我们使用expression来指定处理source中的某个属性后设置到target对象的某个属性中的时,会出某种异常现象如:@Override@Mappings({ @Mapping(source = "leaveLesson", target =...原创 2020-04-10 12:36:28 · 19041 阅读 · 11 评论 -
重视基础~Java方法(函数)中参数的传递
做了挺长时间开发之后就会陷入一个思维定式,往往喜欢复制某些功能逻辑现有的实现方式比如我们查出来了一个列表放入List之后,有时候需要对列表进行其他属性的填充,一般会写成如下形式List<User> users = ...;fillItems(users);private void fillItems(List<User> users) { // 忽略...原创 2019-11-25 11:34:43 · 225 阅读 · 0 评论 -
MySQL随机查询N条数据
之前公司的业务需要在同一个列表每个人见到的数据是不一样的 所以就需要按照给定的查询条件随机出现N条记录下面有两种方法: 第一种比较简单,使用mysql自带的rand()函数select ... from table where status = 1 and ... order by rand() limit 0, 10 第二种是借助mysql的多个函数实现sele...原创 2019-11-06 14:24:24 · 441 阅读 · 0 评论 -
两个线程分别打印奇数偶数输出1-100
package com.study.thread;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;public class ThreadDemo { /** * 方法一 */ private static Reent...原创 2019-06-27 16:00:04 · 3461 阅读 · 0 评论 -
ThreadPoolExecutor构造参数测试分析
package com.self;import java.util.concurrent.*;public class ThreadPoolExecutorDemo { private LinkedBlockingQueue<Runnable> queue = new LinkedBlockingQueue<>(10); /** * ...原创 2019-06-27 15:58:17 · 240 阅读 · 0 评论 -
分布式锁-Redis
摘自 https://www.zhaochao.top/articles线上系统为分布式系统的时候 有一些业务逻辑是不是能并发执行的 需要在相同条件下 实现类似串行的状态 譬如:针对同一个用户的同一个接口操作。通过使用AOP结合Redis可以方便的实现分布式锁。首先编写redis的setNx方法(之后的redis版本会下线原有的setNx方法,所以使用set改写),使用set方法改装,...原创 2019-05-15 14:54:27 · 207 阅读 · 0 评论 -
Java踩坑之List的removeAll方法
摘自:https://www.zhaochao.top/article/182最近在公司写东西,发现List的removeAll方法报错 Demo代码如下: List<Long> ids1 = Arrays.asList(1L, 3L, 2L); List<Long> ids2 = Collections.singletonList(...原创 2019-03-28 10:33:34 · 3392 阅读 · 1 评论 -
Docker常用命令
摘自 https://www.zhaochao.top/article/180,更多开发技术请访问 https://www.zhaochao.top使用Docker能够很方便快捷的在Linux上面搭建好各种运行环境,特写下一些基本常用命令 docker info 查看docker服务信息docker search imageName 查找镜像docker pull imagen...原创 2019-02-22 08:46:19 · 161 阅读 · 0 评论 -
AOP实现Redis注解分布式缓存(支持各种配置)
摘自:https://www.zhaochao.top/article/179,更多开发技术请访问https://www.zhaochao.top首先编写@Cached注解import com.common.redis.RedisDBEnum;import org.springframework.core.annotation.AliasFor;import java.lang...原创 2019-01-28 16:07:44 · 273 阅读 · 1 评论