自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RabbitMQ学习—day8—RabbitMQ 其他知识点

当RabbitMQ需要释放内存的时候,会将内存中的消息换页至磁盘中,这个操作会耗费较长的时间,也会阻塞队列的操作,进而无法接收新的消息。举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱了,流水记录也变成了两条。,而在消费者消费到相应的消息时才会被加载到内存中,它的一个重要的设计目标是能够支持更长的队列,即支持更多的消息存储。Redis原子性(推荐)

2025-02-24 16:37:38 796

原创 RabbitMQ学习—day7—发布确认高级

在生产环境中由于一些不明原因,导致 rabbitmq重启,在RabbitMQ重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行RabbitMQ的消息可靠投递呢?

2025-02-24 15:35:02 870

原创 DeepSeek从入门到精通

1_DeepSeek从入门到精通 (1).pdf官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘123云盘为您提供1_DeepSeek从入门到精通 (1).pdf最新版正式版官方版绿色版下载,1_DeepSeek从入门到精通 (1).pdf安卓版手机版apk免费下载安装到手机,支持电脑端一键快捷安装提取码:luck觉醒学院的DeepSeek从入门到精通教程是一套系统化的AI工具学习资源,涵盖基础操作、核心功能、实战案例及高阶应用。

2025-02-23 21:57:20 963

原创 RabbitMQ学习—day6—springboot整合

前一小节我们介绍了死信队列,刚刚又介绍了 TTL,至此利用 RabbitMQ 实现延时队列的两大要素已经集齐,接下来只需要将它们进行融合,再加入一点点调味料,延时队列就可以新鲜出炉了。想想看,延时队列,不就是想要消息延迟多久被处理吗,TTL 则刚好能让消息在延迟多久之后成为死信,另一方面,成为死信的消息都会被投递到死信队列里,这样只需要消费者一直消费死信队列里的消息就完事了,因为里面的消息都是希望被立即处理的消息。

2025-02-23 21:25:34 1527

原创 RabbitMQ学习—day6—死信队列与延迟队列

1.1 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到queue 里了,consumer 从 queue 取出消息 进行消费,但某些时候由于特定的原因。效果:先启动消费者01,让交换机和队列创建,再关闭消费者01,启动生产者,10条消息被传送到NORMAL_QUEUE,然后被传送到DEAD_QUEUE,此时启动消费者02,消息全被接收。生产者Producer取消过期时间。

2025-02-23 15:40:02 1126

原创 RabbitMQ学习—day5—交换机

介绍生产者生产的消息从不会直接发送到队列。实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中。相反,生产者只能将消息发送到交换机(exchange),交换机工作的内容非常简单,一方面它接收来自生产者的消息,另一方面将它们推入队列。交换机必须确切知道如何处理收到的消息。是应该把这些消息放到特定队列还是说把他们到许多队列中还是说应该丢弃它们。这就的由交换机的类型来决定。

2025-02-23 12:11:26 1072

原创 RabbitMQ学习—day4—持久化与发布

单个确认发布方式非常慢,与单个等待确认消息相比,先发布一批消息然后一起确认可以极大地提高吞吐量,当然这种方式的缺点就是:当发生故障导致发布出现问题时,不知道是哪个消息出问题了,我们必须将整个批处理保存在内存中,以记录重要的信息而后重新发布消息。,因为如果没有确认发布的消息就会阻塞所有后续消息的发布,这种方式最多提供每秒不超过数百条发布消息的吞吐量。方法是浅拷贝,所以清除了缓存区,相当于清除了内容的地址,也就清除了队列的确认的消息。的方式,也就是发布一个消息之后只有它被确认发布,后续的消息才能继续发布,

2025-02-22 22:28:25 936

原创 RabbitMQ学习—day3—简单案例

