06 2020 档案
摘要:1、归并排序 基本思路:借助额外空间,合并两个有序数组,得到更长的有序数组。例如:「力扣」第 88 题:合并两个有序数组。 算法思想:分而治之(分治思想)。「分而治之」思想的形象理解是「曹冲称象」、MapReduce,在一定情况下可以并行化。 public class Solution { // 归
阅读全文
摘要:内存分析: 1、通过 ps -aux(或-elf) | grep java(或shua-xiao)获取进程PID 2、通过 jmap -histo <pid> 查看堆内存中存活的对象 按照对象所占内存大小排序,显示了存活对象的实例数、所占内存、类名。 3、进一步通过jmap获取dump文件,也可以设
阅读全文
摘要:1、底层原理 ArrayList底层是用数组实现的存储。通过无参构造方法的方式ArrayList()初始化,则赋值底层数Object[] elementData为一个默认空数组Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}所以数组容量为0,只有真正对数
阅读全文
摘要:1、RocketMQ架构组成 由4大核心部分组成:NameServer、Broker、Producer以及Consumer。 可以看到RocketMQ的每一个模块都是集群部署的,这也是它高吞吐量、高可用的原因之一,可以支持多master-slave。 (1)NameSrv 主要负责对于数据源的管理,
阅读全文
摘要:消息队列的作用:异步、解耦、削峰填谷。 1、处理失败消息重发问题 场景:比如活动系统、积分系统同时监听用户下单消息,但是此时可能由于网络抖动或是代码bug导致积分系统处理失败,所以积分系统就会要求发送端重发消息。如何保证消息重复不会影响业务呢? 思考:这个问题其实就是保证接口的幂等性,那如何保证接口
阅读全文
摘要:1、@Async导致循环依赖失败,项目启动报错 @Service public class UserServiceImpl implements UserService { @Autowired UserService userService; @Override @Transactional(ro
阅读全文
摘要:ApplicationStartingEvent:springboot启动开始的时候执行的事件,在该事件中可以获取到SpringApplication对象,可做一些执行前的设置。 ApplicationEnvironmentPreparedEvent:spring boot 对应Enviroment
阅读全文
摘要:参考文章: https://juejin.im/post/5b64448af265da0f7f44c201 https://juejin.im/post/5e338ebae51d4558864b1ca0 1、开发中使用时要注意的点 (0)spring定时任务执行原理实际使用的是 JDK 自带的 Sc
阅读全文
摘要:1、BeanFactory是spring IOC容器的顶层接口,定义了IOC容器的通用方法和规范。 2、FactoryBean首先是一个bean,但它又是一个能产生bean的工厂,主要作用就是提供了一种灵活创建bean的方式,让用户可以定制实例化bean的逻辑。 获取普通bean,getBean(b
阅读全文
摘要:上文讲了Web应用Spring是通过监听器来启动的,容器的初始化就是从refresh( ) 方法开始的,接下来我们就从refresh( ) 方法来看看Spring启动都做了什么。 Tips:一定要结合源码自己好好梳理一遍,这样才能印象更加深刻,理解了Spring整个容器的生命周期,对于理解其他很多框
阅读全文