- 博客(85)
- 收藏
- 关注
原创 SVN提交报错“Unable to create pristine install stream“解决方案
这个错误通常会导致提交失败,而且错误信息比较模糊,让人摸不着头脑。
2026-03-13 08:43:36
14
原创 探索Mermaid图:常见类型与示例(附源代码)
在编写技术文档、设计系统或展示流程时,图表往往比文字更直观。而就是一款强大的图表绘制工具,它允许你使用简单的文本描述来生成图表,无需拖拽绘图,特别适合嵌入 Markdown、Wiki 或代码注释中。本文将介绍 Mermaid 支持的几种常见图表类型,展示示例代码及其渲染效果,并说明每种类型可以绘制哪些具体子类型。为了方便你直接复制使用,每个示例图下方都附带了对应的 Mermaid 源代码。
2026-03-05 11:09:45
343
原创 Vue + Nginx + Spring Cloud Gateway 代理 404 问题排查实录
修改请求头中的 Host 为目标地址rewrite- 重写请求路径- 输出代理日志便于调试在多层代理架构中排查问题,关键是要理清请求链路,逐层验证。本次问题的根源是 Nginx 代理配置不完整,通过"直接请求后端服务"的方式快速定位到了问题所在。希望本文能帮助遇到类似问题的开发者少走弯路。
2026-03-04 15:07:59
470
原创 Spring Boot实战:从零构建企业级用户中心系统(八)- 总结与最佳实践
技术版本作用优势2.4.2基础框架简化配置、快速开发5.4.2安全框架认证授权、防护攻击JWT0.9.1Token认证无状态、可扩展3.4.2ORM框架自动CRUD、减少SQLRedis缓存中间件高性能、数据共享MySQL8.0关系型数据库稳定可靠、功能强大整体架构采用经典的分层设计:fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;
2026-02-12 14:30:00
703
原创 Spring Boot实战:从零构建企业级用户中心系统(七)- 数据库设计
本项目使用MySQL 8.0作为关系型数据库,采用InnoDB存储引擎。第三范式(3NF):消除数据冗余,确保数据完整性命名规范:采用小写字母和下划线分隔主键设计:使用自增ID作为主键索引优化:为常用查询字段创建索引逻辑删除:使用标志位实现软删除。
2026-02-11 09:45:00
250
原创 Spring Boot实战:从零构建企业级用户中心系统(六)- 配置类详解
【代码】Spring Boot实战:从零构建企业级用户中心系统(六)- 配置类详解。
2026-02-10 11:00:00
367
原创 Spring Boot实战:从零构建企业级用户中心系统(五)- Controller层与业务逻辑
【代码】Spring Boot实战:从零构建企业级用户中心系统(五)- Controller层与业务逻辑。
2026-02-09 17:45:00
154
原创 Spring Boot实战:从零构建企业级用户中心系统(四)- MyBatis-Plus与数据库交互
MyBatis-Plus是什么?MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。│ MyBatis-Plus 核心功能 ││ 1. CRUD操作:自动生成基础的CRUD方法 ││ 2. 条件构造器:强大的QueryWrapper条件构造 ││ 3. 分页插件:内置分页插件,支持多种数据库 ││ 4. 逻辑删除:优雅实现数据逻辑删除 ││ 5. 自动填充:自动填充公共字段 │。
2026-02-06 16:33:02
407
原创 Spring Boot实战:从零构建企业级用户中心系统(三)- Redis缓存与数据权限
Redis是什么?Redis(Remote Dictionary Server)是一个开源的、高性能的键值存储数据库。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。│ Redis 核心特点 ││ 1. 高性能:内存存储,读写速度极快 ││ 2. 多数据类型:支持字符串、哈希、列表、集合等 ││ 3. 持久化:支持RDB和AOF两种持久化方式 ││ 4. 主从复制:支持主从复制,读写分离 ││ 5. 集群:支持Redis Cluster ││ 6. 事务:支持事务操作 │。
2026-02-06 16:32:00
310
原创 Spring Boot实战:从零构建企业级用户中心系统(二)- Spring Security配置与权限管理、JWT认证机制详解
Spring Security是一个强大的、可定制的身份验证和访问控制框架。│ Spring Security 核心概念 ││ SecurityContext │ 安全上下文,存储当前用户信息 ││ Authentication │ 认证信息 ││ UserDetails │ 用户详情接口 ││ UserDetailsService │ 用户详情服务(加载用户) ││ AccessDecisionManager │ 访问决策管理器 ││ FilterChain │ 过滤器链 │。
2026-02-06 16:27:21
665
原创 Spring Boot实战:从零构建企业级用户中心系统(一)- 项目概述与技术栈介绍
本教程将详细介绍一个完整的用户中心系统的开发过程,包括用户认证、权限管理、数据权限控制等核心功能。
2026-02-06 16:21:21
875
原创 MyBatis OGNL 表达式陷阱:Integer类型字段使用“xxx!= ‘‘”时判断失效
比较,因为这是类型不匹配的比较,容易触发 OGNL 的隐式类型转换问题。不会被添加到 SQL 中。在 OGNL 表达式中,
2026-02-04 15:34:47
223
原创 Spring技术栈演进:从单体应用到微服务架构的全面解析
在Java企业级开发领域,Spring技术栈经历了从单体应用到微服务架构的演进过程。许多开发者对于Spring MVC、Spring Boot、Spring Cloud等概念容易混淆,特别是当Spring Boot项目集成Nacos等组件后,项目的性质界定变得模糊。本文将系统梳理这些概念,并重点分析Spring Boot与Spring Cloud项目的本质区别。
2026-01-27 15:21:36
677
2
原创 Spring Boot + WebSocket超简单实战源码(前后端实时交互)
在现代Web应用中,实时通信已成为必不可少的功能。无论是在线聊天、即时通知,还是实时数据展示,WebSocket技术都能提供高效的解决方案。本文将通过一个完整的实战案例,详细介绍如何使用Spring Boot + WebSocket + STOMP协议实现点对点消息推送功能。STOMP协议为WebSocket提供了消息路由功能,使得消息可以精确地发送到指定的订阅者,特别适合实现点对点消息推送。四、核心实现详解4.1 Maven依赖配置首先在 中添加WebSocket依赖:4.2 WebSocket
2026-01-12 19:02:35
980
原创 基本数据类型和不可变类型,浅拷贝和深拷贝的区别
数据类型浅拷贝效果深拷贝效果是否需要深拷贝基本类型(int, boolean等)值复制值复制❌ 不需要包装类型(Integer, Boolean等)引用复制(不可变)创建新对象❌ 不需要String引用复制(不可变)创建新对象❌ 不需要数组(int[], String[]等)引用复制复制数组内容✅ 需要集合引用复制复制集合内容✅ 需要自定义可变对象引用复制递归复制✅ 需要关键结论对于基本类型和不可变类型,深浅拷贝效果完全相同深拷贝的额外开销主要在处理可变引用类型时。
2025-12-26 08:52:39
538
原创 Maven 项目构建笔记 - 单体应用与简单微服务
单一职责:每个模块职责明确依赖最小化:只引入必要的依赖版本统一:统一管理依赖版本分模块开发:大型单体应用按功能分模块环境隔离:使用profile管理不同环境配置。
2025-12-20 15:30:00
1138
原创 Git 与 SVN 对比详解
最近工作中又用到了SVN,很多年前用过,现在更生疏了,重新梳理下跟Git的区别,相对来说Git比SVN更熟练些,通过Git的一些操作来重新理解SVN的常用操作。
2025-12-15 10:21:56
602
原创 Kafka定理剖析:分区数要大于消费者数
分区数要大于消费者数?答案是:正确,但它是一个“底线”规律,是为了防止资源浪费。在实际架构设计中,我们追求的是一个更优的实践:根据你期望达到的最大消费并发能力来设置分区数,并确保分区数 >= 最大消费者实例数,同时为未来扩展预留一定空间。分区数决定了你消费端并行能力的上限。设置的消费者实例数不应超过这个上限,但可以根据实际负载动态调整(例如在流量低谷时减少实例数以节省资源)。
2025-12-01 14:14:46
950
原创 Feign常用参数详解
1.2 重试配置1.3 日志配置1.4 编码器/解码器1.5 拦截器配置1.6 错误处理2. 完整示例代码2.1 配置文件示例2.2 Feign客户端接口2.3 自定义配置类2.4 降级处理类3. 常见参数搭配使用方案3.1 高可用配置方案3.2 文件上传下载配置3.3 高安全性配置3.4 监控和追踪配置3.5 性能优化配置4. 最佳实践建议超时配置:根据服务特点和网络环境合理设置超时时间重试策略:对于幂等操作可以多尝试几次,非幂等操作要谨慎
2025-11-25 16:48:51
552
原创 Git命令行操作:stash 暂存
popapplydrop使用描述信息便于识别不同的暂存内容git stash save "描述信息"暂存是本地操作,不会推送到远程仓库。
2025-11-24 12:15:00
726
原创 Spring Boot 应用程序启动时执行流程
整个流程从main方法开始,经历了环境准备 -> 容器创建 -> Bean定义加载(自动配置) -> Bean实例化(依赖注入) -> 内嵌服务器启动 -> 运行自定义初始化逻辑等一系列复杂而精密的步骤,最终将一个功能完备的 Spring Boot 应用呈现在我们面前。其中是整个流程的心脏,而自动配置和内嵌服务器是 Spring Boot 两大核心特性的实现关键。
2025-11-19 22:21:05
1172
原创 MQ选型之-Kafka的低延迟和高吞吐量原理剖析
设计原则具体技术解决的问题带来的好处利用顺序 I/O仅追加日志磁盘随机读写慢极高的磁盘吞吐量减少数据拷贝零拷贝CPU 和内存带宽瓶颈低 CPU 占用,高网络吞吐合并小操作生产/消费批处理,数据压缩网络和磁盘 I/O 效率低高吞吐量,节省带宽和存储利用 OS 特性页面缓存,异步刷盘JVM GC 开销,写放大低延迟读写,低 GC 压力实现水平扩展分区机制单机瓶颈高并发,可线性扩展快速数据定位稀疏索引海量数据下查找慢快速消息检索,节省存储。
2025-11-19 21:58:50
856
原创 B+ 树为什么不会退化成链表?
机制作用防止退化表现多路分支(High Fan-out)单节点存大量键树极矮,天然抗退化强制最小填充率(≥50%)节点不能太稀疏避免“瘦高”结构插入分裂(Split)满页自动拆分数据均匀分布删除合并/重分配空页自动回收或均衡维持紧凑平衡✅结论B+ 树通过严格的分裂与合并规则,在任何插入/删除序列下,都能保持平衡、矮胖的结构,绝不会退化成链表。这正是它被选作数据库索引底层结构的根本原因!
2025-11-17 11:29:53
323
原创 使用 Arthas 追踪 CPU 冲高问题
1. 找到高 CPU 的 Java PID(假设是 12345) top # 2. 启动 Arthas java -jar arthas-boot.jar # 3. 选择 12345 进程 # 4. 查看 CPU 最高的 5 个线程 thread -n 5 # 5. 假设输出中线程 ID 为 123,查看其堆栈 thread 123 # 6. 根据堆栈定位问题代码(如死循环、正则回溯、频繁 GC 等)
2025-11-04 16:54:18
449
原创 Redis 分布式锁进阶:跨语言场景下的锁兼容性与一致性保障
elsereturn 0endelsereturn 0endintelsereturn 0endelsereturn 0endelsereturn 0endelsereturn 0end1000elsereturn 0endelsereturn 0endelsereturn 0end"""分布式锁的本质是协议,而非某个客户端的实现。跨语言场景下,必须统一锁结构、加锁/解锁逻辑、续期机制。
2025-11-04 13:55:57
994
原创 Seata在无主键表场景下的潜在风险
Seata 能处理无主键表吗?❌不能!必须有主键重复数据会导致什么?回滚时可能误改/误删其他行,数据错乱Seata 如何保证一致性?通过主键精准定位行,用 undo_log 还原你的表没主键怎么办?立即加上!(自增 ID 或业务唯一键)💡记住:主键不仅是数据库设计的最佳实践,更是分布式事务框架(如 Seata)正确工作的基石。如果正在使用 Seata,请务必检查所有表的主键!
2025-10-28 14:43:12
698
原创 CAP 定理详解
选择特点适用场景代表中间件CP网络故障时宁可不可用,也要数据一致分布式锁、选主、配置中心ZooKeeper, etcd, Nacos(配置)AP网络故障时仍可读写,但可能不一致服务发现、缓存、日志Eureka, Redis, Cassandra, Nacos(服务发现)
2025-10-26 14:45:00
176
原创 Seata TCC模式资源锁定机制与代码示例
Seata TCC 模式在 T 阶段通过开发者预先设计的业务逻辑(如:操作字段或修改资源状态),在一个本地数据库事务中完成对资源的检查和预留。这种方式将数据库层面严格的锁,转变为了业务层面更灵活的“状态锁”,从而实现了高性能的分布式事务控制。
2025-10-23 09:57:59
855
原创 Redis分布式锁经典问题详解:误删、过期、续命,及Redisson看门狗机制
机制说明唯一标识每个锁的 value =,保证线程级唯一自动续期每秒续期一次,延长到条件续期续期前校验 value,避免续别人的锁主动停止unlock() 时立即取消续期任务用户可控若指定leaseTime,则禁用 Watchdog(适用于可预估执行时间的场景)
2025-10-17 14:14:50
1096
原创 Seata分布式事务深度解析笔记
理解业务需求:根据业务特性选择合适的事务模式设计事务边界:合理划分分布式事务的范围保证幂等性:特别是TCC的Confirm/Cancel方法完善监控:分布式事务的可见性很重要混合架构:根据场景灵活使用AT+TCC组合。
2025-10-15 21:30:00
800
原创 Netty 网络编程框架快速上手(Java)
事件循环组,负责处理所有的 I/O 事件:服务器/客户端启动引导类:责任链模式的处理管道:业务处理器,处理具体的 I/O 事件。
2025-10-13 09:49:20
654
原创 Spring中Bean 的生命周期
顺序是固定的:上述流程中各个扩展点的执行顺序是 Spring 框架规定的。推荐使用的扩展点初始化: 使用注解。销毁: 使用注解。避免使用和接口,因为这会将代码与 Spring API 耦合。最强大的扩展点允许你干涉所有 Bean 的创建过程,功能非常强大,常用于实现框架级的功能(如 AOP、@Autowired注解的实现等)。注意作用域:上述生命周期主要针对单例 Bean。对于原型(prototype)作用域的 Bean,容器只负责到初始化阶段,之后就不再管理,因此销毁方法不会被调用。
2025-10-10 10:37:10
1227
原创 ElasticSearch 高级查询与分页深度解析
"query": {"query": "牛仔"},方案性能优点缺点适用场景from+size低灵活,支持随机翻页深度分页问题,性能差小数据量Scroll中解决深度分页非实时,资源占用数据导出高实时,性能好实现复杂,不支持跳页海量数据连续分页。
2025-10-03 12:15:00
524
原创 ElasticSearch基础入门和基本概念
全文检索是一种通过对文本内容进行全面索引和搜索的技术,可以快速在大量文本数据中查找包含特定关键词或短语的文档。查询 vs 检索:查询:有明确的搜索条件边界(如年龄15~25岁,颜色=红色)检索:无搜索条件边界,召回结果取决于相关性(同义词、谐音、别名等)开源分布式搜索和数据分析引擎,基于Java开发,近乎实时搜索。分布式架构,水平扩展强大的全文检索功能多语言支持高性能,实时性易用的RESTful API@Data@Id。
2025-09-28 10:44:25
695
原创 Arthas快速入门和核心参数使用
和 Arthas 的 Logo,说明您已经成功进入了Arthas的控制台。您现在面对的不是普通的Linux shell,而是Arthas的命令行,它可以和您的Java进程进行“深度交流”了。有时我们不确定线上运行的代码是不是我们最新提交的版本,或者想看一下某个类的结构。这是Arthas最强大、最常用的功能,可以监控方法的入参、返回值、异常和耗时。执行后,您会看到一个树状的调用链,清楚地告诉你哪个方法、哪一行代码最耗时。在开始敲命令前,理解它的原理很重要,这样您才知道自己在做什么。
2025-09-21 16:06:16
1229
原创 Kafka 核心概念与集群搭建
MQ(MessageQueue,消息队列)是一种 FIFO(先进先出)数据结构,用于跨进程传递数据。典型 MQ 系统中,生产者将消息发送至 MQ 进行排队,并按顺序由消费者处理。以 QQ 和微信为例(面向人类用户),而 Kafka 则面向应用程序。异步:提升系统响应速度与吞吐量。例:快递员将快递放入菜鸟驿站即可继续工作,收件人按需自取,无需等待。解耦:减少服务间依赖,增强系统稳定性与扩展性,支持数据分发。例:出版社将英文书籍翻译为多语言版本,实现跨语言信息传递。削峰:以稳定系统资源应对突发流量。
2025-09-18 17:35:39
1170
原创 形象理解MySQL 的三大日志:undo log、redo log、binlog
日志所属日志类型用途生命周期比喻Undo LogInnoDB引擎逻辑日志事务回滚、MVCC事务结束时不一定立即删除后悔药便签Redo LogInnoDB引擎物理日志崩溃恢复、提升写性能循环覆盖写应急备忘录Binlog逻辑日志主从复制、数据恢复追加写,可长期保存超级账本Undo LogRedo Log:是记账先生为了跑得快(高性能)和不出错(崩溃恢复、事务回滚)的左膀右臂,是InnoDB引擎的核心。Binlog:是档案管理员为了留底(数据恢复)和扩张。
2025-09-17 10:09:26
1110
原创 ZooKeeper Java客户端与分布式应用实战
ZooKeeper提供了强大的分布式协调能力,通过原生API或Curator客户端可以实现多种分布式场景下的解决方案。在选择方案时需要根据具体需求权衡性能、一致性和复杂性,特别是在高并发场景下需要考虑ZooKeeper的适用性和局限性。
2025-09-11 23:24:24
1317
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