- 博客(109)
- 收藏
- 关注

原创 【网络原理 9】HTTP协议 请求 & 响应 超详解 看这篇就够
接上篇文章,【网络原理 8】HTTP 协议的基本格式和 fiddler 的用法-优快云博客,这里详细介绍HTTP 的 请求 和 响应。HTTP(Hypertext Transfer Protocol)是一种应用层协议,用于在Web浏览器和Web服务器之间传输数据。HTTP请求和响应是HTTP协议中最基本的消息类型。请求行:包括HTTP方法(GET,POST等)、请求URI和HTTP版本号;请求头部:包括一系列关于请求的元数据,如Host、User-Agent、Accept等;
2024-05-17 09:45:00
3737

原创 【网络原理 8】HTTP 协议的基本格式和 fiddler 的用法
之前给大家分别介绍了应用层,传输层的 TCP/UDP,网络层的 IP ,数据链路层的 以太网。这里要介绍的 HTTP 属于应用层里的协议。为什么HTTP报⽂中要存在"空⾏"?因为HTTP协议并没有规定报头部分的键值对有多少个.空⾏就相当于是"报头的结束标记",或者是 "报头和正⽂之间的分隔符".HTTP在传输层依赖TCP协议,TCP是⾯向字节流的.如果没有这个空⾏,就会出现"粘包问题".
2024-05-16 09:30:00
2124
原创 IDEA 类都变成 .java文件问题(从蓝色 C 图标变成黄色茶杯或者J文件图标)
IDEA 依赖于正确的项目结构来识别源文件。如果 Java 文件不在项目的 <代码开始> src < 代码结束 > 目录下,或者 < 代码开始 > src < 代码结束 > 目录未被正确标记为资源根目录,IDEA 可能无法正确识别文件类型,从而导致所有类都显示为.java 文件。:长时间未打开项目,IDEA 的缓存文件可能会堆积、损坏或过期,导致项目索引混乱,影响文件类型的正确识别。
2025-04-09 00:26:54
63
原创 Spring Cloud 中的服务注册与发现: Eureka详解
在早期的架构体系中,集群概念尚未普及,机器数量较少,那时直接使用 DNS + Nginx 就能满足几乎所有服务的发现需求,相关注册信息直接配置在 Nginx 中。然而,随着微服务的兴起和流量的急剧增长,机器规模不断扩大,且机器上下线行为频繁。此时,依靠运维人员手动维护这些配置信息变得非常麻烦。于是,开发者们期望有一个工具,它能维护一个服务列表,机器上线、宕机等信息都能自动更新到这个服务列表上,客户端获取这个列表后可直接进行服务调用,这就是注册中心。服务提供者(Server)
2025-03-15 15:13:56
1111
原创 RabbitMQ应用问题大全(精心整理版)
其实这部分知识我是整理在语雀上了,这里是直接复制粘贴过来的。不是很好阅读,可以直接点下方链接去语雀看,那个看的会舒服很多。RabbitMQ 延迟队列是一种允许消息在指定的时间之后才被消费者消费的特殊队列。在常规的消息队列中,消息一旦被发送到队列,消费者就可以立即获取并处理。而延迟队列打破了这种即时性,它可以让消息在设定的延迟时间到达后才进入可消费状态,使得消息的处理在时间上具有一定的延迟性。看下边的博客RabbitMQ 7种工作模式详解及应用场景_rabbitmq 广播模式应用场景-优快云博客。
2025-03-09 17:54:21
1202
原创 RabbitMQ 高级特性:从 TTL 到消息分发的全面解析 (下)
延迟队列是一个特殊的队列,消息发送之后,并不立即给消费者,而是等待特定的时间,才发送给消费者。延迟队列的应用场景有很多,比如订单在十分钟内未支付自动取消、用户注册成功后 3 天后发调查问卷、用户发起退款 24 小时后商家未处理则默认同意自动退款等。
2025-03-07 17:11:04
991
原创 RabbitMQ 高级特性解析:RabbitMQ 消息可靠性保障 (上)
最近复习 RabbitMQ,看了看自己之前写的博客,诶,一言难尽,当时学的懵懵懂懂的。这里重新整理 RabbitMQ 的核心功能,温故知新!!在分布式系统中,消息队列是实现异步通信、解耦服务的关键组件。RabbitMQ 作为一款功能强大的消息队列,其消息可靠性是确保系统稳定运行的重要因素。这里将深入探讨 RabbitMQ 的消息确认机制、持久化策略、发送方确认机制以及重试机制!!生产者发送消息到消费端后,可能出现消息处理成功或异常的情况。
2025-03-07 09:26:59
990
原创 RabbitMQ 7种工作模式详解及应用场景(复习版,原生代码实现版)
2. Work Queue(工作队列)1. 常量类为了方便管理和维护 RabbitMQ 的连接信息,我们创建一个常量类 ,用于存储连接所需的主机地址、端口、虚拟主机、用户名、密码以及队列名称。2. 生产者生产者类的主要职责是创建与 RabbitMQ 的连接,声明队列,并向队列中发送 10 条消息。以下是具体的代码实现:代码解释:消费者类的主要功能是创建与 RabbitMQ 的连接,声明队列,并从队列中消费消息。我们创建两个消费者类来模拟多个消费者竞争消费消
2025-03-05 19:56:36
957
原创 Spring IOC & DI
继续复习,继续补博客,继续努力,继续温故知以造车为例,传统程序开发按照轮子、底盘、车身、汽车的顺序设计,存在紧密的依赖关系。当需求变更,如需要加工多种尺寸的轮胎时,整个调用链上的代码都需修改,程序耦合度极高。而采用 IoC 思想,先设计汽车的大概样子,再依次设计车身、底盘、轮子,依赖关系倒置。通过将创建下级类的方式改为注入传递,当下级类发生变化时,当前类无需修改代码,实现了程序解耦。例如,打造汽车时,若所有配件都自己制造,需求改变时需自己动手修改;若将轮胎外包,需求变化时只需向代理工厂下订单,自身无需出力。
2025-03-02 01:51:08
742
原创 Spring Web MVC
今天来复习 Spring Web MVC根据官方描述,Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从一开始就被纳入了 Spring 框架之中。其正式名称 “Spring Web MVC” 源于它的源模块名称(spring-webmvc),不过在日常开发中,我们通常简称它为 “Spring MVC”。那么,这里提到的 Servlet 又是什么呢?简单来说,Servlet 是一种实现动态页面的技术,更准确地讲,它是一套 Java Web 开发的规范,或者说是技术标准。
2025-03-01 18:21:56
1615
原创 两个小时从零开始 JavaScript 入门到实战开发
hello 兄弟们,这里是网页三件套的最后一个剑客了。这会也是复习补录之前欠你们的哈哈哈哈,js 是这里边最难的一个(当然弱语言也不会很难) ,但内容会很多.使用new关键字创建,例如:var arr = new Array();(注意Array的首字母A要大写),这种方式较为传统。使用字面量方式创建(常用),例如:var arr = [];(数组中保存的内容称为 “元素”),字面量方式更简洁直观。
2025-02-27 17:31:16
760
原创 30 分钟从零开始入门 CSS
最近也是在复习,把之前没写的博客补起来,之前给大家介绍了 html,现在是 CSS 咯。一、CSS简介:给网页“化妆”的神器CSS(层叠样式表)就像“化妆“,能让HTML页面瞬间焕然一新。功能:控制网页元素的位置、颜色、字体等样式,实现“样式与结构分离”。效果对比CSS前 → CSS修饰后二、CSS基础语法:精准定位,精细操作口诀选谁?干啥?选择器 {属性: 值;/* 声明 */示例p {color: red;/* 文字变红 *//* 字号20像素 */选中所有<p>标签,设置文字颜色和大小。
2025-02-25 09:26:04
1069
原创 WebSocket 与 Tcp 的长连接 和 短连接
WebSocket 是一种基于 TCP 的应用层协议,提供全双工通信能力,允许客户端和服务端通过一次 HTTP 握手建立长连接,后续持续双向传输数据。:复用同一连接处理多次数据传输(如 HTTP/1.1 Keep-Alive)。→ HTTP/2 支持多路复用,但服务端推送功能受限,无法实现全双工。要快速钉钉子(实时交互),选锤子(WebSocket);→ 若设计不当(如不复用连接),可能比短连接更慢。要运一车砖(大数据传输),选卡车(TCP 长连接)。:每次数据传输后关闭连接(如 HTTP/1.0)。
2025-02-22 21:09:34
839
原创 【Java反射机制:程序员的“万能钥匙“,设了私有也不行】
反射是Java的"透视眼",能看透类的所有秘密四大核心类:Class、Field、Method、Constructor记住三要素:灵活 vs 性能 vs 安全就像现实中的解剖课——可以学,但别随便对人用!"反射虽好,可不要贪杯!🍻(代码千万行,安全第一行。反射不规范,上线两行泪)
2025-02-14 22:57:18
554
原创 146. LRU 缓存 : 实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构
这道题其实刷了有段时间了,很久之前就像写这道题的博客了,被期末耽误了。这道题挺特别的,可能是我确实刷题不够亦或者刷题不够深刻,这道题是刷这么久的题(其实没很久)第一次深刻的感受到算法在实际业务中的运用,很奇妙的感觉,就像天天被风吹的脸生疼,但这次我感觉到了风的律动(有点小夸张哈哈哈哈)。更神奇的是,在期末考完之后,最后一门就是操作系统,很意外,我竟然在这操作系统中再次碰见了 LRU ,页面置换算法中的 LRU,今天刚考完试,就这份缘分也必须把这博客今日毕。
2025-01-04 00:15:41
1062
原创 Comparable 和 Comparator 接口以及匿名内部类与 Lambda 实现(含记忆技巧)
Comparable 和 Comparator经常弄混,升序降序到底该怎么实现经常搞反了??由于当时学这两个的时候没学扎实,后边写算法的时候经常被这俩搞的头疼。所以决定写一篇博客详解一波,一劳永逸!!!Comparable:用于定义对象的自然排序规则,必须在类内部实现。通过实现compareTo方法来指定排序逻辑。Comparator:用于在外部定义排序规则,能够灵活地实现多种排序方式。它是一个函数式接口,可以通过匿名内部类或 Lambda 表达式来实现。秘诀 : 顺着写升序,反着写降序!!!
2024-12-28 01:09:27
525
原创 printf 中 %(-)n.mf 关于保留几位小数以及如何进行左右对齐,主要涉及格式控制符中的宽度、精度和对齐方式。
.2f:表示保留两位小数。%8.2f:表示宽度至少为8,且保留两位小数,默认右对齐。%-8.2f:表示宽度至少为8,且保留两位小数,左对齐。!
2024-12-08 11:35:12
310
原创 Java数据结构与算法详解 (备考资料,可用于所有开卷算法考试,比如CCFCSP,超全)
PriorityQueue是一个基于优先级堆的队列,元素按自然顺序或指定的比较器顺序排序。LinkedHashMap适用于需要按插入顺序存储键值对的场景,如实现缓存、LRU缓存等。LinkedHashSet适用于需要按插入顺序存储唯一元素的场景,如实现有序集合、去重等。TreeSet适用于需要按顺序存储唯一元素的场景,如实现有序集合、范围查询等。TreeMap适用于需要按顺序存储键值对的场景,如实现有序字典、范围查询等。TreeSet是一个有序的Set,元素按自然顺序或指定的比较器顺序排序。
2024-12-02 22:33:31
1128
原创 collections 与 collect 的区别 和 array 与 arrays 的区别 及如何运用
最近在刷算法的时候经常碰见这四个词,经常傻傻分不清,类的方法也记不清怎么使用,但是这在算法中会用到,特别是 Collections ,arrays 类中的方法,每次用这两个的时候想起另外两个就心生疑惑,甚至有的时候记不清用哪个,于是我这里到处搜罗,总结整理写下了这篇博客。在 Java 中,和collect,以及array和arrays这四个名词看似相似,但它们分别代表了不同的概念和用途。理解这些概念以及它们之间的差异,可以让我们更高效地处理数据结构和数理逻辑。
2024-11-21 02:02:32
1058
原创 Java 中的 LocalDateTime、DateTime 和 Date 的区别解析
hello 哥们,又碰见问题了。最近在写项目定义 createTime 和 updateTime 这类时间有关的属性时,我脑子里出现三个类, LocalDateTime、DateTime 和 Date 说起来,我确实有点分不清这三个类,于是特地去查了一下,于是有了此篇博客。在 Java 中,处理日期和时间是开发中常见的任务之一,特别是在涉及到多个时区、日期格式、时间计算等需求时。Java 提供了多种方式来处理日期和时间,其中DateTime和Date是三种常见的日期时间类。
2024-11-14 00:30:05
2387
1
原创 链表常用技巧和操作总结
链表作为一种基础的数据结构,在算法中有着广泛的应用。掌握链表的常用操作和技巧,不仅能够帮助我们解决具体问题,还能在实际的编程中提升效率和代码质量。头插法:用于栈的实现和一些数据流反转操作。尾插法:适用于队列的实现和批量数据导入的场景。快慢指针找中间节点:在分割链表、回文链表检测、查找链表中点等问题中常用。逆序链表:常用于栈的反转和数据流反转等应用。合并有序链表:广泛应用于归并排序、数据流合并等问题中。判断链表是否有环:常用于循环链表检测,避免程序出现无限循环等问题。
2024-11-08 15:08:25
1054
原创 【spring cloud】深入探讨 集群,分布式,微服务
微服务是指非常小的服务,每个服务对应单一功能,能够独立部署和运行。微服务之间可以通过REST和RPC协议进行通信,具有良好的架构设计特点。
2024-10-24 16:30:50
1047
1
原创 RabbitMQ高级特性详解
RabbitMQ是一款广泛使用的开源消息队列软件,它基于AMQP(Advanced Message Queuing Protocol)标准实现。本文将带你深入了解RabbitMQ的一些高级特性,包括消息确认、死信队列、延迟队列、事务处理以及消息分发策略等,并通过示例代码展示如何在实际项目中应用这些特性。目录1. 消息确认机制1.1 什么是消息确认?自动确认 vs 手动确认1.2 使用场景2. 死信队列2.1 死信的概念与来源2.2 应用场景3. 延迟队列3.1 延迟队列简介3.2 实现方法示例代码。
2024-10-14 21:18:49
1625
1
原创 RabbitMQ 核心功能详解
RabbitMQ 提供了一个直观的 Web 管理界面,可以帮助管理员轻松地监控和管理系统。主要功能区域包括 Overview、Connections、Channels、Exchanges、Queues 和 Admin 等。其中,Overview展示系统概览信息。显示当前所有的客户端连接。Channels列出每个连接下的活动通道。Exchanges展现已声明的交换机列表及其详情。Queues显示所有队列的状态,包括消息数量等指标。Admin用于管理用户账户及权限分配。
2024-10-14 15:20:52
1298
原创 【FloodFill】扫雷模拟
Flood Fill算法通常有两种实现方法:下面是一个简单的Flood Fill算法示例,使用了深度优先搜索(DFS)来实现:这段代码定义了一个方法,接受一个二维字符数组表示图像,以及两个坐标和作为起始点,还有需要替换的旧颜色和新颜色。通过递归的方式,它会把从起始点开始的所有连续的都替换成。题⽬链接:529. 扫雷游戏 - 力扣(LeetCode)扫雷模拟,会玩就会解,童年的回忆,感谢阅览!
2024-10-12 23:39:39
1024
原创 【FloodFill】太平洋大西洋水流问题
Flood Fill算法通常有两种实现方法:下面是一个简单的Flood Fill算法示例,使用了深度优先搜索(DFS)来实现:这段代码定义了一个方法,接受一个二维字符数组表示图像,以及两个坐标和作为起始点,还有需要替换的旧颜色和新颜色。通过递归的方式,它会把从起始点开始的所有连续的都替换成。 题⽬链接:417. 太平洋大西洋水流问题 - 力扣(LeetCode)总结这个用了一个正难则反的思想,在很多算法题中都会用到这个技巧,好好学,好好练,感谢阅览!
2024-10-12 23:32:16
938
原创 Flood Fill 算法详解与实战:以岛屿数量为例
FloodFill 思想正如其名,像洪水一样浇灌低谷,一般通过 BFS 或者 DFS 实现,如果你帮我主页中的回溯算法题都刷完了,写这个算法是很轻松的,就像简化版的回溯问题一样,甚至不需要剪枝。!!
2024-10-06 20:56:40
943
原创 Redis 有序集合(Zset)详解
Redis 中的有序集合(Sorted Set,简称 Zset)是一种非常强大且灵活的数据结构。它结合了哈希表和跳跃列表(Skip List)或压缩列表(Ziplist)的优点,能够高效地执行插入、删除以及范围查询操作。与普通集合不同的是,有序集合中的每个元素都有一个分数(score),这个分数用来对集合内的元素进行排序。
2024-10-04 09:00:00
1148
原创 RabbitMQ 7种工作模式详解及应用场景
RabbitMQ 是一个广泛使用的开源消息代理和队列服务器,支持多种消息传递模式。以下是RabbitMQ提供的7种主要的工作模式及其应用场景的详细介绍。
2024-10-03 11:53:48
1524
原创 【回溯数独】有效的数独(medium)& 解数独(hard)
定义一个名为Solution的类来封装解决方案逻辑。: 用于存储每行每个数字是否已经出现过。: 用于存储每列每个数字是否已经出现过。: 用于存储每个3x3小方格内每个数字是否已经出现过。定义一个名为Solution的类来封装解决方案逻辑。: 用于存储每行每个数字是否已经出现过。: 用于存储每列每个数字是否已经出现过。: 用于存储每个3x3小方格内每个数字是否已经出现过。
2024-10-03 01:50:33
1152
原创 RabbitMQ 概述及安装 : 程序之间沟通的桥梁
在当今快速发展的软件开发领域,不同应用程序之间的高效通信变得越来越重要。随着微服务架构和分布式系统的广泛应用,确保数据能够安全、可靠地从一个系统传递到另一个系统的需求也日益增长。这时,RabbitMQ就派上了用场。RabbitMQ是一款开源的消息代理软件(也被称作消息队列),它实现了高级消息队列协议(AMQP)。简单来说,RabbitMQ就像是一位中间人,帮助不同的应用程序通过发送和接收消息来相互交流,而不需要直接联系对方。这样不仅提高了应用间的独立性,还增强了整个系统的灵活性与可靠性。
2024-09-30 08:18:16
1342
原创 N 皇后问题的算法原理及实现 【新手详解 回溯】
N 皇后问题是一个经典的回溯算法问题,基本上不管是打算法还是学数据结构的同学们肯定都写过至少听说过这题,n 皇后问题是在一个 N×N 的棋盘上放置 N 个皇后,使得任意两个皇后都不能在同一行、同一列或同一条对角线上。这里将详细介绍 N 皇后问题的算法原理,并通过 Java 代码示例来展示如何实现这一算法。
2024-09-28 17:08:41
644
原创 Redis 集合类型详解及应用
由于集合中的元素是无序的,所以取出哪个元素是随机的。上篇文章介绍的列表类型,集合类型也是保存多个字符串类型的元素的。:获取集合中的所有元素,注意元素间的顺序是无序的。:获取给定集合的交集中的元素并保存到目标集合中。:获取给定集合的并集中的元素并保存到目标集合中。:获取给定集合的差集中的元素并保存到目标集合中。:获取集合的基数,即集合中的元素个数。:获取给定集合的交集中的元素。:获取给定集合的并集中的元素。:获取给定集合的差集中的元素。
2024-09-28 15:59:25
1229
原创 Redis列表 (List) 类型详解:从命令使用到实际应用
Redis 列表是一种可以存储多个有序字符串的数据类型。你可以把它想象成一个简单的清单,比如购物清单或者待办事项列表。在这个列表里,每个条目都是一个字符串,并且它们按照添加的顺序排列。你可以在列表的两端进行插入或移除操作,也可以从列表中获取指定位置的数据。特点:有序性:列表中的元素是按照添加顺序排列的。访问方式:可以通过数字索引来访问列表中的元素,索引可以从左到右(0, 1, 2...)或者从右到左(-1, -2, -3...)。允许重复:列表中的元素可以重复出现。压缩列表(ziplist)
2024-09-28 15:26:06
1735
原创 Redis哈希类型详解:从基础命令到实际应用
哈希类型在 Redis 中是一种特殊的键值对结构,它的值本身又是一个键值对集合。你可以把它想象成一个小型的数据库表,其中每个键代表一条记录,而每条记录包含多个 field 和对应的 value。user:1可以作为一个键,表示用户ID为1的信息。在这个键下,可以有多个字段如nameagecity等,每个字段都有对应的值。
2024-09-25 19:43:34
738
原创 Redis 字符串类型的典型应用场景
Redis 的字符串类型在多种场景下都非常有用,包括但不仅仅缓存、计数、会话管理和验证码处理。我们可以根据业务灵活运用,毕竟技术是为业务服务的!!!
2024-09-22 19:23:59
860
原创 Redis 中 String 字符串类型详解
所有键都是字符串:在 Redis 里,所有的键(key)都是字符串类型。其他数据结构的基础:列表、集合等其他数据结构的元素也都是字符串类型。值的多样性:字符串类型的值可以是普通的文本、JSON 或 XML 格式的字符串、数字(整数或浮点数),甚至是二进制数据(如图片、音频、视频等)。最大长度限制:一个字符串的最大长度不能超过 512 MB。字符集编码:Redis 内部存储字符串时,完全按照二进制流的形式保存,不处理字符集编码问题。客户端传入的命令是什么字符集编码,就存储什么字符集编码。
2024-09-22 18:59:23
1256
原创 Redis 为何如此之快的原因 (个人分析,仅参考)
Redis 和 MySQL 一个是非关系型数据库,一个是关系型数据库。在很多并发式项目中,MySQL一般是作为主数据库来使用,Redis 起到缓存的作用,相比 MySQL ,Oracle , SQL server 它的储存速率极为惊人。因为快的这个特性,全球很多重量级的公司都在使用Redis,所以,可以这么说,熟练使⽤和运维 Redis 已经成为开发运维⼈员的⼀个必备技能。那么光顾着学,有个问题,Redis 为什么这么快?
2024-09-21 21:02:23
662
原创 30分钟从零开始入门 Redis (包含 Redis 安装教程 Ubuntu 版)
Redis 是一种基于键值对(key-value)的 NoSQL 数据库,与其他键值对数据库相比,Redis 支持多种数据结构,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(ZSet)、位图(Bitmaps)、HyperLogLog、地理位置信息(Geo)等。这一特点使得 Redis 成为一个极其灵活的工具,适用于各种应用场景。此外,Redis 通过将所有数据存储在内存中,实现了快速的读写性能,同时支持数据持久化,确保了数据的安全性。本文主要初步认识HTML的
2024-09-18 15:17:15
1356
1
原创 【回溯算法 9】组合总和(medium)(每日一题)
类定义定义一个名为Solution的类来封装解决方案逻辑。成员变量初始化: 用于存储当前的组合路径。: 用于存储所有有效的组合结果。int max: 表示总的元素数量 n。int num: 表示每个组合需要选择的元素数量 k。
2024-09-08 16:16:15
848
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人