自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring Cloud Config

在微服务开发中,配置文件可能包含一些敏感信息,比如数据库密码,api密码等,直接明文存储这些信息在配置文件中是非常危险的,尤其是当配置文件存储在版本控制系统中Spring CLoud Config 提供了对属性进行加密解密的功能,以保护配置文件中敏感数据不被泄露。

2026-09-04 20:28:43 16

原创 统一服务入口-Gateway

Spring Cloud Gateway提供了过滤器的扩展功能,开发者可以根据实际业务来自定义过滤器,同样自定义过滤器也支持GatewayFilter和GlobalFilter两种。

2026-09-03 15:55:10 192

原创 优雅实现远程调用-OpenFeign

OpenFeign时一个声明式的 Web Service 客户端,它让微服务之间的调用变得简单,类似controller调用service,只需要创建一个接口,然后添加注解即可使用OpenFeignOpenFeign前身Feign时Netfix公司开源的一个组件2016年,Netfix将Feign捐献给社区,之后发布了OpenFeign可以简单理解为 Netfix Feign 时 OpenFeign的祖先,或者说OpenFeign是Netfix Feign 的升级版,更强大更灵活的表现。

2026-09-02 22:51:12 199

原创 多机部署/负载均衡-LoadBalance

1. 根据应用名称获取服务实例列表2. 从列表中选取一个服务实例思考:如果一个服务对于多个实例,流量是否可以合理的分配到多个实例访问时,通过日志可看出多次访问的都是同一台机器。请求被均衡分配到不同的实例上,这就是负载均衡。

2026-09-01 19:23:20 224

原创 服务注册/服务发现-Eureka

开发者希望有一个东西,它能维护一个服务列表,哪个机器上线了,哪个机器宕机了,这些信息都会自动更新到服务列表上,客户端拿到这个列表,直接进行服务调用即可,这个就是注册中心服务提供者(Server)一次业务中,被其他微服务调用的服务,也就是提供接口给其他未服务服务消费者(Client)一次业务中,调用其他未服务的服务,也就是调用其他微服务提供的接口。

2026-08-31 21:51:35 387

原创 Spring Cloud概述

Spring Cloud 为开发人员提供了工具,可以快速构建分布式系统中一些常见的模式(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、短生命周期微服务和契约测试)

2026-08-31 18:58:57 186

原创 RabbitMQ运维

raft-atc14Raft是一种用于管理和维护分布式系统一致性的协议,它是一种共识算法,旨在实现高可用性和数据的持久性,Raft通过在节点间复制数据来保证分布式系统中的一致性,即使在节点故障的情况下也能保证数据不会丢失在分布式系统下,为了消除单点提供系统可用性,通常会使用副本来进行容错,但这会带来另一个问题,即如何保证多个副本的一致性。

2026-08-12 18:00:10 495

原创 RabbitMQ应用问题

在应用程序中,幂等性就是指对一个系统进行重复调用(相同参数),不论请求多少次,这些请求对系统的影响都是相同的效果比如数据库 select 操作时幂等性操作,i++时非幂等性操作对于MQ而言,幂等性是指同一条消息,对系统的影响是相同的一般消息中间件的消息传输保障分为三个层次At most once:最多一次,消息可能会丢失,但绝对不会重复传输At least once:最少一次,消息绝对不会丢死,但可能重复传输Exactly once:恰好一次,每条消息都肯定会被传输一次且仅传输一次。

2026-08-09 18:14:08 240 1

原创 RabbitMQ高级特性

RabbitMQ向消费者发送消息之后,就会把这条消息删掉,那么第二种情况,就会造成消息丢失,那么如何确保消费端已经成功接收了,并且正确处理了为了保证消息从队列可靠到达消费者,RabbitMQ提供了消息确认机制当autoAck参数置为false,对于RabbitMQ服务端而言,队列中的消息分成了两部分:一是等待投递给消费者的消息二是已经投递给消费者,但是还没有收到消费者确认信号的消息。

2026-08-09 16:24:57 223

原创 RabbitMQ应用

作用:生产者将消息发送到Exchange,由交换机将消息按一定规则路由到一个或多个队列中(RabbitMQ中,生产者直接将消息投递给队列中的情况时不会存在的)RabbitMQ 中交换机有四种类型,AMQP协议中还有 System和自定义两种类型,此处不介绍Exchange(交换机)只负责转发消息,不具备存储信息的能力,因此如果没有任何队列与交换机绑定,或者没有符合路由对则的队列,消息会丢失。

2026-08-06 23:58:00 266 1

