- 博客(255)
- 资源 (5)
- 收藏
- 关注

原创 RocketMQ源码解析目录
原创不易,转载请注明出处前言到目前为止,RocketMQ源码解析博文已经发表了20+篇,初步打算是从两个纬度来解析RocketMQ的源码,分别是整体运行流程的源码解析,某些核心组件源码深度剖析。现在已经初步完成了RocketMQ核心链路,核心流程的源码剖析,从宏观上了解了RocketMQ的运作流程,这也是第一阶段的内容,后续的解析将以broker的核心组件展开,从微观上深度剖析各个组件的实现细节。1. 核心链路源码解析文章目录RocketMQ源码解析(搭建环境)RocketMQ源码解析之消息.
2020-12-13 23:19:53
3772
6

原创 深度解析dubbo源码系列
以下文章均基于dubbo v2.6.1持续更新中…dubbo spi 扩展技术,框架基石《深度解析dubbo扩展技术dubbo spi(注解)》《深度解析dubbo扩展技术dubbo spi(实现二)》《深度解析dubbo扩展技术dubbo spi(自适应实现)》《深度解析dubbo扩展技术dubbo spi(自动激活实现)》服务暴露《深度解析dubbo服务本地暴露(injvm)》《深度解析dubbo服务远程暴露(一)》《深度解析dubbo服务远程暴露(二)》《深度解析dubbo
2020-07-27 16:48:33
14118
4
原创 redis 源码调试环境搭建(ubuntu+clion+redis5.0.5)
原创不易,转载请注明出处提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言1.环境准备1.1 ubuntu安装软件1.2 clion安装1.3 redis源码下载2.项目中添加CMakeLists3.启动测试前言本文就是记录一下redis源码调试环境的搭建过程,防止以后用到再搭建还得现找资料,最开始看redis源码的时候直接看的静态代码,但是随着深入有些就需要debug验证的地方,这个时候就需要搭建一套可debug的源码阅读环境1.环境准备操作系统我这边用的是U.
2021-09-04 18:29:38
2042
2
原创 spring boot自动装配源码分析
原创不易,转载请注明出处文章目录前言1. @SpringBootApplication2.@EnableAutoConfiguration2.1 @AutoConfigurationPackage2.2 @Import(AutoConfigurationImportSelector.class)前言在没有spring boot的年代,有幸体验到了ssm 整合配置的痛苦,那个时候,要想将springmvc ,spring ,mybatis整合起来,需要配置一堆的xml文件,说不痛苦那是假的。spr.
2021-08-31 23:46:12
799
原创 SpringCloud Eureka Client源码解析(初始化)
原创不易,转载请注明出处系列文章目录《SpringCloud Eureka Server源码解析(启动流程)》《Eureka Server源码解析(服务注册流程)》《Eureka Server源码解析(服务续约流程)》《Eureka Server源码解析(服务主动下线流程)》《Eureka Server源码解析(服务故障下线剔除流程)》《Eureka Server源码解析(全量拉取注册表流程)》《Eureka Server源码解析(增量拉取注册表)》《深度解析Eureka的自我保护机.
2021-08-30 21:54:14
677
原创 Eureka Server源码解析(增量拉取注册表)
原创不易,转载请注明出处系列文章目录《SpringCloud Eureka Server源码解析(启动流程)》《Eureka Server源码解析(服务注册流程)》《Eureka Server源码解析(服务续约流程)》《Eureka Server源码解析(服务主动下线流程)》《Eureka Server源码解析(服务故障下线剔除流程)》《Eureka Server源码解析(全量拉取注册表流程)》《深度解析Eureka的自我保护机制》文章目录系列文章目录前言1.源码解析2.流程图总结.
2021-08-29 13:11:07
440
原创 Eureka Server源码解析(全量拉取注册表流程)
原创不易,转载请注明出处系列文章目录《SpringCloud Eureka Server源码解析(启动流程)》《Eureka Server源码解析(服务注册流程)》《Eureka Server源码解析(服务续约流程)》《Eureka Server源码解析(服务主动下线流程)》《Eureka Server源码解析(服务故障下线剔除流程)》《深度解析Eureka的自我保护机制》文章目录系列文章目录前言1.源码解析1.1 多级缓存初始化1.2 处理全量拉取注册表请求2.流程图总结前言.
2021-08-29 12:04:54
707
原创 Eureka Server源码解析(服务故障下线剔除流程)
原创不易,转载注明出处系列文章目录《SpringCloud Eureka Server源码解析(启动流程)》《Eureka Server源码解析(服务注册流程)》《Eureka Server源码解析(服务续约流程)》《Eureka Server源码解析(服务主动下线流程)》《深度解析Eureka的自我保护机制》文章目录系列文章目录前言1.源码解析2.流程图总结前言本文主要是解析下Euraka Server 是怎样剔除那些“失联”服务实例的源码,一个服务注册到Eureka Ser.
2021-08-27 23:46:58
791
原创 Eureka Server源码解析(服务主动下线流程)
原创不易,转载请注明出处系列文章目录《SpringCloud Eureka Server源码解析(启动流程)》《Eureka Server源码解析(服务注册流程)》《Eureka Server源码解析(服务续约流程)》《深度解析Eureka的自我保护机制》文章目录系列文章目录前言1.源码解析2.流程图总结前言本文主要是解析下Eureka Server 处理客户端服务主动下线流程代码,服务主动下线其实很简单,就是客户端服务发送服务主动下线请求给Eureka Server ,Eure.
2021-08-27 22:14:40
1042
原创 Eureka Server源码解析(服务续约流程)
原创不易,转载请注明出处文章目录前言1.源码解析2.流程图总结前言服务续约可以理解为心跳,客户端服务需要定时的向Eureka Server 发送续约请求,告诉Eureka Server 我这服务还活着,你别把我这个服务信息从注册表中剔除了。其实就是找到这个客户端实例对应的instance租约信息,更新一下最后更新时间。Eureka Server 有个后台任务,定时的去扫描注册表中的实例租约信息,看看更新时间与现在时间是不是隔了超过存活时间(默认是90s),如果超过了这个时间,就会将这个服务实例信.
2021-08-27 19:05:16
441
4
原创 深度解析滴滴开源分布式id生成服务tinyid源码
原创不易,转载请注明出处文章目录前言1. 简单试用1.1 数据库准备2.2 修改配置启动server1.3 使用2. 号段模式原理3. 源码解析前言tinyid 是滴滴开源的分布式id 生成服务,分布式id生成系统,简单易用、高性能、高可用的id生成系统。就现有情况来说,仅提供了一种分布式id生成方式,就是基于db的号段模式,与美团leaf分布式id 生成服务的号段模式一样,实现上差不多,但是比leaf 少了一种雪花生成方式。较leaf的优势:1.加入token校验2.客户端封装的不错,.
2021-08-26 21:54:11
1242
4
原创 Eureka Server源码解析(服务注册流程)
原创不易,转载请注明出处文章目录前言1.Eureka Server 注册表详解2.服务注册源码2.1入口2.2 注册表注册2.2.1 更新注册表实例信息2.2.2 放入最近改变队列中2.2.3 失效本地缓存3. 注册流程图前言本文主要解析下Eureka Server 处理服务注册流程源码,Eureka Server处理服务注册个人认为是2部分,1是将服务实例信息注册到本机的注册表中(其实就是个map数据结构),2是同步给其他Eureka Server 节点,本文主要关注第一部分的流程,节点间的数.
2021-08-26 16:53:20
745
原创 SpringCloud Eureka Server源码解析(启动流程)
原创不易,转载请注明出处文章目录前言1.spring cloud整合eureka server demo1.1 新建spring boot项目1.2 pom.xml文件添加1.3 配置文件1.4 启动类1.5 启动2.spring cloud自动装配eureka server源码解析2.1@EnableEurekaServer注解2.2 EurekaServerAutoConfiguration2.2.1 查找starter 自动装配类的技巧2.2.2 EurekaServerAutoConfigur.
2021-08-26 00:07:51
645
原创 JUC系列 | CopyOnWriteArrayList源码解析
原创不易,转载请注明出处文章目录1.原理介绍1.1 底层原理:1.2 原理图解1.3 优缺点/适用场景2.源码分析2.1 add 方法源码分析2.2 get方法2.3 remove 方法1.原理介绍CopyOnWriteArrayList从名字上也能看出来,写时复制的一个ArrayList(关于采用写时复制机制其他工具源码分析我们写过2篇,可以一块学习下,原理是一样的《Tomcat中基于ArrayList实现的数组栈ArrayStack源码剖析》,《深度解析Kafka中CopyOnWriteMa.
2021-08-24 23:06:51
267
原创 深度解析nacos源码之注册中心(临时数据集群间同步补充)
原创不易,转载请注明出处文章目录前言源码解析总结前言本文主要是作为《深度解析nacos源码之注册中心(临时数据集群间同步)》一文的补充,在上文中,我们介绍了服务注册临时数据在集群间是怎样同步的,临时数据节点之间的关系是平等的,也就是peer to peer,就像eureka同步机制差不多,某一台nacos实例收到注册请求,首先会写入本地map中,然后向内存队列中塞入一个事件,异步更新结构化存储数据,接着就是异步同步,默认延时是2s,分别发送同步请求给集群中每个实例。本文作为上文的补充,主要看看集.
2021-08-24 21:44:32
860
原创 深度解析nacos源码之注册中心(临时数据集群间同步)
原创不易,转载请注明出处文章目录前言1.回顾服务注册原理2.临时数据集群间同步原理总结前言我们知道nacos是支持CP与AP模型的,如果有小伙伴不知道AP CP代表啥含义,可以百度搜下CAP理论学习下。像我们常见的注册中心Eureka是AP模型,保证服务可用性的,Zookeeper 是CP模型,保证数据的一致性。我们之前介绍过nacos基于raft协议来保证数据的一致性,是CP模型,但是并不是说nacos存储的所有内容完全保证一致性也就是所谓的CP模型,我们还知道nacos注册中心存储节点信息支.
2021-08-19 00:12:41
2467
原创 Spring Cloud Alibaba之nacos集群搭建
原创不易,转载请注明出处文章目录1.准备工作1.1nacos下载1.2 mysql准备1.3 jdk安装2.修改配置2.1 解压2.2 mysql脚本执行2.3 配置文件修改2.3.1 application.properties2.3.2 cluster.conf3.集群启动与查看状态3.1 启动集群3.2 查看状态1.准备工作1.1nacos下载github下载nacos的server端: 链接,选择你需要的版本,当然你也可以把源码download下来,自己编译。我这里直接使用的最新版.
2021-08-14 23:30:39
508
原创 mac修改mysql密码(亲测)
1.关闭mysql如果这个时候mysql是running状态的话,需要将它关闭,没有搞它之前这个按钮是好使的,搞完了之后,这个按钮就没反应了,可以使用命令关闭。sudo /usr/local/mysql/support-files/mysql.server stop2.重置密码进入mysql bin目录cd /usr/local/mysql/bin/获取管理员权限sudo su启动mysql,这个时候mysql是safe模式,会关闭验证的。./mysqld_safe
2021-08-14 21:27:28
3291
原创 Tomcat中基于ArrayList实现的数组栈ArrayStack源码剖析
原创不易,转载请注明出处文章目录前言1.ArrayList介绍2.ArrayStack介绍2.1 压栈原理图解2.2 弹栈原理图解3.ArrayStack源码剖析前言最近在看tomcat源码的时候,在它加载解析配置文件的时候使用到了一个数据结构ArrayStack ,它是tomcat里面实现的一个基于ArrayList实现的数组栈,提供了压栈,弹栈几个方法,源码实现很简单,但是思路值得学习。1.ArrayList介绍ArrayList 这个数据结构不用多说,搞java 开发的小伙伴几乎天天用.
2021-08-12 20:35:50
446
原创 mybatis源码解析之插件模块
原创不易,转载请注明出处文章目录前言1.mybatis执行流程回顾2.插件使用2.1 wrap对象介绍2.2 插件编码2.3 执行3.源码剖析总结前言本文主要介绍下关于mybatis插件这块的知识,包括插件使用,源码剖析等等,在mybatis执行流程中,Executor,StatementHandler,ResultSetHandler,ParameterHandler这四个组件起着至关重要的作用,mybatis的插件正好能够作用在这个四个组件上,起到拦截增强的作用,使得执行流程更加灵活,扩展性.
2021-08-08 12:33:26
267
原创 mybatis源码解析之日志模块
原创不易,转载请注明出处文章目录前言1.mybatis日志接口定义2.mybatis是怎样适配各种各样的日志框架的2.1 LogFactory 日志工厂2. 适配slf4j日志框架总结前言本文主要介绍了mybatis的日志模块,看看它是怎样与市面上各种各样的日志框架集成适配的,现在市面上的日志框架有很多,像log4j,log4j2,logback,slf4j,还有jdk自己带的日志模块,mybatis在编写框架打印日志的时候并没有指定使用某款日志框架,比如说我看你logback这个日志框架顺眼,.
2021-07-31 18:45:15
396
原创 springboot+mybatis多数据源配置(亲测)
原创不易,转载请注明出处文章目录前言1.maven依赖2.配置文件3.配置类4.测试4.1 准备-数据库4.2 准备-实体4.3 准备-dao、mapper xml文件4.4 准备-测试service、controller4.5 测试前言主要是记录下springboot+mybatis+druid 配置多数据源,话不多说,直接开干。1.maven依赖我这边用的springboot版本是2.5.2<dependency> <groupId>org.springf.
2021-07-30 00:08:02
2673
原创 mybatis源码解析之调用流程(执行sql)
原创不易,转载请注明出处文章目录前言1. 承接上文2.创建statementHandler2.1.创建ParameterHandler2.2.创建ResultSetHandler3.创建statement,设置参数3.1.获取连接3.2 创建Statement3.3.设置参数4.执行sql,处理结果集4.1 执行update、insert、delete语句,并处理结果4.2 执行select语句,处理结果集总结前言前面几篇文章我们介绍了调用流程中的缓存,包括一级缓存《mybatis源码解析之调用.
2021-07-29 22:57:33
211
原创 mybatis源码解析之调用流程(二级缓存)
原创不易,转载请注明出处文章目录前言1. 入口2.二级缓存总结前言在《mybatis源码解析之调用流程(一级缓存)》一文中,我们介绍了一级缓存的原理,由于一级缓存是namespace级别甚至namespace共享级别的缓存,又加上现在服务都是多节点集群部署,容易出现数据一致性问题,所以一般情况我们不会用到,默认它是关闭的,本文将接着mybatis调用流程往下介绍,看看mybatis二级缓存是什么样子的,实现原理。1. 入口在CachingExecutor 的query 方法中,如果你开启了一.
2021-07-27 21:46:28
168
原创 mybatis源码解析之调用流程(一级缓存)
原创不易转载请注明出处文章目录前言1.一级缓存前言在《mybatis源码解析之调用流程(初探SqlSession创建)》一文中我们介绍完了SqlSession的创建,本文接着往下看看SqlSession是怎样执行的,看看mybatis一级缓存与二级缓存的执行原理。1.一级缓存上文中我们获取到了SqlSession,接下来就是执行了 // 获取sqlSessionSqlSession sqlSession = getSqlSession(SqlSessionTemplate.this.s.
2021-07-26 23:20:54
204
原创 mybatis源码解析之调用流程(初探SqlSession创建)
原创不易,转载请注明出处文章目录前言1. 代理类调用入口2. SqlSession创建总结前言我们都知道,在mybatis中,我们写的mapper接口,mybatis在初始化的时候会为其创建动态代理实现类,然后我们在service中调用dao操作mysql,其实都是调用的mybatis为我们创建的动态代理实现类,同时,我们在《mybatis执行原理精讲》一文介绍执行原理的时候,曾说到这个动态代理实现类会调用SqlSession执行我们的sql,接下来我们要探索下dao代理类是怎样找到sqlSes.
2021-07-25 23:54:16
401
1
原创 mybatis源码解析之初始化(解析mapper文件)
原创不易,转载请注明出处文章目录前言1.入口引导2. 解析mapper标签3.解析cache-ref标签4.解析cache标签5.解析parameterMap标签6.解析resultMap标签7.解析sql标签8.解析insert|update|delete|select 标签总结前言我们在介绍springboot与mybatis整合原理的时候,说过spring自动装配mybatis的时候会干三件事,创建SqlSessionFactory ,创建SqlSessionTemplate对象和扫描ma.
2021-07-25 12:38:27
625
1
原创 springboot整合mybatis原理分析
原创不易,转载请注明出处文章目录前言1.SqlSessionFactory创建分析2.SqlSessionTemplate创建分析3.mapper接口扫描分析总结前言我们在《mybatis执行原理精讲》一文中,介绍到springboot整合mybatis启动流程,初始化过程,基本就是干了三件事,一是创建SqlSessionFactory,创建SqlSessionFactory的过程中解析配置文件,mapper xml文件到congfiguration中,二是创建一个SqlSessionTempl.
2021-07-24 16:05:25
984
2
原创 springboot+mybatis+druid整合笔记
原创不易,转载请注明出处文章目录1.创建springboot项目2.整合mybatis与druid2.1依赖2.2 配置3.写一个demo试试3.1 表结构与实体3.2 mapper.xml编写3.3 dao编写3.4 service与controller编写3.4 测试1.创建springboot项目创建springboot项目不用多说,一般就用idea自带的spring initializer创建,当然你也可以去start.spring.io spring官网创建好,将项目下载下来导入到i.
2021-07-24 00:38:02
256
1
原创 mybatis执行原理精讲
原创不易,转载请注明出处文章目录前言白话mybatismybatis执行流程介绍核心组件介绍总结前言本文主要是介绍下java 持久层框架mybatis核心执行原理,首先是介绍下mybatis,就是白话下,唠唠嗑,在就是通过一张mybatis执行流程图来介绍下它的核心执行流程,最后就是对它的几个核心组件进行介绍了。白话mybatismybatis想必搞java 开发的同学都知道吧,一款java 轻量级持久层框架,它主要的作用就是封装jdbc,简化了我们对jdbc的使用流程,自从用了mybati.
2021-07-22 22:22:45
550
2
原创 Netty源码剖析(NioEventLoopGroup创建流程)
原创不易,转载请注明出处本文基于netty版本4.1.33.Final文章目录前言1.Reactor网络模型简单介绍2.总结前言我们在《基于Netty实现一个服务端/客户端通信demo》一文中基于netty实现了一个nio服务端、客户端通信的demo,也算是初步玩了玩netty,体验了一下基于netty的nio网络编程,说实话我首次接触netty编程的时候很懵逼,而且在很长一段时间内都处于懵逼状态,根本记不住这些api,但是当我对java nio 编程很熟练,并且了解了netty核心运行原理的.
2021-07-19 21:09:31
342
2
原创 基于Netty实现一个服务端/客户端通信demo
原创不易,转载请注明出处文章目录前言demo程序编写maven的pom依赖服务端程序客户端程序测试总结前言本文主要是使用netty这个高性能网络通信框架写一个服务端、客户端通信的demo,体验下基于netty的网络编程是什么样子的,在此之前需要有java nio基础,毕竟netty就是封装的java nio,写完之后介绍一下netty核心组件底层运行原理。demo程序编写maven的pom依赖<dependency> <groupId>io.netty<.
2021-07-12 23:19:58
2870
1
原创 深度解析Java NIO底层实现原理(selector是怎样select的)
原创不易,转载请注明出处文章目录前言selector#select源码剖析总结前言在前几篇《深度解析Java NIO底层实现原理》系列文章中,我们深度剖析了serverSocketChannel的open与bind底层原理,selector的open底层原理和serverSocketChannel注册到selector的底层原理,本文接着往下剖析,就会到int select = selector.select();这行代码了,接下来我们看看是怎样select的。selector#select源.
2021-07-09 00:25:45
1775
3
原创 深度解析Java NIO底层实现原理(serverSocketChannel注册到Selector)
原创不易,转载请注明出处文章目录前言ServerSocketChannel注册源码分析总结前言ServerSocketChannel注册源码分析总结
2021-07-08 23:45:20
1612
3
原创 深度解析leaf分布式id生成服务源码(snowflake模式)
原创不易,转载请注明出处文章目录前言1.snowflake雪花id算法原理2.单纯使用snowflake存在的问题2.1 workerId问题2.2 时钟回拨问题3.leaf对于snowflake存在问题的解决方案3.1基于zk的顺序节点生成workerId3.2记录上一个时间戳信息4.snowflake模式源码分析4.1基于zk的workerId实现4.2 记录上一个时间戳信息前言在《深度解析leaf分布式id生成服务源码(号段模式)》一文中我们深度剖析了leaf的号段模式底层实现原理与源码,.
2021-07-07 00:32:19
808
原创 深度解析leaf分布式id生成服务源码(号段模式)
原创不易,转载请注明出处文章目录前言1.实现原理推演1.1 基于mysql最简单分布式ID实现1.2 flickr分布式id解决方案1.3 号段+mysql2.源码剖析2.1初始化2.2 生成id总结前言在《美团开源分布式ID服务Leaf简单使用》一文中简单的介绍了一下leaf,包括它的配置与安装,使用起来还是非常简单的,在介绍leaf的时候,说过它有两种生成id的模式,一种是号段模式,一种是snowflake模式,接下来该文就介绍一下号段模式的实现原理,进行源码剖析。1.实现原理推演关于.
2021-07-02 23:59:21
2007
30
原创 美团开源分布式ID服务Leaf简单使用
原创不易,转载请注明出处文章目录简单介绍配置部署总结简单介绍leaf是美团技术团队开源的分布式id生成服务。leaf支持号段模式和snowflake模式id生成。github地址:https://github.com/Meituan-Dianping/Leaf配置先去github地址:https://github.com/Meituan-Dianping/Leaf 将项目源代码clone下来项目是使用springboot写的。需要到leaf-server子项目中resource目录下面.
2021-07-02 20:56:35
3096
1
原创 深度解析Java NIO底层实现原理(selector创建流程)
原创不易,转载请注明出处文章目录前言Selector#open()流程1.makePipe源码剖析2.EPollArrayWrapper实例化剖析3.EPollArrayWrapper初始化Interrupt解析总结前言在《深度解析Java NIO底层实现原理(初探服务器端程序)》一文中我们基于java nio写了一个服务端的程序,并深度剖析了ServerSocketChannel open与bind实现原理,本文接着那个nio程序往下剖析,看看Selector.open是怎样创建一个selec.
2021-06-30 18:37:20
775
2
原创 深度解析Java NIO底层实现原理(初探服务器端程序)
原创不易,转载请注明出处java 版本1.8文章目录前言1.一段基于java nio实现的服务端程序2.ServerSocketChannel是怎样open的总结前言本文主要从源码角度剖析java nio,文章定位属于高级进阶篇,所以在看本文之前需要有几点要求:对java nio有所了解,同时也需要对linux 网络编程有所了解,特别是epoll。本文分析的jdk源码是1.8,因为java nio根据不同操作系统有不同的底层实现,我们为了更贴近生产级别,会剖析基于linux实现的那部分,.
2021-06-24 23:25:17
1237
3
JAVA核心知识点整理
2020-10-19
RocketMQ可视化控制台
2020-10-19
java线上诊断工具arthas
2020-07-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人