一旦数量达到配置的数量, RabbitMQ 将停止在通道上传递更多消息,除非至少有一个未处理的消息被确认,例如,假设在通道上有未确认的消息 5、6、7,8,并且通道的预取计数设置为 4,此时RabbitMQ 将不会在该通道上再传递任何消息,除非至少有一个未应答的消息被 ack。在这种情况下,突然有个消费者挂掉了,我们将丢失正在处理的消息。预取值为 1 是最保守的。,当然这样有可能使得消费者这边由于接收太多还来不及处理的消息,导致这些消息的积压,最终使 得内存耗尽,最终这些消费者线程被操作系统杀死,

2025-02-22 16:04:59 766

原创 RabbitMQ学习—day2—安装

访问 http://(本机ip或服务器ip):15672 ,用默认账号密码(guest)登录,出现权限问题。官网:https://www.erlang-solutions.com/downloads/默认情况只能在 localhost 本机下访问,所以需要添加一个远程登录的用户。默认情况下,是没有安装web端的客户端插件,需要安装才可以生效。关闭应用的命令为:rabbitmqctl stop_app。如果网站无法访问的话,记得开端口的防火墙,服务器的安全组等。再次登录,用 admin 用户。

2025-02-10 11:56:22 1136

原创 RabbitMQ学习—day1—相关概念

MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常 见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不 用依赖其他服务。​Broker接收和分发消息的应用,RabbitMQ Server 就是 Message Broker。

2025-02-10 11:21:40 953

原创 一篇文章带你急速入门docker

docker-cli就是操控docker Daemon的命令行,通过命令来构建或启动docker镜像Build(构建):通过docker build 命令将软件构建自己的软件包Share(分享):通过docker pull 命令拉取别人分享的镜像,docker push 将自己的应用推送到应用市场Run(运行):通过docker run 命令运行应用名词解释:镜像:就是软件包容器:用软件包启动起来的应用,每一个运行中的应用称为一个容器。

2025-02-08 14:38:41 1031

原创 Leetcode 每日一题69.x的平方根

简单题{x的平方根}

2024-12-16 13:58:39 1382

原创 Leetcode 每日一题66.加一

🌈🌈🌈今天给大家分享的是:leetcode简单题{加一}

2024-12-15 15:15:15 395

原创 简易记事本项目—基于SSM+Vue前后端分离

Spring:提供全面的IoC和AOP支持,简化项目中的对象管理。SpringMVC:作为表现层框架,处理HTTP请求和响应。MyBatis:ORM框架,简化数据库操作。Vue:前端框架,构建用户界面。ECharts:数据可视化库,用于图表展示。Element-Plus:基于Vue的组件库,提供丰富的UI组件。简易记事本项目是一个功能全面的在线记事工具,它包括用户注册、用户登录和退出、事件分类和事件管理四大核心功能。

2024-12-14 21:24:58 2014 12

原创 如何打造优秀的Java领域技术文档

在Java领域,技术文档是开发者之间沟通的桥梁,是知识传递的媒介,也是项目成功的关键因素。一份优秀的技术文档能够帮助团队成员快速理解项目结构,维护和扩展代码,同时也是新成员快速上手的重要资料。本文将带你逐步了解如何编写高质量的Java技术文档,并提供一些实用的技巧和示例。

2024-12-13 17:23:12 369

原创 Leetcode 每日一题9.回文数

给定一个整数 ,我们需要判断它是否是一个回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文数,而 123 不是。不将整数转为字符串,解决这个问题。要判断一个整数是否为回文数,我们可以采用两种方法:这种方法简单直观,但不符合进阶挑战的要求。以下是使用字符串转换法的代码实现:java数学方法这种方法不需要将整数转换为字符串,而是通过数学运算来实现。以下是使用数学方法的代码实现:java算法解释 负数和以0结尾的非0数不是回文数:首先,

2024-12-13 17:09:49 679

原创 什么是线程安全

线程安全是指在多线程环境中,当多个线程访问共享资源时,能够保证程序执行的正确性。如果一个代码片段在多线程下执行的结果与单线程下执行的结果相同,那么我们称这段代码是线程安全的。

2024-12-12 18:16:43 1128

原创 Leetcode 每日一题 70.爬楼梯