原创 RabbitMQ概述&快速使用

安装Erlang#更新软件包#安装erlang按照RabbitMQ#更新软件包#安装rabbitmq#确认安装结果# 1. 创建用户(用户名 admin,密码自定义)# 2. 授予管理员角色(最高权限)# 3. 授予所有虚拟主机(/)的读写配置权限5672:客户端和服务器建立连接的端口号15672:管理界面端口号25672:集群使用的端口号。

2026-08-04 23:46:59 197

原创 Redis分布式锁

在一个分布式系统中,也会涉及到多个节点同时访问一个公共资源的情况,此时就需要通过锁来做互斥控制,避免出现类似于“线程安全”的问题java中的 synchronized 这样的锁只能在当前的进程中生效,在分布式这种多个进程多个主机的场景下就无能为力了,此时就需要使用到分布式锁。

2026-07-29 23:37:14 280

原创 Redis典型应用—缓存(cache)

缓存是计算机中一个经典的概念,在很多场景中都会涉及到核心思路就是把一些常用的数据放到触手可及的地方,方便随时读取CPU寄存器>内存>硬盘>网络那么硬盘相对于网络是"触手可及的",就可以使用硬盘作为网络的缓存内存相对于硬盘是"触手可及的",就可以使用内存作为硬盘的缓存.CPU寄存器相对于内存是"输出可及的",就可以使用CPU寄存器作为内存的缓存对于计算机硬件来说,往往访问速度越快的设备,成本越高,存储空间越小缓存是更快,但是空间上往往是不足的,因此大部分的时候,缓存只放一些热点数据。

2026-07-29 21:34:25 231

原创 Redis哨兵 & 集群

Redis哨兵(Sentinel)和集群(Cluster)正是为了解决主从复制架构下高可用性和大规模数据存储这两大核心痛点而设计的。

2026-07-29 20:29:01 262

原创 Redis主从复制

在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他服务器上,满足故障恢复和负载均衡的需求。Redis也是如此,它提供了复制功能,实现了相同数据的多个Redis副本。复制功能是高于Redis的基础,哨兵和集群都是在复制的基础上构建的。

2026-07-26 23:27:51 270 2

原创 Redis事务

Redis的事务和MySQL的事务概念是类似的,都是把一系列操作绑定成一组,让中一组能够批量执行Redsi的事务为什么这么简单?为了保证自己访问速度快的特性,MySQL的事务在背后付出了很多的代价(空间上要花费更多的空间来存储数据,时间上也要更大的执行开销)Redis事务的主要意义就是为了“打包”,避免其他客户端的命令插队本质上是在服务器上搞了一个“事务队列”,每次客户端在事务中进行一个操作,都会把命令先发送到服务器,放到“事务队列”中(不会立即执行)

2026-07-25 20:42:37 189

原创 Redis持久化

把数据存储在硬盘上 → 持久把数据存储在内存上 → 不持久Redis是一个内存数据库,把数据存储在内存中,内存中的是数据是不持久的,要想持久化就要让Redsi把数据存储到硬盘上为了保证速度快和持久化,Redis在内存中存储数据,也在硬盘上存储数据当查询某个数据时直接从内存中读取,硬盘的数据旨在Redis从其的时候用来恢复内存中的数据代价是消耗了更多的空间,同一份数据存储了两遍Redis实现持久化的时候,具体用到了什么策略:1. RDB → Redis DataBase (定期备份)

2026-07-24 21:18:29 181

原创 Redis客户端-Java

简单好实现快速进行解析肉眼可读传输层这里基于TCP,但是和TCP没有强耦合请求和响应之间的通信是一问一答的形式,客户端发一个请求,服务器返回一个响应Redis客户端服务器要做的工作为:1. 按照上述格式,构造出字符串,往socket中写入2. 从socket中读取字符串,按照格式解析这套协议已经公开许久,有很多大佬实现了这套协议的解析/构造是要使用这些大佬们提供的库,就可以比较简单的来完成和Redis服务器通信的操作。

2026-07-23 17:22:18 198

原创 Redis基础常识与命令

Redis 所有的key都是字符串Redis中的字符串直接就是按照二进制数据的方式存储的(不存在任何的编码转换,存的是什么,取出来的就是什么)不仅仅可以存储文本数据,还可以存储整数、普通的文本字符串、JSON、xml、二进制数据(图片、视频、音频...)音频、视频....的体积可能会比较大,Redis对于String类型,限制了大小最大是512MRedis单线程模型,希望进行的操作都能比较快速列表类型是用来存储多个有序的字符串。

