自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 跟大家聊聊我们为什么要学习源码?学习源码对我们有用吗?(源码感悟)

1 前言由于现在微服务很流行,越来越多企业采用了SpringCloud微服务架构,而SpringBoot则是快速构建微服务项目的利器。于是源码笔记以此为切入点,将SpringBoot作为我们源码分析的第一个开源项目,之后还会对更多开源项目进行源码分析。要进行源码分析,笔者结合自身经历来跟大家聊聊我们为什么要学习源码这个话题,大家一起探讨学习。我们程序员在开发代码时每天都在使用别人写好的框架,无...

2020-02-19 10:37:23 850

原创 Disruptor消费者协作模式源码分析

【源码笔记】专注于Java后端系列框架源码分析,Github地址:https://github.com/yuanmabiji/Java-SourceCode-Blogs1 前言Disruptor广播模式与执行顺序链源码分析这篇文章中主要讲了Disruptor广播模式与执行链的构建原理,Disruptor广播模式跟MQ的广播模式功能是一样的即生产者生产的消息会广播到每个消...

2022-04-24 08:20:00 521

原创 Disruptor广播模式与执行顺序链源码分析

【源码笔记】专注于Java后端系列框架源码分析,Github地址:https://github.com/yuanmabiji/Java-SourceCode-Blogs1 前言本篇文章开始Disruptor的源码分析,理解起来相对比较困难,特别是Disruptor的sequenceBarrier的理解,sequenceBarrier包括生产者与消费者之间的gatingSequence以及消费者与消费者之间的dependentSequence。此外,Disruptor源码中的sequence变量也比较.

2022-04-05 09:53:33 430

原创 初识Disruptor框架

最近工作中参与了一个随机数分发平台的设计,考虑如何才能实现该平台的高并发性能,在技术实现选型中首先参考了百度的uid-generator,其采用了双RingBuffer的实现形式,估计ui...

2022-03-21 23:19:26 553

原创 详解synchronized锁的各种用法及注意事项

【源码笔记】 专注于Java后端系列框架的源码分析,关注【源码笔记】公众号,第一时间接收最新源码分析文章更新。Github地址:https://github.com/yuanmabiji/Java-SourceCode-Blogs1 前言本文主要通过简单的demo来阐述synchronized锁的各种用法以及使用synchronized锁的相关注意事项,记录下来同时也方便自己记忆。synchronized锁是jvm内置的锁,不同于ReentrantLock锁。synchronized关键字可以修饰.

2021-02-06 23:16:36 299

原创 大白话详解5种网络IO模型

1 前言我们都知道,为了实现高性能的通信服务器,BIO在高并发的情况下会出现性能急剧下降的问题,甚至会由于创建过多线程而导致系统OOM。因此在Java业界,BIO的性能问题一直被开发者所...

2021-01-31 21:49:05 196

原创 记一次Netty连接池FixedChannelPool连接未释放问题的排查总结

1 前言前几天我们又遇到了一个Netty报从连接池获取连接超时异常从而导致整个服务不可用的异常,报的具体异常信息是Exception accurred when acquire channel channel pool:TimeoutException。当时自己看了这个异常信息,有种似曾相识的感觉,印象中自己第一次接触到该异常是不久前也遇到了Netty报超时错误导致整个服务不可用的问题,最终只能重启服务器来解决。于是自己去翻看了之前的异常消息,发现报的错误果真同样是从连接池获取连接超时的异常!印象中前段时

2020-09-21 00:14:38 6543 10

原创 AQS基础——多图详解CLH锁的原理与实现

源码笔记,专注于Java后端系列框架的源码分析。关注【源码笔记】公众号,第一时间接收最新源码分析文章更新。1 什么是自旋锁和互斥锁?由于CLH锁是一种自旋锁,那么我们先来看看自旋锁是什么?自旋锁说白了也是一种互斥锁,只不过没有抢到锁的线程会一直自旋等待锁的释放,处于busy-waiting的状态,此时等待锁的线程不会进入休眠状态,而是一直忙等待浪费CPU周期。因此自旋锁适用于锁占用时间短的场合。这里谈到了自旋锁,那么我们也顺便说下互斥锁。这里的互斥锁说的是传统意义的互斥锁,就是多个线程并发竞争锁.

2020-08-25 13:13:40 1265 1

原创 忆大学时代

1 写在前面小伙伴们好,我是源码笔记作者劲越。今晚突然接到表妹的电话,她向我咨询高考填志愿的事情。印象中自己读大学时这个表妹才小学,天哪,时间过得真快,现在居然高考了。真的是光阴似箭,日...

2020-08-03 22:46:56 796

原创 Java是如何实现Future模式的?万字详解!