这个问题展示了动态规划的基本思想,即通过解决子问题并将结果存储起来,避免重复计算,从而提高算法的效率。通过这种方法,我们可以有效地解决爬楼梯问题。

2024-12-12 14:15:53 1098

原创 告诉你如何用springboot调用python脚本

在现代软件开发中,有时我们需要在 Java 应用中调用外部脚本,比如 Python 脚本。Spring Boot 提供了灵活的方式来集成这些外部脚本。本文将详细介绍如何在 Spring Boot 应用中调用 Python 脚本,包括两种不同的方法:使用 Java 的类和使用 Apache Commons Exec 库。

2024-12-11 20:33:54 1826

原创 Leetcode 每日一题 219.存在重复元素 II

这个问题是一个典型的使用哈希表解决的问题,它考察了我们对哈希表操作的理解和应用。通过维护一个滑动窗口内的元素集合,我们可以有效地检查是否存在满足条件的重复元素。这种方法简洁且高效,是解决这类问题的首选方法。

2024-12-11 20:20:04 1128

原创 解决前后端分离跨域产生的session丢失问题

现在大部分项目都采用的前后端分离,比如后端用spring boot,SSM ,前端用vue等。那么就有一个问题存在,一般用户登录过后,后面的操作会根据当前登录的用户id进行操作,所以说,我们需要将当前用户的信息(或者说id)进行存储想象一下,你去了一个图书馆,每次你进去,图书管理员会给你一个专属的储物柜,你可以把你的东西放进去。这个储物柜就像是你的“Session”。当你需要借书或者还书时,你只需要出示你的储物柜钥匙(Session ID),图书管理员就能帮你处理事务,而不需要每次都重新登记你的信息。

2024-12-10 22:05:31 2684

原创 Leetcode 每日一题 202.快乐数

如果新生成的数已经在哈希集合中,那么我们可以确定这个数不是快乐数,因为它已经进入了循环。在最坏情况下,这个算法的时间复杂度是 O(k),其中 k 是快乐数序列的长度。对于非快乐数,时间复杂度取决于循环的长度,但在实际应用中,这个循环通常不会太长。通过使用哈希集合来记录已经出现过的数,我们可以有效地判断一个数是否为快乐数。:我们使用了一个哈希集合来存储已经出现过的数,因此空间复杂度是 O(k),其中 k 是不同数的数量。:这个方法用于计算给定数的下一个数,即每个位置上的数字的平方和。:这是主要的算法实现。

2024-12-10 20:31:07 804

原创 Leetcode 每日一题 1.两数之和

我们可以使用哈希表(HashMap)来解决这个问题。哈希表的键(Key)是数组中的元素,值(Value)是该元素在数组中的索引。这样,我们可以在遍历数组的同时,检查当前元素的补数(即。,请你找出数组中和为目标值的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。通过使用哈希表,我们可以高效地解决两数之和问题。这种方法的时间复杂度和空间复杂度都是线性的,适合处理大规模数据集。)是否已经在哈希表中。如果在,我们就找到了一对和为目标值的元素,并返回它们的索引。

2024-12-09 15:35:46 1075

原创 Spring事务管理

事务是一系列的动作,一旦其中有一个动作出现错误,必须全部回滚,系统将事务中对数据库的所有已完成的操作全部撤消,滚回到事务开始的状态,避免出现由于数据不一致而导致的接下来一系列的错误。声明式事务管理有两种常用的方式,一种是基于tx和aop命名空间的xml配置文件,一种是基于@Transactional注解,随着Spring和Java的版本越来越高,大家越趋向于使用注解的方式。3.隔离性(Isolation)并发事务执行之间无影响,在一个事务内部的操作对其他事务是不产生影响,这需要事务隔离级别来指定隔离性。

2024-12-09 11:41:40 923 1

原创 解决ThreadLocal在项目中的线程数据共享问题

是 Java 提供的一个用于创建线程局部变量的类。通过,每个线程可以拥有自己的变量副本,这意味着在多线程环境中,每个线程可以独立地改变自己的副本,而不会影响其他线程中的副本。