2026-07-21 10:51:24 228

原创 Redis初识

用于存储数据,定义变量不就是在内存中存储数据,为什么还要使用Redis:Redis在中可以发挥其功能,如果是单机程序,直接通过变量存储数据的方式比Redis更优进程具有隔离性,进程间的通信基于网络,,可以把自己内存中的变量给别的进程,甚至在别的主机的进程进行使用。

2026-07-04 15:28:50 228

原创 服务端高并发分布式结构演进之路

单机架构(应用程序+数据库服务器)数据库和应用分离引入负载均衡 应用服务器 →集群引入读写分离,数据库主从结构引入缓存,冷热数据分离引入分库分表,数据库能够进一步扩展存储空间引入微服务,从业务上进一步拆分服务器所谓分布式系统就是想办法引入更多的硬件资源。

2026-07-01 16:01:46 271 1

原创 项目实战知识点-抽奖系统

public class InfoLevelFilter { // 定义一个名为 InfoLevelFilter 的过滤器类// decide 方法是 Logback 过滤器的核心,每次产生日志事件时都会调用// 参数 iLoggingEvent 代表一条待输出的日志事件(包含级别、内容、时间等)// 如果这条日志的级别转换成整数后,等于 INFO 级别的整数值// 接受:这条日志会被输出// 否则拒绝:这条日志不会被输出Logback 就是 Java 应用中最常用的高性能日志框架。

2026-06-20 16:29:24 258

原创 实战项目-抽奖系统

【摘要】本文介绍了一个基于SpringBoot开发的抽奖系统,整合MySQL、Redis、RabbitMQ等技术实现高可用营销平台。系统包含五大核心模块:1)用户模块实现JWT认证和验证码登录;2)奖品模块支持图片上传与多级奖品配置;3)活动模块管理抽奖生命周期;4)抽奖模块采用消息队列异步处理,通过状态机模式保障事务一致性;5)通知模块实现邮件/短信并发通知。关键技术亮点包括:死信队列保证消息可靠消费、策略模式实现状态机扩展、线程池优化通知性能。系统已成功部署,除阿里云短信受限外,其他功能均正常运行

2026-06-20 16:25:47 355 2

原创 SpringAOP原理和代理模式详解

SpringAOP是建立在代理模式上的,代理模式是它的底层实现机制,而SpringAOP是对代理模式在“面向切面编程”这个领域的高级封装和应用。

2026-06-07 17:35:00 222

原创 Spring原理

在Spring Ioc&DI 阶段,我们学习Spring是如何帮助我们管理对象1. 通过@Controller,@Service,@Repository,@Component,@Configuration,@Bean来声明对象2. 通过ApplicationContext 或者 BeanFactory 来获取对象3. 通过 @Autowired,Setter方法或者构造方法等来为应用程序注入所依赖的Bean对象简单回顾1.通过@Bean声明bean,把bena存放在Spring容器中。

2026-06-02 21:34:16 240

原创 Linux基本使用和程序部署

工作中涉及到的“环境”开发环境:开发人员写代码用的及其测试环境:测试人员测试程序使用的机器生产环境:(线上环境):最终项目发布时所使用的机器,对稳定性要求很高把程序安装到生产环境上,这个过程称为“部署”,也叫“上线”部署过程至关重要,属于程序开发中最重要的一环,基友可能导致严重的事故为了防止部署出错,一般公司内部都有一些自动化部署工具,当前先使用手工部署方法来完成部署。

2026-06-02 17:55:09 324 2

原创 案例综合练习-博客系统

Mapper在MySQL数据库中,需要对密码,身份证号,手机号等敏感信息进行加密,以保证数据的安全性,如果使用明文储存,当黑客入侵数据库时,就可以轻松获取到用户的相关信息,从而对用户或者企业造成信息泄露或者财产损失目前我们用户的密码还是明文设置,为了保护用户的密码信息,我们需要对密码进行加密。

2026-05-31 15:21:53 456 2

原创 Spring事务和事务传播机制

1. Spring中使用事务,有两种方式,编程式事务和声明式事务,其中声明式事务使用较多,在方法上添加 @Transactional 就可以实现2. 可以设置事务的隔离级别(isolation)3. 可以设置事务的传播机制(propagation)

2026-05-28 22:05:32 256

原创 Spring AOP

AOP :Aspect Oriented Programming (面向切面编程)AOP是一种思想,是对某一类事情的集中处理。

2026-05-27 16:17:07 386

原创 SpringBoot 统一功能处理

实现HandlerInterceptor接口,并重写其所有方法。