JDK1.8源码分析项目(中文注释)Github地址:https://github.com/yuanmabiji/jdk1.8-sourcecode-blogs1 Future是什么?先举个例子,我们平时网购买东西,下单后会生成一个订单号,然后商家会根据这个订单号发货,发货后又有一个快递单号,然后快递公司就会根据这个快递单号将网购东西快递给我们。在这一过程中,这一系列的单号都是我们收货的重要凭证。因此,JDK的Future就类似于我们网购买东西的单号,当我们执行某一耗时的任务时,我们可以另起一个线程

2020-06-26 12:12:23 8667 8

原创 SpringBoot内置生命周期事件详解 SpringBoot源码(十)

SpringBoot中文注释项目Github地址:https://github.com/yuanmabiji/spring-boot-2.1.0.RELEASE本篇接 SpringBoot事件监听机制源码分析(上) SpringBoot源码(九)1 温故而知新温故而知新,我们来简单回顾一下上篇的内容,上一篇我们分析了SpringBoot启动时广播生命周期事件的原理,现将关键步骤再浓缩总结下...

2020-05-02 17:03:23 3920 2

原创 SpringBoot内置生命周期事件详解 SpringBoot源码(十)

SpringBoot中文注释项目Github地址:https://github.com/yuanmabiji/spring-boot-2.1.0.RELEASE本篇接SpringBoo...

2020-05-02 15:23:06 848 1

原创 SpringBoot事件监听机制源码分析(上) SpringBoot源码(九)

SpringBoot中文注释项目Github地址:https://github.com/yuanmabiji/spring-boot-2.1.0.RELEASE本篇接 SpringApplication对象是如何构建的? SpringBoot源码(八)1 温故而知新温故而知新,我们来简单回顾一下上篇的内容,上一篇我们分析了SpringApplication对象的构建过程及SpringBoo...

2020-04-19 11:29:38 1112

原创 SpringBoot事件监听机制源码分析(上) SpringBoot源码(九)

SpringBoot中文注释项目Github地址:https://github.com/yuanmabiji/spring-boot-2.1.0.RELEASE本篇接SpringApp...

2020-04-18 23:08:04 1564

原创 SpringApplication对象是如何构建的? SpringBoot源码(八)

注:该源码分析对应SpringBoot版本为2.1.0.RELEASE本篇接 SpringBoot的启动流程是怎样的?SpringBoot源码(七)1 温故而知新温故而知新,我们来简单回顾一下上篇的内容,上一篇我们分析了SpringBoot的启动流程,现将关键步骤再浓缩总结下:构建SpringApplication对象,用于启动SpringBoot;从spring.factories配...

2020-04-02 22:15:21 900

原创 Java是如何实现自己的SPI机制的? JDK源码(一)

注:该源码分析对应JDK版本为1.81 引言这是【源码笔记】的JDK源码解读的第一篇文章,本篇我们来探究Java的SPI机制的相关源码。2 什么是SPI...

2020-03-28 23:36:19 540

原创 SpringBoot的启动流程是怎样的?SpringBoot源码(七)

注:该源码分析对应SpringBoot版本为2.1.0.RELEASE1 温故而知新本篇接 SpringBoot内置的各种Starter是怎样构建的? SpringBoot源码(六)温故而知新,我们来简单回顾一下上篇的内容,上一篇我们分析了SpringBootSpringBoot内置的各种Starter是怎样构建的?,现将关键点重新回顾总结下:spring-boot-starter-x...

2020-03-23 21:10:44 549

原创 SpringBoot内置的各种Starter是怎样构建的?--SpringBoot源码(六)

注:该源码分析对应SpringBoot版本为2.1.0.RELEASE1 温故而知新本篇接 外部配置属性值是如何被绑定到XxxProperties类属性上的?–SpringBoot源码(五)温故而知新,我们来简单回顾一下上篇的内容,上一篇我们分析了SpringBoot外部配置属性值是如何被绑定到XxxProperties类属性上的相关源码,现将外部属性绑定的重要步骤总结如下:首先是@En...

2020-03-15 17:59:39 530

原创 外部配置属性值是如何被绑定到XxxProperties类属性上的?--SpringBoot源码(五)

注:该源码分析对应SpringBoot版本为2.1.0.RELEASE1 前言本篇接 SpringBoot是如何实现自动配置的?–SpringBoot源码(四)温故而知新,我们来简单回顾一下上篇的内容,上一篇我们分析了SpringBoot的自动配置的相关源码,自动配置相关源码主要有以下几个重要的步骤:从spring.factories配置文件中加载自动配置类;加载的自动配置类中排...

2020-03-13 21:25:07 559

原创 SpringBoot是如何实现自动配置的?--SpringBoot源码(四)