2024-12-08 20:21:35 960

原创 Leetcode 每日一题 242.有效的字母异位词

虽然排序的方法简单直观,但在某些情况下可能不是最优解。我们可以通过使用哈希表来统计每个字符的出现次数,这样可以将时间复杂度降低到。字母异位词指的是两个字符串包含相同的字符,并且每个字符出现的次数也相同。通过这种方式,我们能够更高效地判断两个字符串是否为字母异位词。,我们需要编写一个函数来判断。

2024-12-08 15:28:29 742

原创 一篇文章带你搞懂POJO、JavaBean、VO、DTO和BO的区别及作用

不同的库有不同的特点和适用场景。Apache Commons BeanUtils和Spring BeanUtils适合简单的对象属性拷贝,而ModelMapper提供了更复杂的映射功能。在选择库时,需要考虑项目的具体需求和性能要求。

2024-12-07 20:11:42 891

原创 Leetcode 每日一题 56.合并区间

合并区间问题是一个经典的算法问题,它考察了对数组操作和排序算法的理解和应用。理解问题:首先要清楚地理解问题的要求,即合并所有重叠的区间,并确保合并后的区间覆盖所有原始区间。明确输入和输出的格式。排序:大多数情况下,解决合并区间问题的第一步是对区间进行排序。通常根据区间的起始位置进行排序,这样可以使得重叠的区间在数组中相邻,便于后续处理。遍历合并:排序完成后,遍历排序后的区间数组,使用一个额外的数据结构(如列表)来存储合并后的区间。对于每个区间,判断它是否与前一个合并区间重叠。

2024-12-07 15:43:30 831

原创 Leetcode 每日一题 128.最长连续序列

两种解法都利用了 HashSet 或 HashMap 来减少查找的时间复杂度,使得整体的时间复杂度为 O(n)。HashSet 版的解法更为简洁,而 HashMap 版的解法则提供了一种不同的思路。

2024-12-06 22:28:06 932

原创 SpringMVC启动报错“java.lang.ClassNotFoundException: org.springframework.web. servlet.DispatcherServlet“

然后选中Artifacts,点开WEB-INF的lib目录下,发现空空如也(没有lib就创建一个),原来tomcat的部署文件下少了jar包。今天在整合ssm的时候,启动项目时,发现输入url进不到controller里面,在tomcat日志中看见了这样的报错。.web.servlet.DispatcherServlet",但是,事实上这里的配置是正确的。选中一个后ctrl + a选中全部,然后放到默认位置,会自动添加到WEB-INF的lib目录下。找了好久,发现问题出在tomcat的部署的文件夹中。

2024-12-06 08:00:00 661 1

原创 从0开始用Cursor搭建一个校园招聘网站后台

通过 cursor 工具的助力,我们成功搭建起了管理系统页面的基本框架与核心功能模块。cursor 以其智能的代码生成与辅助编辑能力,大大提高了开发效率,让原本复杂繁琐的页面搭建工作变得更加流畅与高效。然而,这仅仅是一个开端,在后续的完善过程中,仍需深入关注用户体验的优化、数据交互的精准性以及系统的稳定性与安全性。不断地根据实际需求进行调整与优化,才能使这个管理系统页面在实际应用场景中发挥出最大的价值,真正成为助力业务高效运转、管理决策精准化的有力工具,为数字化管理的推进贡献坚实力量。

2024-12-05 17:07:15 1658

原创 Leetcode 每日一题 49.字母异位词分组

通过将每个字符串的字母排序,我们可以有效地识别并分组字母异位词。字符串的排序是基于字符的Unicode值进行的,这意味着字符串会按照从第一个字符开始的字典顺序进行排序。解决这个问题的关键在于识别哪些字符串是字母异位词。由于字母异位词的字母种类和数量完全相同,我们可以通过对字符串中的字母进行排序,然后比较排序后的字符串是否相同来判断两个字符串是否为字母异位词。给定一个字符串数组,需要将其中的字母异位词分组。字母异位词是指通过重新排列源单词的所有字母得到的新单词。要求可以按任意顺序返回结果列表。

