自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

希望

一个程序员如果哪天开始停止学习,那么他的职业生涯离结束就已经不远了!

  • 博客(18)
  • 收藏
  • 关注

原创 SpringCloudGateway生产case(tcp连接数暴涨)分析及修复

一、生产case描述当SpringCloudGateway下游应用发生阻塞(如full-gc)时, SpringCloudGateway的TCP连接数瞬时大幅度增长且长时间无法恢复,导致对外提供接口耗时骤增。图中tcp连接数下降是因服务重启所致;二、case原因分析(ps:项目使用的SpringCloudGateway默认配置)SpringCloudGateway调用下游服务时会默认使用httpClient连接池,连接池默认最大连接数maxConnections=2^23 -1,默认maxId

2022-01-20 17:07:16 8552 4

原创 生产gateway内存泄漏排查

在上线日志新功能后,生产环境某个网关2台服务器平均每天内存警报一次,在运维扩容了网关服务器的内存后,警报还是存在,于是乎这个问题便给了开发。。。。。。因为刚入职公司没多久,各种日志和监控权限不足,运维还爱答不理,所以并没有很多的一手信息,平白给定位问题带来困难;因为是最新上线了打印gateway的全局出入参日志功能出现的网关内存异常,所以果断关闭了该功能,内存正常;根据内存异常现象推测如下:1. gateway使用logback打印出入参数,需要打印日志量太大,异步打印是会用到堆内内存,导致内存溢出

2021-08-25 11:16:00 1629

原创 Redis主从数据同步

现在绝大多数公司都会用到redis做缓存,也是提升性能最廉洁最简单的方式之一,为了保证redis服务的高可用,各家公司会根据自己的实际情况使用redis集群(redis cluster,codis等)或者主从结构,但是集群也好,主从结构也罢,都离不开redis不同服务器(主->从,主->从->从)之间的数据同步。那redis是怎么做的数据同步呢?大家自己设想下我们自己就是slave,需要实时从master获取数据,而且还不能漏掉数据需要解决什么问题或者什么场景?比如:1.从哪开始同步

2021-05-14 10:50:54 135

原创 MySQL乐观锁是真正意义上的乐观锁?

在创作该文当天下午,看见某篇秒杀技术博客的文章说道利用mysql乐观锁提高并发(原文如下)悲观锁虽然可以解决超卖问题,但是加锁的时间可能会很长,会长时间的限制其他用户的访问,导致很多请求等待锁,卡死在这里,如果这种请求很多就会耗尽连接,系统出现异常。乐观锁默认不加锁,更失败就直接返回抢购失败,可以承受较高并发突然发下自己对mysql乐观锁概念很是模糊,隐约知道有这个概念,便去网上搜索学...

2019-12-12 16:30:10 418 2

原创 你真的会用Optional?

地球人都知道java8引入很多很便捷的工具类,如stream,optional等等,在项目中也是经常用到,直到一个Bug让我重新认知到Optinal这个工具类。先上有bug的这段代码: //这段代码的原逻辑是典型if else,两个逻辑只能2选1 return Optional.ofNullable(cusInfo).map(e -> { ...

2019-10-29 17:16:41 353 1

原创 jedis+redisTemplate实现redis分布式锁

