【RabbitMQ】延迟队列+死信队列延迟删除实现
场景
当一个订单在删除时,状态修改为锁定,当30分钟没有解锁后,那么将订单的的状态变成删除,并且执行真正的删除逻辑,将订单相关的删除。
解决:订单被误删的问题,如果在删除的延迟时间中(30分钟内),将状态修改为正正常则不会删除
实现
常量定义
12345678910111213public class MQConst { public static final String EXCHANGE_DELAY_NAME_DELETE_ORDER ="topicExchange.delay.delete.order"; public static final String QUEUE_DELAY_NAME_DELETE_ORDER ="queue.delay.delete.order"; public static final String ROUTINGKEY_DELAY_NAME_DELETE_ORDER ="routingKey.delay.delete.order"; publi ...
【Azure】Azure云存储集成
概述
Azure云存储是一种由微软提供的云端存储服务,允许用户通过互联网存储、管理和访问数据。Azure云存储提供了多种存储类型,满足不同的应用场景需求,从简单的文件存储到大规模的非结构化数据处理。它的高可用性、全球覆盖、弹性扩展、数据备份与恢复功能,使其成为企业和开发人员常用的云存储解决方案
主要功能:
Blob存储:用于存储非结构化数据(如图片、视频、日志文件)。支持三种存储层级(热、冷、归档),根据访问频率优化存储成本。
文件存储:通过SMB协议提供共享文件存储服务,支持多用户和跨平台访问。
表存储:提供非关系型的键值对存储,适合大规模的数据处理和查询操作。
队列存储:提供消息队列服务,支持大规模消息传递,用于异步处理和应用间通信。
优势:
全球数据中心:Azure在全球拥有多个数据中心,提供全球范围内的数据访问和冗余。
弹性和扩展性:可根据应用需求动态扩展存储容量和性能。
安全性和合规性:Azure提供全面的数据加密、访问控制和合规性认证,确保数据安全。
成本优化:通过多层存储和自动化的成本管理工具,有效降低存储成本。
集成
配置
1 ...
【JDOS】AWS S3 SDK操作京东云存储
AWS S3 SDK介绍
Amazon的对象存储服务S3的Java SDK客户端, 京东云的对象存储兼容AWS S3
API,因此可以使用Amazon S3 SDK来操作京东云的OSS存储服务。
这种兼容性是为了让用户能够更轻松地切换或同时使用多个云提供商的对象存储,而无需更改代码。Amazon
S3协议已经是行业标准,因此许多云提供商(如京东云、阿里云、腾讯云等)都提供了兼容S3
API的服务接口
通过AWS S3
SDK配置和连接京东云的对象存储服务。京东云提供了一个与S3协议兼容的接口,因此开发者可以继续使用熟悉的AWS S3 SDK,而不用额外学习和适配京东云的原生API
集成
配置
application.yaml的配置如下:
12345678# 对象存储服务oss: # 京东 oss jd: access-key: your-access-key secrete-key: your-secrete-key endpoint: your-endpoint bucket-name: your-bucket-name
配置类
...
【STM32】生活中STM32的应用
应用场景
STM32
是一款非常灵活和功能强大的微控制器,它可以用于多种设备和应用场景。STM32
的多功能性主要归因于其高性能、低功耗和丰富的外设接口。以下是
STM32 可以用于的一些设备和应用领域:
水族箱设备
STM32 可以用于水族箱自动化设备,例如:
(1)水质监测
监测水的温度、pH
值、溶解氧、浑浊度等,通过传感器数据来确保水族箱环境适宜
(2)自动喂食器
根据设定的时间和数量自动喂养水族生物
(3)照明控制
控制LED照明系统,模仿日出日落的自然光循环,提供可定制的光照方案。
(4)水泵和过滤系统控制
通过调节水泵速度、滤水器和空气泵来优化水流和氧气含量。
(5)温度控制
控制加热器或冷却系统,保持水温在稳定范围内
智能家居设备
STM32 也广泛用于智能家居产品,包括:
(1)智能灯光控制系统
通过无线通信(如 Zigbee、Wi-Fi)控制照明的开关和亮度
(2)智能门锁
提供基于指纹、密码或远程控制的智能门锁解决方案。
(3)家庭安防系统
与传感器集成,检测入侵或火灾等危险,发送报警信号
(4)智能音箱 ...
【RabbitMQ】异步更新数据
场景
需求如下:
有个玩家基本属性配置表,
配置了玩家拥有的基本属性值,当玩家配置表里面的属性调整:比如:策划规定,这个版本需要对玩家力量值增加,全服玩家的基本面板里面的力量值就需要增加,策划想让玩家多一个抗毒时间属性,那么玩家需要获得这个抗毒时间属性。注意:玩家因为等级提升力量值就不要用数据配置表的属性,而是使用玩家自己属性+数据配置表的基础数据(追加值的问题这里不是重点)
表设计
玩家数据配置表, player_attribute_config
属性
类型
备注
id
BIGINT
主键ID
attribute_name
VARCHAR
属性名称 (如:力量, 体力, 抗毒)
attribute_value
VARCHAR
基础属性值 (策划设定的默认值)
created_time
TIMESTAMP
创建时间
update_time
TIMESTAMP
修改时间
玩家信息表, PlayerInfo
属性
类型
备注
id
B ...
【i18n】消息内容实现多语言化
场景
当系统固定消息/标题文字,需要面向多个国家的时候,i18n就能很好解决了
概述
国际化(Internationalization,简称i18n)是指在软件开发中设计和实现应用程序,使其能够适应不同语言、文化和区域设置的需求,而无需对代码进行重大修改。国际化通常与本地化(Localization,简称l10n)一起使用。国际化关注的是软件的通用设计,而本地化则是针对特定语言和地区的内容调整。
配置
spring中已经有i18n相关的依赖了
1、引入依赖
1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId></dependency>
2、创建i18n文件
根据自己项目国际化语种配置, 此处的结构
123456789src└── main └── resources └── i18n ├ ...
【Linux】时区配置
场景
今日看日志的时候,发现日志的时间跟当前时间不一样,后面发现就是当前Linux系统的时区不对,java的logback-spring
是用linux的时区的时间
操作
1、检查服务器当前时区
1timedatectl
结果显示时区为Etc/UTC (UTC, +0000) , 应该采用
Asia/Shanghai (CST, +0800)
1234567 Local time: Mon 2024-09-02 01:42:20 UTC Universal time: Mon 2024-09-02 01:42:20 UTC RTC time: Mon 2024-09-02 01:42:04 Time zone: Etc/UTC (UTC, +0000) System clock synchronized: no NTP service: inactive ...
【RabbitMQ】Window安装&启动MQTT插件
Window搭建
官网地址:https://www.rabbitmq.com/
下载MQ安装包
RabbitMQ的位置:https://www.rabbitmq.com/docs/install-windows
下载Erlang https://erlang.org/download/otp_versions_tree.html
Erlang与RabbitMQ版本适配:https://www.rabbitmq.com/docs/which-erlang
安装RabbitMQ前需要安装 Erlang依赖
我这里选择的RabbitMQ版本为 rabbitmq-server-3.13.7,根据版本适配选择,
这里应该选择下载 maint-26 版本的
maint-26 版本的Erlang 依赖下载页面:
rabbitmq下载页
下载RabbitMQ与OTP后,内容如下
安装MQ
分别安装两个程序傻瓜式安装(保存目录不能空格与中文)
安装opt
傻瓜式安装
环境变了
opt环境变量配置,填写opt的安装路径
安装rab ...