02 2021 档案
spring容器的refresh方法分析
摘要:从这里进去: 进入到refresh方法中,有10几个子方法,一个个讲。 1.prepareRefresh,刷新前的准备工作,比如:设置容器启动时间,设置活跃状态为true,设置关闭状态为false,获取environment对象,并加载当前的属性值到environment对象中,准备监听器和事件的集
阅读全文
布隆算法
摘要:1. 背景知识 在网上已经有很多关于布隆过滤器的介绍了,这里就不再赘述,下面简单地提炼几个要点: 布隆过滤器是用来判断一个元素是否出现在给定集合中的重要工具,具有快速,比哈希表更节省空间等优点,而缺点在于有一定的误识别率(false-positive,假阳性),亦即,它可能会把不是集合内的元素判定为
阅读全文
Spring MVC 处理一个请求的流程分析
摘要:Spring MVC是Spring系列框架中使用频率最高的部分。不管是Spring Boot还是传统的Spring项目,只要是Web项目都会使用到Spring MVC部分。 本篇博客简要分析Spring MVC处理一个请求的流程。 一个请求从客户端发出到达服务器,然后被处理的整个过程其实是非常复杂的
阅读全文
复杂度分析:时间复杂度和空间复杂度
摘要:本文转载自:数据结构和算法之美 当我们设计了一个算法以后,往往会从时间和空间这两个维度来评判这个算法的优劣。执行时间越短,占用内存空间越小的算法,我们认为是更优的算法。 这篇文章的主题:复杂度分析就是用来分析算法时间和空间复杂度的。 为什么需要复杂度分析 你可能会有些疑惑,我把代码跑一遍,通过统计、
阅读全文
源码解析-HashMap put方法解析
摘要:put方法主要干这几件事情:1.算出key的hash值,key的hashcode的高低位异或算出来。 2.若果散列表为空,则初始化散列表。 3.算出散列表下标位置,(n - 1) & hash。 4.散列表下标位置值为空,则把传入的参数封装成node节点设置到散列表下标位置。 5.如果该散列表下标的
阅读全文
源码解析-HashMap扩容(红黑树单独讲)
摘要:扩容的场景这里不累赘讲了,比如第一次put的时候,还有就是插入完以后,也还要判断是否要扩容。直接看源码吧。 1.扩容的方法如下,主要干这几件事情,第一件,算出新数组长度和新数组扩容阈值,创建新数组。第二件,扩容前的数组元素迁移到扩容后的数组当中去。主要分为单个元素的迁移,链表的迁移,红黑树的迁移(下
阅读全文
源码解析-spring循环依赖源码解析
摘要:假设:A依赖B,B依赖A,A,B相互依赖. 大体流程如下图所示: 首先A先执行getBean(),getBean里面调用doGetBean方法,doGetBean再调用getSingleton(beanName)从缓存中获取实例,进入方法里面,先从一级缓存里面拿,一级缓存里面没有,再从二级缓存,二级
阅读全文
Alibaba Nacos集群搭建与使用
摘要:Spring cloud Netflix现状如何: Spring Cloud Netflix Projects Entering Maintenance Mode(Spring Cloud Netflix项目进入维护模式) https://spring.io/blog/2018/12/12/spri
阅读全文
源码解析-ReentrantLock源码解读
摘要:传入参数为true,是公平锁,false为非公平锁。 我们这边解读源码以非公平锁为例来解读: compareAndSetState(0, 1)通过CAS设置state状态为1,如果设置成功则加锁成功,设置当前拥有独占访问权限的线程为当前访问线程。后面没有设置成功的线程执行else中的acquire(
阅读全文
线上问题-小店价格服务调用不通(arthas排查)
摘要:问题描述:小店价格服务调用没有返回值,没有异常信息。 首先初步怀疑是这个方法有问题: 这个外部方法中有两个方法,一个一个监控看。首先监控insertPriceApplication(pv)这个,结果如下图,没有问题。 然后监控另外一个方法pushApproval(pv),结果如下,报NoSuchMe
阅读全文
线上问题-OMS订单履约系统调用服务接口超时
摘要:1.现象: OMS订单履约系统调用服务接口超时(图1) 图1 2.调用链查看: 服务这段时间内存在一定的接口超时(图2) 图2 根据以往经验首先想到是服务有频繁FULLGC,查看服务是否频繁fullgc进入jdk bin目录下执行 ./jstat -gccause <进程id> <时间(单位毫秒)>
阅读全文
线上问题-Full GC问题排查解决
摘要:问题描述:Dubbo Rpc调用异常(第1次发送):项目:agent-admin类:com.yunji.oms.base.api.supplier.ISupplierService方法:validLogin失败次数:131成功次数:1688平均耗时:744provider:172.16.4.13co
阅读全文
线上问题-API依赖传递导致问题处理
摘要:采购包在发版前测试环境出现jdk版本问题:nested exception is java.lang.UnsupportedClassVersionError: javax/annotation/ManagedBean : Unsupported major.minor version 52.0看问
阅读全文
线上问题-服务正常启动,但外部系统调用超时
摘要:其他系统调用我们这边服务报timeout超时。 接口调用链的情况如下: 通过调用链发现172.21.162.244这台机器上的服务有问题,怎么办?是不是fullGC了,查看gc情况, gc正常。这怎么搞 ,然后看下日志,发现日志如下,启动完了以后,但一直没有日志输出了,但如果正常启动,应该是有日志输
阅读全文