随笔分类 - Java
摘要:实现 Expiry 接口 public class CaffeineExpiry implements Expiry<String, Object> { @Override public long expireAfterCreate(@NonNull String key, @NonNull Obj
阅读全文
摘要:在软件开发中 id 通常为 int 或者 long 类型,有时会有混淆 id 的需求,比如反爬虫。Hashids 是一个小型的开源库,可以将数字或者十六进制字符串转换成唯一的、非顺序的 id。 使用 添加依赖 <dependency> <groupId>org.hashids</groupId> <
阅读全文
摘要:Google Authenticator 的原理是服务器随机生成一个密钥并保存并告知客户端。用户需要登陆时客户端根据密钥和时间戳通过一种算法生成一个6位数字的密码。本文使用 java.util.zip.CRC32 模仿 Google Authenticator 实现此功能。 /** * 生成验证码
阅读全文
摘要:spring: kafka: bootstrap-servers: IP:端口 listener: missing-topics-fatal: false properties: sasl: mechanism: PLAIN jaas: config: 'org.apache.kafka.commo
阅读全文
摘要:Paho 自动重连后订阅的主题会清空,所以需要实现 MqttCallbackExtended 接口,在 connectComplete 方法添加订阅主题;而不是实现 MqttCallback 接口 一、添加引用 <dependency> <groupId>org.eclipse.paho</grou
阅读全文
摘要:关于 JJWT 的使用,可以参考之前的文章:JJWT 使用示例 一、鉴权过滤器 @Component public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { @Override protected void d
阅读全文
摘要:MinIO 是一个非常轻量的基于 Apache License v2.0 开源协议的对象存储服务。它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。 一、Min
阅读全文
摘要:需要实现看门狗功能,定时检测另外一个程序是否在运行,使用 crontab 仅可以实现检测程序是否正在运行,无法做到扩展,如:手动重启、程序升级(如果只需要实现自动升级功能可以使用 inotify)等功能;最后决定使用 Spring Boot 调用 Shell 脚本来实现 一、脚本 1.1 启动脚本
阅读全文
摘要:一、Canal Admin 安装与配置 1.1 下载 wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.admin-1.1.4.tar.gz tar zxvf canal.admin-$version.
阅读全文
摘要:canal 是阿里巴巴开源的 MySQL binlog 增量订阅&消费组件 canal 工作原理: canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议 MySQL master 收到 dump 请求,开始推送
阅读全文
摘要:在 Elasticsearch、Kibana、Beats 安装 中讲到推荐架构: 本文基于 Logstash + Beats 读取 Spring Boot 日志 将其改为上述架构 如果没有安装 Kafka 需要首先安装:http://kafka.apache.org/quickstart ,如果需要
阅读全文
摘要:一、Spring Boot 日志配置 采用 Spring Boot 默认的 Logback: <?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="10 seconds"> <contextName
阅读全文
摘要:本文使用 Filebeat,如果没有安装需要安装: curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.7.0-linux-x86_64.tar.gz tar xzvf filebeat-7.7.0-
阅读全文
摘要:一、安装与启动 Logstash 依赖 Java 8 或者 Java 11,需要先安装 JDK 1.1 下载 curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-7.7.0.rpm 1.2 安装 sudo rpm -
阅读全文
摘要:Elastic Stack 包括 Elasticsearch、Kibana、Beats 和 Logstash,也称为 ELK Stack。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。 Elastic 产品生态: Elastic 协同: 推荐架构: 前置事项 本
阅读全文
摘要:问题描述 在之前的博客介绍了如何在 Spring Boot 集成 MQTT,后面使用中没有发现问题,最近发现一直报错: Lost connection: Connection lost; retrying... Lost connection: 已断开连接; retrying... 解决过程 网上说
阅读全文
摘要:一、Flyway 介绍 Flyway 是一个开源的数据库迁移工具,MySQL, SQL Server, Oracle 等二十多种数据库 在 Flyway 中数据库的所有改变均称为迁移(migration),迁移分为两种:基于版本控制的迁移(versioned)和可重复执行的迁移(repeatable
阅读全文
摘要:虽然工作挺多年了,也只是简单看了看数据恢复的方法,并未实操过,这次真摊上这事了,发现没那么简单。 问题描述 事件 生产环境某个表的数据被全部删除 问题 数据库使用阿里云 RDS,数据隔天完整备份,没有单表备份 系统运行中,不能停机维护 期望只恢复被清空的表的数据,不影响其他表 一、寻找解决方案 1.
阅读全文
摘要:问题描述 Feign 客户端捕获不到服务端抛出的异常 问题解决 重新 ErrorDecoder 即可,比如下面例子中在登录鉴权时想使用认证服务器抛出 OAuth2Exception 的异常,代码如下: import com.fasterxml.jackson.databind.ObjectMappe
阅读全文
摘要:一、添加依赖包 <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-api</artifactId> <version>0.11.1</version> </dependency> <dependency> <groupI
阅读全文