本文是一篇简单封装redis做分布式锁的工具类文章,不涉及原理,源码,不适用于redis集群!@Slf4jpublic class RedisLockUtil { private static final String LOCK_SUCCESS = "OK"; private static final String SET_IF_NOT_EXIST = "NX"; pr...

2019-10-18 10:32:58 372

原创 如何优雅把分不失精度转换成元

公司前后端协定,后端数据库中对于价格落库的时候统一单位: 分,通过接口返回给前端则统一转换成元,比如商品价格25.68,数据库落库则是2568,但是接口给前端返回则需要25.68;在转换的过程中需要注意精度的丢失,所以直接摒弃double,float采用BigDecimal类型,当然你写个方法类,里面加上下面的方法: private static final BigDecimal DIVIDE...

2019-05-16 10:38:02 3305 2

原创 真的理解公平锁和非公平锁嘛?

之前一直对公平锁和非公平锁的概念不是特别清楚,简单理解为只要当前资源被加锁,之后的请求都会搁置到队列中公平锁就是严格按照FIFO(先进先出)的规矩办事。非公平锁就是不遵守这个先进先出的规矩,恶性竞争资源。在看AQS(AbstractQueuedSyncronizer)的源码中打破这种不太准确的认知.接下来我会用ReentrantLock的源码配合着阐述我理解的公平锁和非公平锁。公平锁: Fai...

2019-03-26 18:43:35 1582 1

原创 Elastic-Job使用不当导致的线上惨案

在公司业务中的某个场景需要实时更新某个活动状态,定时去更新数据库中相应的数据,很显然跟之前的定时任务一样就直接使用Elastic-Job,因为需要对数据库update也没多想下意识就加上了事物的注解 @Transactional(rollbackFor = Exception.class)开启事物。一切都往常一样功能正常上线,知道2个月后的某一天,线上大量的定时任务执行异常,经排除发现问题的根源就...

2018-12-25 18:13:34 2246 3

原创 使用Java导出Excel表,解决浏览器不兼容导致乱码

public void ResultExport(Integer id, HttpServletRequest request, HttpServletResponse response) throws Exception { PageResult<Info> info = null; try { //查询出...

2018-11-06 17:31:43 3324

原创 SpringBoot配置ThreadPoolTaskExecutor

package com.example.demo;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.scheduling.concurrent.ThreadPoolT...

2018-11-06 15:33:27 13380

转载 最好的volatile关键字解析

这里写自定义目录标题Java并发编程:volatile关键字解析volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java...

2018-10-30 14:42:14 135

原创 SpringBoot 1.5.10 RELEASE版本返回json格式中date类型时差问题

一直理所当然的以为SpringMVC返在@RestController或者@ResponseBody返回的时间格式是Long类型,SpringBoot肯定也是一样,然而今天被线上一个小bug颠覆认知.在线上出现时间错误,查看数据库发现时间是没问题的,一通定位发现是在Controller返回json数据时date类型的数据格式没有如预期般的Long类型 ,而是: { ...

2018-10-09 15:43:58 455

原创 使用SpringCloud全家桶中的Feign踩的坑‘Error creating bean with name 'eurekaAutoServiceRegistration'

在自学SpringCloud全家桶中的Feign的时候踩的坑,启动的时候报如下错误:org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name ‘eurekaAutoServiceRegistration’: Singleton bean creation not...

2018-10-09 14:26:45 20032 2

原创 SpringBoot为什么可以自动配置?

最近工作变动,以前公司使用的一直都是spring,到了新公司后项目都使用了springboot,而我对springboot可以做到没有配置文件还可以智能配置非常感兴趣,所以就大致研究了下springboot的自动配置的源码,本文也只会解释springboot自动配置的原理,老规矩,写的不好的地方可以喷,喷完最好可以告诉我最佳答案。springboot自动配置的源头便在于启动类上的注解 @Spri...

2018-09-30 16:57:16 2083 1

原创 浅谈ThreadPoolExecute(JDK8)

李大爷的线程池堪称经典和艺术,先顶礼膜拜!小生技术菜鸟一枚,纯属自我学习记录,有写的不好或者不对的地方,请各位大佬喷完后记得告诉我错在哪

2018-09-28 00:22:41 6512 1

原创 mybatis偶现数组越界:Error preparing statement. Cause: java.lang.ArrayIndexOutOfBoundsExceptio

*问题原因:**通过本地复现debug源码,是因为代码中 Mono.zip(查询A,查询B), 且A和B查询用了同一个事务对象,而事务对象里面有个成员变量(queryStack)线程不安全,对这个成员变量做 【变量++】, 【变量–】 操作后,导致这个变量为负数。2、在使用MyBatis嵌套查询的语法时才有用,当使用该语法,需要用queryStack 来记录嵌套的层数,根据这个变量来做缓存控制和延迟加载处理。,生产环境没有该异常,测试换将偶尔来那么一回,真真让人费解,抓脑仁。

2023-11-28 16:56:43 786

原创 无需改动代码实现jasypt加密

使用jasypt加密配置文件中内容

2022-11-28 16:30:55 754 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除