自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 年会抽奖测试报告

简单介绍了项目背景和项目的简单功能,自动化测试使用的是Selenium进行的,调用其大量API进行了对项目的注册和管理员登录进行了大量的自动化测试,也对其他功能进行了部分的自动化测试,过程中加了一些强制等待是为了让自动化测试的过程更明显。代码链接。

2026-02-20 17:07:59 639

原创 简单Docker卷和网络原理

Docker Bridge 网络采用内置的 bridge 驱动, bridge 驱动底层采用的是 Linux 内核中Linux bridge 技术。就网络而言, bridge 网络是在网络段之间转发流量的链路层设备,而网桥可以是在主机内核中运行的硬件设备或软件设备;就 Docker 而言,桥接网络使用软件网桥 docker0,它允许连接到同一网桥网络的容器进行通信,同时提供与未连接到该网桥网络容器的隔离。创建步骤。

2026-01-17 11:21:07 623

原创 Docker镜像原理

下面的这张图片非常好的展示了组装的过程,每一个镜像层都是建立在另一个镜像层之上的,同时所有的镜像层都是只读的,只有每个容器最顶层的容器层才可以被用户直接读写,所有的容器都建立在一些底层服务(Kernel)上,包括命名空间、控制组、rootfs 等等,这种容器的组装方式提供了非常大的灵活性,只读的镜像层通过共享也能够减少磁盘的占用。这些 branches 或者是read-only 或者是 read-write 的,所以当对这个虚拟后的联合文件系统进行写操作的时候,系统是真正写到了一个新的文件中。

2026-01-16 18:42:33 607

原创 Docker File部分镜像制作实操

ENTRYPOINT 和 CMD 都是在 docker image 里执行一条命令, 但是他们有一些微妙的区别.一般来说两个大部分功能是相似的都能满足。比如执行运行一个没有调用 ENTRYPOINT 或者 CMD 的 docker 镜像, 返回错误,一般的镜像最后都提供了 CMD 或者 EntryPoint 作为入口。覆盖在写 Dockerfile 时, ENTRYPOINT 或者 CMD 命令会自动覆盖之前的 ENTRYPOINT或者 CMD 命令.

2026-01-16 16:21:16 668 1

原创 Docker 镜像制作

Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction), 每一条指令。Docker 将以开头的行视为#注释,行中其他任何地方的标记#都被视为参数。修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,这个。镜像制作是因为某种需求,官方的镜像无法满足需求,需要我们通过一定手段来自定。然而,约定是它们是大写的,以便更容易地将它们与参数区分。镜像的定制实际上就是定制每一层所添加的配置、文件。构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

2026-01-15 16:02:38 627

原创 Docker Compose容器编排

docker-compose 是 Docker 官方的开源项目,使用 python 编写,实现上调用了Docker 服务的 API 进行容器管理及编排,其官方定义为定义和运行多个 Docker 容器的应用。服务 ( service ):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。项目( project ):由一组关联的应用容器组成的一个完整业务单元,在 dockercompose.yml 文件中定义, 整个 docker-compose.yml 定义一个项目。

2026-01-13 15:31:36 842

原创 Docker网络

Docker Bridge 网络采用内置的 bridge 驱动, bridge 驱动底层采用的是 Linux 内核中Linux bridge 技术。就网络而言, bridge 网络是在网络段之间转发流量的链路层设备,而网桥可以是在主机内核中运行的硬件设备或软件设备;就 Docker 而言,桥接网络使用软件网桥 docker0,它允许连接到同一网桥网络的容器进行通信,同时提供与未连接到该网桥网络容器的隔离。Docker Container 的 bridge 桥接模式可以参考下图:

2026-01-12 11:07:05 850

原创 Docker Volume存储卷

