自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Armyyyyy丶的博客

知其然知其所以然。

  • 博客(89)
  • 收藏
  • 关注

原创 Spring中Endpoint、HasFeatures、NamedFeature和Actuator的关系及实现原理

我们经常可以在Springboot或Springcloud版本中看到Endpoint或Features等字样,但对于这些类的作用知之甚少,文章就这些功能简单分析一下实现原理。

2023-09-07 16:57:58 444

原创 阿里熔断限流框架Sentinel实现流程和动态规则数据源

本篇文章主要介绍熔断限流框架Sentinel的使用示例、组成原理和动态规则数据源的实现原理。

2023-05-09 14:46:43 797

原创 (一)Springcloud-OpenFeign原理之集成改造原生Openfeign与简单使用

文章将会介绍Springcloud-Openfeign对原生Openfeign的改造原因及方式,最后提供简单的使用案例及扩展点分析,需要提前了原生Openfeign和Spring容器的相关原理

2023-05-06 16:27:11 701

原创 原生OpenFeign相较于传统HTTP工具的优化和原理

本篇介绍的是springcloud-openfeign的底层框架io.github.openfeign,重点不是其框架如何使用,而是介绍Feign如何基于传统HTTP工具使用方式进行抽象改进,提升其灵活性。并简单介绍一下其抽象组件及主要组件的使用时机

2023-05-05 15:40:39 1620 5

原创 JDK8使用Visual VM根据Dump文件排查OutOfMemoryError生产问题思路

介绍JDK8七种常见的Java heap space堆内存溢出等场景下的排查思路

2023-03-17 16:08:56 2167

原创 Java中性能超越各个BeanUtils的Object对象属性映射框架MapStruct常规使用方式和技巧

本文主要介绍MapStruct的基本应用和@Context+expression实现开发时常见的复杂场景,如List转List带自定义参数、List中某参数需要调用其它类的复杂处理或Map转普通Object对象的使用方式等

2023-03-14 14:23:59 1561

原创 (一)Spring-Cloud源码分析之核心流程关系及springcloud与springboot包区别(新)

很多人搞不懂springboot和spring-cloud的关系到底是什么,也不知道这两者时间有什么区别,今天简单的聊聊。2022年发了一篇Springcloud和Springboot的区别对比,但后面回看总觉得少了点东西,这次重新发个补充一下。

2023-02-23 15:16:31 1068

原创 Disconf、Apollo和Nacos分布式配置框架差异对比

对比国内Disconf、Apollo和Nacos三款分布式配置中心的差异

2023-02-20 16:56:21 512

原创 Eureka原理浅析

本文主要整理的内容为Eureka主要功能、框架运行原理、具备哪些特殊机制、Server间的数据同步方式、Server和Client端的交互方式等

2023-02-20 16:05:19 465

原创 Apollo Config原理浅析

本文章主要用于解决对Apollo的一些疑问,如Apollo有哪些组件,整体架构是什么?,每个组件各自的关系是什么?Apollo实现高可用为什么要用Eureka?Apollo通信方式是什么等。

2023-02-20 16:02:40 1069

原创 Nacos框架服务注册发现和配置中心原理

Nacos框架融合了服务注册发现和配置中心功能,这两者之间有什么关联?服务注册发现和配置中心的实现原理各是什么?server间一致性协议如何实现?server和client又如何通信?

2023-02-17 10:55:45 1309

原创 云原生是什么?和Docker、K8s是什么关系?又带来了何种影响?希望这篇文章给自己及大家解点疑惑

现在容器化和云原生十分火爆,但如果要理解为什么这个技术在近几年突然爆火,身为传统的Springboot和Springcloud体系开发者都有很多困惑,怎么就突然这么火爆了呢?及其我们未来的出路又在何处?希望这篇文章的思考可以消除这方面的一点疑惑

2023-02-09 16:44:33 1192

原创 Zookeeper ZAB协议中FLE选举通信流程

文章将着重介绍ZAB协议第一阶段的FLE算法核心流程,最后将分析集群添加Follower和Observer等问题的运行流程和注意点。

2022-07-06 15:47:51 617

原创 (十六)Zookeeper原理源码分析之Watcher监听实现原理及关键源码解析

本篇将会从三点来解析Watcher的实现,1. 触发事件处理对象及时机;2. 触发的事件类型;3. 如何触发事件及原理

2022-03-10 18:00:02 2305

原创 (十五)Zookeeper原理源码分析之数据日志文件归档

本篇将会从三点出发分析ZK的日志归档,顺便扩展一下相关的逻辑1. 介绍两种日志文件的作用和不同点;2. 分析两种日志文件序列化和反序列化的时机(从无到有,重启读取);3. 两种日志文件的清理时机。

