自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Eureka

Eureka 是 Netflix OSS 套件中关于服务注册和发现的解决方案,Spring Cloud 对 Eureka 进行了集成,大量公司的微服务系统使用 Eureka 作为注册中心Eureka 主要分为两个部分:1)Eureka Server:作为注册中心 Server 端,向服务应用程序提供服务注册、发现、健康检查等能力。

2024-08-13 15:36:40 1238

原创 Spring Cloud

Spring Cloud 是分布式微服务架构的一站式解决方案,是微服务架构的各种技术的集合例如:1)Distributed/versioned configuration 分布式版本配置2)Service registration and discy 服务注册和发现3)Routing 路由。

2024-08-13 15:36:29 1391

原创 RabbitMQ 应用问题

例如生产者发送的消息分别是 1,2,3,那么消费者也是按照 1,2,3 的顺序进行消费的,在很多业务场景下,消息的消费是不用保证顺序的,例如使用 MQ 实现订单超时的处理,但是有些业务场景可能存在多个消息顺序处理的情况,如果存在多个生产者同时发啊消息,无法确认消息到达RabbitMQ Broker 的前后顺序。但是"最少一次"就会造成消费端会收到重复的消息,也会造成同一条消息进行多次处理,对于重要的业务,如果不对重复的消息进行处理,会造成严重事故。无法保证消息的顺序和生产者发送消息的顺序⼀致。

2024-08-12 14:10:32 643

原创 RabbitMQ 高级特性

例如,在有两个消费者的情况下,一个消费者处理任务非常快,另一个非常慢,就会造成一个消费者很忙,另一个很闲,此时可以设置 prefetch=1 的方式,告诉 RabbitMQ 一次只给一个消费者一条消息,也就是说,在处理并确定一条消息之前,不要向该消费者发送新消息,相反,将任务派发给下一个不忙的消费者。由于设置了队列的长度为 10,发了 20 条数据,所以发送 20 条消息,就会有 10 条消息立刻进入死信队列,当消息过期之后,正常队列的 10 条消息也会进入死信队列。

2024-08-12 14:10:14 1098

原创 RabbitMQ 高级特性

不管消息是正常还是异常处理,MQ 都会删除相应的消息2)AcknowledgeMode.AUTO(默认)消息被正常处理,消息会自动确认,被异常处理时,消息会不停重试3)

2024-08-06 16:47:44 1375

原创 SpringBoot 使用 RabbitMQ

RabbitListener(queues = "order.create") 可以加在类上,也可以加在方法上,加在类上,如果消息是 String 类型就会执行 String 类型的方法,如果是对象类型,就会执行对象类型的方法。@RabbitListener 是 Spring 框架中用于监听 RabbitMQ 队列的注解,通过使用这个注解,可以定义一个方法,以便从 RabbitMQ 队列中接收消息,该注解支持多种参数类型。声明两个队列和一个交换机,然后绑定队列和交换机。声明队列和交换机,并绑定。

2024-08-06 16:47:31 3841 1

原创 RabbitMQ 应用

和发布 / 订阅模式不同的是,队列和交换机的绑定,不能是任意绑定了,而是要指定一个 BindingKey(RoutingKey 的一种),消息的发送方向 Exchange 发送消息时,也需要指定消息的 RoutingKey,交换机需要根据消息的 RoutingKey 进行判断,只有队列绑定时的 Binding 和发送消息的 RoutingKey 完全一致,才会接收到消息。例如,打印日志,日志的等级为 error、warning、info、debug,就可以通过这种模式,把不同的日志发送到不同的队列。

2024-08-03 14:40:21 1776

原创 RabbitMQ

MQ(Message queue)本质上是个队列,先进先出,只不过队列里面的内容是消息,而消息非常简单,比如可以是文本字符串,JSON 等,也可以很复杂,例如内嵌对象,MQ 多用于分布式系统之间进行通信,系统之间的调用通常由两种方式。生产者创建消息,发布到 RabbitMQ 中,在实习应用中,消息通常是一个带有一定业务逻辑结构的数据,消息可以带有一定的标签,RabbitMQ 会根据标签进行路由,把消息发送给感兴趣的消费者。

2024-08-03 14:40:18 1307

原创 Redis 典型应用-缓存

缓存是计算机中的一个经典概念,在很多场景都涉及到,核心思路就是把一些常用的数据放到访问速度更快的地方,方便随时读取对于计算机来说,往往访问速度越快的设备,成本越高,存储空间越小,缓存是更快,但是空间上往往是不足的,因此大部分的时候,缓存只存放一些访问频率很高的热点数据。

2024-08-01 15:52:39 915

原创 Redis - 分布式锁

