- 博客(81)
- 收藏
- 关注
原创 (十四)从“文件存储混乱”到“云端高可用”——阿里云OSS实战进阶指南
摘要: Java开发新手小王在用户中心项目中采用本地文件存储,遭遇环境不一致、扩容困难、访问速度慢、数据丢失等痛点。资深开发李哥建议改用阿里云OSS(对象存储服务),其具备高可用、自动扩容、CDN加速等优势,无需运维即可满足企业级需求。李哥指导小王学习OSS核心概念(Bucket、Object、AccessKey等)及控制台操作,对比本地存储与MinIO的差异,强调OSS在互联网项目中的普适性。通过实战演练创建Bucket和AccessKey,小王逐步掌握云端文件存储方案,为后续Spring Boot整合打
2026-03-17 14:47:41
494
原创 (十三)从“文件存储”到“高可用集群”——MinIO实战进阶指南
MinIO:一站式解决文件存储痛点 摘要: MinIO作为高性能对象存储服务,解决了传统文件存储的痛点:本地存储易丢失、扩容困难、高可用缺失等问题。本文从实战角度讲解MinIO核心原理、单机/集群部署及Spring Boot整合方案。通过商品图片存储等真实案例,展示如何快速实现文件上传下载、分片传输等功能。MinIO兼容S3协议,支持分布式部署和动态扩容,能有效提升开发效率并保障数据安全。文中提供可直接复用的代码示例,帮助开发者快速掌握这一必备存储解决方案。
2026-03-16 18:02:39
367
原创 (十二)从“IO阻塞”到“高并发承载”——Netty实战进阶指南
摘要: 本文介绍了Netty如何解决高并发IO场景下的性能瓶颈问题。原生BIO/NIO在高并发时面临线程阻塞、API复杂、稳定性差等挑战,而Netty通过事件驱动模型和核心组件(Bootstrap、EventLoop、Channel、Pipeline、Handler)实现了高效并发通信。文章对比了BIO、NIO和Netty的差异,并提供了Netty入门实战示例,帮助开发者快速掌握高并发IO解决方案。
2026-03-16 14:20:01
410
原创 (十一)从“轮询卡顿”到“实时推送”——WebSocket实战进阶指南
本文摘要: 《WebSocket实战:解决实时交互场景痛点》针对传统HTTP轮询的弊端(低效、延迟、资源浪费),系统介绍WebSocket技术方案。文章首先对比HTTP与WebSocket的核心差异,突出WebSocket在双向通信、长连接和实时性方面的优势。详细解析WebSocket工作原理,包括握手建立连接、双向通信机制和连接关闭流程。重点提供原生Java实现WebSocket的完整代码示例,涵盖服务端开发、Session管理和消息推送方式。通过实际案例展示WebSocket如何有效解决聊天、通知等实时
2026-03-13 13:51:22
529
原创 (十)从“接口联调混乱”到“文档标准化”——接口文档实战进阶指南
摘要:规范接口文档的重要性与实践指南 本文针对Java后端开发中常见的接口联调混乱问题,系统阐述了规范接口文档的必要性和实践方法。文章指出,缺乏统一接口文档会导致沟通成本高、联调效率低、异常排查困难等问题。作者通过自身经验总结出接口文档的8个核心要素,包括接口名称、请求方式、参数说明等,并对比了手动编写(Markdown)与自动生成(Swagger)两种方式的适用场景。文章重点介绍了RESTful接口设计规范,并提供了Markdown文档编写的实战示例。通过规范化的接口文档,开发者能显著提升团队协作效率,降
2026-03-11 16:40:14
473
原创 (九)从“第三方授权混乱”到“OAuth2标准化赋能”——OAuth2实战进阶指南
摘要:OAuth2标准化授权协议实战指南 本文针对Java开发者在实现第三方授权登录(如微信、GitHub登录)时面临的混乱问题,系统介绍了OAuth2协议的核心概念和实战应用。文章通过对比OAuth2与JWT的区别,阐明OAuth2作为标准化授权协议的优势,包括统一流程、高安全性、强扩展性和良好用户体验。详细解析了OAuth2的四个核心角色和通用授权流程,重点推荐授权码模式作为生产环境首选方案。最后提供了Spring Boot整合OAuth2的快速入门指南,帮助开发者摆脱重复适配不同平台的困扰,实现标准化
2026-03-10 16:13:10
342
原创 (八)从“认证混乱难管控”到“JWT高效赋能”——JWT实战进阶指南
摘要: 本文分享了作者从Session认证转向JWT的心路历程,剖析了Session在分布式、多端场景下的痛点(如Session共享、扩展性差、安全性不足等),并详细介绍了JWT的核心概念、结构(Header.Payload.Signature)及优势(无状态、多端适配、高安全性)。通过对比JWT与Session的差异,结合Spring Boot整合JWT的实战代码(依赖配置、密钥管理、工具类封装),帮助Java开发者快速掌握主流认证方案,解决分布式系统的用户认证问题。
2026-03-10 14:17:22
483
原创 (七)从 “非结构化数据难存储” 到 “MongoDB 灵活赋能”——MongoDB 实战进阶指南
摘要 本文分享了Java开发者从MySQL转向MongoDB处理非结构化数据的实战经验。针对日志、富文本等非结构化数据在MySQL中存储的痛点,详细介绍了MongoDB的核心优势、基础概念(对比MySQL)及Spring Boot整合配置。通过实例展示MongoDB灵活的文档存储方式,并提供新手可直接复用的依赖配置和YAML文件模板,帮助开发者快速掌握MongoDB基础,解决非结构化数据处理难题。
2026-03-09 18:22:43
417
原创 (六)从“缓存混乱难管控”到“Redis高效赋能”——Redis实战进阶指南
摘要:Java新手如何用Redis解决缓存乱象 本文针对Java后端新手在缓存使用中遇到的常见问题,如数据库压力过大、本地缓存不一致等,详细介绍了如何通过Redis实现高效缓存管理。内容涵盖: Redis基础:通过仓库与货架的类比,解释Redis作为内存数据库的核心优势 Spring Boot整合:提供三步配置方案(依赖添加、yml配置、序列化处理) 核心数据结构:介绍5种常用数据结构及其适用场景 实战技巧:包括连接池配置、序列化解决方案等 文章采用"问题驱动+场景化"的讲解方式,帮助开
2026-03-09 15:25:19
385
原创 (五)数据校验从入门到规范,Java开发者必备——后端数据校验实战指南
摘要:后端数据校验的必要性与实践方法 数据校验是后端开发的关键环节,不仅是提升用户体验的"面子",更是保障数据安全的"里子"。本文系统介绍了后端数据校验的核心概念、校验范围和实用方法。 核心要点: 后端校验是数据安全的最后防线,需独立于前端校验,防范非法数据入侵 重点校验五类参数:非空性、格式规范、长度限制、数值范围和业务规则 提供三种实用校验方法:基础手动校验(if-else)、Spring注解校验和自定义校验 强调校验原则:全面性、独立性、明确性、高效性和一致性
2026-03-06 16:17:06
407
原创 (四)从“入门迷茫”到“精通实战”——PostgreSQL从入门到精通实战指南
摘要:PostgreSQL新手入门与实战指南 本文以开发者视角分享了从MySQL转向PostgreSQL的学习历程,重点介绍了PostgreSQL的核心优势、与MySQL的关键差异,以及实际开发中的安装配置和基础操作指南。文章详细对比了两种数据库在数据类型、语法、并发控制等方面的区别,并提供了PostgreSQL 16在Windows系统的安装步骤和基础SQL操作示例,特别强调了自增主键、分页查询等常见操作的语法差异。通过实战案例展示了表创建、数据增删改查等基本操作,帮助Java开发者快速掌握Postgre
2026-03-06 13:43:39
428
原创 (三)从“重复CRUD累到炸”到“MyBatis-Plus一键控库”——MyBatis-Plus实战进阶指南
摘要 本文分享了作者从MyBatis到MyBatis-Plus的学习历程,旨在帮助Java开发者摆脱重复CRUD操作的困扰。MyBatis-Plus作为MyBatis的增强工具,通过内置BaseMapper接口、条件构造器、自动分页等功能,大幅简化了数据库操作。文章详细介绍了MyBatis-Plus的核心优势,并提供了Spring Boot 3.2.5整合MyBatis-Plus 3.5.15的完整配置指南,包括依赖导入、YAML配置和启动类注解设置。通过对比MyBatis,突出MyBatis-Plus在提
2026-03-05 18:12:08
408
原创 (六)从入门到精通全指南——SQL进阶
本文是SQL进阶学习指南,从基础进阶到核心进阶分阶段讲解。首先夯实基础语法细节和优化技巧,包括规范书写、函数使用和条件查询进阶。接着深入讲解排序分页、聚合分组等复杂查询,覆盖多条件组合、范围查询、模糊查询等场景,并针对不同数据库分页差异提供解决方案。适用于掌握基础SQL但需提升复杂查询和性能优化的开发者,帮助摆脱CRUD操作,应对实际业务场景和面试需求。
2026-03-05 11:32:20
537
原创 (二)从“SQL混乱难维护”到“MyBatis优雅控库”——MyBatis实战进阶指南
本文分享了从被"散装SQL"困扰到掌握MyBatis的成长历程。作者在接手使用字符串拼接SQL的老旧项目时,遭遇了SQL管理混乱、可读性差、易出错等问题。通过MyBatis的学习实践,实现了SQL与代码解耦。文章详细介绍了MyBatis的基础配置、核心概念(Mapper接口+XML映射文件)以及Spring Boot整合步骤,帮助Java新手快速入门MyBatis,摆脱散装SQL的困扰,提高开发效率和安全性。
2026-03-04 15:37:29
370
原创 (一)从“手写SQL秃头”到“JPA一键CRUD”——JPA实战进阶指南
JPA都普及这么久了,还用手写SQL?更崩溃的是,需求一改,SQL就得跟着改,有时候一个简单的字段调整,要连带改好几个地方的SQL,加班到深夜改SQL的日子,简直是我的“噩梦”。注:本文聚焦JPA(Java Persistence API)核心用法,结合Spring Data JPA(当前最主流的JPA实现),不冗余讲解过时知识点,全程用真实业务场景串联,从入门到精通,从新手踩坑到规范落地,既有基础用法,也有进阶技巧,还有趣味类比,让你看完就能上手,真正把JPA融入日常开发,告别手写SQL的痛苦。
2026-03-04 10:57:31
445
原创 (八)从“搭建项目”到“实战落地”——Spring Boot入门到精通(Spring Boot 3.2.x+JDK17+)
摘要:本文介绍Spring Boot如何简化Java后端开发,解决传统Spring框架繁琐配置的问题。通过"约定大于配置"理念,Spring Boot提供自动配置、简化依赖、内置容器等核心优势。文章详细讲解3种项目搭建方式(官网/IDEA/手动)、标准项目结构、核心启动类配置,并演示基础接口开发流程,帮助新手快速掌握Spring Boot实战技能,提高开发效率。
2026-03-03 11:39:10
990
原创 (七)从“不会写测试”到“自动化测试高手”——JUnit 5实战进阶
文章摘要: 本文以作者因未写测试用例导致线上事故的经历为引,系统讲解JUnit 5在Java开发中的实战应用。从基础注解(@Test、@BeforeEach等)与断言方法切入,结合用户余额扣减案例演示正常/边界场景测试;进阶部分涵盖参数化测试、Mockito模拟等高级技巧,强调"测试驱动开发"的价值。全文聚焦Spring Boot整合JUnit 5的最佳实践,帮助开发者通过规范化测试规避生产事故,实现从排斥测试到依赖测试的转变。(149字)
2026-03-03 09:20:12
950
原创 (五)从“只会CRUD”到“数据库高手”,MySQL从入门到精通
摘要:本文分享了一位Java开发者从MySQL基础CRUD到性能优化的成长历程。通过用户管理系统开发中遇到的查询卡顿、连接超时等实战问题,揭示了仅掌握基础SQL的局限性。文章重点讲解了SQL规范、多表关联、子查询等进阶语法,强调了合理的数据库设计原则(字段类型、主外键、三大范式),并深入剖析索引优化这一性能提升的关键技术。通过真实案例和避坑指南,帮助开发者摆脱"CRUD工程师"思维,系统掌握MySQL的高效应用。
2026-03-02 16:58:00
475
原创 (四)从“能运行就好”到“写出优雅代码”,Java核心进阶从入门到精通
本文分享了一位Java开发者从"能运行就好"到追求优雅代码的成长历程。文章重点讲解了Java核心进阶知识,包括面向对象三大特性的深入应用、String和Object类的底层原理及实战技巧。通过具体代码示例,展示了如何正确实现封装、继承和多态,避免常见误区;详细解析了String不可变特性及高效拼接方法,以及Object类中equals()、hashCode()等核心方法的正确使用。这些知识点是Java新手进阶必须掌握的"分水岭",能帮助开发者写出更优雅、高效、可维护的
2026-03-02 14:01:31
438
原创 (三)从“Git=文件备份工具”误解,到Git精通,入职必备实战指南
摘要:本文分享了一个程序员从误解Git到精通Git的成长历程。作者起初将Git简单视为文件备份工具,直到参与团队协作时才发现其核心是分布式版本控制。通过导师指导,作者系统学习了Git的三大核心概念(仓库、三层结构、分支)及团队协作规范,并总结了新手常见问题:提交信息不规范、代码冲突、误删文件的解决方法。文章强调Git作为程序员必备技能的重要性,尤其对团队开发的价值,为新手提供了从基础到实战的学习路径。
2026-03-02 09:32:32
496
原创 (二)从“Gradle=Maven替代品”误解,到Gradle精通,入职进阶实战
摘要:本文记录了从Maven转向Gradle的实战历程,揭示了Gradle作为更灵活高效的构建工具与Maven的本质差异。文章分为概念解析和实战进阶两部分:首先打破"Gradle是Maven替代品"的误解,详解构建脚本、仓库机制和任务系统三大核心;随后针对依赖范围混淆、插件版本冲突、增量构建失效等典型问题给出解决方案。通过对比Maven与Gradle的差异,展现了Gradle在大型多模块项目中的性能优势(构建速度提升50%+),为开发者提供了从零掌握Gradle的系统性指南。
2026-02-28 16:25:09
596
原创 (一)从“maven=打包工具”误解,到Maven精通,入职成长全实战
摘要:本文以新入职开发人员的视角,分享了从对Maven的误解(仅视为打包工具)到全面掌握其核心功能的成长历程。通过导师指导,作者系统学习了Maven的三大核心概念:POM文件作为项目说明书、仓库机制管理依赖包、生命周期控制构建流程。在实战中重点解决了依赖冲突、打包失败等常见问题,并掌握了私服仓库配置等企业级应用技能。文章为Java开发新手提供了从入门到精通的Maven实战指南,帮助快速适应企业开发环境。
2026-02-28 16:17:34
598
原创 JVM 内存结构的详细介绍
内存区域是否线程共享主要作用生命周期可能抛出的异常程序计数器否记录当前线程执行的字节码指令地址与线程同生共死无虚拟机栈否描述 Java 方法的执行过程,存放局部变量等与线程同生共死本地方法栈否为 Native 方法服务与线程同生共死Java 堆是存放对象实例和数组,GC 的主要区域JVM 启动时创建,关闭时销毁方法区是存放类信息、静态变量、常量等JVM 启动时创建,关闭时销毁。
2025-11-13 17:46:53
1160
原创 JVM 垃圾回收算法的详细介绍
把 Java 堆想象成一个巨大的 “停车场”,里面停满了各种 “车辆”(也就是对象)。有些车是 “正在使用的”(可达对象),有些车是 “废弃的”(垃圾对象)。GC 算法就是不同的 “清障车” 工作模式,它们的目标都是:高效地把废弃的车辆清理掉,腾出空间给新的车辆停放。
2025-11-13 17:19:51
940
原创 JUnit5 的详细介绍和使用
JUnit5 是Java领域最主流的单元测试框架,相比JUnit4 有更简洁的语法、更强大的功能(如参数化测试、动态测试),且完全兼容Java 8+的新特性(如Lambda表达式)。一、JUnit 5 核心组成JUnit 5 由三个核心模块组成,无需刻意区分,只需引入依赖即可自动关联:二、环境准备(以Spring Boot 项目为例)1.引入依赖如果是Spring Boot项目,只需在pom.xml中添加spring-boot-starter-test依赖(已包含JUnit 5)非Spring B
2025-11-11 18:28:48
1015
原创 OAuth 2.0的详细介绍和使用
社交登录时现代Web和移动应用种非常常见的功能,它允许用户使用现有的社交媒体账户(如微信、GitHub、Google等)来登录你的应用,而无需创建新的用户名和密码。API开放平台是企业向第三方开发者提供API接口的平台,允许开发者构建集成你服务的应用。这与社交登录有本质不同——这里的使用者是开发者而非最终用户。主要说一下社交登录和API开放平台这两种场景的使用。
2025-11-06 18:25:07
496
原创 Java开发常用小功能干货分享(建议收藏)
个人开发时记录的一些笔记分享1.项目启动2.错误码3.JSON互转4.mysql5.mongodb6.list互转7.idea8.日期9.其他10.未完待续
2024-03-22 10:41:53
503
原创 Springboot通过注解+切面实现接口权限校验
先获取到注解@HasPermission 的内容,从redis中拿到当前用户的所有权限,如果当前用户不是超级管理员并且权限中不包含要请求的接口权限,就返回未授权。用户在登录时会查询数据库将所有权限存入redis,如果对该用户做权限修改时,同步修改redis,这样每次请求接口时,都能从redis中拿到最新的权限。1.首先创建注解 @HasPermission ,跟普通注解创建方式基本一致。另外,还有一种权限校验的方式,可以参考若依的开源,类似这种。2.创建一个切面,用来请求接口时做前置校验。
2024-03-19 09:37:57
1704
原创 Java时间转换2023-12-15T14:53:55+09:00,UTC时间转换当前时间
最近遇到个时间转换问题,从远程接收到的数据是UTC时间,需要在页面展示为当前时间,记录一下。
2024-01-08 18:14:16
955
1
原创 EasyExcel导出压缩图片,判断图片url是否可用
因为有些时候返回的远程图片url无法正常打开,导致在写入excel时会报异常,所以就先判断url是否可用再写入。
2023-12-27 10:39:07
917
原创 java实现EasyExcel导出隐藏或显示某一列
最近在做导出功能,遇到了很多问题,专门记录一下,有其他导出问题的可以自行查看历史文章。实际开发中会遇到客户的各种需求,今天主要说一下关于隐藏列的实现。需要导出的实体类,比如现在要隐藏图片那一列。如果需要自定义隐藏或显示的话使用下面方法。
2023-12-22 11:14:36
6134
原创 EasyExcel本地导出正常,服务器导出报错:java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11FontMa
根据字面意思,X11FontManager就是跟字体有关的,及时定位问题,所以以后有异常不要着急,先看一下具体异常信息,精准定位,节省时间。
2023-12-21 14:56:26
5226
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