加载中
Springboot Code (一)源码学习

微服务中文介绍:https://www.cnblogs.com/liuning8023/p/4493156.html Springboot中文学习文档:http://felord.cn/_doc/_springboot/2.1.5.RELEASE/_book/ 简单阅览下学习文档,梳理下Sprin...

昨天 10:35
31
SpringBoot 源码之Idea导入终极版(基于Gradle)

Idea导入SpringBoot源码终极版 一、导入Spring源码的准备 1.1 Gradle的下载和配置 1.2 IDEA集成Gradle 1.3 下载SpringBoot源码 二、导入及避坑 2.1 导入源码 2.2 避坑的地方 三、增加测试模块...

缓存使用问题 —— 服务架构中缓存的使用误区

缓存,是互联网分层架构中的一部分。 用来降低数据库压力,提升系统整体性能,缩短访问时间。 误用一:作为服务与服务之间传递数据的媒介——应用于服务与数据库之间 如上图: 服务1和服务2...

04/01 16:07
26
缓存使用问题 —— 缓存一致性问题解决方案

1、理解缓存使用场景及一致性问题 数据库存储通常支持完整的ACID特性,因为可靠性、持久性等因素,性能普遍不高,高并发的查询会给数据库带来压力,造成数据库系统的不稳定。同时也容易产生延...

03/31 18:38
2.3K
Spring 源码学习笔记(六)加载自定义beanFactoryPostProcessor

首先回顾下整个流程: 先新建一个BeanFactoryPostProcessor,然后在配置文件中注入这个类 public class MyPostProcessor implements BeanFactoryPostProcessor { @Override public void pos...

03/30 15:29
39
Spring 源码学习笔记(五)容器启动过程中核心类都做了什么?

细化容器启动流程(实例化+初始化两部分),加入扩展点: BeanPostProcessor 后置处理器:在init方法前后分别执行before和after,aware中回调application相关方法。 工厂模式生成Bean:静态工...

Spring 源码学习笔记(四)容器启动过程中核心类都做了什么?

细化容器启动流程,加入扩展点: 配置是否允许Bean覆盖、循环依赖:默认属性 allowBeanDefinitionOverriding 、 allowCircularReferences 都为 null ConversionService 接口:将前端传过来的...

单体转变集群 —— 有哪些优化的技术手段?

》出现的问题:宕机、性能、饿死(隔离,个别请求无响应) 访问数据库的性能,使用长连接减少握手,提高通讯效率 引入连接池,池化技术 分治优于读写分离(分开治理即按业务等进行分表,绝对...

03/24 15:25
53
分布式事务锁 —— Seata的TCC模式如何实现?

本文将介绍基于springcloud+feign使用阿里巴巴分布式事务框架seata的TCC模式(1.0.0版本) ,AT模式基本上能满足我们使用分布式事务80%的需求。 但涉及非关系型数据库与中间件的操作、跨公司...

Spring 源码学习笔记(三)Spring循环依赖问题如何解决?

什么是循环依赖? 循环依赖-->循环引用。--->即2个或以上bean互相持有对方,最终形成闭环。 eg:A依赖B,B依赖C,C又依赖A。 【注意:这里不是函数的循环调用(是个死循环,除非有终结条件)...

03/22 18:47
28
Spring 源码学习笔记(二)配置文件如何加载到应用程序?

配置文件加载流程: 下面根据代码来挖一遍: refresh()——>obtainFreshBeanFactory()——>refreshBeanFactory()——>选择实现类AbstractXmlApplicationContext,实现loadBeanDefinitions(n...

03/22 11:07
35
Spring 源码学习笔记(一)容器启动时对象是如何创建的?

脉络思路:学习Spring的两大特性IOC与AOP,都离不开容器,那么就要先了解容器是什么?如何使用?容器作用是对象从创建到使用,再到销毁整个流程的控制。下面梳理下创建容器对象过程,加载配置...

Spring 源码阅读环境调试

1、下载解压spring源码(基于v5.2.0.RELEASE) 官网下载地址 https://github.com/spring-projects/spring-framework (推荐)感谢原作者分享 https://gitee.com/wuyiccc/spring-framework/t...

解决方案(二)分布式事务(多模块数据不一致)

场景:当一个支付请求发起,需要支付模块、积分模块、优惠券模块同时做相应处理(数据库变更操作),统一作为一个事务。当优惠券模块数据库操作失败,将使分布式中各模块的数据库不一致。 解...

03/12 15:22
28
解决方案(一)分布式锁(短信验证 与 秒杀抢购)

一、短信验证(非分布式锁无关部分) 1、验证码长度一般是4-6位,提升效率不要使用for循环StringBuilder.append,建议直接使用函数生成 QPS提升方法:磁盘读写——>内存读写,内存计算——>...

03/12 11:50
44
CPU指令重排引发的问题

1、众所周知,CPU运行速率非常快,但内存访问数据的速率很慢(大约CPU速率百分之一)。为了防止CPU空转的效率消耗,可以将指令进行调换顺序(happen-before原则之外均可调换顺序),先执行后...

03/11 18:45
18
Sentinal(一)流量控制与熔断降级

Sentinel以流量为切入点,以流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。包括核心的独立类库、监控台、丰富的使用场景。 使用场景:秒杀(即突发流量控制在系统容量可以承...

从SpringCloud ALiBaBa开始,立下2021我のFlag !

架构技术方案: 采用领域驱动模型(DDD)设计(未来趋势) 新零售软件架构模型(未来趋势) ServiceMesh(服务网格)(未来趋势) 项目基于大中台 小前台设计拆分(真实落地) SpringBoot+Sprin...

线程与锁(四)多线程实现比较及JDK8特性CompletableFuture异步编程

多线程实现比较及JDK1.8特性 CompletableFuture异步编程 一、回顾多线程实现比较 实现多线程有3种方法: 继承Thread类 实现Runnable接口 实现Callable接口 回顾一下优缺点: 实现Runnable接口...

线程与锁(三)ReentrantLock及LockSupport等JUC工具类的使用

ReentrantLock / CountDownLatch / CyclicBarrier / Semaphore / LockSupport java.util.concurrent.locks.ReentrantLock 可重入锁,类似Synchronized(优势是可精确唤醒) java.util.concur...

没有更多内容

加载失败,请刷新页面

返回顶部
顶部