宿主机的/data/web 目录与容器中的/container/data/web 目录绑定关系,然后容器中的。直接访问宿主机中的内容,也可以宿主机向容器写入内容, 容器和宿主机的数据读写。任何文件的修改都存在于该读写层,当容器被删除时,容器中的读写层也会随之消失。存储卷就是将宿主机的本地文件系统中存在的某个目录直接与容器内部的文件系统上。进程向这个目录中写数据时,是直接写在宿主机的目录上的,绕过容器文件系统与宿。生命周期一样,容器文件系统的本质是在镜像层上面创建的读写层,运行中的容器对。

2026-01-11 19:18:04 960

原创 算法擂台项目展示

管理员账号是事先在数据库中创建好的,不再继续注册等操作,并且管理员登录后会生成Token(此处使用的JWT)用户登录和管理员登录不同的一点是登录注册一体了,并且用户登录使用的是邮箱登录/注册。可以对用户进行拉黑操作,这样用户就无法参加发布的竞赛了。竞赛在进行新增时需要先保存竞赛信息才能添加题目到竞赛中。对题目进行对应的CRUD。

2025-10-14 14:33:21 280

原创 分布式链路追踪-SkyWalking

在分布式系统中,⼀次请求往往会经过多个服务节点。⽐如⼀次简单的用户下单请求,可能涉及⽹关,商品服务,库存服务,⽀付服务、消息队列等多个环节。这些服务节点可能是不同团队开发,部署在不同的服务器上,甚⾄可能使⽤不同的编程语⾔编写。在这⼀系列的调⽤中,可能有串⾏的,也有并⾏的。这个请求经过了哪些服务节点这些服务节点有什么样的依赖关系各个服务接⼝的性能是如何的如何快速的串联整个链路,并定位问题。

2025-09-20 00:00:00 1370

原创 Alibaba Seata

Seata 是⼀款开源的分布式事务解决⽅案,致⼒于提供⾼性能和简单易⽤的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造⼀站式的分布式解决⽅案来源:Seata 是什么?在微服务架构下,随着业务服务的拆分及数据库的拆分会存在如下图所示的场景,订单和库存分别拆分成了两个独⽴的数据库,当客户端发起⼀个下单操作时,需要在订单服务对应的数据库中创建订单,同时需要调⽤库存服务完成商品库存的扣减。

2025-09-19 00:00:00 644

原创 Alibaba Sentinel

Sentinel是由阿⾥巴巴开源的⼀个⾯向分布式、多语⾔异构化服务架构的流量治理组件。主要以流量为切⼊点,从流量路由、流量控制、流量整形、熔断降级、系统⾃适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。在order-service中定义资源,方便做熔断处理我们发现,上⾯授权未通过时,和限流返回的结果是⼀样的这个返回结果不是很友好,⽽且调⽤⽅分辨不出来异常原因。

2025-09-17 00:00:00 716

原创 Spring Cloud Consul

服务注册/服务发现,除了前⾯讲述的Eureka和Nacos,还有⼀个比较流行的组件,叫Consul。Consul 是HashiCorp开发的⼀款开源的组件,主要⽤于服务发现、配置管理和分布式系统的健康检查。服务注册/发现:服务在启动时向Consul注册,并在需要时,向Consul查询其他服务的地址和状态健康检查:Consul提供了健康检查机制,确保只有健康的服务实例对外提供服务,防⽌服务转发到故障的服务。

2025-09-12 00:00:00 1038

原创 Spring Cloud 配置中心

在微服务架构中,每个微服务⼀般都有⾃⼰的配置⽂件,⽐如数据库连接,Redis,MQ等相关配置.在不同的环境下,这些配置都会不同。维护成本⾼:每次配置修改,都需要重新部署服务.版本问题:同⼀个应⽤的不同实例,需要使⽤同⼀个版本,逐⼀部署,可能会导致版本不⼀致的问题.安全问题:⼀些敏感配置(如数据库密码) 可能会泄露,缺乏安全的管理⼿段。所以,就有了配置中⼼。可以让我们对项⽬的配置进⾏集中管理。

