- 博客(134)
- 收藏
- 关注
原创 PyTorch 深度学习实践——RNN循环神经网络
本文总结了PyTorch中RNN循环神经网络的原理与实践应用。RNN通过隐藏状态传递时序信息,适合处理序列数据。文章详细解析了RNN的数学公式、多层网络结构、输入输出维度,并对比了独热编码与词嵌入的差异。同时提供了基于MNIST手写数字分类的完整PyTorch实现代码,包括数据预处理、模型定义、训练流程等关键环节。该实现支持CPU/GPU运行,适合初学者快速上手RNN在序列任务中的应用。
2026-03-10 16:30:39
679
原创 PyTorch 深度学习实践——CNN卷积神经网络
本文总结了B站UP主刘二大人《PyTorch深度学习实践》中卷积神经网络的核心知识点。主要内容包括:1)多通道卷积的数学表达式,详细说明了输入输出特征图的维度关系;2)通过图解展示了卷积操作的数值计算过程,包括输入特征图、卷积核、偏置及输出特征图的维度变化;3)介绍了PyTorch实现CNN的代码框架,包含数据准备、网络结构定义(Conv2d、MaxPool2d、Linear等层)、训练和测试流程。最后还提供了GPU版本的代码实现,适合初学者理解卷积神经网络的基本原理和PyTorch实现方法。
2026-03-09 20:01:30
649
原创 PyTorch 深度学习实践——多分类问题
本文总结了PyTorch实现多分类任务的关键要点:1)模型最后一层输出维度等于类别数,通过Softmax转换为概率分布;2)使用CrossEntropyLoss时,输入为原始输出(logits),标签为整数张量无需独热编码;3)训练过程通过梯度下降优化参数,最小化交叉熵损失。文中以MNIST手写数字分类为例,展示了包含数据预处理、模型构建、训练测试的完整代码实现。特别指出Softmax函数在多分类中的核心作用,以及CrossEntropyLoss内置Softmax计算的特性。
2026-03-06 21:30:00
398
原创 PyTorch 深度学习实践——加载数据集
本文总结了PyTorch中加载数据集的核心概念与实践方法。主要内容包括: 核心组件: Dataset抽象类用于定义数据读取逻辑,需实现__len__和__getitem__方法 DataLoader负责批量加载、数据打乱等,关键参数包括batch_size、shuffle、num_workers 两种实践方式: TensorDataset:适用于已转为Tensor格式的数据 自定义Dataset类:适用于加载CSV/图片等本地文件 进阶技巧: 在Dataset中集成数据预处理 使用random_split划
2026-03-06 16:54:21
408
原创 PyTorch 深度学习实践——处理多维特征的输入
本文总结了刘二大人《PyTorch深度学习实践》视频中关于多维特征输入的要点:1)多维线性模型通过权重向量和偏置实现特征变换;2)强调特征维度匹配、数据标准化的重要性;3)演示了一个3层神经网络实现糖尿病数据集预测的完整代码,包含Sigmoid激活函数和BCELoss损失函数。关键点包括神经网络的层级结构设计(8→6→4→1维变换)、Sigmoid的不同调用方式区别,以及模型训练过程中需要注意的维度匹配和泛化能力问题。
2026-03-06 16:45:00
347
原创 PyTorch 深度学习实践——逻辑斯蒂回归
摘要:本文总结了B站UP主刘二大人《PyTorch深度学习实践》中逻辑斯蒂回归的核心知识点。逻辑斯蒂回归通过在线性模型后添加Sigmoid激活函数实现二分类,使用交叉熵损失函数优化模型。文章详细讲解了模型结构、损失计算和反向传播过程,并提供了完整的PyTorch实现代码,包括数据生成、模型定义、训练流程和评估方法。关键点包括Sigmoid函数的作用、BCE损失的计算以及梯度下降优化过程。该模型在模拟数据上可达到接近100%的准确率,验证了其有效性。
2026-03-06 12:00:00
833
原创 PyTorch 深度学习实践——线性回归
本文总结了B站UP主刘二大人《PyTorch深度学习实践》中线性回归的核心知识点。线性回归模型通过y=wx+b拟合数据关系,使用均方误差(MSE)作为损失函数。训练过程包括前向传播计算预测值,反向传播通过链式法则计算梯度,并使用梯度下降优化参数。文章提供了完整的PyTorch实现代码,包括数据生成、模型定义、训练过程和结果分析。代码展示了nn.Linear、优化器设置和自动梯度计算等关键功能,最终模型参数接近真实值3和2,验证了线性回归的有效性。
2026-03-06 09:15:00
407
原创 PyTorch 深度学习实践——反向传播
本文总结了B站UP主刘二大人《PyTorch深度学习实践》视频中关于反向传播的核心知识点。反向传播是深度学习训练的核心算法,通过链式法则高效计算各层参数的梯度,为参数更新提供依据。文章详细解析了反向传播的数学原理、实现机制和在PyTorch中的具体应用,包括Tensor数据类型、梯度计算、backward()方法执行逻辑等关键概念。最后附上视频中的Python代码实现,展示了如何在实际训练中使用反向传播进行参数优化。
2026-03-06 08:30:00
416
原创 PyTorch 深度学习实践——梯度下降算法
本文总结了PyTorch深度学习中的梯度下降算法要点:梯度下降通过计算损失函数对参数的偏导数(梯度),沿负梯度方向更新参数以最小化损失函数。学习率控制参数更新步长。相比穷举法,梯度下降能高效缩小参数搜索范围。文中提供了梯度下降和随机梯度下降的Python实现代码,前者批量计算梯度,后者每次使用单个样本更新参数,导致更频繁的梯度更新。两种方法都通过迭代优化权重w,使预测值逐渐接近真实值,并可视化训练过程中的损失变化。
2026-03-05 20:56:02
874
原创 PyTorch 深度学习实践——线性模型
本文介绍了线性模型的基本概念及其在深度学习中的应用。线性模型通过公式y=wx+b描述输入特征(x)与输出结果(y)之间的线性关系,其中w为权重,b为偏置。模型的核心目标是找到最优参数w和b,使预测值与真实值的均方误差(MSE)最小化。文中提供了一个简单的Python实现示例,通过穷举法计算不同w值对应的MSE,并可视化展示误差随参数变化的曲线。该示例使用房屋面积预测房价的案例,直观展示了线性模型的训练过程。
2026-03-05 20:42:27
471
原创 RabbitMQ消息分发详解:从默认轮询到智能负载均衡
RabbitMQ是一款基于AMQP协议的消息队列系统,其核心价值在于高效分发消息。消息分发指队列将消息按预设策略投递给多个消费者,确保每条消息仅由一个消费者处理,支持轮询和公平分发两种策略。轮询策略简单但可能导致资源不均,适用于消费者能力相近的场景;公平分发则通过basicQos限制未确认消息数,实现按需分配,适合处理能力差异大的高并发场景。Spring Boot中可通过配置prefetch参数实现公平分发,提升系统吞吐量和资源利用率。典型应用包括秒杀订单处理、日志收集和任务调度等场景。
2025-10-29 09:08:44
1250
原创 RabbitMQ事务机制详解
RabbitMQ事务机制为分布式系统提供消息原子性保障,确保关键业务场景下的数据一致性。其核心在于通过事务命令控制消息的发送与接收,支持事务开启、提交和回滚操作,适用于金融支付、数据同步等高要求场景。Spring Boot通过RabbitTransactionManager和@Transactional注解简化了事务实现,开发者需配置事务管理器并启用信道事务支持。典型应用如订单创建与库存扣减消息的原子性操作,任何步骤失败均可回滚,避免数据不一致。该方案虽牺牲部分性能,但为关键业务提供了可靠保障。
2025-10-28 17:29:48
917
原创 RabbitMQ延迟队列详解
本文介绍了RabbitMQ实现延迟队列的两种方案及其核心概念。延迟队列是一种特殊的消息队列,允许消息在预设延迟时间后才被投递和处理,适用于电商订单、用户运营等场景。两种主要实现方案包括:1)基于TTL和死信队列的原生特性组合,适用于简单延迟需求;2)官方推荐的延迟插件方案,通过x-delayed-message交换机实现更精准的延迟投递,解决了原生方案的消息顺序问题。文章详细对比了两种方案的优缺点,并提供了基于Spring Boot和RabbitMQ插件的完整实现步骤,包括环境准备、插件安装、代码配置等关键
2025-10-27 21:09:39
1350
原创 RabbitMQ死信队列详解
在RabbitMQ的消息流转过程中,总会出现一些“无法被正常消费”的消息——比如过期未处理的订单、被消费者明确拒绝的异常数据、队列满后无法存储的新消息。如果这些“无效消息”长期堆积在队列中,不仅会占用资源,还可能导致后续消息处理受阻。RabbitMQ的死信队列(Dead Letter Queue,简称DLQ)正是为解决这一问题而生,它能将“死信”统一收集、存储并后续处理,是保障消息可靠性和系统稳定性的核心特性。在深入技术细节前,首先要明确两个关键定义,这是理解死信队列的基础。
2025-10-27 20:53:48
1257
原创 RabbitMQ TTL机制详解
在消息中间件的应用场景中,经常需要对消息设置“过期时间”——若消息在指定时间内未被消费,则自动被清除或转发至其他队列。RabbitMQ提供的TTL(Time to Live,过期时间)特性恰好满足这一需求,它支持对单个消息和整个队列分别设置过期时间,灵活适配不同业务场景。
2025-10-25 14:55:52
1182
原创 RabbitMQ重试机制详解
RabbitMQ重试机制通过消费者确认机制与Spring AMQP配置实现,能在消息处理失败后自动重新投递,保障消息可靠性。核心触发条件是消费者抛出异常且配置开启重试,参数包括重试次数、间隔等。Spring Boot中配置重试需设置spring.rabbitmq.listener.simple.retry相关参数,并通过声明交换机、队列及绑定关系实现消息路由。生产者发送消息到交换机,消费者监听队列并在异常时触发重试。自动确认模式下,Spring AMQP自动处理Ack/Nack;手动模式需显式调用basic
2025-10-25 09:15:00
1381
原创 RabbitMQ 发送方确认机制详解
RabbitMQ发送方确认机制通过两种模式确保消息可靠投递: Confirm确认模式:解决消息是否成功到达交换机的问题,通过ACK/NACK反馈结果,生产者配置回调处理确认逻辑。 Return退回模式:补充消息到达交换机后路由失败的情况,将无法路由的消息退回给生产者。 实现需结合持久化配置、回调处理(ConfirmCallback)和关联数据(CorrelationData),确保全链路消息可靠性。Spring Boot中通过配置publisher-confirm-type及相关组件实现这一机制。
2025-10-24 20:21:30
957
原创 RabbitMQ 持久性详解
在分布式系统中,RabbitMQ 服务的异常宕机可能导致队列和消息丢失。RabbitMQ 的特性通过将数据持久化到磁盘,确保服务重启后数据不丢失。
2025-10-24 14:15:00
1563
原创 RabbitMQ 高级特性:消息确认机制详解
RabbitMQ的消息确认机制确保分布式系统中消息的可靠传递。核心原理是通过消费者显式通知RabbitMQ消息处理状态,分为自动确认(autoAck=true)和手动确认(autoAck=false)两种模式。手动确认提供三种API:basicAck(成功确认)、basicReject(单条拒绝)和basicNack(批量拒绝)。Spring Boot通过AcknowledgeMode支持三种策略:NONE(无确认)、AUTO(自动确认)和MANUAL(手动确认),适用于不同业务场景。配置示例展示了如何在S
2025-10-24 09:29:38
1523
原创 基于 Spring Boot + RabbitMQ 实现应用通信
本文介绍了基于RabbitMQ实现订单系统与物流系统异步通信的架构设计。通过Spring Boot集成RabbitMQ,订单系统作为生产者发送下单消息到"order.create"队列,物流系统作为消费者监听队列处理发货流程。文章详细说明了环境配置、队列声明、消息发送与监听等实现步骤,并提供了代码示例和验证方法。该方案有效降低了系统耦合度,实现了订单与物流服务的解耦,确保系统间可靠通信。
2025-10-24 09:00:00
1137
原创 Spring Boot 整合 RabbitMQ :四大核心模式解析
Spring Boot整合RabbitMQ简化了消息队列开发,通过spring-boot-starter-amqp自动配置连接和核心组件。本文介绍了四种常用模式:工作队列(多消费者负载均衡)、发布订阅(消息广播)、路由(精确匹配)和通配符(灵活筛选)。实现步骤包括引入依赖、配置连接信息,以及通过RabbitTemplate发送消息和@RabbitListener监听队列。工作队列模式示例展示了多消费者轮询处理任务,发布订阅模式则通过fanout交换机实现消息广播。这些模式覆盖了大多数异步消息处理场景。
2025-10-23 21:42:51
1748
1
原创 RabbitMQ 七种工作模式全解析
RabbitMQ七种工作模式解析:从简单通信到复杂路由 摘要:RabbitMQ作为主流消息中间件,提供七种经典工作模式,核心差异在于交换机类型和路由规则。本文重点介绍简单模式和工作队列模式:简单模式实现点对点通信,无需交换机;工作队列模式扩展为多消费者竞争消费,实现任务负载均衡。两种模式均使用默认交换机,适用于异步任务处理场景,如邮件通知、短信发送等负载场景。文章通过Java代码示例演示了两种模式的具体实现方式,包括生产者发送消息和消费者接收消息的核心流程。
2025-10-21 22:09:28
1409
原创 RabbitMQ 快速入门:从环境到代码,3步实现消息收发
本文介绍了Java项目中操作RabbitMQ的基本流程,包括生产者发送消息和消费者接收消息的实现。主要内容:1)引入官方amqp-client依赖;2)生产者通过ConnectionFactory建立连接,创建Channel并声明队列后发送消息;3)消费者同样建立连接后声明队列,通过DefaultConsumer实现回调处理消息。关键点包括:端口开放、虚拟主机与用户权限配置、队列声明幂等性、消息自动确认机制等。消费者通常以监听模式持续运行,实际生产环境中不立即关闭资源。
2025-10-20 13:00:00
786
原创 RabbitMQ 核心概念解析
RabbitMQ是一个基于生产者-消费者模型的消息中间件,核心功能是接收、存储和转发消息。其架构包含关键组件:生产者发送消息,消费者接收消息;通过Connection和Channel建立通信;Virtual Host提供逻辑隔离;Queue存储消息;Exchange负责路由决策。消息流程为:生产者→Exchange→Queue→消费者。RabbitMQ实现了AMQP协议,确保跨语言兼容性。整体设计实现了系统解耦和高效消息传递,类似邮局的分发机制。
2025-10-20 09:00:00
2017
原创 Redis Java 集成到 Spring Boot
勾选 NoSQL 中的当然, 把 Web 中的Spring Web也勾选⼀下. ⽅便写接⼝进⾏后续测试.与有序集合(ZSet)操作详解(基于 Jedis)
Redis集合(Set)是无序且唯一的字符串集合,支持添加(sadd)、获取(smembers)、判断存在(sismember)等基础操作,以及删除(srem)、数量统计(scard)等功能。集合支持随机操作(srandmember/spop)和集合运算(交集sinter/并集sunion/差集sdiff),适用于标签系统等场景。有序集合(ZSet)通过分数(score)排序元素,支持添加(zadd)、获取分数(zscore)等操作,可按排名(zrange/zrevrange)或分数范围(zrangeByS
2025-10-18 12:00:00
1310
原创 Redis 哈希表(Hash)操作详解(基于 Jedis)
Redis的Hash类型适合存储对象类数据(如用户信息、商品属性等),支持字段级操作。核心功能包括:设置/获取字段值(hset/hget/hgetAll)、判断字段存在(hexists)、删除字段(hdel)、获取字段数量(hlen)、批量操作(hkeys/hvals)和数值增减(hincrBy)。主要应用于对象存储、统计计数和配置管理等场景,相比String类型更节省空间且支持字段级更新。Jedis客户端提供了完整的Hash操作API,可通过Map参数实现批量操作。
2025-10-18 09:00:00
557
原创 Redis 列表(List)操作详解(基于 Jedis)
Redis的List是基于双向链表实现的有序集合,支持两端插入/删除元素,常用于队列、栈等场景。核心操作包括:1)lpush/rpush添加元素;2)lrange获取元素;3)lpop/rpop弹出元素;4)lrem删除指定元素;5)llen获取长度;6)lindex/lset索引操作;7)ltrim截取列表;8)blpop/brpop阻塞操作。典型应用包括消息队列(rpush+blpop)、栈(lpush+lpop)、队列(rpush+lpop)和最新列表(lpush+ltrim)。Jedis客户端提供了
2025-10-18 08:00:00
803
原创 Redis Java 访问集群操作(基于 Jedis)
在 Redis 集群环境中,需使用类替代单机环境的Jedis类进行操作,核心是在初始化时配置所有集群节点地址,其提供的方法与单机Jedis基本一致,均与 Redis 命令对应。
2025-10-17 15:15:11
734
原创 Redis Java 基础键操作和字符串操作(基于 Jedis)
本文介绍了使用Java客户端Jedis操作Redis的基本方法。首先通过Maven引入Jedis依赖,配置端口转发实现本地访问云服务器Redis。然后展示了建立连接、基本键值操作(增删查、过期时间设置、类型判断)以及字符串批量读写功能。关键点包括:使用JedisPool管理连接,try-with-resources确保资源释放,set/get操作键值,exists/del判断和删除键,keys通配符匹配查询,expire/ttl管理过期时间,type判断数据类型,以及mset/mget实现批量操作。这些操作
2025-10-17 10:01:03
797
原创 Redis中渐进式命令scan详解与使用
在 Redis 日常开发中,我们经常需要遍历数据库中的键或集合中的元素。传统的keys命令虽然简单直接,但在数据量较大时会严重阻塞 Redis 服务,甚至引发生产事故。而scan命令作为 Redis 2.8 版本引入的渐进式遍历方案,完美解决了这一痛点。
2025-10-14 20:30:01
1320
原创 Redis中的zset类型命令
向指定有序集合中添加一个或多个成员,每个成员关联一个分数O(k * log(n)),其中 k 是添加成员的个数,n 是当前有序集合的元素个数。
2025-10-14 09:55:22
871
原创 Redis中的set类型命令
本文介绍了Redis集合操作的13个常用命令:1)sadd添加元素;2)srem删除元素;3)scard获取元素个数;4)sismember判断元素是否存在;5)srandmember随机获取元素;6)spop随机移除元素;7)smembers获取所有元素;8-9)sinter/sinterstore计算并存储交集;10-11)sunion/sunionstore计算并存储并集;12-13)sdiff/sdiffstore计算并存储差集。每个命令都注明了格式、功能和时间复杂度,其中基本操作多为O(1),集合
2025-10-13 08:55:30
564
原创 Redis中的hash类型命令
本文介绍了Redis哈希表的14个常用命令,包括hset、hget、hdel等基本操作,以及hlen、hgetall、hmget等批量操作命令。每个命令都列出了格式、功能和时间复杂度,其中单字段操作多为O(1),批量操作时间复杂度取决于字段数量。还包含hexists、hsetnx等条件判断命令,以及hincrby、hincrbyfloat等数值增减命令,全面覆盖了哈希表的各种操作需求。
2025-10-11 17:15:17
526
原创 Redis中的String类型命令
本文介绍了Redis中常用的14个字符串操作命令,包括set/get(设置/获取键值)、mset/mget(批量操作)、incr/decr(数值增减)、append(字符串追加)、strlen(获取长度)等。所有命令均标注了格式、功能说明和时间复杂度,其中大部分操作的时间复杂度为O(1),适用于高性能场景。这些命令覆盖了字符串数据的增删改查和数值运算等基本操作,是Redis基础功能的重要组成部分。
2025-10-10 19:12:27
456
原创 Linux中使用redis的常用命令
本文介绍了Redis的6个基本全局命令:1)KEYS命令通过模式匹配查找key;2)EXISTS检查key是否存在;3)DEL删除指定key;4)EXPIRE设置key过期时间(秒);5)TTL查看key剩余过期时间;6)TYPE返回key数据类型。每个命令都包含语法说明、时间复杂度、返回值及示例演示,涵盖了key的基本操作如查找、删除、过期时间设置和类型查询等功能。这些命令是Redis基础操作的重要组成部分。
2025-09-29 20:27:36
590
原创 Linux常用命令
本文介绍了15个常用Linux命令及其功能: ls - 列出目录内容 pwd - 显示当前目录 cd - 切换目录 touch - 创建文件或修改时间戳 cat - 查看文件内容 mkdir - 创建目录 rm - 删除文件/目录(警告不要使用rm -rf /) cp - 复制文件/目录 mv - 移动或重命名文件 tail - 查看文件末尾内容 vim/vi - 文本编辑器 grep - 文本搜索 ps - 查看进程 netstat - 网络状态查看 管道(|) - 连接多个命令 每个命令都列举了常用选项
2025-09-26 15:32:11
1080
原创 使用selenium编写web自动化测试脚本
本文介绍了Selenium Web自动化测试的基本实现原理和使用方法。主要内容包括:1) 通过WebDriverManager自动管理浏览器驱动;2) 使用Selenium Java库编写测试脚本;3) 详细解析了浏览器、驱动程序和Selenium脚本的交互机制,说明自动化操作如何通过HTTP请求在三者之间传递执行。文章还提供了百度搜索的代码示例,展示了从打开浏览器到执行搜索的完整流程,并解释了驱动程序的中间角色作用。
2025-09-24 12:50:45
567
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