引入一组 redis 节点,其中每一组 redis 节点都包含一个主节点和若干个从节点,并且组和组之间存储的数据都是一致的,相互之间是 "备份" 的关系,加锁的时候,按照一定的顺序,写多个 master 节点,在写锁的时候需要设定操作的 "超时实践",比如 50ms,即 setnx 操作超过了 50ms还没有成功就视为加锁失败。例如在买票的场景中,车站提供了若干个车次,且每个车次的票数都是固定的,现在存在多个服务器节点,都可能需要处理买票的逻辑:先查询指定车次的车票,如果票 > 0,则设置票数 -=1。

2024-08-01 15:52:21 922

原创 Redis 集群

1)节点之间通过心跳包通信,心跳包中包含了该节点持有哪些 slots(槽位),并且使用位图这样的数据结构来表示,16384(16k)个 slots,需要的位图大小为 2kb,如果给定的 slots 数更多了,比如 65536 个,此时就需要消耗更多的空间,8kb位图来表示,8kb对于在频繁的网络心跳包中是一个不小的开销2)Redis 集群一般不建议超过 1000 个分片,所以 16k 对于最大 1000 个分片来说足够使用。

2024-07-31 17:08:07 1052

原创 Redis 哨兵模式

Redis Sentinel 是一个分布式架构,其中包含若干个 Sentinel 节点和 Redis 数据节点,每个 Sentinel 节点会对数据节点和其余 Sentinel 节点进行监控,如果主节点下线,它会和其他的 Sentinel 节点进行"协商",当大多数 Sentinel 节点对主节点下线折合结论达成共识,它们会在内部"选举"出一个领导节点完成自动故障转移的工作,同时将这个变化实时通知给 Redis 应用方,整个过程是自动完成,不需要人工介入,整体的架构图如下。

2024-07-31 17:07:41 1677

原创 Redis 事务和主从复制

Redis 事务和 MySQL 的事务概念上是类似的,都是把一系列操作打包到一起,让这一组能够批量执行,Redis 的事务和 MySQL 事务的区别:1)不保证原子性:由于 Redis 没有回滚机制,因此,只能让这些操作批量执行,不能做到一个失败就恢复到初始状态2)不具备一致性:由于 Redis 没有约束,没有回滚机制,事务执行过程中如果某个修改操作失败,可能就会出现不一致的情况3)不具备持久性:Redis 本身就是内存数据库,数据都是存储在内存中,Redis 中的持久化机制与事务没有任何关系。

2024-07-29 14:48:46 1001

原创 Redis 持久化

1)Redis 提供了两种持久化方案:RDB 和 AOF2)RDB 视为内存快照,产生的内容更为紧凑,占用空间小,恢复时速度更快,但开销大,不适合进行实时持久化,一般用于冷备和主从复制3)AOF 视为修改命令保存,在恢复时需要重放命令,并且有重写机制来定期压缩 AOF 文件4)RDB 和 AOF 都是用 fork 创建子进程,子进程拥有父进程内存快照的特点进行持久化。

2024-07-29 14:48:28 808

原创 在 Spring 中操作 Redis

在 Spring 中操作 Redis

2024-07-08 10:42:18 2143

原创 Java 操作 Redis客户端

讲述了 Java 操作 Redis的各种命令

2024-07-08 10:42:03 1323

原创 Redis 中 Set 和 Zset 类型

Redis 中 Set 和 Zset 类型的介绍

2024-07-05 09:06:46 2794 2

原创 Redis 中 hash 和 List 类型

介绍了hash类型和list类型

2024-07-05 09:06:25 1294

原创 Redis

Redis中字符串的使用

2024-06-29 13:55:53 893

原创 Redis的使用和原理

Redis的使用

2024-06-29 13:55:38 1276

原创 分布式系统

介绍了分布式的基本概念以及架构的演进

2024-06-13 10:11:23 771

原创 Spring事务

事务就是一组操作的集合,是一个不可分割的操作,事务会把所有的操作作为一个整体,一起向数据库提交或者撤销操作请求,要么同时成功,要么同时失败。

2024-05-22 10:00:08 1029

原创 Spring AOP

Spring框架的两大核心,第一大核心是IoC,第二大核心就是AOPAspect Oriented Programming(面向切面编程),所谓的切面就是指一类特定问题,所以AOP可以理解为面向特定方法编程,比如"登录校验"就是一类特定问题,登录拦截器就是对"登录校验"这类问题的统一处理,所以拦截器也是AOP的一种应用,AOP是一种思想,拦截器就是AOP思想的一种实现,Spring框架实现了这种思想,提供了拦截器技术的相关接口AOP是一种思想,是对某一类事情的集中处理1.2 什么是Spring AOP。

2024-05-22 09:59:35 1477

原创 SpringBoot 统一功能处理