2025-09-10 00:00:00 1132

原创 事务和锁(进阶)

本文回顾了事务的基本概念和特性,重点介绍了事务的ACID原则(原子性、一致性、隔离性、持久性)及其在数据库操作中的重要性。通过银行转账案例说明了事务如何确保操作要么全部成功要么全部失败。文章详细讲解了MySQL中事务的使用方法,包括事务的开启(START TRANSACTION/BEGIN)、提交(COMMIT)、回滚(ROLLBACK)操作,以及如何设置自动提交(autocommit)模式。通过具体SQL示例演示了事务执行和回滚的过程,展示了事务对数据修改的临时性和持久性控制。最后介绍了查看和修改auto

2025-08-30 00:00:00 877

原创 InnoDB详解2

关于索引在数据库初阶已经做了介绍,我们知道索引分为聚集索引(主键)和⼆级索引(自定义)由于聚集索引具有唯⼀性,我们分析⼀下聚集索引为什么不能被放⼊变更缓存,假设表中有⼀个主键( ID ),现在有两条 INSER 语句,都在插⼊数据时ID的值相同 (id=1) ,那么在变更缓冲区中就存在两个修改操作,如果以后要合并到缓冲池中,这时就会出现重复的主键值,所以聚集索引的修改不能被加⼊到变更缓冲区;

2025-08-27 00:00:00 730

原创 MySQL架构

语法分析器的主要作用是将客户端发来的SQL语句中的关键字和自定义字段进行提取、解析,最终将 SQL 语句转换为⼀棵解析树,分析的过程中包含词法分析和语法分析;MySQL的缓存主要的作用是为了提升查询的效率,当服务器接收到⼀个 select 查询语句时,会先进⼊缓存查询当前SQL语句在缓存中是否存在,缓存以 key 和 value 的形式存储,key是具体的SQL语句,value是结果的集合,如果命中缓存,直接返回结果,⽆法命中缓存,则进⼊分析器进⾏正常查询流程。器、缓存、存储引擎、文件系统组成。

2025-08-20 00:00:00 2064

原创 MySQL程序

介绍 MySQL 命令行程序以及在运行这些程序时指定选项的一般语法,对常用程序进行详细的讲解,包括它们的选项。在平时使用MySQL数据库时,经常进行查询操作,有些查询语句执行的时间非常长,当执行时间超过设定的阈值时,我们称这个查询为慢查询,慢查询的相关信息通常需要用日志记录下来称为慢查询日志,mysqldumpslow可以解析慢查询日志文件并汇总其内容。

2025-08-19 00:00:00 841

原创 MySQL服务器配置与管理

MySQL服务器配置与管理要点摘要: 服务器配置:通过mysqld程序启动服务,支持命令行/选项文件配置。查看默认配置使用mysqld --verbose --help,运行时变量通过SHOW VARIABLES或mysqladmin命令获取。 系统变量:分为全局(Global)和会话(Session)作用域,支持动态修改(SET语句)。变量名中破折号与下划线等效,数值可带单位(如K/M/G)。 持久化配置:使用SET PERSIST将变量保存到mysqld-auto.cnf,重启后生效;RESET PER

2025-08-14 15:41:20 226

原创 InnoDB详解1

InnoDB在设计时考虑到了处理巨大数据量时的性能,InnoDB支持事务(transaction)、回滚(rollback)并且具有崩溃修复的能力(crash recovery capabilities)。通过多版本并发控制(multiversioned concurrency control)减少锁定,同时还支持外键约束(FOREIGN KEY constraints),通过缓冲池在主内存中缓存数据从而提高查询性能,也可以每个表使用各自的独立表空间存储数据并且文件大小只受限于操作系统。

2025-08-11 09:48:09 777

原创 docker基础前置

