自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (5)
  • 收藏
  • 关注

原创 RabbitMQ + SpringCloud使用及避坑(大章)

本来还想一篇解决完的,写到一半我就发现这玩意儿根本就一篇搞不定,这篇就是一些基础的知识了解,还有一些简单的使用MQ 的时候大概率遇到的一些坑,但是代码中应该怎么解决这些问题还没有说。而且现在也是简单的用amqp 来实现了几种rabbitMQ 的交换器调用,原生代码的调用方式、stream 中间件的调用方式都还没有说。还有一些结合第三方中间来完善rabbitMQ 的使用也没有说明,比如:Redis 加入后防止重复消费的方案、MongoDB 加入后防止消息丢失等等,目前这篇文章都没有体现。

2023-06-16 16:00:06 1433

原创 SpringBoot源码流程解析(重置版)

springBoot 本身是对spring 的一种封装,它的出现就是为了更加方便、快速的开发Spring 的项目。它的设计是为了让你尽可能快的跑起来Spring 应用程序,并且尽可能减少你的配置文件。springBoot 基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring 应用的整个搭建和开发过程。另外SpringBoot 通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。SpringBoot主要特性。

2023-05-30 16:42:19 482

原创 Cloud-OpenFeign 认识、使用及调用流程源码解析

上述也说了feign 和openFeign 的本质都是前者,它们的使用场景也都是:微服务之间的相互调用。它们是将对服务的调用转换成了对本地接口的调用,同时内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务。服务之间调用的组件在cloud 体系中是不可缺少的,而openFeign 的使用相对来可以说是非常简单,结合spring boot 体系也能做到快速开发,但是它也不是不可替代的,其它组件比如:dubbo、feign 之类的,甚至可以自己去开发一个类似的框架,怎么选择还是。

2023-05-19 17:30:36 399

原创 Cloud-Gateway 网关的认识、使用以及源码分析

在gateway 的正式使用之前,我们简单说一下gateway 的基础概念,先弄清楚gateway 的作用是什么,为什么项目中要加入gateway。Spring Cloud Gateway 是Spring Cloud 团队的一个全新项目,基于Spring5.0、SpringBoot2.0、Project Reactor 等技术开发的网关。旨在为微服务架构提供一种简单有效统一的API路由管理方式。

2023-05-12 17:30:02 457

原创 Cloud-Nacos 安装使用及注册和配置中心

正式开始之前还是要精简的抄一下官网的概述和基本概念。nacos 是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,它提供了一组简单易用的特性集,能够快速实现动态服务发现、服务配置、服务元数据及流量管理。命名空间:这个是重点,Namespace 也就是命令空间,是用于进行租户粒度的配置隔离。在不配置的情况nacos 只提供一个命名为public 的命令空间,要做不同环境的配置的区分隔离的话,一定是要自己配置的。服务注册中心:存储服务实例和服务负载均衡策略的数据库。配置管理。

2023-04-27 10:07:21 312

原创 Docker-仓库管理和编排方式

关于本篇就讲这么多,主要内容就是harbor 的安装和使用,还有docker-compose 单点编排方式,至于集群编排还有k8 后面再讲,我也没有过多的服务器,而且还懒得搭虚拟机,所以后续的话,理论可能要多余实践,企业里面集群的部署,我们可能也用不到,都是运维的活。docker-compose up -d --scale 容器名臣或ID=节点数解析:节点数增大为扩容,缩小为缩容。

2023-04-10 17:25:48 250 1

原创 Docker-安装及基本使用

每次开始一个新的技术内容,基本都会有这段概述内容,这段内容是描述这个技术本身的一些基本和官方概念,主要作用就是为了让初学者能有一个认识和基本的简单了解,如果不需要可以直接跳到使用阶段,但是不建议初学者跳过。在使用docker 前我们需要知道什么是docker,docker 本身就是一种容器化技术,它的目标是实现轻量级的操作系统虚拟化解决方案,Docker 的基础是Linux 容器(LXC)等技术。与宿主机使用同一个内核,性能损耗小;不需要指令级模拟;不需要即时(Just-in-time)编译;

2023-04-07 14:09:40 571

原创 HsahMap的面试详解及源码分析

