摘要: # 模拟SpringBoot核心流程 内容: 1、模拟SpringBoot启动过程 2、模拟SpringBoot条件注解功能 3、模拟SpringBoot自动配置功能 4、SpringBoot整合Tomcat源码分析 完整的代码地址:https://gitee.com/archguide/zhouy 阅读全文
posted @ 2022-12-19 15:39 浮沉丶随心 阅读(25) 评论(0) 推荐(0) 编辑
摘要: # Redis缓存设计和性能优化 ## 一、多级缓存架构 ​ ![image-20221219113512827](https://typorause-oss.oss-cn-shenzhen.aliyuncs.com/interview/image-20221219113512827.png) ## 阅读全文
posted @ 2022-12-19 14:50 浮沉丶随心 阅读(98) 评论(0) 推荐(0) 编辑
摘要: # 生产级高并发分布式锁 ## 一、Redisson分布式锁原理 ![Redisson分布式锁原理](https://typorause-oss.oss-cn-shenzhen.aliyuncs.com/interview/Redisson%E5%88%86%E5%B8%83%E5%BC%8F%E9 阅读全文
posted @ 2022-12-19 11:32 浮沉丶随心 阅读(4) 评论(0) 推荐(0) 编辑
摘要: # Redis高可用集群与水平扩展 ## 一、Redis集群方案比较 ### 1.1 哨兵模式 ​ ![image-20221219093057872](https://typorause-oss.oss-cn-shenzhen.aliyuncs.com/interview/image-202212 阅读全文
posted @ 2022-12-19 10:39 浮沉丶随心 阅读(42) 评论(0) 推荐(0) 编辑
摘要: Redis持久化、主从与哨兵架构 一、Redis持久化 1.1 RDB快照(snapshot) 在默认情况下, Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中。 你可以对 Redis 进行设置, 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时, 自动保存一次 阅读全文
posted @ 2022-12-16 17:18 浮沉丶随心 阅读(40) 评论(0) 推荐(0) 编辑
摘要: java客户端相关 1.0 StringRedisTemplate与RedisTemplate spring 封装了 RedisTemplate 对象来进行对redis的各种操作,它支持所有的 redis 原生的 api。在RedisTemplate中提供了几个常用的接口方法的使用,分别是: pri 阅读全文
posted @ 2022-12-16 17:17 浮沉丶随心 阅读(6) 评论(0) 推荐(0) 编辑
摘要: # Redis核心数据结构与高性能原理 [Redis命令参考手册](https://typorause-oss.oss-cn-shenzhen.aliyuncs.com/interview/01-Redis命令参考手册完整版.pdf) ## 一、安装和使用 ### 1.1 redis安装 ``` 下 阅读全文
posted @ 2022-12-16 11:56 浮沉丶随心 阅读(4) 评论(0) 推荐(0) 编辑
摘要: # MVCC与BufferPool缓存机制 ## 一、MVCC多版本并发控制 Mysql在可重复读隔离级别下如何保证事务较高的隔离性,我们上节课给大家演示过,同样的sql查询语句在一个事务里多次执行查询结果相同,就算其它事务对数据有修改也不会影响当前事务sql语句的查询结果。 这个隔离性就是靠MVC 阅读全文
posted @ 2022-12-16 11:04 浮沉丶随心 阅读(5) 评论(0) 推荐(0) 编辑
摘要: # Mysql事务隔离级别与锁机制 我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。 这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题,数据库设计了**事务隔离机制、锁机制、MVCC 阅读全文
posted @ 2022-12-16 10:36 浮沉丶随心 阅读(9) 评论(0) 推荐(0) 编辑
摘要: ## 一、常见类型深入优化 ### 1.1 Order by与Group by优化 **Case1:** ![image-20221215183018435](https://typorause-oss.oss-cn-shenzhen.aliyuncs.com/interview/image-202 阅读全文
posted @ 2022-12-15 20:29 浮沉丶随心 阅读(4) 评论(0) 推荐(0) 编辑
摘要: # SQL底层执行原理 ## 一、MySQL的内部组件结构 ​ ![image-20221215162939129](https://typorause-oss.oss-cn-shenzhen.aliyuncs.com/interview/image-20221215162939129.png) 大 阅读全文
posted @ 2022-12-15 17:00 浮沉丶随心 阅读(4) 评论(0) 推荐(0) 编辑
摘要: # Explain详解与索引最佳实践 ## 一、Explain工具介绍 **使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈。** [官方文档](https://dev.mysql.com/doc/refma 阅读全文
posted @ 2022-12-15 16:26 浮沉丶随心 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 并发设计模式 一、终止线程的设计模式 思考:在一个线程 T1 中如何正确安全的终止线程 T2? 错误思路1:使用线程对象的 stop() 方法停止线程 stop 方法会真正杀死线程,如果这时线程锁住了共享资源,那么当它被杀死后就再也没有机会释放锁, 其它线程将永远无法获取锁 。 错误思路2:使用 S 阅读全文
posted @ 2022-12-15 14:40 浮沉丶随心 阅读(21) 评论(0) 推荐(0) 编辑
摘要: Disruptor&Future&CompletableFuture 一、Disruptor Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于Disruptor开发的系统单线程能支撑每秒60 阅读全文
posted @ 2022-12-15 11:19 浮沉丶随心 阅读(78) 评论(0) 推荐(0) 编辑
摘要: ForkJoin原理分析 一、任务类型 思考: 线程池的线程数设置多少合适? 我们调整线程池中的线程数量的最主要的目的是为了充分并合理地使用 CPU 和内存等资源,从而最大限度地提高程序的性能。在实际工作中,我们需要根据任务类型的不同选择对应的策略。 1.1 CPU密集型任务 CPU密集型任务也叫计 阅读全文
posted @ 2022-12-14 19:00 浮沉丶随心 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 阻塞队列BlockingQueue 一、阻塞队列介绍 Queue接口 public interface Queue<E> extends Collection<E> { //添加一个元素,添加成功返回true, 如果队列满了,就会抛出异常 boolean add(E e); //添加一个元素,添加成 阅读全文
posted @ 2022-12-14 16:52 浮沉丶随心 阅读(23) 评论(0) 推荐(0) 编辑
摘要: AQS之ReentrantReadWriteLock 一、 读写锁介绍 现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁(读多写少)。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程同时读取共享资源(读读可以并发);但是如果一个线程想去写这些共享 阅读全文
posted @ 2022-12-14 15:42 浮沉丶随心 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 一、 Spring整合SpringMVC Spring整合SpringMVC唯一的体现就是父子容器:、 通常我们会设置父容器(Spring)管理Service、Dao层的Bean, 子容器 (SpringMVC)管理Controller的Bean 子容器可以访问父容器的Bean, 父容器无法访问子容 阅读全文
posted @ 2022-10-17 20:46 浮沉丶随心 阅读(662) 评论(0) 推荐(0) 编辑
摘要: 一、从Servlet到SpringMVC 1. Servlet MVC最典型就是JSP + servlet + javabean的模式 弊端: xml下配置servlet映射非常麻烦 开发效率低 必须要继承父类、重写方法 侵入性强 如果想在一个Servlet中处理同一业务模块的的功能分发给不同方法进 阅读全文
posted @ 2022-10-17 20:05 浮沉丶随心 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 一、整合核心思路 由很多框架都需要和Spring进行整合,而整合的核心思想就是把其他框架所产生的对象放到Spring容器中,让其成为Bean,只要成为了Bean,在Spring项目中就能很方便的使用这些对象了,也就能很方便的使用Mybatis框架所提供的功能了。 二、Mybatis-Spring 1 阅读全文
posted @ 2022-10-17 17:34 浮沉丶随心 阅读(179) 评论(0) 推荐(0) 编辑