2022-03-10 11:09:01 2529

原创 (十四)Zookeeper原理源码分析之树形数据结构

ZK的数据结构是什么?内部是怎样构成的?且数据是如何动态变化及满足ZK的高性能查询的?本篇将会做个简单的归纳,

2022-03-07 20:13:20 2063 2

原创 (二)RocketMq与Spring的集成开发原理之传统Spring和Springboot方式

主要介绍的是传统的Spring项目和Springboot项目集成RocketMq的最佳实践,以及扩展性的简单说明一下Springboot集成的原理。

2022-01-14 16:22:31 682

原创 (一)RocketMq与Spring的集成开发原理之RocketMq简介

本文章主要介绍的是RocketMq的一些基本概念,如消费者生产者和Broker这些的含义,并且会介绍部署时每个角色的启动交互逻辑,看完这篇文章将会对NameServer、BrokerServer、Producer和Consumer这四个主要角色之间的通信数据交互关系有个大概的了解。

2021-12-29 16:46:10 1313

原创 关于JDK线程池核心线程和非核心线程的源码思考与总结

重读源码,新的思考与总结什么时候才会执行非核心线程?JDK线程池具体是如何区分核心线程和非核心线程?核心线程真的可以一直存活吗?非核心线程又为什么只能存在一段时间?非核心线程的存活时间由什么控制?

2021-12-24 17:57:23 1570 4

原创 (一)Spring-Cloud源码分析之核心流程关系及springcloud与springboot包区别

很多人搞不懂springboot和spring-cloud的关系到底是什么,也不知道这两者时间有什么区别,今天简单的聊聊。

2021-07-16 16:30:21 1235 5

原创 (十三)Zookeeper原理源码分析之集群数据同步(广播模式)建立通信连接原理源码分析

1.前话在前面的文章已经分析过了ZK集群数据同步(广播模式)建立通信连接的流程了,本次文章便分析一下建立通信连接的源码层面逻辑。注:本篇基于ZK版本3.4.8分析的。2.建立通信相关角色及流程图数据同步建立通信的流程可以看成是古代附属王朝向中央王朝进行朝贡的流程,即各个Follower主动向Leader发送连接请求,Leader接收到各个Follower机器的请求后生成对应的处理器,这些处理器可以看成是中央王朝派遣的接待使。当然这中间肯定是要经过一系列的逻辑确定Leader机器是否是真正合格

2021-04-16 17:11:17 396

原创 (十二)Zookeeper原理源码分析之集群数据同步(广播模式)流程原理分析

目录1.前话2.Leader机器与Follower机器建立通信2.1 相关角色及交互关系2.2 建立通信交互流程图3.Leader接收到客户端的Request请求3.1 Leader机器RequestProcessor链3.2 Leader接收Request请求并同步数据4.Follower接收到客户端的Request请求4.1 Follower机器RequestProcessor链4.2 Follower接收Request请求并通过Leader同步数据5.ZK集

2021-04-13 17:41:20 499

原创 (三)Java使用奇技淫巧之使用Stream流的Lambda语法进行List转Map操作

目录1.背景2.Stream流的Lambda语法应用实例2.1 定义要操作的UserDto2.2 List转成Map2.2.1 List转成Map,>2.2.2 List转成Map>,>2.2.3 List转Map,>2.2.4 List>转Map,>2.2.5 List>转Map,>2.2.6 List>转Map,>3.性能说明1.背景在平时开发过程中难免会碰到有些时候需要将一个List转成Ma

2021-04-01 17:47:42 7695 5

原创 (二)Java使用奇技淫巧之枚举+自定义异常+接口优雅实现判断参数为空

目录1.背景2.枚举实现接口2.1 接口实现默认方法2.2 枚举类实现接口3.定义枚举接口判断参数3.1 自定义异常类3.2 定义判断参数接口3.3 定义参数枚举类4.实际使用演示1.背景平时开发的时候判断某个接口参数是否为空是实现接口健壮性最基础性的操作,可以确保在接下来的流程中哪些参数是可靠的,哪些参数是不可靠的以方便开发人员写出更简洁和安全的代码。假设判断参数的地方不统一这里一块那里一块将会导致开发人员后续维护或者开发的时候不容易判断必传参数情况。比如以

2021-03-31 19:39:47 1099 6

原创 (十一)Zookeeper原理源码分析之FLE(FastLeaderElection)算法集群选举原理流程源码解析

目录1.前话2.源码分析2.1 FastLeaderElection选举发送通知2.2 通信对的SendWorker对象监听集合并发送消息2.3 通信对的RecvWorker对象接收消息2.4 WorkerReceiver处理通信对接收到的消息2.5 FastLeaderElection对象处理集群响应消息2.6 QuorumPeer处理选举结果1.前话前面一篇已经分析过了FLE算法各个机器间创建通信结构的流程源码,即分析原理流程的时候各个机器是可以正常的发送及接收消