本次接着上篇说jdk 中的HashMap,这个是一个比较复杂的重点,因为看懂了这个,后面Redis 的数据结构基本上就懂一半,而且之后所有涉及hash 表的逻辑都可以套用,最主要的就是这玩意儿面试问jdk 基本都要被问到。本次我会和结合hash表、hash碰撞的解决来聊一下hashMap 的源码,同时会将jdk1.7 和1.8 之间hashMap 区别更新说一下,至于1.8 扩容出现的红黑树这里会简单聊一下,具体的后面算法文章再详谈。HashMap的存储结构哈希表在聊hashMap 之前,还是需要先简单

2022-05-05 16:00:41 265

原创 Object、ArrayList以及LinkedList源码分析

本篇作为JDK 源码分析的第一篇,就先从简单的说起。本篇主要分析的就是Object、ArrayList 以及LinkedList 的源码,Object 主要就是简单介绍一下hashCode 的生成还有一些基本的概念,object 本身来说也并不是很复杂,面试的时候也不会问到太多,所以也就不多聊。剩下的ArrayList 和LinkedList 都是从数据结构、初始化、增删改查以及扩容流程来详谈。Object的简单介绍基本上所有刚刚接触java 的萌新第一个知道的就是万物皆对象,然后就是Object,这也

2022-05-05 15:59:59 222

原创 AOP流程源码分析-配置信息解析和代理对象创建

本次文章就算是开始对于aop 的流程源码分析了。区别于IOC,aop 相对来说简单一点,我们后续的主要内容就是从aop 相关配置信息的解析、代理的创建、代理流程的调用,这三个部分着手来简单说一下aop 的源码分析。简述AOP的前世今生首先系列文章开头还老套路,先说一下aop 的一些概念知识,其信息来源主还要是网络和官方。对aop 有一定了解的跳过这段内容。AOP(Aspect Orient Programming):面向切面编程;用途:用于系统中的横切关注点,比如日志管理,事务管理;实现:利用代

2022-04-29 09:48:59 175

原创 AOP流程源码分析-请求调用全流程

本次会将剩下的AOP 内容全部聊一下,其实就是剩一个请求调用全流程了,后续Spring 系列文章就还剩boot 和cloud 呢,boot 在我面试前应该还能讲一讲,但是cloud 因为这些年一直在保险行业混,现在也不是很清楚,分布式现在能记住的就是dubbo 体系的了,这个只能后面再说了,如果面试这个必须上的话,我就再看看cloud 然后整理一下相应文章,不行的话,只能等面试结束了,不过今年应该能写完。源码分析说了一些废话,现在就开始本次的源码分析了,老司机发车,坐稳。上篇aop 的文章讲了代理的创

2022-04-29 09:48:25 433

原创 IOC流程解析-循环依赖

Spring IOC 一系列文章下来,我们已经了解了整个spring IOC 核心refresh 方法的全部内容,这个方法名我是每篇文章都有提到,一定要记住。本次就聊一下IOC 的最后一个知识点:循环依赖的问题。什么是循环依赖?很多小伙伴都在各种渠道听到过“循环依赖”这个词,也应该有一定了解,但是我这里还是要重新在具体描述一下循环依赖的概念。循环依赖是指:在spring IOC 容器初始化的时候,记住是初始化,不是实例化,上篇文章IOC流程解析-实例化和初始化 就已近说过了spring 对于bean

2022-04-25 22:34:22 982 1

原创 IOC流程解析-实例化和初始化