2024-12-05 15:46:45 493

原创 Java异常处理:从try-catch-finally到全局异常处理

在 Java 的世界里,我们拥有创造自定义异常的强大能力,通过继承 java.lang.Exception 或 java.lang.RuntimeException 这两大基类,便能打造出契合特定业务场景的异常类型。自定义异常宛如一把精准的手术刀,能够更加清晰、细致地剖析特定的错误状况。自定义检查型异常示例// 自定义一个检查型异常,用于表示特定的业务错误情况自定义运行时异常示例// 自定义一个运行时异常,同样用于特定的错误标识自定义异常的使用场景展示if (!

2024-12-04 17:28:23 468

原创 Leetcode 每日一题 290.单词规律

题目要求判断字符串s与给定的规律pattern是否完全匹配,这里的匹配是一种双向连接的对应关系,即pattern里的每个字母要和s中的每个非空单词一一对应,且反之亦然。同时,题目对pattern和s的长度、字符组成以及s的单词分隔形式等都做了相应限定,明确这些要求是正确解题的基础。

2024-12-04 17:15:25 1058

原创 前端、后端、测试?如何选择

前端开发工程师负责构建用户直接交互的界面,是软件产品与用户之间的桥梁。他们专注于实现网页或应用程序的视觉呈现和用户体验,从页面布局、色彩搭配到交互设计,每一个细节都关乎用户对产品的第一印象和使用感受。一个出色的前端开发者能够将设计师的创意构想精准无误地转化为生动且功能完备的用户界面,让用户在操作过程中感受到便捷、流畅与美观。后端开发人员主要负责处理业务逻辑、数据存储和管理以及服务器端的架构设计与性能优化。他们如同软件系统的幕后英雄,默默支撑着整个应用的运行,确保前端界面能够顺畅地获取和处理数据。

2024-12-03 17:52:59 1664

原创 Leetcode 每日一题 205.同构字符串

通过使用哈希表存储字符之间的映射关系,我们可以有效地判断两个字符串是否是同构的。这种方法的时间复杂度为 O(n),其中 n 是字符串的长度,空间复杂度也为 O(n),用于存储映射关系。这种方法简单且高效,适用于解决同构字符串问题。

2024-12-03 17:40:30 953

原创 整合SSM框架:构建Java Web应用

SSM框架整合指的是Spring、Spring MVC和MyBatis三个开源框架的整合。这种整合方式在Java Web开发中非常流行,因为它提供了强大的数据访问层、灵活的业务逻辑层和简洁的表示层。

2024-12-02 16:37:04 1335 2

原创 Leetcode 每日一题 383.赎金信

通过使用哈希表,我们可以高效地解决这个问题,时间复杂度为线性,空间复杂度为常数。这种方法简单且有效,适用于处理大规模数据。这个问题可以通过使用哈希表(HashMap)来解决。这里的“构成”意味着。中每个字符出现的次数,并检查。中是否有足够的相同字符来构成。

2024-12-02 16:22:09 826

原创 搞懂Java中的引用类型

接口宛如一座灯塔,在 Java 的编程海洋中为众多类指引方向。它是一种完全抽象的类,只定义方法签名而不包含方法体,就像一份详细的契约,规定了实现它的类必须遵循的规则。其他类可以通过实现接口来表明自己具备特定的行为能力。// 定义一个 Movable 接口,代表可移动的对象// 抽象方法,用于表示移动的行为// Car 类实现 Movable 接口,表明汽车具有移动的能力// 私有属性,用于存储汽车的品牌// 构造函数,初始化汽车品牌。

2024-12-01 19:43:43 551

原创 2024年计算机能力挑战赛java国赛

说起来也很巧,决赛的题目有2道题我最近刷leetcode的时候做过。决赛没有选择题,有5道编程题,在2个小时内解出,感觉总体来说,还是比较简单。

2024-12-01 19:35:00 1106 3

空空如也

空空如也

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

TA关注的人

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