2021-03-31 11:12:07 365 4

原创 (十)Zookeeper原理源码分析之FLE(FastLeaderElection)算法集群构建集群内部通信对源码解析

目录1.前话2.源码分析2.1 QuorumPeer对象发起投票2.2 FastLeaderElection选举发送通知2.3 WorkerSender选择机器并发送通知2.4 QuorumCnxManager连接机器并发送消息2.5 Listener监听Socket连接1.前话在前面一篇已经分析过了FLE的原理流程以及通信结构,接下来便详细分析一下ZK集群在建立通信结构源码层面的操作流程,在进行接下来的源码通信流程前需要对这个流程有一个大概的认识,否则很容易分析到一半便

2021-03-27 22:56:09 390

原创 (九)Zookeeper原理源码分析之FLE(FastLeaderElection)算法集群选举通信原理及流程结构

目录一、集群通信结构及流程1.前话2.集群通信结构3.集群通信流程3.1 创建通信模块流程3.2 选举通信流程一、集群通信结构及流程1.前话上一篇说明了ZK集群的基本结构和重要组件,分析了在ZK集群启动时哪些重要的组件在起作用,这一篇将会续着上一篇往下开始分析ZK集群选举流程,来分析选举细节、选举流程、机器间如何完成交互通信的以及启动流程中的那些组件在其中起到何种作用。简单来说,便是分析上篇文章说的五个要点中的第二个和第三个要点。至于ZK集群的数据同步放到下篇文章再来分析

2021-03-17 23:44:48 362

原创 (八)Zookeeper原理源码分析之集群启动组件构成、启动流程源码分析和集群配置文件参数分析

目录一、集群组件构成1.前话2.集群基本组件3.启动流程分析二、配置文件参数分析1.配置文件实例2.参数解析表3.参数细节说明三、启动流程源码分析1.启动类QuorumPeerMain2.文件解析类QuorumPeerConfig3.日志文件处理器DatadirCleanupManager4.ZK集群对象QuorumPeer5.集群连接管理对象QuorumCnxManager一、集群组件构成1.前话从本篇开始便是有关ZK集群有关原理源码结构

2021-03-06 22:52:18 301

原创 (七)Zookeeper原理源码分析之心跳检测流程源码分析-单机Server服务端与Client客户端

目录一、源码解析1.Client发送ping请求1.1 SendThread心跳检测发起者1.2 ClientCnxnSocket套接字交互类2.Server端接收处理响应数据2.1 NIOServerCnxnFactory接收NIO请求2.2 连接对象NIOServerCnxn2.3 单机运行的ZooKeeperServer2.4 SessionTracker校验Session时间2.5 RequestProcessor请求处理链2.6 NIOServerCnx

2021-01-27 17:25:39 1716

原创 (六)Zookeeper原理源码分析之心跳检测流程及Session时间参数解析-单机Server服务端与Client客户端

目录一、交互重要组件及流程1.前话2.交互流程2.1 Client端发起连接2.2 Server接收处理及响应2.3 Client端接收Server端响应二、Session时间参数解析1.ZK服务器配置2.SessionTracker计算清除失效时间间隔3.SessionTracker具体的Session清除时间4.Client端Session相关属性及作用一、交互重要组件及流程1.前话上几篇文章分析过了ZK的单机架构以及大致的新建连接交互流程,本篇便

2021-01-27 17:18:38 4553 6

原创 (五)Zookeeper原理源码分析之新建连接交互流程源码分析-单机Server服务端与Client客户端

目录一、重要源码分析1.Client端发起连接1.1 ZooKeeper入口类1.2 ClientCnxn连接交互类1.3 SendThread发送连接请求1.4 ClientCnxnSocket套接字交互类2.Server端接收处理响应数据2.1 NIOServerCnxnFactory接收NIO请求2.2 连接对象NIOServerCnxn2.3 单机运行的ZooKeeperServer2.4 session追踪类SessionTracker2.5 Req

2021-01-14 20:16:16 622

原创 (四)Zookeeper原理源码分析之新建连接交互流程分析-单机Server服务端与Client客户端

目录一、交互重要组件及流程1.前话2.交互流程2.1 Client端发起连接2.2 Server接收处理及响应2.3 Client端接收Server端响应二、重要源码分析一、交互重要组件及流程1.前话上一篇文章分析过ZK服务端的重要组件以及单机情况下的启动流程,了解了ZK的基本组成。如有兴趣的可以直接跳转至(二)Zookeeper原理源码分析之单机Server服务端组件架构启动流程分析和(三)Zookeeper原理源码分析之Client客户端重要组件架构组成。对于

