编辑
2025-08-18
编程语言-Java
00

Spring 声明式事务(@Transactional)是保证数据一致性的核心手段,但使用不当会导致预期外的回滚行为。本文通过两个实战场景,深入讲解 Spring Boot 中事务的正确使用方式。第一部分:建议的数据库与外部服务操作顺序——先调用阿里云 API 创建 RAM 子账号(外部服务),确认成功后再将信息写入数据库,避免因子账号创建失败导致数据库中产生无效记录。第二部分:Controller 层捕获异常时的事务回滚问题——即使外层 try-catch 捕获了异常,被 @Transactional(rollbackFor = Exception.class) 注解的 Service 方法内部抛出异常后,事务依然会回滚;异常被捕获并不会阻止事务回滚,因为 Spring 事务管理器在方法抛出异常时即标记回滚。

本文适用于使用 Spring Boot 进行事务管理的开发者。

编辑
2025-08-18
编程语言-Java
00

MyBatis 作为 Java 持久层框架,XML 映射文件是其核心配置方式。本文系统整理 MyBatis XML 中高频使用的 SQL 操作模板,涵盖多个实战场景:批量插入(<foreach> 拼接 VALUES)、批量更新(多条 UPDATE 语句以 ; 分隔)、批量删除(<foreach> 拼接 IN 条件)、时间范围查询(支持 Date 和 LocalDateTime 参数)、动态时间查询(使用 <where> + <if> 条件判断)、按日期部分比较(DATE() 函数忽略时间部分)、一对多嵌套查询(<collection> 配合 select 属性实现关联查询)。同时附有实际执行 SQL 的注释示例,展示不同日期格式的传参方式。

本文适用于使用 MyBatis 进行数据库操作的 Java 开发者。

编辑
2025-07-26
开发工具-Git
00

CentOS 7 默认 YUM 源中的 Git 版本较旧(通常为 1.8.x),无法满足现代开发流程对高版本 Git 的需求。本文介绍通过源码编译方式将 Git 升级到 2.47 版本的完整步骤。核心内容包括:安装编译依赖包(curl-devel、openssl-devel、expat-devel 等)、从内核官网下载 Git 源码包、解压并执行 ./configure && make && make install 编译安装,以及重启终端后通过 git --version 验证升级结果。

本文适用于需要在 CentOS 7 环境中使用高版本 Git 的开发及运维人员。

编辑
2025-05-07
DevOps-最佳实践
00

GitLab 作为功能丰富的 DevOps 平台,默认启用了大量组件,但在生产环境中往往需要根据实际需求进行精简与调优。本文基于 GitLab 14.8.2 版本,提供一套完整的自定义配置方案。核心内容包括:Registry 镜像仓库配置(HTTP 地址、调试端口、存储删除启用)、数据库与缓存调优(PostgreSQL 共享缓冲区 1GB、Redis 最大客户端 5000)、Web 服务器优化(Puma 工作进程与线程数、Nginx 客户端最大请求体 512MB、工作进程与连接数调优)、禁用非必要组件(Prometheus 监控栈、Grafana、GitLab Pages、Mattermost、KAS、Sentinel 等),以及 Sidekiq 并发控制和 Registry Nginx 独立端口配置。

本文适用于需要在生产环境部署精简高效 GitLab 实例的运维人员。

编辑
2025-04-30
DevOps-配置管理
00

Ansible 是业界主流的自动化运维工具,默认输出格式为人类可读的文本。但在与 CI/CD 系统、监控平台或自动化脚本集成时,JSON 格式的结构化输出更便于程序解析。本文以 CentOS 7 环境为例,详细介绍 Ansible 2.4.6 的离线安装方法及 JSON 输出配置。

核心内容包括:

  1. 软件包安装

    • 从官方仓库下载 ansible-2.4.6.0-1.el7.ans.noarch.rpm
    • 使用 yum localinstall 完成本地安装
    • 通过 ansible --version 验证安装结果
  2. JSON 输出配置

    • 查看可用回调插件:ansible-doc -t callback -l | grep json
    • 修改 /etc/ansible/ansible.cfg 配置文件:
      ini
      stdout_callback = json callback_whitelist = json, yaml bin_ansible_callbacks = True 可选配置:指定 Python 解释器路径(interpreter_python)
  3. 测试验证

    • 执行 ansible -m ping 127.0.0.1,验证输出格式为 JSON
    • 输出内容包含 plays、tasks、stats 等结构化字段

本文适用于需要通过 Ansible 与外部系统(如 Jenkins、ELK、Prometheus)进行数据对接的运维开发人员。