实际的服务器或者计算机。相对于虚拟机而言的对实体计算机的称呼。物理机提供给虚拟机以硬件环境,有时也称为“寄主”或“宿主”。**虚拟化:**是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。**容器化:**容器化是一种虚拟化技术,又称操作系统层虚拟化(Operating system level。

2025-08-09 20:54:26 894 1

原创 八大架构简介

简单的说就是应用服务和数据库服务共用一台服务器应用服务和数据库服务使用不用的服务器引入了负载均衡,应用以集群的方式运作将数据库读写操作分散到不同的节点上,数据库服务器搭建主从集群,一主一从或一主多从都可以,数据库主机负责写操作,从机器只负责读操作。引入缓存,实行冷热分离,将热点数据放到缓存中快速响应。数据库的数据被拆分,数据库数据分布式存储,分布式处理,分布式查询,也可以理解为分布式数据库架构。微服务是一种架构风格,按照业务模块来划分应用代码,使单个应用的职责更清晰,相互之间可以做到独立升级迭代。

2025-08-08 17:13:37 760

原创 MySQL存储索引简单介绍

MySQL存储索引简单介绍

2025-04-29 13:04:45 980

原创 OpenFeign和Gateway

OpenFeign和Gateway

2025-04-24 16:20:37 1037

原创 Eureka、LoadBalance和Nacos

Eureka、LoadBalance和Nacos

2025-04-22 22:24:39 1668

原创 SpringCloud概述和环境搭建

SpringCloud概述和环境搭建

2025-04-20 23:03:37 995 1

原创 Redis的分布式锁

分布式锁简单介绍一下

2025-04-12 16:50:38 947

原创 redis的缓存

简单的讲一下缓存

2025-04-12 14:38:19 2072

原创 Redis的集群

广义的集群指的是,只要你是多个机器,构成了分布式系统,都可以称为是一个集群,比如果前面的主从结构,哨兵模式,都可以称为广义的集群。狭义的集群指的是redis提供的一种集群的工作模式,在这种集群模式下,主要是为了解决存储空间不足的问题(拓展存储空间)节点之间通过心跳包通信,心跳包中包含了该节点持有哪些slots。这个是使用位图这样的数据结构表示的表示16384(16k)个slots,需要的位图大小是2KB。如果给定的slots数更多了,比如65536个了,此时就需要消耗更多的空间,8KB位图表示了。

2025-04-12 11:34:36 1081

原创 Redis的哨兵

通过自动化的方式来解决主节点挂了的问题,哨兵机制是通过独立的进程来体现的,与redis-server是不同的进程,redis-sentinel不负责存储数据,只是对其他的redis-server进程起到监控的效果。挑选出新的主节点之后,哨兵节点就会自动控制该被选中的节点,执行slaveof no one,并且控制其他从节点,修他们的主节点对象,通过slaveof改到新的主节点上。主节点真的挂了之后,这些哨兵节点中就会推举出一个leader,由这个leader负责从现有的从节点中,挑选一个座位新的主节点。

2025-04-10 19:11:56 1175

原创 Redis的主从复制

建议先看第六,防止redis的主节点服务器启动不起来

2025-04-09 19:56:49 1016

原创 Redis的事务

redis是否存在原子性这个仁者见仁智者见智,此处只是对其做一个简单的分析,redis的原子性和MySQL的原子性是不同的。MySQL的原子性是把多个操作打包到一起,要么这些操作都执行成功,要么这些操作都不执行,如果执行过程中有事务操作执行失败了,事务就会进行回滚。Redis的原子性只是将多个操作打包到一起,要么都一起执行,要么都不执行,不会管执行过程中是否成功。

2025-04-08 16:47:01 1295

原创 Redis持久化

持久化简单的理解就是把数据存在硬盘上,这样数据就不会丢失了,但是redis是将数据存储到内存上的,怎么就能够持久化数据呢?这是因为redis在硬盘中也是存储了数据的。为了保证查询的速度够快,数据肯定是得在内存中的,但是为了持久,就必须存储在硬盘上,此时这两份数据理论上是完全相同的,实际上可能会存在一点差异,差异主要取决于用户如何进行数据的持久化操作的。当查询某个数据的时候,在redis中还是直接从内存中读取数据,硬盘的数据只不过是在redis重启的时候,用来恢复内存中的数据。

2025-04-07 23:40:11 745

原创 RabbitMQ运维

RabbitMQ 集群是 RabbitMQ 实现高可用性(HA)、负载均衡和横向扩展的核心机制。RabbitMQ 的仲裁队列是⼀种基于 Raft ⼀致性算法实现的持久化、复制的FIFO队列。仲裁队列提供队列复制的能力,保障数据的高可用和安全性。使用仲裁队列可以在RabbitMQ节点间进行队列数据的复制,从而达到在⼀个节点宕机时,队列仍然可以提供服务的效果。

2025-04-06 11:07:15 1285

原创 RabbitMQ应用问题

对于MQ而言,幂等性是指同⼀条消息,多次消费,对系统的影响是相同的。At most once:最多⼀次。消息可能会丢失,但绝不会重复传输。At least once:最少⼀次。消息绝不会丢失,但可能会重复传输。Exactly once:恰好⼀次。每条消息肯定会被传输⼀次且仅传输⼀次。RabbitMQ支持"最多⼀次"和"最少⼀次"。在业务使用中,对于可靠性要求比较高的场景,建议使用"最少⼀次",以防止消息丢失。"最多⼀次"会因为消息发送过程中,网络问题,消费出现异常等种种原因,导致消息丢失。

2025-04-05 15:23:49 1197

原创 RabbitMQ高级特性2

TTL+死信队列组合的方式使用官方提供的延迟插件实现延迟功能基于死信实现的延迟队列1)灵活不需要额外的插件支持1)存在消息顺序问题2)需要额外的逻辑来处理死信队列的消息,增加了系统的复杂性基于插件实现的延迟队列1)通过插件可以直接创建延迟队列,简化延迟消息的实现.2)避免了DLX的时序问题1)需要依赖特定的插件,有运维⼯作2)只适用特定版本。

