XXL-JOB这个大家应该都不陌生,鼎鼎大名的一个分布式任务调度平台。XXL-JOB有一个任务执行模式叫GLUE模式,GLUE模式本质是调度中心把一段源码下发给执行器,执行器动态编译 / 直接执行(Groovy/Shell/Python 等);和BEAN模式的区别是BEAN模式只是调用执行器本地预先写好的Handler […]
XXL-JOB这个大家应该都不陌生,鼎鼎大名的一个分布式任务调度平台。XXL-JOB有一个任务执行模式叫GLUE模式,GLUE模式本质是调度中心把一段源码下发给执行器,执行器动态编译 / 直接执行(Groovy/Shell/Python 等);和BEAN模式的区别是BEAN模式只是调用执行器本地预先写好的Handler […]
参考文档:Redis 7.0 Release Notes、官方 Functions 文档、redis/src/function/ 源码模块验证环境:Redis 7.0.15 前言 在 Redis 7.0 正式发布之前,Lua 脚本是 Redis 实现原子复合操作的唯一内置方案。大量业务依赖 Lua 实现批量读写、原子校 […]
前言 目前国内绝大多数 Redis 教程、书籍、博客均停留在 Redis 6.x 及更早版本,内容老旧、特性缺失、甚至存在大量过时误区。 而 Redis 官方从 7.0 开始进入架构革新周期,8.0+ 更是完成了版本体系大一统、拥抱 AI 向量检索、内核性能硬件级优化,是近五年变化最大、颠覆性最强的迭代阶段。 本系列博 […]
一、核心概念 Log Compaction(日志压缩)是 Kafka 提供的一种基于 key 的消息保留策略。它的核心保证是:对于同一个 partition 内的相同 key,Kafka 至少保留最新的一条消息,而旧版本的消息会被清理掉。 这与传统的按时间或大小删除(delete 策略)是完全不同的思路: 二、为什么需 […]
Aeron 是一个开源的高性能消息传输系统,由 Martin Thompson 和 Todd Montgomery 在 Real Logic 创建,目前由 Adaptive Financial Consulting 主导维护。它是电子交易领域用于低延迟消息传输与高可用集群的全球技术标准,GitHub 组织地址为 aer […]
Spring Boot 指定外部配置文件主要有以下几种方式: 一、默认扫描位置(不需要额外指定) Spring Boot 启动时会自动扫描以下位置(JAR 包所在目录): ./config/子目录/ ./config/ ./ ← JAR 包同级目录 所以最简单的方式就是把配置文件直接放在 JAR 包旁边: /app/ […]
优先级从高到低排列,高优先级覆盖低优先级的同名属性。 一、运行时参数(最高) 1. 命令行参数 java -jar app.jar --server.port=9090 2. JVM 系统属性 java -Dserver.port=9090 -jar app.jar 3. OS 环境变量 export SERVER_P […]
这个算是比较常用的一个Java工具了,记录一下。 一、最常用:jmap -histo(JDK 自带) # 查看所有对象的实例数和内存占用(按大小排序) jmap -histo <pid> # 只看存活对象(先触发一次 Full GC,再统计) jmap -histo:live <pid> 输出示 […]
服务探活端口和业务端口不一致,本质上是用一个"旁路"来代表主服务的健康状态。 一、最核心的问题:探活结果不准 1. 探活端口正常 ≠ 业务正常 探活端口通常是一个独立的 HTTP 端点(比如 Spring Boot Actuator 的 /health 跑在另一个端口),它只检查 JVM 能不能响应 […]
背景 自己封装了一个Apollo的客户端,在官方支持@Value注解自动刷新的基础上,额外封装了@RefreshScope和@ConfigurationProperties注解的自动刷新,代码如下: import com.ctrip.framework.apollo.model.ConfigChangeEvent; i […]
1. 概述 jasypt-spring-boot 是 Jasypt(Java Simplified Encryption)加密框架与 Spring Boot 的集成组件,用于对 Spring Boot 应用配置文件中的敏感信息(如数据库密码、API 密钥、Token 等)进行加密保护,防止敏感信息以明文形式出现在配置文 […]
DeferredLog 全称延迟日志,包路径:org.springframework.boot.logging.DeferredLog,是 SpringBoot 内置工具类,解决容器启动早期日志系统还未初始化,直接打日志丢失的问题。 一、核心原理 启动时序问题 Spring 启动流程: 系统属性初始化 → Enviro […]
原文作者:Martin Fowler | 发布时间:2018-04-24 原文地址:https://martinfowler.com/articles/break-monolith-into-microservices.html 前言:拆分什么、何时拆分 随着单体系统体量日趋庞大、维护成本激增,大量企业选择将其改造为微 […]
SchedulingConfigurer 是 Spring 定时任务的高级配置接口,用来替代简单的 @Scheduled 注解。 它的核心作用: 让定时任务支持:动态修改执行周期、程序运行中改 cron、从数据库/配置中心读取 cron 表达式,不用重启服务。 一、它解决什么问题? @Scheduled(cron = […]
要让Jackson直接使用类的字段(Field) 进行序列化和反序列化,而非默认的getter/setter方法,核心是修改Jackson的属性访问策略:关闭对getter/isGetter/setter的自动检测,开启对所有字段(无论访问修饰符)的检测。 下面分通用Java项目、Spring Boot项目、局部类注解 […]
待到秋来九月八,我花开后百花杀。
冲天香阵透长安,满城尽带黄金甲。