拦截器是Spring框架提供的核心功能之一,主要用来拦截用户的请求,在指定方法前后,根据业务需要执行预先设定的代码,例如在一个项目中,不管进入哪个模块,都需要强制登录,此时拦截器的作用就发挥出来了1.2 拦截器的使用1)定义拦截器 2)注册配置拦截器1.2.1 定义拦截器实现HandlerInterceptor接口,并重写其所有方法@Slf4j@Component@Overridelog.info("LoginInterceptor 目标方法执行前执行");

2024-05-16 12:44:58 951

原创 MyBatis操作数据库(动态SQL)

MyBatis的动态SQL查询

2024-05-16 12:44:39 1136

原创 MyBatis的其他查询操作

MyBatis的其他查询操作

2024-05-07 09:25:10 816

原创 SpringBoot常用配置

【代码】SpringBoot常用配置。

2024-05-05 14:26:35 204 1

原创 MyBatis操作数据库

Mybatis是一款优秀的持久层框架,用于简化JDBC的开发,持久层指的是持久化操作的层,通常指数据访问层(DAO),是用来操作数据库的,简单来说Mybatis是更简单完成程序和数据交互的框架,也就是更简单的操作和读取数据库工具

2024-05-05 14:24:50 1282 1

原创 Spring Boot日志

Spring Boot日志的详细介绍

2024-05-03 12:40:48 1485

原创 SpringBoot配置文件

SpringBoot配置文件的介绍

2024-05-03 12:40:02 1546 2

原创 Spring IoC&DI

Spring IoC&DI的详细介绍

2024-04-27 16:03:13 1034 1

原创 Spring MVC后续

在早期的概念中,MVC模式,后端会返回视图,目前项目开发流行"前后端分离"模式,Java主要用来做后端开发,所以就不在处理前端的内容了,MVC的概念页发生了变化,View不在返回视图,而是返回视图所需的数据了。如果作用在类上,表示该类的所有方法,返回的都是数据,如果作用在方法上,表示该方法返回的是数据,也就是在类上条件 @ResponseBody就相当于在所有方法上添加 @ResponseBody注解。@ResponseBody:定义返回的数据格式为非视图,返回一个text/html信息。

2024-04-23 10:02:38 826

原创 Spring Web MVC

我们可以简单的理解为,Spring Web MVC就是一个框架,它是基于Servlet API构建的原始web框架,它一开始就包含在Spring框架中,它通常被称为"Spring MVC"。下面我们简称之为:Spring MVC在理解什么是Spring MVC之前,我们要清楚什么是MVC?MVC是Model View Controller的缩写,它是软件工程中的一种软件架构设计模式,它把软件系统分为模型、试图和控制器三个基本部分。View(视图)在应用程序中专门用来与浏览器进行交互,展示数据。

2024-04-20 16:42:17 917 2

原创 Java-博客系统(前后端交互)

基于前后端交互实现一个博客系统。

2024-04-13 12:43:34 1251 1

原创 Servlet

Servlet后续的内容

2024-04-08 16:01:38 906

原创 Tomcat、Servlet

介绍了Tomcat使用

2024-04-01 10:17:04 1119 1

原创 HTTPS协议

HTTPS的详细介绍

2024-03-30 12:57:55 1087 1

原创 HTTP协议

以Fiddler为例。选择经典版的安装,安装好即可。当我们的Fiddler安装好后打开会出现这个页面。但是此时的Fiddler是不能够抓取HTTPS请求的, 需要进行一些操作。在Tools里面选择Options,然后选择HTTPS,勾选所有的选项,然后确定,完成之后就可以抓取HTTPS请求了。打开Fiddler,然后打开网站,访问该网站的HTTP请求和响应就会在Fiddler上显示。在左侧的窗口显示了所有的HTTP请求/响应,可以选中某个请求查看详情。在右侧上方显示了HTTP请求的报文内容。

2024-03-28 09:57:57 1065

原创 传输层重点协议

四次挥手和三次握手的区别就是,中间的两项不能合并,不能合并的原因是因为ACK和FIN的触发时机是不同的,ACK是内核响应的,B收到了FIN就会立即返回ACK,第二个FIN是应用程序的代码触发,B这边调用close方法才会触发FIN(第二个FIN就会在socket对象close的时候被发起,可能是手动调用close方法,也可能是进程结束)。随着窗口的不断增大,在达到一定程度,可能中间节点出现问题,这个结点就可能会丢包,发送方发现包丢了,就把窗口调整小,如果此时继续丢包,就继续缩小,如果或不丢包了就尝试增大。

2024-03-22 15:18:51 1075 1

原创 Java网络编程

网络编程就是指网络上的主机通过不同的进程,以编程的方式实现网络通信(网络数据传输)。

2024-03-17 20:12:19 697 1

空空如也

空空如也

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

TA关注的人

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