自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 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 644

原创 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 59276 5

原创 互联网全景消息(5)之RocketMq快速入门(下)

零拷贝(英语: Zero-copy) 技术是指计算机执行操作时,CPU不需要先将数据从某处内存复制到另一个特定区域。这种技术通常用于通过网络传输文件时节省CPU周期和内存带宽。➢零拷贝技术可以减少数据拷贝和共享总线操作的次数,消除传输数据在存储器之间不必要的中间拷贝次数,从而有效地提高数据传输效率➢零拷贝技术减少了用户进程地址空间和内核地址空间之间因为上:下文切换而带来的开销可以看出没有说不需要拷贝,只是说减少冗余[不必要]的拷贝。

2024-09-21 13:27:32 545

原创 互联网全景消息(4)之RocketMq快速入门(中)

Producer将消息发送到消息队列RockerMQ服务端,但并不期望这条消息立马投递(被消费者消费),,而是延迟一定时间后才投递到 Consumer 进行消费,该消息即延时消息。:消息生产和消费有时间窗口要求:比如在电商交易中超时未支付关闭订单的场景,在订单创建时向RocketMQ发送一条延时消息。这条消息将会在 30 分钟以后投递给消费者,消费者收到此消息后需要判断对应的订单是否已完成支付。如支付未完成,则关闭订单。如已完成支付则忽略。

2024-09-18 22:36:48 672

原创 互联网全景消息(3)之RocketMq快速入门(上)

NameServer。

2024-09-12 22:30:51 890

原创 互联网全景消息(2)之RabbitMq高阶使用

生产者以及Broker要保障消息传递的可靠性如果结合失败通知以及发送方确认和持久化消息来实现。1.发送方确认:保障消息能够到达broker;2.失败通知:保障的是消息能够成功路由到队列;3.持久化队列:保障消息的持久化;

2024-08-30 16:49:57 1195

原创 互联网全景消息(1)之RabbitMq基础入门

类型名称路由规则Default自动命名的直交换机Direct把消息路由到BindingKey和RoutingKey完全匹配的队列中,RoutingKey==,严格匹配Fanout发送到该交换机的消息都会路由到与该交换机绑定的所有队列上,可以用来做广播Topictopic和direct类似,也是将消息发送到RoutingKey和BindingKey相匹配的队列中,只不过可以模糊匹配Headers根据发送的消息内容中的headers。

2024-08-28 15:42:43 1053

原创 云原生应用(8)之容器服务编排利器 Docker Compose应用实战

用容器运行一个服务,需要使用docker run命令。但如果我要运行多个服务呢?假设我要运行一个web服务,还要运行一个db服务,那么是用一个容器运行,还是用多个容器运行呢?一个容器运行多个服务会造成镜像的复杂度提高,。那么复杂的架构就会需要很多的容器,并且需要它们之间有关联(容器之间的依赖和连接)就更复杂了。这个复杂的问题需要解决,这就涉及到了的问题了。Compose编排是对多个容器进行启动和管理的方法例如:LNMT,先启动MySQL,再启动Tomcat,最后启动Nginx服务架构的演进。

2024-08-22 10:27:20 1044

原创 云原生应用(7)之Docker容器数据持久化存储机制

物理机或虚拟机数据持久化存储由于物理机或虚拟机本身就拥有大容量的磁盘,所以可以直接把数据存储在物理机或虚拟机本地文件系统中,亦或者也可以通过使用额外的存储系统(NFS、GlusterFS、Ceph等)来完成数据持久化存储。Docker容器数据持久化存储由于Docker容器是由容器镜像生成的,所以一般容器镜像中包含什么文件或目录,在容器启动后,我们依旧可以看到相同的文件或目录。由于Docker容器属于“用后即焚”型计算资源,因此Docker容器不适合做数据持久化存储。

2024-08-22 10:16:19 997

原创 Spring源码解析(34)之Spring事务回滚流程

在上一个篇章我们主要介绍了Spring事务的运行流程,也带着一步步debug看了整个事务的运行流程,但是还是欠缺了Spring事务的回滚的流程。在上篇也主要介绍了Spring事务的传播特性,这里还是要看一下Spring事务的传播特性,因为不同的事务传播特性在回滚时会用不同的操作。接下来将看下在不同的事务传播特性下,Spring事务回滚是如何去操作的,下面调试代码。我们外层事务跟内层事务的隔离级别都是required,然后在内层事务中制造出来一个异常,看下Spring事务是如何处理的。

2024-08-19 14:19:15 737

原创 Spring源码解析(33)之声明式事务的运行流程

在上一节中我们主要介绍了Spring声明式事务主要是准备了哪些对象,以下是XML配置以及注解配置各自引入的对象。接一下我们就开始通过debug来一步步跟踪spring事务的运行流程是怎么做。在做这件事提前,我们需要提前了解一下Spring的传播特性。

2024-08-16 14:41:45 1071

原创 Spring源码解析(32)之注解配置的声明式事务处理

