自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring源码解析(10)之Spring 是如何解决循环依赖的

之前有篇章有介绍过spring是如何解决循环依赖Spring源码解析(7)之循环依赖解决_jokeMqc的博客-CSDN博客的,但是我看了之后感觉说的比较的简单,这里再结合spring的源码,说明spring是如何解决循环依赖的。 一、什么是循环依赖所谓的循环依赖就是A依赖B,B依赖A,或者是A依赖B,B依赖C,C依赖A。 代码实例:getter/setter public class InstanceA { ...

2021-11-16 15:26:14 619

原创 x-requested-with的作用以及用法详解

x-requested-with 请求头 区分ajax请求还是普通请求在服务器端判断request来自Ajax请求(异步)还是传统请求(同步):   两种请求在请求的Header不同,Ajax 异步请求比传统的同步请求多了一个头参数   1、传统同步请求参数     accept text/html,application/xhtml+xml,application/xml;q=0.9,/;

2017-12-07 11:45:39 57545 5

原创 云原生应用(6)之Docker容器网络与通信原理

docker0是一个二层网络设备,即网桥通过网桥可以将Linux支持的不同的端口连接起来实现类交换机多对多的通信veth pair虚拟以太网(Ethernet)设备成对出现,用于解决网络命名空间之间的隔离一端连接Container network namespace,另一端连接host network namespace。

2024-03-28 11:02:08 550

原创 云原生应用(5)之Dockerfile精讲及新型容器镜像构建技术

Dockerfile是一种能够被Docker程序解释的脚本。Dockerfile由一条一条的指令组成,并且有自己的书写格式和支持的命令。当我们需要在容器镜像中指定自己额外的需求时,只需在Dockerfile上添加或修改指令,然后通过docker build生成我们自定义的容器镜像。

2024-03-27 18:37:37 682 1

原创 云原生应用(4)之阿里云镜像加速以及镜像仓库

登录阿里云。

2024-03-15 13:52:26 1027

原创 SpringCloud(22)之Sentinel实战应用

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。1)Sentinel核心组件1核心库(Java客户端不依赖任何框架库,能够运行于Java7及以上的版本的运行时环境,同时对DubboSpringCloud等框架也有较好的支持。2控制台(Dashboard。

2024-03-14 15:35:04 1068

原创 云原生应用(3)之Docker容器镜像操作命令

docker 通过 commit 和 build 操作实现镜像的构建。commit 将容器提交为一个镜像,build 在一个镜像的基础上构建镜像。考虑到docker容器镜像会占用本地存储空间,建议搭建其它存储系统挂载到本地以便解决占用大量本地存储的问题。把他人分享的容器镜像导入到本地,这通常是容器镜像分发方式之一。导入使用docker export导入的容器做为本地容器镜像。导出容器镜像,方便分享。把正在运行的容器导出。

2024-03-13 10:19:27 751

原创 云原生应用(2)之使用容器运行Nginx应用及Docker命令

查找本地容器镜像文件;执行命令过程一:下载容器镜像a2abf6c4d29d: Downloading 1.966MB/31.36MB 下载中589b7251471a: Download complete 下载完成b4df32aa5a72: Waiting 等待下载。

2024-03-12 21:41:51 999

原创 云原生应用(1)之容器管理工具 Docker生态架构及部署

容器镜像仓库,用于存储已生成容器运行模板的仓库,用户使用时,可直接从容器镜像仓库中下载容器镜像,即容器运行模板,就可以运行容器镜像中包含的应用了。Docker Daemon客户端工具,用于同Docker Daemon进行通信,执行用户指令,可部署在Docker Host上,也可以部署在其它主机,能够连接到Docker Daemon即可操作。由容器镜像生成,用于应用程序运行的环境,包含容器镜像中所有文件及用户后添加的文件,属于基于容器镜像生成的可读写层,这也是应用程序活跃的空间。安装Docker-ce版本。

2024-03-12 13:59:29 880

原创 SpringCloud(21)之SpringCloud Alibaba Nacos实战应用

Nacos是Alibaba微服务生态组件中的重要组件之一,主要用它实现应用的动态服务发现、配置管理、 服务管理。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。Nacos支持几乎所有主流类型的服务的发现、配置和管理:1.2.3.

2024-03-11 20:44:33 1186 1

原创 SpringCloud(20)之Skywalking Agent原理剖析

1)探针工程创建工程hailtaxiagent用来编写agent包,该类需要用mavenassemblyplugin打包,我们先引入--自动添加META-INF/MANIFEST.MF -->-- 添加 mplementation-*和Specification-*配置项-->-- 将 premain-class 配置项设置为com.jokermqc.LoginAgent-->

2024-03-06 10:38:28 1020

原创 SpringCloud(19)之Skywalking应用上篇

Skywalking是一个可观测性分析平台和应用性能管理系统,它也是基于规范、开源的AMP系统。Skywalking提供分布式跟踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。支持JavaNetCorePHPNodeJSGolangLUA, c++代理。支持Istio特使服务网格SkyWalking核心功能:服务、服务实例、端点指标分析;服务拓扑图分析;服务、服务实例喝端点SLA分析;慢查询检测告警SkyWalking。

2024-03-04 18:34:16 1313 1

原创 SpringCloud(18)之Sleuth +Zipkin链路追踪

Zipkin是一个开放源代码分布式的跟踪系统,它可以帮助收集服务的时间数据,以解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现。每个服务向zipkin报告计时数据,zipkin会根据调用关系通过ZipkinUI生成依赖关系图,展示多少跟踪请求经过了哪些服务,该系统让开发者可通过一个web前端轻松地收集和分析数据,可非常方便的监测系统中存在的瓶颈。它可以帮助收集服务的时间数据,以解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现。

2024-03-01 11:15:42 986

原创 分布式事务(9)之Seata Server(TC)环境搭建详解

2. 找到以下对应的db配置,要修改其中的jdbc连接,以及要注意其中涉及到了三个表,分别是global_table,branch_table,lock_table分别是全局事务会话表,分支事务会话表,锁数据表;

2024-02-27 15:36:53 263

原创 分布式事务(8)之Seata下载与安装

我这里下载的是:seata-server-1.8.0。

2024-02-27 15:22:18 407

原创 分布式事务(7)之Seata简介

官网:概念: Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。仓储服务:对给定的商品进行增删操作记录数量订单服务:根据采购者的需求创建订单账户服务:从用户账户中扣除余额、积分等。

2024-02-27 15:05:01 857

原创 分布式事务(6)之分布式事务简介

最近在搞架构事情,工作内容有涉及到分布式事务的解决方案,接下来会用几篇博文回忆并介绍seata的使用,并且记录搭建过程中遇到的问题与记录。前期可能普及一些基础概念,大佬请概过。

2024-02-27 14:51:08 977

原创 SpringCloud(17)之SpringCloud Stream

Spring Cloud Stream是一个框架,用于构建与共享消息系统连接的高度可扩展的事件驱动微服务。该框架提供了一个灵活的编程模型,该模型建立在已经建立和熟悉的Spring习惯用法和最佳实践之上,包括对持久发布/子语义、使用者组和有状态分区的支持。它可以基于SpringBoot来创建独立的、可用于生产的Spring应用程序,SpringCloudStream为一些供应商的消息中间件产品提供了个性化的自动化配置实现,并引入了发布订阅、消费组、分区这三个核心概念。

2024-02-26 00:27:33 1152

原创 SpringCloud(16)之SpringCloud OpenFeign和Ribbon

本文主要是简单的介绍了SpringCloud OpenFeign和Spring Cloud Ribbon的使用

2024-02-23 17:05:20 1112

原创 SpringCloud(15)之SpringCloud Gateway

主要介绍SpringCloud Gateway的工作原理以及过滤器、动态路由、限流、跨域等的使用

2024-02-22 21:21:21 1348 1

原创 SpringCloud(14)之SpringCloud Consul

一、Consul介绍我们知道 Eureka 2.X遇到困难停止开发了,所以我们需要寻找其他的替代技术替代Eureka,这一小 节我们就讲解一个新的组件Consul。一、Consul介绍Consul 是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案,Consul的方案更一站式,内置了服务注册与发现框 架、分布一致性协议实 现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其它工具(比如ZooKeeper。

2024-02-22 13:48:27 668

原创 RocketMQ(3)之事务消息

事务消息共有三种状态,提交状态、回滚状态、中间状态: 使用 类创建生产者,并指定唯一的 ,就可以设置自定义线程池来处理这些检查请求。执行本地事务后、需要根据执行结果对消息队列进行回复。回传的事务状态在上面说的。2.事务监听接口 当发送半消息成功时,我们使用 方法来执行本地事务。它返回前一节中提到的三个事务状态之一。 方法用于检查本地事务状态,并回应消息队列的检查请求。它也是返回前一节中提到的三个事务状态之一。

2023-09-07 15:15:44 380

原创 RocketMQ(2)之消息发送案例

rockmq消息发送案例

2023-09-05 15:45:09 558

原创 RocketMQ(1)之RocketMQ架构设计与概念

RocketMQ主要由 Producer、Broker、Consumer 三部分组成,其中Producer 负责生产消息,Consumer 负责消费消息,Broker 负责存储消息。Broker 在实际部署过程中对应一台服务器,每个 Broker 可以存储多个Topic的消息,每个Topic的消息也可以分片存储于不同的 Broker。Message Queue 用于存储消息的物理地址,每个Topic中的消息地址存储于多个 Message Queue 中。

2023-08-31 10:35:37 275

原创 JAVA并发专题(2)之JMM&synchronized&volatile详解

Java内存模型(Java Memory Model简称JMM)是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。

2023-07-11 15:27:57 150

原创 JAVA并发专题(1)之操作系统底层工作的整体认识

现代计算机模型是基于-冯诺依曼计算机模型,计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求,从存储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。接下来,再取出第二条指令,在控制器的指挥下完成规定操作。依此进行下去。直至遇到停止指令。程序与数据一样存贮,按程序编排的顺序,一步一步地取出指令,自动地完成指令规定的操作是计算机最基本的工作模型。这一原理最初是由美籍匈牙利数学家冯.诺依曼于1945年提出来的,故称为冯.诺依曼计算机模型。

2023-05-16 16:15:19 414 1

原创 分布式事务(5)之柔性事务解决方案

分布式事务

2022-10-24 22:38:49 1086 2

原创 JVM(10)之垃圾收集器PartNew&CMS以及三色标记算法详解

垃圾收集器PartNew&CMS以及三色标记算法详解

2022-07-21 00:50:50 424

原创 JVM(9)之JVM对象创建与内存分配深度剖析

JVM对象创建与内存分配深度剖析

2022-07-20 17:31:51 475

原创 JVM(8)之从JDK源码级别剖析JVM类加载机制

从JDK源码级别剖析JVM类加载机制

2022-07-04 17:52:31 293

原创 RPC原理(2)之深入RPC原理

一、简介在上一篇博客中我们介绍到了深入RPC原理的序列化技术,接下来我们来继续介绍深入RPC原理对应的其他技术。二、深入RPC原理2.1动态代理 2.1.1内部接口如何调用实现RPC的调用对用户来讲是透明的,那内部是如何实现呢?内部核心技术采用的就是动态代理,RPC会自动给接口生成一个代理类,当我们在项目中注入接口的时候,运行过程实际绑定的是这个接口生成的代理类。在接口方法被调用的时候,它实际上是被生成代理类拦截到了,这样就可以在生成的代理类里...

2022-05-17 15:56:19 495

原创 RPC原理(1)之深入RPC原理简介

一、RPC调用原理图下面这张图是我们微服务一次Http调用请求图:首先在请求的过程中我们知道是有三次握手,四次挥手的流程,具体流程如下:1.浏览器请求服务器(订单服务),请求建立连接,首先客户端向服务器端发送一段 TCP 报文2.服务器(订单服务)相应浏览器,可以建立连接,并且询问浏览器是否马上建立连接。3.浏览器相应服务器(订单服务),可以建立连接。-----开始传输数据------------###下面要断开连接就进入四次挥手环节1.浏览器向服务器(订单服务)发起请求

2022-05-13 16:14:17 1142

原创 JVM(7)之垃圾回收算法

一、引用计数法引用计数法,在对象中添加一个引用计数器,每当有一个地方引用它的时候,计数器值就加1;当引用失效时,计数器值就减一;任何时刻计数器为0的对象就是不可能再被使用的。客观的说,虽然引用计数法虽然占用了一些额外的内存空间来进行技术,但他的原理相对简单,判定的效率也高。但是,在Java领域至少主流的Java虚拟机里面都没有选用引用计数算法来管理内存,主要的原因,这个看似简单的算法有很多例外情况要考虑,必须要配合大量额外处理才能保证正确的工作,就例如引用计数就很难解决对象质检相互循环引用的问题。

2022-03-26 12:32:27 763

原创 Spring源码解析(24)之JDK动态代理与cglib动态代理源码解析

一、前言 我们知道AOP生成代理对象底层是根据JDK动态代理或者是Cglib动态代理,如果不熟悉代理模式的可以先去看下:设计模式(20)之代理模式_技术路上的苦行僧的博客-CSDN博客,下面直接来分析对应的源码。二、JDK动态代理源码分析下面先来看下我们一般是如何使用JDK动态代理的。/** * @author maoqichuan * @date 2022年03月22日 18:42 */public class CalculatorProxy { public s...

2022-03-23 11:30:32 784

原创 Mysql(1)之深入理解Mysql索引底层数据结构与算法

一、前言在这里我们主要是介绍一下几个知识点:索引数据结构、红黑树、Hash、B+树详解; 索引是怎么支撑千万级表的快速查找; 面试常问B+树索引面试题 联合索引底层结构又是怎么样的;二、索引的本质索引是帮助Mysql高效获取数据的排序好的数据结构。这种数据结构MySQL中最常用的就是B+树(B+Tree)。就好比给你一本书和一篇文章标题,如果没有目录,让你找此标题对应的文章,可能需要从第一页翻到最后一页;如果有目录大纲,你可能只需要在目录页寻找此标题,...

2022-03-21 11:42:59 1106

原创 JVM(6)之运行时数据区域 + 内存溢出异常

一、前言首先我们来看一张JVM内存区域图:接下来我们分别来介绍一下这个几个区域的主要作用:2、程序计数器程序计数器(program Count Register)是一块较小的内存,它可以看做是当前线程所执行的字节码的行号指示器。字节码解释器工作就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,它是控制控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都是需要依赖这个计数器来完成。需要注意的是,这个程序计数器是每条线程都需要有一个独立的程序计数器,如果线程正在执行

2022-03-19 20:44:04 877

原创 JVM(5)之对象创建过程+对象头具体包括什么+对象定位

一、一线互联网面试题 首先先看下下面的面试题:二、对象的创建过程首先在创建对应的时候如果对象不存在肯定是涉及到class文件的加载,class文件的加载需要经历:加载 ->连接->初始化。class loading:加载 class linking:连接,连接又有具体的三步,分别是:验证(验证包括:calss文件格式验证、meta元数据验证等)、准备、解析:对应会给变量赋默认值。 class initializing 静态初始化的过程,这里会给变量赋值初始值; ...

2022-03-16 15:39:36 3615

原创 JVM(4)之CPU储存器+MESI+CPU伪共享+CPU乱序问题及代码论证+volatile+synchrnized

一、硬件的层次 可以看到最慢的是远程存储<本地硬盘<主存<L3高速缓存<L2高速缓存<L1高速缓存<寄存器二、缓存行由于共享变量在CPU缓存中的存储是以缓存行为基本单位,一个缓存行可以存储多个变量(存满当前缓存行的字节数);而CPU对缓存的修改又是以缓存行为最小单位的,那么就会出现伪共享问题。Cache Line可以简单的理解为CPU Cache中的最小缓存单位,今天的CPU不再是按字节访问内存,通常是以64字节为单位的块...

2022-03-15 17:20:03 573

原创 JVM(3)之双亲委派机制

一、双亲委派机制1.1概念JVM类加载器是有亲子层级结构的,如下图:这里类加载其实就有一个双亲委派机制,加载某个类时会先委托父加载器寻找目标类,找不到再委托上层父加载器加载,如果所有父加载器在自己的加载类路径下都找不到目标类,则在自己的类加载路径中查找并载入目标类。比如我们的Math类,最先会找应用程序类加载器加载,应用程序类加载器会先委托扩展类加载器加载,扩展类加载器再委托启动类加载器,顶层启动类加载器在自己的类加载路径里找了半天没找到Math类,则向下退回加载Math类的请求,扩展类

2022-03-14 11:48:57 569

原创 Spring源码解析(23)之bean创建流程之look-up标签使用

一、前言在上一篇博客中,说到一个问题,在Spring中如果我们要在一个单例bean中保存一个protype类型的bean,那该怎么操作? 我们知道bean的创建经历过几个比较重要的方法:getBean ->doGetBean ->createBean ->doCreateBean,我们先来看下look-up标签的使用。...

2022-03-09 14:39:20 298

空空如也

空空如也

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

TA关注的人

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