- 博客(728)
- 收藏
- 关注

原创 线上问题排查实用linux命令
Linux命令类1、grepgrep xxx a.txt #文件查找 grep xxx a.txt b.txt #多文件查找 grep 'xxx' /home/admin -r -n #目录下查找所有符合关键字的文件 grep 'xxx' /home/admin -r -n --include *.{vm,java} #指定文件后缀 grep 'xxx' /home/admin...
2020-04-17 20:21:46
323
转载 深入mybatis:Creating a new SqlSession到查询语句耗时长问题
转载自:https://guisu.blog.csdn.net/article/details/136236476?
2024-05-26 10:12:49
880
转载 Spring Gateway下的GC停顿排查之旅
查看容器实例,发现的确会打印出大量的日志文件,几乎一个小时就有十几个文件,在查看下logback的配置xml,发现目前的配置是每100M一个文件,所以会产生很多FileOutputStream是可以解释的。特别是,我们的容器配置是2核4G的低配实例,即使开启了并行处理,也只是多了一个线程,减少耗时的程度有限,只能缓解问题,但并未根治。在通过对比前后两星期的dump文件发现,随着程序的运行,越来越多的FileOutputStream出现,而这些都是用来打日志的,并且都是同名的日志文件出现了几千次。
2024-05-25 11:10:39
265
转载 Java 逃逸分析
关于 Java 逃逸分析的定义:逃逸分析(Escape Analysis)简单来讲就是,Java Hotspot 虚拟机可以分析新创建对象的使用范围,并决定是否在 Java 堆上分配内存的一项技术。开启逃逸分析:-XX:+DoEscapeAnalysis关闭逃逸分析:-XX:-DoEscapeAnalysis显示分析结果:-XX:+PrintEscapeAnalysis逃逸分析技术在 Java SE 6u23+ 开始支持,并默认设置为启用状态,可以不用额外加这个参数。
2024-05-22 14:54:08
157
转载 干货 | 1分钟售票8万张!门票抢票背后的技术思考
商品上线的时候将库存写入Redis,在活动扣减库存时,使用incrby原子扣减成功后将扣减消息MQ发出,在Consumer端消费消息执行DB扣减库存,若下单失败,执行还库存操作,也是先操作Redis,再发MQ,在Consumer端,执行DB还库存,如果未查询到扣减记录(可能扣库存MQ有延迟),则延时重试,并通过埋点与监控检测核心指标是否有异常。例如:商品描述信息,以前缓存过期时间为5min,现在缓存过期时间为24H,被动刷新时间为1min,用户每次请求都返回上一次的缓存,但每1min都会异步构建一次缓存。
2024-05-13 16:09:07
149
转载 毕玄:稳定性,难的不是技术,而是……
只有把稳定性当成业务的功能实现一样,有相应的人员配备和投入,例如做一个业务可能需要多少人,相应的稳定性这块也固定投入多少人,你说到底多少比例合理呢,其实也说不太清楚,但这种简单粗暴的方式其实是最有效的,当然,是不是要把稳定性上升到这样的高度,也需要根据业务的性质、业务所处的阶段来具体判断,以及有这样的投入的情况下,怎么去评判相应职责的团队也仍然是个很复杂的话题。很多做过稳定性这事的人都知道,做这个事情最麻烦的是很难被认可,做的好,不出问题,不懂的人不知道你做了什么,出了问题的时候觉得你到底做了什么,
2024-04-14 20:36:22
101
转载 java.net.Socket异常场景及解决方案
转载自:https://blog.csdn.net/hzp666/article/details/96854876。
2024-03-27 22:56:00
992
原创 Mybatis在SpringBoot中是如何被加载执行
由于MapperScannerConfigurer这个类实现了BeanDefinitionRegistryPostProcessor,所以它就会被生成bean之前加载,调用它的postProcessBeanDefinitionRegistry方法,postProcessBeanDefinitionRegistry里面就会scan我们指定的package里的@Mapper类。里会返回代理对象,对象的类型即 构造函数里传进来的 mapperInterface。
2024-03-27 12:00:38
540
原创 Spring事务源码解析
通过这个接口,Spring为各个平台如JDBC、Hibernate等都提供了对应的事务管理器,但是具体的实现就是各个平台自己的事情了。从上面可知,方法级别上的注解会覆盖类级别上的注解,两个findTransactionAttribute方法都在AnnotationTransactionAttributeSource实现,Spring并不直接管理事务,而是提供了多种事务管理器,它们将事务管理的职责委托给JDBC或者JTA等持久化机制所提供的相关平台框架的事务来实现。Spring的事务属于逻辑事务。
2024-02-05 22:15:00
1038
1
转载 通过SQL分析数据库加锁
转载自:https://blog.csdn.net/fedorafrog/article/details/104249140。
2024-02-05 22:00:00
162
转载 InnoDB的MVCC原理
MVCC (Multi-Version Concurrency Control) 是一种基于多版本的并发控制协议,只有在InnoDB引擎下存在。MVCC是为了实现事务的隔离性,通过版本号,避免同一数据在不同事务间的竞争,可以把它当成基于多版本号的一种乐观锁。当然,这种乐观锁只在事务级别未提交锁和已提交锁时才会生效。MVCC最大的好处,读不加锁,读写不冲突。在读多写少的OLTP应用中,读写不冲突是非常重要的,极大的增加了系统的并发性能。
2024-02-01 22:00:00
146
转载 Spring Boot微服务性能降九成!用Arthas定根因
大家在自定义 Feign 的编解码器时,如果用到了 SpringEncoder / SpringDecoder,应避免 HttpMessageConverters 的重复初始化。如果不需要使用那些默认的 HttpMessageConverter,可以在初始化 HttpMessageConverters 时将第一个入参设置为 false,从而不初始化那些默认的 HttpMessageConverter。另外,应该了解不同的部署方式在类加载器频繁查找和加载资源时是存在性能差异的。
2024-01-26 16:08:31
324
转载 Spring Boot 中自定义异常处理
转载自:https://blog.csdn.net/u013360850/article/details/93101903Spring Boot 中提供了默认的异常处理,但是对于应用来说,这些信息并不应该直接返回或者不够明确,需要结合自己的情况进行定制。当两种方式都实现时,HandlerExceptionResolver要先于ControllerAdvice执行。
2023-12-22 22:00:00
173
转载 分布式系统的SLA
服务等级协议,是指系统服务提供者(Provider)对客户(Customer)的一个可量化的服务承诺,常见于大型分布式系统中,用于衡量系统服务是否稳定健康的常见方法。
2023-11-30 00:00:00
160
转载 C10K场景解决方案
总结以上造成交易超时的原因有两个:**1、心跳机制导致 netty worker 线程忙碌。**在每个心跳任务中,提供方向所有 1 个心跳周期内未收发过报文的消费方发送心跳;消费方向所有 1 个心跳周期内未收发过报文的提供方发送心跳。提供方上所连接的消费方较多,导致心跳报文堆积;同时,处理心跳过程消耗较多 CPU,影响了业务报文的处理时效。**2、全连接队列容量不足。**在提供方重启后该队列溢出,导致大量单边连接产生。单边连接下首笔交易大概率超时失败。下一步思考。
2023-11-28 00:00:00
115
转载 记一次线上数据库死锁定位
有些批量操作可以利用multiquery更新数据库,但有些不可,例如对于同一张表不同字段的多行更新。批量更新,并且每个dao可以多线程更新(在不同事务内同时请求更新),而且没有按照一定顺序。例如事务1更新id为1,2,3的数据,事务2更新id为3,2,1的数据,这样就会发生死锁。转载自:https://zhanghaoxin.blog.csdn.net/article/details/78255670。按顺序更新,例如把入参改为TreeSet,并且dao对象实现Comparable接口。
2023-08-05 13:15:00
169
转载 一文教会你如何写复杂业务代码
转载自:https://blog.csdn.net/zhousenshan/article/details/119084197。
2023-04-04 20:14:31
291
转载 MemorySafeLinkedBlockingQueue
转载自:https://xuliugencn.blog.csdn.net/article/details/125229930?前几天在一个开源项目的 github 里面看到这样的一个 pr:光是看这个名字,里面有个 MemorySafe,我就有点陷进去了。我先给你看看这个东西:这是阿里巴巴开发规范中截的图。为什么不建议使用 FixedThreadPool 和 SingleThreadPool 呢?因为队列太长了,请求会堆积,请求一堆积,容易造成 OOM。
2023-04-04 19:29:17
336
原创 Filter过滤器
接下来我们看一下所有的Filter是如果被调用的,关键代码在ProtocolFilterWrapper中,采用装饰器模式,在调用所有协议会执行ProtocolFilterWrapper这个类,这样就给我们实现Filter相关的机制提供了帮助,在ProtocolFilterWrapper中会将所有的Filter组装成一个链,当链中所有节点运行完之后才会真正执行最终的Invoker。Dubbo这里的Filter设计的确很巧妙,它的目的是在Invoker调用前或后执行一系列Filter。
2022-10-26 21:04:11
244
转载 API接口设计要考虑的点
一个项目内的所有接口,必须有统一的风格,统一返回格式,约定业务层错误编码,每个编码可以携带明确的错误信息。出入参字段含义明确,采用统一的命名规范,如驼峰命名等。返回格式统一采用json格式。{"error_message": "未获取到用户信息","data":}status标识接口是否逻辑处理成功;error_code为不同类型错误信息对应的唯一错误码,error_message为错误信息的简要描述信息(注意某些数据或者信息是否可直接展示给用户),data则为需要返回给调用方的数据信息。
2022-10-21 22:00:00
462
转载 UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
**PROPAGATION_REQUIRES_NEW**:原有事务A新起事务B,事务B中的commit和rollback不会影响外部事务A的commit和rollback,相互独立,如果事务B抛出异常,肯定会影响外事务A的。
2022-10-19 22:45:00
2494
翻译 前缀匹配的工具类
有这样业务场景:对于一个主题subject,想看有哪些group订阅了。而对于消费者来说,订阅的时候就是需要支持前缀匹配的,比如XXX.order.pay,支持订阅XXX.order 就能获取消息。使用的数据结构是基数树,而不是以为的字典树,基数树与字典树的区别在于基数树将单词压缩了, 节点变得更少,解决了字典树高度问题。转载自:https://blog.csdn.net/bohu83/article/details/126427401。
2022-10-19 21:30:00
433
转载 Future.get() 在配置RejectedExecutionHandler为ThreadPoolExecutor.DiscardPolicy策略时一直阻塞
1、重写DiscardPolicy,取消任务: ((FutureTask) r).cancel(true)。2、不使用DiscardPolicy,建议还是用线程池默认的AbortPolicy,可以重写,打印日志,再调用super.rejectedExecution(r, executor),抛出默认异常行为。3、使用java.util.concurrent.FutureTask#get(long, java.util.concurrent.TimeUnit) 带有超时的方法获取结果。
2022-10-14 16:46:50
513
转载 交易中台系统设计与思考
转载自:https://blog.csdn.net/zhousenshan/article/details/109690375?spm=1001.2014.3001.5502系统架构在这里,主要想说的是服务接入层,在我们目前的系统架构中并没有服务接入层。但是在我日后的反思中,觉得服务接入层的存在还是很有必要的。服务接入层的作用防腐层作用。因为业务中台要服务于企业内多条业务线,日常开发中应对不同的业务需求,我们常常在底层服务中的添加许多转换、判读逻辑,而引入了服务接入层我们可以把这些代码放到服务接
2022-04-18 20:02:19
527
转载 java流程引擎实现_手写实现一套流程编排
转载自:https://blog.csdn.net/weixin_39631301/article/details/112082970流程编排随着业务的不断发展,业务流程迭代慢慢变得复杂了起来,全景不清晰,这不仅仅会使开发人员编写代码弄的’ 不敢改 '心理,以及出现问题不好寻找出错位置,历史包袱太重,影响面需要评估,等等。一个本来很简单的需求,但是由于很多历史背景和包袱导致侵入代码需要评估改动影响面很大,这时候就需要一套流程编排来使得流程清晰,能全局感受到业务的能力地图。减少开发、测试等的维护迭代成本
2022-03-09 18:05:57
2738
原创 Java获取泛型T的类型 T.class
直接上代码:public interface CrudRepository<T> { Iterable<T> findAll();}public class BaseImpl <T> implements CrudRepository<T> { @Override public Iterable<T> findAll() { Class<T> c = getTClass();
2022-03-03 21:09:45
8101
转载 数据存储引擎结构介绍
转载自:https://zhuanlan.zhihu.com/p/247953550介绍在存储系统的设计中,存储引擎属于底层数据结构,直接决定了存储系统所能够提供的性能和功能。常见存储算法结构涵盖:哈希存储,B 、B+、B*树存储,LSM树存储引擎,R树,倒排索引,矩阵存储,对象与块,图结构存储等等。哈希存储引擎是哈希表的持久化实现,一般用于键值类型的存储系统。而大多传统关系型数据库使用索引来辅助查找数据,用以加速对数据库数据的访问。考虑到经常需要范围查找,因此其索引一般使用树型结构。譬如MySQL、
2022-01-29 14:33:17
962
转载 stringRedisTemplate使用注意
转载自:https://www.toutiao.com/a7052163401643983390/?log_from=0f004a3e112a_1642771270982首先说下问题现象:内网sandbox环境API持续1周出现应用卡死,所有api无响应现象。刚开始当测试抱怨环境响应慢的时候 ,我们重启一下应用,应用恢复正常,于是没做处理。但是后来问题出现频率越来越频繁,越来越多的同事开始抱怨,于是感觉代码可能有问题,开始排查。01首先发现开发的本地ide没有发现问题,应用卡死时候数据库,redi
2022-01-21 21:23:59
1455
转载 ZooKeeper典型应用场景:分布式锁
转载自:https://www.toutiao.com/a6595438372460691971/?log_from=94560f55c8956_1642770980146分布式锁是控制分布式系统之间同步访问共享资源的一种方式。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要通过一些互斥手段来防止彼此之间的干扰,以保证一致性,在这种情况下,就需要使用分布式锁了。在平时的实际项目开发中,我们往往很少会去在意分布式锁,而是依赖于关系型数据库固有的排他性来实现不
2022-01-21 21:23:22
398
转载 ZooKeeper典型应用场景:分布式锁
转载自:https://www.toutiao.com/a6595438372460691971/?log_from=94560f55c8956_1642770980146分布式锁是控制分布式系统之间同步访问共享资源的一种方式。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要通过一些互斥手段来防止彼此之间的干扰,以保证一致性,在这种情况下,就需要使用分布式锁了。在平时的实际项目开发中,我们往往很少会去在意分布式锁,而是依赖于关系型数据库固有的排他性来实现不
2022-01-21 21:17:22
401
转载 分布式服务框架和原理简章
转载自:https://www.toutiao.com/a6573610696825635336/?log_from=ff720c65a6954_1642770703125应用架构演进这里的架构演进应该是从服务化的角度来说,应该说随着业务发展,应用规模扩大,系统的一些公共服务就会抽取出来,独立开发,部署,维护,用来解决并发,扩展,维护的问题。传统垂直架构有的地方也叫单体应用,以mvc模式开发:所有应用代码统一打包,代码所有接口本地api调用,很少存在远程服务调用;单机或主备,应用做集群部署;
2022-01-21 21:14:00
383
转载 微服务的4个设计原则和19个解决方案
转载自:https://www.toutiao.com/a6755819647863390728/?log_from=393c21fb5a7b8_1642769673160微服务架构现在是谈到企业应用架构时必聊的话题,微服务之所以火热也是因为相对之前的应用开发方式有很多优点,如更灵活、更能适应现在需求快速变更的大环境。本文将介绍微服务架构的演进、优缺点和微服务应用的设计原则,然后着重介绍作为一个“微服务应用平台”需要提供哪些能力、解决哪些问题才能更好的支撑企业应用架构。微服务平台也是我目前正在参与的,
2022-01-21 20:57:25
788
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人