- 博客(64)
- 收藏
- 关注
原创 排序算法之归并排序
归并排序是一种分治思想的排序算法,它的基本思想是将待排序的数组分成若干个子序列,每个子序列都是有序的,然后再将子序列合并成一个有序的数组。
2024-06-21 16:20:02
393
原创 排序算法之选择排序
选择排序是一种简单直观的排序算法,其基本思想是:首先在未排序的数列中找到最小(大)元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
2024-06-19 14:57:51
385
原创 AQS(抽象队列同步器)
AbstractQueuedSynchronizer(AQS)字面意思是抽象队列同步器AQS定义了一套多线程访问共享资源的同步器框架,许多我们使用的同步器都是基于它来实现的,如常用的ReentrantLock、Semaphore、CountDownLatch、CyclicBarrie并发类都是通过实现AQS里面的模板方法来实现内部的组件。AQS实现原理依赖内部state(同步状态)和CHL队列。
2023-12-29 15:31:07
902
原创 分布式事务TCC
Hmily是一个高性能分布式事务TCC开源框架。基于Java语言来开发(JDK1.8),支持Dubbo,Spring Cloud等RPC框架进行分布式事务。它目前支持以下特性:(1) 支持嵌套事务 (Nested transaction support).(2) 采用 disruptor框架进行事务日志的异步读写,与RPC框架的性能毫无差别。(3) 支持 SpringBoot-starter 项目启动,使用简单。(4) RPC 框架支持 : dubbo,motan,springcloud。
2023-12-18 01:27:30
83
原创 自定义注解日志耗时统计
自定义注解自定义AOP使用@Target({/*** 切点* @annotation(com.alibaba.cloud.retail.item.normal.openapi.common.monitor.ServiceMonitor):匹配所有的方法上拥有ServiceMonitor注解的方法外部调用。
2023-06-30 15:52:46
566
原创 数据结构与算法之稀疏数组
线性结构和非线性结构。线性结构线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系。线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中存储的元素是连续的(地址)。链式存储的线性表称为链表。链表中的存储元素不一定是连续的(地址),元素节点中存放数据元素以及相邻元素的地址信息。线性结构常见的有:数组,队列,链表和栈。非线性结构非线性结构包括:二维数组,多维数组,广义表,数结构,图结构等。
2023-06-27 21:26:56
429
原创 Bean的加载
bean 的加载简介转换beanName转换 alias name转换 factoryBean nameFactoryBean 的使用简介bean加载的实现比bean的解析更要复杂,对于加载bean的功能,在Spring中的调用方式为:MyTestBean myTestBean = (MyTestBean) xmlBeanFactory.getBean("demo");我们先跟踪代码快速体验一下Spring 中代码是如何实现的。AbstractBeanFactory.javapublic O
2021-12-24 17:25:57
1155
1
原创 自定义标签的解析
自定义标签的解析简介自定义标签的使用栗子:自定义标签解析获取标签的命名空间提取自定义标签处理器标签解析简介我们知道在Spring 中存在 默认标签和自定义标签 两种类型,前面说过默认标签了,现在来分析一下Spring中自定义标签的加载过程。同样,现在回顾一下,当完成从配置文件到Document 的转换并提取对应的root后,将开始了所有元素的解析,而在这一过程中便开始了默认标签与自定义标签两种格式的区分,函数如下:DefaultBeanDefinitionDocumentReader.javapr
2021-12-07 15:52:40
801
原创 默认标签的解析
默认标签的解析简介bean 标签的解析及注册解析BeanDefinition创建用于属性承载的BeanDefinition解析各种属性解析子元素 meta解析子元素 lookup-method解析子元素 replaced-method解析子元素constructor-arg解析子元素property解析子元素 qualifierAbstractBeanDefinition 属性解析默认标签中的自定义标签元素注册解析的 BeanDefinition通过 beanName 注册 beanDefinition通过
2021-11-26 16:11:50
925
原创 Spring容器的基本实现
容器的基本实现前言容器的基本用法功能分析核心类介绍`DefaultlistableBeanFactory`XmlBeanDefinitionReader容器的基础XmlBeanFactory配置文件封装加载Bean获取XML 的验证模式DTD 与 XSD 的区别验证模式的读取获取Document解析及注册BeanDefinitionsprofile 属性的使用解析并注册BeanDefinition前言在工作中的小伙伴都知道了解源码有多重要,无论是对工作还是面试。但是学习源码是困难的,早不到头绪,不知道怎
2021-11-16 10:39:28
1146
原创 Spring 整体架构简介
Spring 整体架构简介Spring 简介Spring 的整体架构Core ContainerData Access/IntegrationWebAOPTestSpring 简介Spring 是于 2003 年兴起的 个轻量级 Java 开源框架 Rod Johnson 在其著作 Exper One-On-One J2EE Design and lopment 中阐述的部分理念和原型衍生而来 Spring 是为了解决企业应用开发 复杂性而创建的 ,它使用基本的 JavaBean 来完成以前只可能由 E
2021-11-10 10:17:22
1537
原创 Seata1.3.0集成Nacos
Seata1.3.0Seata1.3.0下载地址自从seata1.0版本以后,不在提供sql脚本,需要从1.0版本以前复制
2021-09-22 10:40:05
831
原创 内存结构与内存模型
内存结构与内存模型内存结构简介作用内存模型CPU 和计算机内存的交互内存模型内存屏障(Memory Barrier)声明:以下内容部分来自别的博客和自己原创参考博客内存结构简介根据JVM规范,JVM 内存共分为虚拟机栈,堆,方法区,程序计数器,本地方法栈五个部分方法区和堆是线程共享的数据区,虚拟机栈和本地方法栈以及程序计数器为线程私有。作用程序计数器:程序计数器是很少的一部分内存空间,它保存的是程序当前执行的指令的地址,当CPU需要执行指令时,需要从程序计数器中得到当前需要执行的指令所在
2021-09-15 15:08:33
1004
2
原创 SpringBoot集成SocketIO
SpringBoot集成SocketIO简介集成SpringBoot添加SocketIO依赖修改配置文件新建SocketIO的配置文件新建SocketIoHandler处理器新建处理消息的逻辑客户端代码简介Socket.IO是一个完全由JavaScript实现、基于Node.js、支持WebSocket的协议用于实时通信、跨平台的开源框架,它包括了客户端的JavaScript和服务器端的Node.js。Socket.IO除了支持WebSocket通讯协议外,还支持许多种轮询(Polling)机制以及其它
2021-09-09 17:15:19
4857
4
转载 UML类图简介
UML类图以及类图关系简介类的UML图示类与类之间的关系泛化(Generalization)实现(Realization)关联(Association)聚合(Aggregation)组合(Composition)依赖(Dependency)声明本文转载原文链接:简介类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。类的UML图示对应的Java 代码是public class Employee {
2021-09-09 16:16:16
803
原创 RabbitMQ延时队列
RabbitMQ延时队列一:TTL(消息过期) + 死信队列TTL 过期时间有两种设置方式:单独指定消息的过期时间给队列设置消息过期时间,队列中的所有消息都有同样的过期时间。二:RabbitMQ插件使用Docker 安装RabbitMQ的延时插件下载插件安装使用想要实现RabbitMQ延时队列有两种方式一:TTL(消息过期) + 死信队列TTL + 死信队列的实现方式主要是,TTL 来控制延时时间,等到延时时间过期,消息就会被扔到死信队列来处理,从而达到延时队列的效果。TTL 过期时间有两种设置方
2021-08-23 17:11:04
390
原创 RabbitMQ消息确认以及死信队列
RabbitMQ消息确认以及死信队列回调函数消息确认机制死信队列什么是死信队列定义队列回调函数回调函数是指当消息发送到交换机或队列是的回调通知。修改yml配置文件spring: profiles: active: dev # rabbitmq 配置 rabbitmq: host: 10.10.11.21 port: 5672 username: guest password: guest virtual-host: / # 设置虚拟主机
2021-08-23 11:30:54
715
原创 RabbitMQ集成SpringBoot
RabbitMQ基本使用基本概念集成SpringBootDirect 直流交换机Fanout: 扇形交换机Topic: 主题交换机发送消息convertSendAndReceive方法与convertAndSend方法的区别基本概念了解rabbitmq之前先要了解3个基本概念:生产者、消费者、代理(队列)。 rabbitmq在生产者和代理中间做了一层抽象。这样消息生产者和队列就没有直接联系,在中间加入了一层交换器(Exchange)。这样消息生产者把消息交给交换器,交换器根据路由策略再把消息转发给对应队
2021-08-21 10:03:13
352
原创 Docker安装部署RabbitMQ
docker安装RabbitMQ搜索镜像拉取镜像查看镜像启动镜像访问管理页面可以根据自己的需求创建用户根据自己的需求创建主机集群部署第一种:普通集群模式一,拉去Rabbitmq镜像二,创建映射数据卷目录,启动rabbitmq容器容器节点加入集群负载均衡设置官方网站首先保证你的虚拟机上已经安装过docker了搜索镜像docker search rabbit:management拉取镜像docker pull rabbitmq:management注意:如果docker pull rabbi
2021-08-20 17:51:51
1225
原创 SpringCloud之Seata(分布式事务)
Seate 分布式事务简介Seate术语处理过程下载安装seata-server0.9.0版本安装测试分布式事务测试业务说明新建seata-order-service2001简介Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。Seate术语Transaction ID XID: 全局唯一事务IDTC (Transaction Coordinator) - 事务协调者维护全局和分支事务的状态,驱动全局事务提交或回滚。TM (Tr
2021-08-19 17:12:41
1396
原创 SpringCloud之Sentinel-熔断和限流
Sentinel -熔断和限流简介Sentinel 的主要特性下载`Sentinel-dashboard`简介随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Sentinel 具有以下特征:丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。完备的实时监
2021-08-04 16:13:06
584
原创 SpringCloud之AlibabaNacos
SpringCloud Alibaba作用Nacos简介下载新建项目cloudalibaba-provider-payment9001Nacos 和CAPNacos 支持 AP 和CP 模式的切换Nacos 作为配置中心基础配置新建项目cloudalibaba-config-nacos-client3377Nacos中的匹配规则nacos作为配置中心的分类配置Nacos 集群和持久化配置Nacos支持三种部署模式Nacos持久化配置解释derby 切换到MySQL 配置步骤Docker 部署 NacosDo
2021-08-03 16:42:56
394
原创 SpringCloud之Sleuth (分布式请求链路跟踪)
简介Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案,在分布式系统中提供追踪解决方案并且兼容支持zipkin.下载zipkin我这里使用的是docker 安装,docker run -d -p 9411:9411 openzipkin/zipkin启动起来之后访问 http://localhost:9411/zipkin请求链路一个链路通过Trace Id唯一标识,Span标识发起的请求信息,各个span 通过parent id 关联起来。将微服务集成zipkin
2021-07-15 09:34:37
198
原创 SpringCloud之Bus(消息总线)
简介Spring Cloud Bus 配置 Spring Cloud Config 使用可以实现配置的动态刷新。Spring Cloud Bus 是用来将分布式系统的节点与轻量级消息系统链接起来的框架,他整合了Java的事件处理机制和消息中间件的功能。Bus 支持两种消息代理:RabbitMQ 和 Kafka作用Spring Cloud Bus 能管理和传播分布式系统间的消息,就像一个分布式执行器,可用于广播状态更改,事件推送等,也可以当做微服务间的通信通道。为什么被称之为总线?什么
2021-07-15 09:26:48
440
原创 SpringCloud之Config(配置中心)
Config微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的,动态的配置管理设施是必不可少的。Spring Cloud 提供了 ConfigServer来解决这个问题.简介Spring Cloud Config 为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。SpringCloud Config 分为服务端和客户端两
2021-07-13 14:30:20
5949
3
原创 SpringCloud之Gateway(服务网关)
GatewayGateway 是Spring 生态系统之上构建的API网关服务,基于Spring 5,Spring Boot 2 和 Project Reactor等技术。Gateway 在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能,例如:熔断,限流,重试等。SpringCloud Gateway 作为Spring Cloud 生态系统中的网关,目标是代替Zuul,在Spriing Cloud 2.0以上版本,没有对新版本的Zuul 2.0 以上最新高性能版本进行集成,仍然
2021-07-13 10:25:51
3929
原创 SpringCloud之Hystrix(断路器)
分布式系统面临的问题复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免的失败。Hystrix的作用Hystrix是一个用于分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时,异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。“断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的,可处理的备选响应(F
2021-07-07 15:18:23
209
原创 SpringCloud之OpenFeign
简介Feign 是一个声明式WebService客户端。使用Feign能让编写Wen Service客户端更加简单。他的使用方法是定义一个服务接口然后在上面添加注解。Feign 也支持可拔插式的编码器和解码器。Spring Cloud 对Feign 进行了封装,使其支持了Spring MVC标准和HttpMessageConverters.Feign可以与Eureka和Ribbon组合使用以支持负载均衡使用feign的使用都是在消费方引入Open Feign依赖<!--open fei
2021-06-18 17:23:37
194
原创 SpringCloud之Ribbon
简介Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端 负载均衡的工具。简单的说,Ribbon是Netflix 发布的开源项目,主要功能是提供 客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB) 后面所有的机器,Ribbon会自动的帮助你基于某种规则(如 简单轮询,随机连接等)去连接这些机器。我们很容易使用Ribbon实现自定义的负载均衡算法。
2021-06-18 09:37:16
105
原创 SpringCloud之Consul
简介:Consul 是一套开源的分布式服务发现和配置管理系统,由HashiCorp 公司用Go语言开发。提供了微服务系统中的服务治理,配置中心,控制总线等功能。这些功能中的每一个都可以根据需求单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网格解决方案。它具有很多优点。包括“居于raft协议,比较简洁;支持健康检查,同时支持HTTP和DNS协议 支持跨数据中心的WAN集群,提供图形化界面,跨平台,支持Linux,Mac,Windows.下载地址百度网盘分享地址:
2021-06-16 18:01:16
176
原创 SpringCloud之Zookeeper
简介ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等Docker安装zookeeper下载zookeeper 3.4.9 版本docker pull zookeeper:3.4.9启动zookeeperdocker run -d -p 2181:2181 --name zookeeper
2021-06-15 15:56:40
172
空空如也
MacOS 使用虚拟机安装k8s
2024-07-22
mac ARM 系统架构安装k8s报错
2024-07-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人