2025-04-04 22:15:58 1508 1

原创 RabbitMQ高级特性1

Producer -> Broker:发送方确认Producer -> Exchange :Confirm模式(网络问题)Exchange -> Queue : return模式(代码或者配置层错误,导致消息路由失败)队列移除:死信等Broker:持久化(RabbitMQ服务器宕机导致消息丢失)交换机持久化队列持久化消息持久化Broker -> Consumer 消息确认方式(消费者未来得及消费信息,就宕机了)自动确认手动确认。

2025-04-03 21:04:38 1320

原创 RabbitMQ应用2

【代码】RabbitMQ应用2。

2025-04-02 21:44:12 640

原创 RabbitMQ应用1

路由模式的升级版,在RoutingKey的基础上,增加了通配符的功能,使之更加灵活,Topics和Routing的基本原理相同,即生产者将消息发给交换机,交换机根据RoutingKey将消息转发给与RoutingKey匹配的队列,类似于正则表达式的方式来定义RoutingKey的模式。路由模式是发布订阅模式的变种,在发布订阅的基础上,增加路由key,发布订阅模式是无条件的将所有消息分发给所有消费者,路由模式是Exchange根据RoutingKey的规则,将数据筛选后发给对应的消息队列。

2025-04-02 13:04:32 1098

原创 RabbitMQ快速上手

全称:Advanced Message Queuing Protocol(高级消息队列协议)定位:开放标准的应用层协议,专为可靠、异步、跨平台的消息通信设计,支持企业级消息中间件功能。起源:2003年由金融行业(JPMorgan Chase等)发起,旨在解决异构系统间消息传递的兼容性问题。后由OASIS组织标准化,最新版本为AMQP 1.0(ISO/IEC 19464)。

2025-03-31 22:32:28 950

空空如也

空空如也

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

TA关注的人

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