Spring Boot 服务管理 Shell 脚本编写与部署
本文提供Spring Boot应用的标准运维Shell脚本,支持start、stop、restart和status四种操作。脚本包含PID自动检测、重复启动防护及JVM内存优化配置,附带关键GC参数说明,帮助开发者快速实现服务的自动化管理与状态监控。
一个订单从创建到保存,涉及对象设计、集合操作、数据库访问与异常处理。沿着这样的业务流程学习Java,再深入多线程与JVM,逐步掌握后端程序的编写和排错方法。

本文提供Spring Boot应用的标准运维Shell脚本,支持start、stop、restart和status四种操作。脚本包含PID自动检测、重复启动防护及JVM内存优化配置,附带关键GC参数说明,帮助开发者快速实现服务的自动化管理与状态监控。

本文详解如何使用Java Socket在缺乏公网IP的内网环境中,通过建立客户端与服务端的长连接来模拟内网穿透功能。文章剖析了请求转发、报文封装及TCP粘包处理逻辑,提供了核心的Server、Client、ProxyConnection等类代码,并展示了SpringBoot测试环境下的内外网连通效果。

本文详细解析Java中transient关键字的作用及其在对象序列化过程中的行为。通过代码示例演示了标记为transient的字段在序列化时被忽略,反序列化时恢复为默认值的机制。同时探讨了其在保护敏感数据、优化传输性能及处理临时变量等实际开发中的应用场景,并指出了该关键字的使用限制及注意事项。
本文针对MyBatis查询Oracle数据库返回结果为0,而客户端查询正常的问题进行深度排查。通过对比预编译参数与拼接SQL的差异,结合MyBatis源码调试及JDBC复现,最终定位到Oracle CHAR字段自动填充空格的特性导致匹配失败。文章提供了将CHAR修改为VARCHAR2并使用TRIM清理数据的解决方案,同时警示了使用$拼接可能带来的SQL注入风险。

本文详解XXL-JOB框架中的分片广播任务类型,适用于需并行执行的大数据处理场景。通过Java代码演示如何利用@XxlJob注解配置分片总数与当前索引,并结合取模运算或哈希算法实现负载均匀分布,提升任务执行效率与可靠性。
本文详解在Spring Boot项目中如何利用MyBatis-Plus的元数据对象处理器(MetaObjectHandler)实现createTime、updateTime等公共字段的自动填充。针对更新操作中需动态获取当前登录用户ID的需求,深入解析并实践通过ThreadLocal结合过滤器(Filter)进行线程间数据共享的方案,从而替代冗余的手动赋值代码,提升开发效率与代码整洁度。

本文详细解析Java中的两种核心锁机制:内置的synchronized关键字与java.util.concurrent.locks.Lock接口。通过原理剖析、代码示例及公平/非公平、可重入、读写锁等特性的对比,帮助开发者理解如何在多线程环境下保证共享资源的安全访问,并掌握不同场景下的最佳实践。
Java 中的缓冲流(BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter)通过内存缓冲区减少对磁盘的频繁 I/O 操作,显著提升读写效率。本文详解其底层工作原理、默认缓冲区大小,并提供包含字节数组批量读取、readLine/newLine 方法使用的完整代码示例,涵盖从基础用法到性能优化的最佳实践。

本文详解SpringBoot连接MySQL 8.0数据库的标准配置方法,重点解析时区错误及密码配置异常的解决方案。通过添加URL参数和调整YAML格式,解决驱动加载和连接池初始化失败问题,确保项目稳定运行。

本文详细介绍如何利用Java Hutool库中的ExcelUtil封装高效的Excel处理工具类。涵盖Maven依赖配置,实现通用表头导出、带数据写入以及文件读取功能。同时讲解复杂场景下合并单元格的实现逻辑,提供完整代码示例,适用于Spring Web环境下的Excel导入导出开发。
本文详细介绍Java中Scanner类的核心用法,重点演示如何使用Scanner从本地TXT文件中逐行读取数据。文章涵盖Scanner对象构建、文件路径处理、hasNext循环判断及常见数据类型(int, double, String)的获取方法,并附带异常处理的最佳实践,帮助开发者快速掌握基础的I/O操作。

Java的String.length()返回的是字符数而非字节数。要准确获取字节长度,需使用getBytes(StandardCharsets.UTF_8)方法并根据实际使用的编码格式进行调整。本文还介绍了在处理数据库定长字段限制时,如何编写自定义函数按字节数量安全截取字符串,防止出现乱码或数据截断错误。