2026-05-26 21:15:20 221

原创 MyBatis-Plus 使用

在实际开发中,Mybatis-Plus提供的操作不能满足实际需求,Mybatis-Plus 也提供了自定义SQL功能,我们可以利用Wrapper构造查询条件,再结合Mapper编写SQL。

2026-05-25 22:50:50 455

原创 MyBatis 数据库操作(进阶)

动态SQL是MyBatis的强大特性之一,能够完成不同条件下不同的sql拼接。

2026-05-25 17:27:21 395

原创 MyBatis 操作数据库(入门)

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个每次执行SQL语句,有先创建一个新的连接对象,然后执行SQL语句,SQL语句执行完再关闭连接对象,这种重复的创建连接,销毁连接比较消耗资源程序启动,会在数据库连接池中创建一定数量的Connection对象,当客户请求数据库连接池,会获取Connection对象,然后执行SQL语句,执行完后再把Connection归还给数据库连接池优点:1.减少网络开销2.资源重用3.提升系统的性能。

2026-05-22 18:50:04 602 2

原创 SpringBoot 日志

门面模式又称外观模式,提供了一个同一的接口,用来访问子系统中的一群接口,其主要特征是定义了一个高层接口,让子系统更容易使用1.减少系统的相互依赖,实现了客⼾端与⼦系统的耦合关系,这使得⼦系统的变化不会影响到调⽤它 的客⼾端2.提高了灵活性,简化了客⼾端对⼦系统的使⽤难度,客⼾端⽆需关⼼⼦系统的具体实现⽅式,⽽只需 要和⻔⾯对象交互即可3.提高了安全性,可以灵活设定访问权限,不在⻔⾯对象中开通⽅法,就⽆法访问。

2026-05-20 17:26:33 271

原创 SpringBoot 配置文件

springboot 在创建项目时,就已经帮我们创建了配置文件Spring Boot 配置文件有一下三种1. application.properties2. application.yml3. application.yaml特殊声明1.理论上讲,.properties和.yml 可以并存在一个项目中,同时存在时,每个配置文件的内容都会加载,如果配置内容有冲突,则以.properties 为主,也就是.properties 优先级更高2.实际业务中,通常会采取一种同一的配置文件格式properties是以

2026-05-19 22:23:15 251

原创 Spring IoC&DI

Spring:简单来说,Spring是一个开发应用框架,什么样的框架呢,有怎么几个标签:轻量级、一站式、模块化,其目的是用于简化企业级应用程序的开发Spring MVC:是Spring的一个子框架,Spring诞生之后,按照MVC模式设计了一个MVC框架,主要用于开发Web应用和网络接口,所以Spring MVC是一个Web框架Spring Boot:是对Spring的一个封装,为了简化Spring赢用的开发而出现的,可以快速搭建框架,降低开发成本,无需关注XML的配置和一些底层实现。

2026-05-19 19:27:29 532

原创 Spring MVC 练习项目

请求路径:calc/sum请求⽅式:GET/POST接⼝描述:计算两个整数相加请求参数响应数据响应内容: 计算机计算结果1.获取全部留言全部留言信息,用List来表示,可以用JSON来描述这个List数据响应:JSON格式"from": "⿊猫","to": "⽩猫","message": "喵"},{"from": "⿊狗","to": "⽩狗","message": "汪"},//...2.发表新留言请求:body也为JSON格式"from": "⿊猫",

2026-05-17 16:15:24 396

原创 Spring Web MVC 入门

MVC 是 Model View Controller 的缩写,它是软件工程中的一种软件架构的设计模式,它把软件系统分为模型、视图和控制器三个基本部分View(视图)应用程序中专门用来与浏览器进行交互、展示数据的资源Model(模型)应用程序的主题部分,用来处理程序中数据逻辑的部分Controller(控制器)可以理解为一个分布器,用来决定对于视图发来的请求,需要用哪一个模型来处理,以及处理完后需要跳回到哪一个视图。即用来连接视图和模型。

2026-05-14 19:32:44 442

原创 SpringBoot

Spring Boot 提供了启动添加依赖的功能,可以快速集成框架‘内置web服务器,无需配置Tomcat等Web服务器,直接运行和部署可以完全抱起复杂的XML,使用注解和配置的方式进行开发支持更多的监视的指标,可以更好的了解项目的运行情况特点。

2026-05-12 21:16:34 330

原创 HTML+CSS+JavaScript

CSS 层叠样式表,用于控制页面的样式。

2026-05-11 18:41:59 445 1

空空如也

空空如也

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

TA关注的人

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