- 博客(11)
- 收藏
- 关注
原创 【苦练基本功】Guava令牌桶限流源码分析
在大流量场景下限流是一种常见的保护系统的手段,常见的算法有滑动窗口、漏桶、令牌桶,这里研究一下令牌桶的实现思路。guava提供的是基于内存的单机限流能力,当然也可以根据这种限流思路去实现分布式限流的能力。主要研究的目的有两个一个是研究这部分代码的整体类设计,分析各个类的职责划分从而更好的对业务或者功能做抽象;第二个是研究具体的限流策略从而更好地用于工程实践。
2024-01-21 04:55:56
1408
2
原创 【Spring】Spring的自动缓存管理-源码分析
Spring的自动缓存管理,@Cacheable、@CachePut、@CacheEvict、@Cacheing、缓存代理对象的生成、缓存切面的执行的原理,不涉及底层缓存组件具体的缓存操作,只做接入层的研究。
2022-12-20 19:40:52
259
原创 【nacos】nacos搭建源码环境并运行
nacos搭建源码并运行下载源码https://github.com/alibaba/nacos访问上面的url进入github的nacos项目页面,选择master分支,从右侧的code按钮中将nacos源码下载下来。之后将源码导入idea,配置maven加载nacos的依赖。修改nacos配置打开项目之后进入nacos-console模块,修改如图所示的nacos的数据库配置,将mysql的信息修改成自己的mysql信息。在mysql中增加表打开如图所示的项目文件路径,进入nacos
2021-12-28 14:23:22
3407
原创 【并发编程】Future使用教程以及原理
Future使用教程以及原理Future阻塞等待模式的示意图:1. 使用教程1.1 获取返回值使用JUC提供的Future可以获取线程的返回值。定义一个Callable类型的任务,该任务实现call()方法,并且在call()方法中返回值。Callable本身是一个接口并且只提供了call()方法,类似于Runnable接口,其本身并不能执行,需要将其封装成FutureTask,并且新建一个线程调用FutureTask的run()方法,线程执行之后使用FutureTask的get()方法来获取
2021-08-17 23:43:29
663
原创 【并发编程】线程池实战和原理
线程池实战和原理文章目录线程池实战和原理1. 为什么要使用线程池?2. 如何使用线程池?3. 常用API4. 线程池的核心参数4.1 阻塞队列4.2 线程工厂4.2.1 自定义线程工厂4.3 拒绝策略4.3.1 自定义拒绝策略5. Executes框架提供的默认线程池(不推荐使用)5.1 CachedThreadPool5.2 SingleThreadExecutor5.3 FixedThreadPool5.4 SingleThreadScheduledExecutor6. 线程池的最佳实践!6.1 不要
2021-08-17 09:40:04
249
原创 【并发编程】通过ReentrantLock学习AQS
通过ReentrantLock学习AQS文章目录通过ReentrantLock学习AQS1. AQS基础1.1 state变量--AQS强拓展性的体现1.2 AQS队列节点的数据结构定义1.3 native方法对于AQS的支持2. 可重入锁(ReentrantLock)获取和释放2.1 队列同步器2.2 获取锁2.3 释放锁2.4 公平和非公平的区别2.5 使用AQS自己实现一个同步工具java并发包(java.util.concurrent)是jdk提供的功能强大拓展性很强的一个并发管理的工具类,主要
2021-08-09 13:59:29
230
原创 【Spring】你了解spring事务和@Transactional吗?全网最详细的事务教程。
Spring事务源码解析公众号:完美的工程学gitee:https://gitee.com/duchenxi/total-war点关注不迷路!文章目录Spring事务源码解析1. 一个简单的demo2.基本概念描述2.1事务传播行为2.2 事务隔离级别2.3事务管理器的beanName2.4 事务超时时间2.5 事务只读3.事务切面的执行3.1 事务拦截器执行的流程总结3.2 获取@Transactional配置的元数据3.3 获取TransactionMannager事务管理器3.4 将事务
2021-07-14 23:18:04
626
原创 【Spring】AOP源码解析
AOP源码解析在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。这篇文章将带你学习Spring AOP的基本使用以及底层原理。1.基本使用开启AOP
2021-07-07 13:35:00
511
原创 【Spring】bean生命周期、依赖循环、三级缓存源码详解
getBean流程源码解析公众号:完美的工程学gitte地址:https://gitee.com/duchenxi/total-war工欲善其事,必先利其器!getBean方法是spring ioc的核心,阅读getBean方法的源码也是理解spring容器工作原理所必须要做的事情!我们先来看一下getBean方法,getBean的具体实现逻辑在AbstractBeanFactory类里面的doGetBean方法中。首先简略地介绍一下整体的执行流程:1.根据传入beanName获取be
2021-06-29 21:11:54
412
原创 【Spring】容器是怎么启动的呢?快上车带你一探究竟!
Spring容器初始化过程公众号:完美的工程学gitte地址:https://gitee.com/duchenxi/total-war这篇文章主要介绍基于注解的spring容器的启动过程,主要介绍流程上面比较关键的代码,至于流程中的一些细节本文中只会简单地提一下,关于这些细节的展开我会另写文章说明。先对整体流程做一个总结(思维导图也在我的gitte里面):首先我们创建一个基于注解的ApplicationContext,如下代码所示:可以看到我们创建了一个AnnotationConfigA
2021-06-20 19:57:19
370
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人