2021-01-14 20:01:44 444

原创 (三)Zookeeper原理源码分析之Client客户端重要组件架构组成

目录一、Client客户端架构组件1.前话2.基本组件2.1 ClientCnxn及内部类2.2 信息载体类Packet2.3 Watcher之监听组件3.主要组件交互一、Client客户端架构组件1.前话第二篇介绍了Server服务端的重要组件架构以及启动流程,感兴趣的可以跳至(二)Zookeeper原理源码分析之单机Server服务端组件架构启动流程分析观看。这一篇要介绍的是ZK的Client客户端重要架构组件,这个部分是我们平时开发连接ZK用的最多的,不管是

2020-12-18 11:31:41 396 2

原创 (二)Zookeeper原理源码分析之单机Server服务端组件架构启动流程分析

目录一、Server服务端架构组件1.前话2.基本组件2.1 RequestProcessor2.2 Record2.3 DataTree及DataNode监听2.4 NIO的ServerCnxn组件3.启动流程二、启动流程源码简析1.入口启动类ZooKeeperServerMain2.解析配置类ServerConfig3.NIOServerCnxnFactory设置主要启动组件4.单机Server类ZooKeeperServer5.ZKDatabas

2020-12-01 14:24:24 580 3

原创 (一)Zookeeper原理源码分析之简介功能介绍

目录一、Zookeeper出现背景二、Zookeeper基本架构1.数据模型2.系统模型三、Zookeeper提供的功能1.命名服务(NameService)2.配置管理(Configuration)3.集群管理(GroupMembers)4.分布式锁四、基本概念及工作原理1.角色2.工作原理2.1.选主流程2.2.同步流程2.3.主要功能2.4.client和follower之间的通信一、Zookeeper出现背景加入存在一个服务器集

2020-11-18 17:07:05 391

原创 (五)Tomcat架构及运行原理之IO多路复用

目录一、多路复用1.概念引入2.BIO处理并发情况3.多路复用IO并发情况4.两者的对比二、多路复用模型1.Selector和Poll模型2.epoll模型(仅限Linux系统)3.Reactor多线程模型三、Tomcat之IO多路复用应用1.模型流程2.模型初始化源码分析2.1 ProtocolHandler之Http11NioProtocol初始化2.2 Endpoint和Accptor初始化3.模型运行源码分析3.1 Accptor接收器

2020-10-27 17:55:47 2362 2

原创 (三)Logback-slf4j日志之常用两种方式打印实现原理

目录一、常用类配置项二、实现原理1.UML图2.实现流程图三、源码分析1.Logger2.AppenderAttachableImpl3.UnsynchronizedAppenderBase4.OutputStreamAppender5.ConsoleAppender6.RollingFileAppender7.LayoutWrappingEncoder8.PatternLayout9.PatternLayoutBase一、常用类配置项下列是常

2020-10-22 16:41:35 1567

原创 (一)NIO原理实现分析之总体简介和FileChannel、SocketChannel和ServerSocketChannel三种实现Demo

目录一、NIO体系1.NIO和IO的区别2.NIO组成关系2.1 协同关系图2.2 UML类图3.NIO常用组件3.1 Buffer3.2 Channel3.3 Selector3.4 SelectionKey3.5 SelectorProvider3.6 SelectableChannel二、使用实例1.FileChannel简单实例2.SocketChannel和ServerSocketChannel简单实例3.Socket多路复用一、

2020-09-10 16:02:11 453

原创 Disconf-Client端原理分析和使用思考

目录一、结构组成1.模块组成2.UML类图3.数据结构二、原理流程1.配置类2.配置文件3.注解类4.原理分析4.1 Disconf核心加载流程原理4.2 监听下载文件流程原理三、使用思考1.搭配注解的简易使用配置2.注解方式使用二次加载3.无侵入式另类的简易配置本次只基于@DisconfFile和@DisconfFileItem两个注解搭配使用的情况,@DisconfItem等注解的组成和数据结构将不会分析。一、结构组成1.模块组成

2020-08-12 17:45:10 591

原创 SpringMVC框架中@ControllerAdvice和对应Advice切面使用原理

目录一、简介二、@ControllerAdvice注解的处理获取1.@ControllerAdvice注解2.ControllerAdviceBean类三、Request请求和Response响应对应接口切面1.RequestBodyAdvice接口2.ResponseBodyAdvice接口四、Advice切面的读取和调用原理1.RequestMappingHandlerAdapter类读取@ControllerAdvice注解类2.RequestResponseB

2020-08-05 17:52:49 2418

空空如也

空空如也

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

TA关注的人

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