本次内容为解析核心方法剩下的全部内容,重点是bean 的实例化和初始化部分。对于其余IOC 部分内容感兴趣的小伙伴可以根据文章最后的导航栏直接跳跃。源码分析接着上篇文章(上篇文章是:[IOC流程解析-BeanFactoyPostProcessor和BeanPostProcessor](https://liwqtm.github.io/2022/03/14/Spring IOC-3/#more)),我们还是继续看IOC 的核心方法refresh 方法的内容。这次会提到两个面试常问的问题:BeanFacto

2022-04-25 22:34:02 889

原创 IOC流程解析-BeanFactoyPostProcessor和BeanPostProcessor

扑街前言:本次内容要讲的是BeanFactory 创建完成并设置了BeanDefinition 之后,BeanFactoyPostProcessor 的初始化和执行,还有BeanPostProcessor 的初始化,注意今天的内容BeanPostProcessor 是不会执行的,在Spring的基本概念和IOC流程的简述 的文章就说过了IOC 的流程图,BeanPostProcessor 的执行是在Bean 实例化之后。源码分析接着上篇文章(上篇文章是:IOC流程解析-BeanFactory的创建)继续

2022-04-23 20:34:58 531

原创 IOC流程解析-BeanFactory的创建

扑街前言:本次内容的重点是BeanFactory 的创建、BeanDefinition 的构建以及配置文件的解析、还有Schema 机制分析(这里要结合dubbo 的一点点内容,对于dubbo 有一定了解的小伙伴可以看下,没有的话建议跳过,后面看dubbo 的时候在回来看这个内容)。Spring源码下载在源码分析之前,有一个前提就是你能看到源码,你得本地有源码。那么我们先说下怎么下载spring 的源码,这里和其余框架不同,目前spring 的源码下载后的项目依赖管理不是maven 而是Gradle。这

2022-04-23 20:34:01 621

原创 Spring的基本概念和IOC流程的简述

title: Spring的基本概念和IOC流程的简述date: 2022-03-09tags:- Java- Spring- 框架categories:- Spring- Spring IOCspring 现在算是针对java语言的企业级业务的基本框架了,现在中高级面试基本都要问spring,其中的区别就是深度问题,我后面的文章也是对于spring 源码的分析,不再针对初级内容做解析了,主要就是简单说下spring 的基本概念,然后就是说IOC 容器部分的内容了,如果不知道spring.

2022-04-23 20:31:59 414

原创 MyBatis流程及源码分析(二)

扑街前言:上篇文章描述了mybatis 的大部分内容,从架构到传统的调用,那么本次就说一下代理调用的内容,还有上篇有提到过的插件内容,最后我会总结一下mybatis的大体流程,面试的话可以看下,不看源码还是可以背一下的嘛。MyBatis的代理调用 mybatis 的代理调用,其实就是结合Spring 注解后不用dao层接口实现类的实现方法,但是我这里就不详细说spring 集成mybatis 的内容了,后面关于spring 的文章再详细说。回到正题,我们先下载我资源中的...

2022-03-21 15:50:39 328

原创 MyBatis流程及源码分析(一)

扑街前言:本来dubbo结束之后,应该是要写SpringCloud相关的组件内容的,但是因为目前本人要去重新面试,所以先整理一下myBatis、Spring、SpringBoot之类的源码分析,至于SpringCloud后面有时间了再说。本次说一下mybatis的源码分析,因为比较简单就一篇搞定。MyBatis的架构设计老规矩看框架源码先看框架的架构设计,先上图。说明一下下面几层的大体职责,首先是接口层:对外提供增删改查接口,接着就是数据处理层:设置参数、sql解析、...

2022-03-20 16:44:23 339

原创 Dubbo流程及源码分析(四)

扑街前言:本篇是dubbo的最后一篇文章了,对之前dubbo相关的文章做一个总结,第一篇是dubbo的SPI和Java的SPI,第二篇是Spring 集成dubbo和provider 方的启动,接着第三篇就是comsumer 方的启动,那么本篇要讲的就是服务调用的全部流程。...

2022-03-15 16:31:43 1903

原创 Dubbo流程及源码分析(三)

扑街前言:之前忘记说了,这个dubbo分析要结合我之前的文章,比如netty、zookeeper、rpc等文章一起看,dubbo太复杂了所以有些地方描述得也不是很详细,这边也是提供一个代码分析的思路,真正要读懂这个还需要自己去翻一下源码,注释版的源码可以在我的资源中下载。本篇文章主要说客户端的启动流程。还是要拿一下上面文章中的架构图,这个图是绝对的重点,先上图,我们再往下面讲。consumer启动流程 从上面的架构图结合之前分析服务端启动流程...

2022-03-05 17:12:18 293

原创 Dubbo流程及源码分析(二)

扑街前言:上篇文章说了关于dubbo和Java的SPI机制,本次说下关于Spring对于dubbo的一个集成,从spring的集成出发分析整个dubbo的启动流程。在了解dubbo的服务注册和服务发现之前,我们首先需要掌握...

2022-03-01 10:54:39 804

原创 Dubbo流程及源码分析(一)

扑街前言:之前的文章说明了zookeeper的使用及源码,那么本次我们继续了解和zookeeper的黄金搭档dubbo的相关内容,当然dubbo也是典型的rpc框架,所以我们从客户端和服务端逐个分析,后续还有一系列文章,慢慢来。年后任务。。。。。...

2022-02-15 18:40:01 2250

原创 zookeeper使用及源码分析(三)

扑街前言:继续上篇的内容接着来,上两篇说了zk 的服务端的启动流程和每一个线程所做的具体事情,本次我们讨论一下服务端的读写事件。

2022-02-05 16:09:45 1684

原创 zookeeper使用及源码分析(二)

扑街前言:上篇文章我们说了zk 的服务端启动源码还有一些基本概念和使用,本次我们来讨论一下zk 服务端的业务逻辑。上篇文章我们了解了zk 的IO流程图,这次还是根据那副图我们来继续说。先上图。从流程图可以看出连接监听的线程就是AcceptThread、监听读写的就是SelectorThread、具体业务逻辑处理的就是WorkService,上次我们也说了这些线程的创建过程和启动,那么我们就可以找到对应的线程对象,然后找到线程的run方法来进行源码分析,下面我们一点点的...

2022-02-04 12:11:31 1588

原创 zookeeper使用及源码分析(一)

扑街前言:前端时间的文章都是在说RPC框架的网络通讯方式,这段时间我们了解一个金典的rpc框架zookeeper的使用及源码,zookeeper目前最常使用的就是作为注册中心,和dubbo结合就是一个实用的分布式架构,所以本篇已经后续的文章也是根据注册中心的思路来了解zookeeper。 年后再完成后续,先定一个目标...

2022-02-03 18:09:24 1742

原创 手写一个简单rpc框架(二)

扑街前言:继续上篇文章的内容,上篇文章说了rpc框架的架构和服务端的代码编写,那么本篇实例客户端的代码编写。(认识到自己是菜鸟的51天)老规矩先说下客户端的大致内容和流程,1、同服务端一样,需要一个引导类用于运行启动器;2、一个启动器,进行服务的发现,从zk中将所有服务信息拉取下来,存入缓存,同时监听每个接口;3、服务发现,用于拉取zookeeper中的注册信息,并放入缓存,如果缓存中有,那么直接取缓存中的值;4、动态代理,用于对远程接口的简单实例;5、将请求的信息封装为...

2022-01-20 18:07:58 2473

原创 手写一个简单rpc框架(一)

扑街前言:前面说了netty的基本运用、Java的NIO等一系列的知识,这些知识已经可以做一个简单的rpc框架,本篇和下篇我们一起了解一个怎么完成一个rpc框架,当然个只是为了更好的了解rpc框架的基本逻辑,并不是真的可以用于业务使用。(认识到自己是菜鸟的第47天,今天突然记起来是多少天了)...

2022-01-12 17:21:59 1226 1

原创 初识Netty(二)

扑街前言:上面说了Netty的一些基本概念,本篇我们说下Netty应该如何来编写客户端和服务端。(认识到自己是菜鸟的不知道多少天,人都学麻木了的第二天)。 在编写代码之前,首先要知道Netty的事件传播是以什么方式做到的。我们目前只讨论Netty的NIO实现,而NIO是Java的同步非阻塞IO,使用了channel、buffer、selector三个核心组件来实现信息的传输,数据的具体操作是buffer,传输用的是channel。那么结合上篇说到的Ne...

2022-01-10 16:31:34 734

原创 初识Netty(一)

扑街前言:上篇文章说了I/O,那都是为了这个做铺垫netty才是重点,学习这个人都麻了,不知道说什么前言了,就这样吧!(认识到自己是菜鸟的不知道多少天)Netty的概述Netty是由JBOSS提供的一个Java开源框架,现为Github上的独立项目。Netty提供非阻塞的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。本质:网络应用程序框架; 实现:异步、事件驱动; 特性:高性能、可维护、快速开发; 用途:开发服务器...

2022-01-07 16:12:20 708

原创 NIO概述

扑街前言:在这篇文章之前我对于io的认识也只是停留在输入输出流上面,本次就是详细描述一下各个io之间的区别,还有详细说下nio。(认识到自己是菜鸟的第不知道多少天了)首先说下Java的各种IO,BIO 同步/阻塞型、NIO 同步/非阻塞型、AIO 异步/非阻塞型,从这里我们可以看出IO的两组概念:同步/异步、阻塞/非阻塞,这里同步和异步要区别于同步线程和异步线程。...

2022-01-06 15:29:10 346

原创 Spring Boot原理分析(二)

扑街前言:从上篇可以了解到spring boot本身对于自动配置的流程和原理,但是也留有疑问如果spring boot在没有说明和配置的情况下,如果将外部的类自动配置到IOC容器呢,如Redis提供的redissonClient对象,这个我们本次就来了解一下。(认识到自己是菜鸟的第二十八天)...

2021-12-27 13:58:11 235

原创 Spring Boot原理分析(一)

扑街前言:spring boot使用起来非常简单,它本身就是提供一种快速开发使用Spring的方式,业务逻辑层和spring的使用完全一致,上手并不困难。但是spring boot本身的原理逻辑非常复杂,也就是用起来简单的东西,往往困难的点别人已经帮你解决了。我会出一个系列慢慢的讲解自己整理原理的一个过程,本次是开篇。()...

2021-12-22 18:49:17 473

原创 Spring Boot 的简单概述

扑街前言:本篇文章算是一个引入吧,简单的概述一下spring boot本身是个什么东西,然后搭建一个简单的spring boot项目。目前很多人说到spring boot一定会联想到spring cloud,这两者结合是当下很多公司正在使用的分布式框架体系,但是本人在使用spring boot的过程中感觉就算不搭建分布式框架体系,spring boot一样适用于很多需要快速开发项目的公司,甚至过于“臃肿”的老项目也可以更换spring boot,这样能更方便于维护管理。...

2021-12-13 16:24:15 567

原创 基于Redis实现分布式锁(二)

扑街前言:上篇文章简单的说了一下Redis实现分布式锁的基本原理,本次来分析下Redis提供的分布式锁的源码。(认识自己是菜鸟的第十一天)RedissonClient: 我们先说结论,Redis本身提供的RedissonClient对象(客户端对象),这个对象的getlock()方法能获取一把锁对象,然后lock.lock()加锁,lock.unlock()解锁。最简单的分布式锁就完成了。简单的难以想象,我们说下源码。Config config = new Con...

2021-12-06 15:57:09 386

原创 基于Redis实现分布式锁(一)

扑街前言:之前的分布式锁概述文章中讲到了分布式锁的特性,那么这次就根据这些特性聊一下Redis是如何实现分布式锁的。(认识自己是菜鸟的第九天)setnx和expire命令: 谈及如何基于Redis如何实现分布式锁或者说简单的锁,那么就一定要涉及setnx和expire两个命令。(这里提供一个网址,个人觉得很好用:Redis 命令参考 — Redis 命令参考)setnx:只有键key 值不存的情况下,将键key 值设置为值value。如果键key 值存在,则setn...

2021-12-01 15:56:02 1290

原创 分布式锁概述

扑街前言:

2021-11-30 16:36:43 293

原创 Redis详解(二)

扑街前言:上篇文章内容讲了Redis的key-value是如何存储的,那么本次就说一下如果key值经过HashFunction后得到的数字重复了怎么办?也就是哈希冲突了该怎么解决,以及详细一下其中一种解决方案拉链法。(认识到自己是菜鸟的第二天) 继上篇文章说的,Hash table是基础数组构建的,Redis通过HashFunction(key)传入一个key,返回一个数字,这个数字也就是Hash table的下标索引,那么如果key不同的情况下却返回了同一个数字,按照下标...

2021-11-23 18:12:32 783

原创 Redis详解(一)

扑街前言:不知道怎么开头,以一个Java开发看金典的C代码还是有点困难,更别说我还是个菜鸟Java,十句代码九句猜,有什么说的不对的后面再修改整理。(如果有一天我能成为大佬的话) Redis整体是一个key-value结构,简单来说是一个键值数据库(非关系型数据库),大部分情况用于缓存,相比于关系型数据库查询更快,效率更高之类。服务端是有16个数据库,编号0-15,每个都可以存储key-value。这些基础的概念度娘能有详细的内容,所以这篇文章要说的是:如何着手Redis的...

2021-11-22 14:47:48 860

原创 Spring事务详解(一)

Spring事务本身主要三个接口,分别是:PlatformTransactionManager、TransactionDefinition、TransactionStatus。其主要作用分别是:TransactionDefinition:封装事务的隔离级别,超时时间,是否为只读事务和事务的传播规则等事务属性,可通过XML配置具体信息。PlatformTransactionManager:根据TransactionDefinition提供的事务属性配置信息,创建事务。Transaction

2021-09-26 16:25:13 82

openFeign 源码注释版 2.2.1 版本

openFeign 源码注释版 2.2.1 版本

2023-05-18

gateway 源码注释版,2.2.1 版本

gateway 源码注释版,2.2.1 版本

2023-05-18

keycloak压缩包

keycloak压缩包

2022-06-22

spring源码(注释+测试版)

spring源码(注释+测试版)

2022-03-23

myBatis源码(注释版)

myBatis源码(注释版)

2022-03-16

zookeeper源码(注释版)

zookeeper源码(注释版)

2022-02-12

Dubbo源码(注释版)

Dubbo源码(注释版)

2022-02-12

空空如也

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

TA关注的人

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