在上一节中我们主要是介绍了事务配置文件的解析,我们知道他往容器中主要是注入了一下类。这里我们主要介绍如果是注解的声明式事务Spring是如何去进行解析的。以下是实例代码。

2024-08-14 13:54:57 837

原创 Spring源码解析(31)之事务配置文件解析以及核心对象创建过程

而我们知道AOP是基于IOC的一个拓展,而事务又是基于AOP的一个拓展,所以这个TransactionInterceptor他直接实现了对应的MethodIntercetor接口,他就能够实现拦截器功能,然后在对应的invoke方法实现对应的控制事务的方法,这个后续会看到,我们先继续往下看他对应的核心对象生成。此时我们去看一下一级缓存里面已经创建好的对象有哪些。在创建这个advisor的时候,就会属性注入的时候就创建他对应的需要的两个属性,一个是pointcut对象一个是advice对象。

2024-08-12 11:06:46 345

原创 Spring源码解析(30)之AOP拦截链执行过程

在上一节中我们介绍了AOP动态代理对象的创建过程,并且看到了Spring AOP在生成calllBacks的时候第一个拦截器就是:DynamicAdvisorInterceptor,所以我们通过代理对象执行对应的方法的时候就如跳入到这个拦截器中,接下来我们继续跟着这个拦截器源码往下执行。

2024-08-07 18:52:46 633

原创 Spring源码解析(29)之AOP动态代理对象创建过程分析

在上一节中我们已经介绍了在createBean过程中去执行AspectJAutoProxyCreator的after方法,然后去获取当前bean适配的advisor,如果还不熟悉的可以去看下之前的博客,接下来我们分析Spring AOP是如何创建代理对象的,在此之前如果对于JDK动态代理以及cglib源码不熟悉的也先去看一下之前对于这两个代理的源码分析博客。

2024-08-06 16:43:22 610

原创 Spring源码解析(28)之AOP的核心对象创建过程总结

以上是对AOP核心对象创建的一个总结,接下来我们分点介绍我们自从定义了aop.xml之后,spring在启动的时候是怎么创建了这些核心对象的。getAdvicesAndAdvisorsForBean在这个方法中首先会去获取容器中所有的advisor对象。

2024-08-02 13:48:08 645

原创 Spring源码解析(27)之AOP的核心对象创建过程2

我们在上一节中已经介绍了Advisor的创建过程,当时我们创建的logUtil这bean,他在resolveBeforeInstantiation返回的是null,那么就会继续往下执行doCreateBean方法。

2024-08-01 18:18:02 798

原创 Spring源码解析(26)之AOP的核心对象创建过程

很明显logUtil就需要跳过并且返回null,所以在 resolveBeforeInstantiation方法中,如果是第一次调用那么他就会去寻找所有的Advisor对象,如果这些Advisor对象没有创建,那么就会创建他们,如果创建了那么就直接从容器中获取,如果获取得到了advisor对象,那么就会判断当前的对象是否是切面对象,如果是切面对象,那么就会跳过不创建代理对象。这里就提前把Advisor对象给提前创建好了,然后就会判断当前类是否是切面对象,如果是切面对象,那就是应该跳过不创建代理对象。

2024-08-01 10:57:37 797

原创 Spring源码解析(25)之AOP的BeanDefinitiion准备

以上是常规xml配置aop文件准备,下面是具体的切面java类准备。以上的例子就比较简单,就是在xml里面配置对应的aop切点、切面,接下来我们看下在spring AOP源码中是如何运行的。

2024-07-30 18:10:51 911

原创 多线程编程(13)之ConcurrentHashMap深度源码分析

学习ConcurrentHashMap基本概念以及它底层的数据结构。数据结构如下:数组+链表+红黑树+锁(synchronized+cas)。

2024-05-30 16:43:15 873

原创 多线程编程(12)之HashMap1.8源码分析

之前已经分析过了一版1.7版本的HashMap,这里主要是来分析一下1.8HashMap源码。

2024-05-27 15:26:09 698

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

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

2024-03-28 11:02:08 664

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

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

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

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

登录阿里云。

2024-03-15 13:52:26 2712

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

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

2024-03-14 15:35:04 1146

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

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

2024-03-13 10:19:27 821

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

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

2024-03-12 21:41:51 1090

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

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

2024-03-12 13:59:29 1013

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

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

2024-03-11 20:44:33 1310 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 1290

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

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

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

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

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

2024-03-01 11:15:42 1052

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

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

2024-02-27 15:36:53 316

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

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

2024-02-27 15:22:18 916

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

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

2024-02-27 15:05:01 892

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

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

2024-02-27 14:51:08 1006

原创 SpringCloud(17)之SpringCloud Stream

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

2024-02-26 00:27:33 1828

原创 SpringCloud(16)之SpringCloud OpenFeign和Ribbon

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

2024-02-23 17:05:20 1189

原创 SpringCloud(15)之SpringCloud Gateway

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

2024-02-22 21:21:21 1426 1

原创 SpringCloud(14)之SpringCloud Consul

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

2024-02-22 13:48:27 769

空空如也

空空如也

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

TA关注的人

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