注:该源码分析对应SpringBoot版本为2.1.0.RELEASE1 前言本篇接助力SpringBoot自动配置的条件注解ConditionalOnXXX分析–SpringBoot源码(三)温故而知新,我们来简单回顾一下上篇的内容,上一篇我们分析了SpringBoot的条件注解@ConditionalOnXxx的相关源码,现挑重点总结如下:SpringBoot的所有@Conditi...

2020-03-04 08:28:51 560

原创 助力SpringBoot自动配置的条件注解ConditionalOnXXX分析--SpringBoot源码(三)

注:该源码分析对应SpringBoot版本为2.1.0.RELEASE1 前言本篇接如何分析SpringBoot源码模块及结构?–SpringBoot源码(二)上一篇分析了SpringBoot源码结构及各个模块pom之间的关系后,那么此篇开始就开始解开SpringBoot新特性之一–自动配置的神秘面纱了。因为SpringBoot自动配置原理是基于其大量的条件注解ConditionalOnX...

2020-03-01 16:21:27 613

原创 如何分析SpringBoot源码模块及结构?--SpringBoot源码(二)

注:该源码分析对应SpringBoot版本为2.1.0.RELEASE1 前言本篇接如何搭建自己的SpringBoot源码调试环境?–SpringBoot源码(一)。前面搭建好了自己本地的SpringBoot源码调试环境后,此时我们不要急着下手进入到具体的源码调试细节中,刚开始阅读源码,此时我们一定要对项目结构等有一个整体的认识,然后再进行源码分析调试。推荐阅读下笔者之前写的的分析开源项目...

2020-02-23 23:19:50 1291

原创 如何搭建自己的SpringBoot源码调试环境?--SpringBoot源码(一)

1 前言这是SpringBoot2.1源码分析专题的第一篇文章,主要讲如何来搭建我们的源码阅读调试环境。如果有经验的小伙伴们可以略过此篇文章。2 环境安装要求IntelliJ IDEAJDK1.8Maven3.5以上3 从github上将SpringBoot源码项目下载下来首先提供SpringBoot2.1.0的github地址:https://github.com/sprin...

2020-02-23 11:17:18 1489

原创 模仿Spring事件机制实现自定义事件驱动编程--Spring的事件机制源码分析(一)

微信公众号:IT学习笔记学习更多源码知识,欢迎关注。注意:spring源码分析文章对应spring版本为 5.1.x目录1,概述2,自定义事件驱动编程2.1 事件2.2 事件监听器2.3事件发布器2.4 测试自定义的容器生命周期事件3,结语1,概述要想理解spring的事件机制,我觉得首先自己动手去撸一套简单的自定义事件驱动编程dem...

2020-02-11 11:06:02 537

翻译 观察者模式--设计模式(一)

微信公众号:IT学习笔记学习更多源码知识,欢迎关注。----本文来源于Rohit Joshi的《Java Design Patterns》一书的Chapter 7:Observer Design Pattern若有侵权,请联系我删除即可。1,观察者模式背景这里以一个关于用户订阅体育赛事的例子为背景展开介绍观察者模式,这个例子大概是这样的:体育电台播放一些现场直播的体育赛事时,...

2020-02-10 12:34:14 929

原创 Spring事件相关类关系源码解析--Spring的事件机制源码分析(二)

微信公众号:IT学习笔记学习更多源码知识,欢迎关注。注意:该源码分析对应版本为spring5.1.x1,概述本篇开始分析Spring的事件机制源码,因为Spring的事件机制实质是观察者(发布订阅)模式的实现,因此要想搞清楚Spring的事件机制,因此得知道观察者模式是什么。同时推荐阅读下这篇文章的前奏文章,对于理解spring的事件机制非常有帮助,推荐我都另一篇翻译的博文:...

2020-02-10 12:31:47 748

原创 SpringBoot启动流程源码分析--SpringBoot源码分析(一)

微信公众号:IT学习笔记学习更多源码知识,欢迎关注。1,概述SpringApplication类用来启动Spring应用,默认会执行以下主要步骤来启动应用:1),根据classpath创建一个相应的ApplicationContext2),注册一个CommandLinePropertySource来曝光命令行参数作为spring属性3),刷新application co...

2020-02-08 19:46:51 820 2

原创 Netty RPC的简易DEMO

这个是rpc远程调用的简单demo:Consumer通过rpc远程调用Provider的服务方法sayHelloWorld(String msg),然后...

2020-01-13 22:13:00 328

原创 基于本地消息表的分布式事务解决方案总结

前段时间学习了分布式事务的几种方案,下面主要总结下基于本地消息表实现可靠消息最终一致性的分布式事务方案。1,什么是分布式事务?在传统架构中往往是一个...

2019-12-28 13:30:48 2806

原创 数据库中同步数据到elastic search的方案比较

#方案1,利用logstash定时向数据库读取数据然后写入到elastic search中 架构:数据库+logstash+elastic sear...

2019-12-06 19:04:27 519

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除