- 博客(62)
- 资源 (2)
- 收藏
- 关注
原创 AOP 实战:从代码解耦到日志切面的全流程解析
AOP 通过将日志记录、事务管理等横切逻辑抽象为切面,实现业务代码与公共逻辑的分离。本文从传统开发中重复代码泛滥的困境出发,解析 AOP 核心概念(切点、通知、代理机制)与执行流程,通过日志切面实战案例,展示如何用@Before/@Around等注解精准拦截 Controller/Service 层方法,实现调用日志记录、性能监控与异常处理。这种非侵入式编程范式,既避免了业务代码臃肿,又通过关注点分离提升系统可维护性,为企业级应用中横切逻辑的统一管理提供了系统性解决方案。
2025-06-23 14:59:08
902
原创 JDK17 与 JDK8 共存指南:环境配置、版本切换全流程详解
本文介绍 JDK17 与 JDK8 共存方法。先从 Oracle 官网下载 JDK17,安装时记好路径以便配置环境变量。环境变量配置需删除自动添加的路径,添加新路径并设置两个不同的 JAVA_HOME 变量区分版本,通过修改变量值切换版本。在 IDEA 中切换 JDK 版本,以 Gradle 项目为例,进入项目结构添加 JDK 安装目录,在 Modules 中设置 Language Level 和 Module SDK 为对应版本,Gradle 项目还需在 Settings 里设置 Gradle JVM。
2025-06-12 11:29:31
655
原创 代理模式:AOP 切面编程的底层实现基础
代理模式是通过代理对象控制目标对象访问的结构型设计模式,分静态与动态代理。静态代理编译时手动编写代理类,适合简单场景,虽实现简单但代码冗余;动态代理运行时生成代理类,借助 JDK、CGLIB 等实现,能非侵入式添加日志、权限等横切逻辑,常用于 AOP、RPC 等场景。其核心是 “控制访问” 与 “责任分离”,体现 “封装变化” 思想,让业务逻辑与增强逻辑解耦,是 Spring 等框架的底层技术。
2025-06-11 11:30:44
465
原创 Kafka入门-监控与可视化
本文详细介绍了Kafka监控系统的搭建过程,主要包括MySQL安装、Kafka环境准备和Kafka-Eagle安装三个步骤。首先通过yum安装MySQL并完成密码设置和远程访问配置;然后修改Kafka的启动参数,增加JVM配置和JMX端口;最后安装Kafka-Eagle可视化监控工具,配置Zookeeper集群信息和MySQL数据库连接,通过浏览器即可查看Kafka集群的详细信息。这套监控方案可实现Kafka集群的图形化管理和实时监控。
2025-06-09 15:29:20
469
原创 Kafka入门-Broker以及文件存储机制
afka Broker 是集群核心节点,通过 Zookeeper 注册元数据(如 Broker ID、分区状态)。节点服役 / 退役需通过kafka-reassign-partitions.sh工具重新分配分区副本,确保负载均衡。副本机制中,Leader 负责数据读写,Follower 同步数据,ISR 集合维护可用副本,超时副本被标记为 OSR。分区数据物理存储为多个 Segment 文件(含.log/.index/.timeindex),通过稀疏索引加速定位,默认按时间(7 天)或大小删除过期日志。
2025-06-09 15:21:42
874
原创 Kafka入门-消费者
Kafka 消费者采用拉取(pull)模式获取数据,通过消费者组(group.id 相同)实现分区负载均衡,单个分区仅由组内一个消费者消费。Java 客户端需配置集群地址、反序列化器及消费者组 ID,支持订阅主题或指定分区消费。分区分配策略包括 Range、RoundRobin、Sticky 等,再平衡机制在消费者增减时重新分配分区。Offset 位移默认存储于系统主题 _consumer_offsets,支持自动提交(定时)或手动提交(同步 / 异步),可通过 seek() 方法指定 offset 或时间
2025-06-05 11:34:55
969
原创 Kafka入门-生产者
本文深入讲解 Kafka 生产者的核心机制与编程实践。首先对比异步与同步发送 API,演示普通异步、带回调异步及同步发送的代码实现。随后解析分区策略:默认策略按分区指定、Key 哈希或黏性分区路由;自定义分区器可根据消息内容(如是否包含 "aha")自定义路由规则。通过调整 batch.size(默认 16KB)、linger.ms(默认 0ms)、压缩类型(如 snappy)及缓冲区大小(默认 32MB)可提升吞吐量。
2025-06-05 11:28:11
870
原创 Kafka入门- 基础命令操作指南
本文聚焦 Kafka 基础命令使用,涵盖主题管理、生产者与消费者操作及常见问题解决。主题操作包括通过--bootstrap-server连接 Broker,使用--create、--delete等参数创建、删除、修改主题,设置分区数与副本(需注意分区数仅可增不可减),通过--describe查看详细信息。生产者与消费者可通过kafka-console-producer.sh和kafka-console-consumer.sh连接主题,消费者加--from-beginning可接收历史消息。
2025-06-04 16:24:27
538
原创 Kafka入门-集群基础环境搭建(JDK/Hadoop 部署 + 虚拟机配置 + SSH 免密+Kafka安装启动)
本文聚焦 Kafka 集群基础环境搭建。内容包括创建 3 台 CentOS 虚拟机并配置静态 IP 与主机名,通过 Oracle 镜像安装 JDK 8、华为云镜像安装 Hadoop 3.1.3(Hadoop 为可选生态依赖),利用 scp、rsync 实现文件拷贝与差异更新,编写 xsync 集群分发脚本提升同步效率,以及通过生成 RSA 密钥对配置 SSH 免密登录实现节点间无密码通信。同时包括安装Kafka及启动
2025-06-04 16:10:12
1570
原创 PyTorch入门-模型训练、常用训练方法、模型验证
本文围绕 PyTorch 现有网络模型的应用与开发展开,以 VGG16 为例,介绍通过trchvision.models加载预训练模型并利用迁移学习适配新任务的方法,如修改或添加分类器层使输出适配 CIFAR-10 的 10 类需求。阐述模型保存与加载的两种方式(整体保存与参数保存),对比其特点。结合 CIFAR-10 演示完整训练流程,涵盖数据集加载、交叉熵损失函数与 SGD 优化器配置、TensorBoard 监控及 GPU 加速设置。最后通过实际图片验证模型分类效果,指出训练轮次不足可能导致识别偏差。
2025-05-28 14:53:57
1615
原创 PyTorch入门-神经网络
本文介绍神经网络及 PyTorch 应用。神经网络由多层神经元组成,通过前向传播计算结果,反向传播调整参数。PyTorch 的 torch.nn 模块可构建网络,包含线性层、卷积层、池化层等,激活函数引入非线性,正则化层减少过拟合。损失函数衡量预测差距,优化器更新参数,如 SGD、Adam。卷积层提取特征,池化层降维,Sequential 模块可快速堆叠网络层。文中还以 CIFAR-10 模型为例,展示构建网络、计算损失、反向传播及优化器调参过程,体现神经网络从构建到训练的完整流程。
2025-05-28 09:22:59
664
1
原创 PyTorch入门-DataLoader
PyTorch 中的 DataLoader 是一个高效的数据加载工具,主要功能包括批处理、随机打乱、多线程加载和数据预处理。它与 Dataset 协同工作,通过调用 Dataset 的 getitem 方法获取数据,并提供批量加载功能以提高训练效率。示例代码展示了如何使用 DataLoader 加载 CIFAR10 测试数据集,并通过 TensorBoard 可视化分组后的图片,其中通过设置 batch_size、shuffle 等参数优化数据加载过程。DataLoader 能够有效提升大型数据集的处理效率
2025-05-27 16:21:25
224
原创 PyTorch入门-torchvision
torchvision是PyTorch的计算机视觉扩展库,提供预训练模型、数据集和图像处理工具。以CIFAR10数据集为例,包含60,000张32x32彩色图像(10类)。通过torchvision.datasets.CIFAR10可下载数据集,使用transforms.ToTensor()将PIL图像转为Tensor格式。代码演示了数据下载、类型转换及TensorBoard可视化过程,展示了如何快速构建视觉项目。该库极大简化了计算机视觉任务的开发流程。
2025-05-27 16:17:25
280
原创 PyTorch入门-Transorforms
本文介绍了计算机视觉中常用的图像变换(transforms)方法,包括调整大小(Resize)、裁剪(Crop)、翻转(Flip)、旋转(Rotate)、归一化(Normalize)、颜色抖动(Color Jitter)和噪声添加(Add Noise)等操作。重点展示了PyTorch中如何使用torchvision.transforms模块实现图像归一化和随机裁剪等变换,并通过TensorBoard可视化处理效果。文章还说明了transforms.Compose的用法,它能将多个图像变换操作组合在一起,简化
2025-05-27 16:07:54
320
原创 PyTorch入门-TensorBoard
TensorBoard是TensorFlow的可视化工具,用于监控和优化机器学习模型训练过程。主要功能包括:可视化训练指标(损失、准确度)、展示模型结构(计算图、层参数)、分析权重/激活分布、支持多媒体数据(图像/音频/文本)展示,以及超参数调优。使用方式为安装后通过SummaryWriter记录数据(标量、图像等),启动TensorBoard服务并在浏览器查看可视化结果。安装命令为pip install tensorboard,运行后可通过http://localhost:6006访问界面,支持自定义日志
2025-05-27 15:57:07
672
原创 PyTorch入门-数据集与DataSet
本文介绍了机器学习中训练集(train)和验证集(val)的作用与特点,阐述了常见的数据集目录结构类型,包括按类别分类和图像-标签分离的两种组织形式。文章详细讲解了PyTorch中Dataset类的功能与实现方法,包括必须重写的__init__、__getitem__和__len__三个核心方法,并提供了一个将蚂蚁和蜜蜂图片分类数据集合并为训练数据集的完整代码示例,展示了如何自定义Dataset类来加载和管理图像数据。
2025-05-27 15:53:16
259
原创 PyTorch入门-安装教程
PyTorch 是一个广泛使用的开源深度学习框架,由 Facebook 的人工智能研究小组开发。它以其动态计算图的特性而闻名,允许用户在运行时灵活地改变网络结构,这使得调试和开发变得更加直观。PyTorch 提供了张量数据结构,类似于 NumPy 数组,但具备在 GPU 上高效计算的能力,同时支持自动微分功能,方便计算梯度,从而简化模型训练过程。其 API 设计简单易用,适合初学者和研究人员,配合丰富的库和工具,如 torchvision、torchtext 和 torchaudio,覆盖了计算机视觉、自然
2024-10-21 11:40:12
242
原创 FastApi SQLAlchemy SQLite
本文介绍了FastAPI的入门知识,并结合SQLAlchemy和SQLite来构建一个简单的Web应用。首先,阐述了FastAPI的基本概念及其安装方法,强调了其高性能和易用性。接着,介绍了如何使用SQLAlchemy作为ORM工具,与SQLite数据库进行交互。文章详细描述了创建数据库模型、设置数据库连接以及实现基本的CRUD(创建、读取、更新和删除)操作的步骤。同时,通过示例代码展示了如何在FastAPI中集成这些功能,使用户能够方便地添加和查询数据。
2024-10-14 10:47:23
1259
原创 Python入门
Python是一种高层次、通用的编程语言,因其简洁易读的语法和强大的功能而广受欢迎。它于1991年由吉多·范罗苏姆(Guido van Rossum)首次发布。
2024-10-14 10:32:25
1287
原创 新的刷题神器-豆包MarsCode!
今天偶然发现一个新的刷题神器`豆包MarsCode` ,它是字节旗下基于豆包大模型打造的智能开发工具,它提供了强大的AI能力,通过代码不全、代码推荐、单测生成等各项能力能够在编程的各个阶段给程序员们提供帮助。除了上述提到的功能之外,`豆包MarsCode`还有一项非常强大的功能——代码练习!
2024-09-11 17:00:21
5926
3
原创 Go语言入门-HelloWorld到变量常量及常用数据类型、输入输出、运算符、特殊字符
GO入门,从Helloworld到变量的定义、常量定义、常用数据类型、数据类型之间的转换、从控制台输入输出、常用运算符、特殊字符
2023-10-30 20:22:58
309
原创 SpringBoot、SpringCloud、SpringCloudAlibaba的版本选择
Spring Boot与Spring Cloud、Spring Cloud Alibaba的版本兼容性关系如下:Spring Boot 3.x系列对应Spring Cloud 2022/2023和Spring Cloud Alibaba 2022.x,需JDK17+;Spring Boot 2.6.x对应Spring Cloud 2021.x和Spring Cloud Alibaba 2021.x,支持JDK8+。官方推荐通过https://start.spring.io/actuator/info获取最新
2023-08-25 14:45:35
2464
原创 Redis入门常用命令
Redis是一个基于内存的键值型非关系型数据库(NoSQL)如果数据涉及安全问题,那么选择SQL进行存储,SQL满足ACID特性。Redis入门命令,常用数据结构命令
2023-07-11 11:56:49
129
原创 RabbitMQ高级特性
在使用RabbitMQ的时候,为了防止消息丢失或者投递失败,RabbitMQ为我们提供了两种方式来控制消息的投递可靠性模式RabbitMQ的消息投递路径为这两个Callback帮助我们实现消息的可靠性投递。消息幂等性、日志监控、集群搭建
2023-03-01 17:55:45
256
原创 项目使用RabbitMQ
异步确认是生产者只需要确保一直发送消息即可,接收消息的broker会返回确认或者未确认,如果消息已被确认,那么生产者就不需要再理会这个消息,如果消息没确认生产者就再次发送消息。手动应答的好处还有批量应答Multiple,比如队列传给信道多个消息5,6,7,8那么当前tag是8,8处理完成之后会批量的应答5,6,7,8也就是全部会收到消息应答。注意:交换机只负责转发消息,不具备存储消息的能力,因此如果没有任何队列与交换机绑定,或者没有符合路由规则的队列,那么消息会丢失。因此缺点明显,发布的速度特别慢。
2023-03-01 17:44:19
556
原创 RabbitMQ的安装
下载与虚拟机版本对应的erlang和rabbitmq-server安装包[https://packagecloud.io/rabbitmq]通过sftp将安装包上传到虚拟机下的 /home/hzp,命令查看是否成功。软件一般安装到 /opt目录下,所以我们先移动安装包到opt目录。安装web界面插件,这样方便我们可视化管理RabbitMQ。访问http://xxxxxx:15672/安装完erlang之后还要安装一个依赖。关闭RabbitMQ,并查看状态。安装rabbitmq。启动RabbitMQ。
2023-03-01 17:34:03
349
原创 什么是RabbitMQ
MQ指的是Message Queue消息队列,遵循FIFO先入先出原则,内部存放的内容为消息,消息队列是一种跨进程的通信机制,用于上下游传递消息。
2023-03-01 17:27:14
128
原创 EasyExcel导出Excel文件
方法一与方法二都使用了EasyExcel进行Excel的导出,区别在于方法一建立了实体类进行Excel的导出,这样的好处是可以直接使用实体类对象进行数据的导出,每一个列和标题都是对应关系。方法二则直接使用了List来导出,每一行数据作为一个list,这样的好处就是可以设置到每一行的每一列。除此之外,方法二还使用了流进行导出,在网页端点击导出Excel按钮发送请求给后端之后,会弹出下载的文件。导入EasyExcel依赖。controller层代码。编写Service层代码。编写ExcelUtil。
2023-03-01 16:22:25
7216
1
原创 Docker安装mysql
容器与容器之间是相互隔离的,容器内部相当于一个完整的Linux系统,这些命令就是为了让容器内部与当前服务器的端口、文件“连接上”。-v /mydata/mysql/data:/var/lib/mysql 将配置文件夹挂载到主机。-v /mydata/mysql/log:/var/log/mysql 将日志文件挂载到主机。-v /mydata/mysql/conf:/etc/mysql 将配置文件夹挂载到主机。查看服务器主机的mydata文件夹(注意,修改了其中的文件,内部容器也会发生变化)
2023-02-19 22:08:05
110
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人