UFW 最佳实践指南

在配置服务器时,防火墙是安全防护的重要一环。这篇文章分享了UFW(Uncomplicated Firewall)的最佳实践配置方法,包括基础配置、IP白名单设置,以及如何解决UFW和Docker配合使用时的端口访问问题。

Redisson 中 RRateLimiter 的令牌桶算法

令牌桶算法在 Redisson 的 RRateLimiter 中通过三个 Redis 数据结构巧妙实现:Hash 存储基础配置,Zset 记录请求时间戳,String 跟踪可用令牌数。其核心优势在于懒惰删除过期请求、精确时间窗口控制和非阻塞限流机制,既保证分布式一致性又实现高效限流,尽管不保证请求的公平处理顺序。

使用建造者模式优化 HTTP 请求工具类

在我司的一个集成项目中,我们需要频繁使用基于 HTTP 的接口调用来获取内部系统数据。虽然使用 hutool 的 HttpUtil 已经相对便捷,但在实际开发中发现代码仍然显得冗长,需要重复编写配置请求参数、设置请求头和打印日志等模板代码。为了解决这个问题,我使用建造者模式设计了一个 HttpRequestBuilder 工具类,通过链式调用的方式,不仅让代码更加简洁优雅,还把通用逻辑都封装起来,大大提升了代码的可维护性。

Jackson工具包的三种数据转换关系图

由于最近做项目时需要频繁处理JSON数据,我深入学习了Jackson工具包。Jackson主要用于处理三种数据类型的互相转换:JSON字符串、JsonNode树模型和Java对象(POJO)。为了更好地理解和记忆这些转换方法,我整理了它们之间的相互转换关系图。

三维地理数据在MySQL中的存储和使用

在我司的一个项目中,原本使用 MySQL 自带的空间数据类型来存储地理数据。但由于需求变更,现在需要为每个坐标点添加三维信息,这超出了 MySQL 空间数据类型的能力范围。为了解决这个问题,我重新设计了存储方案:使用 VARCHAR 类型字段存储类似 WKT 格式的三维坐标字符串,同时借助 JTS 库来处理二维空间的查询操作(如点是否在面内、线是否与面相交等),并开发了一系列工具类来处理坐标格式转换和空间关系计算。这样既保留了三维信息的存储,又能继续使用强大的空间查询功能。

MySQL空间数据的使用

本文详细介绍了如何在MySQL中使用空间数据类型(POINT、LINESTRING、POLYGON)来存储地理位置信息。首先展示了相关的建表语句,然后通过具体示例说明了如何插入和查询空间数据。最后还介绍了如何在Spring Boot项目中集成这些功能,包括实体类定义、自定义TypeHandler以及Service层的实现。通过这样的设计,可以方便地进行各种空间关系查询,比如查找多边形内的点、计算距离等。

Spring Integration 集成 MQTT 实现无人机状态实时监控

在我司的一个项目中,需要实现对无人机状态的实时监控。我使用Spring Integration框架来集成MQTT协议,实现了无人机数据的实时接收和处理。系统通过MQTT订阅无人机的状态信息(包括位置、速度、电量等),将数据存储在内存中,并通过定时任务来清理过期数据。最终实现了在前端三维场景中展示无人机的实时位置变化,并能查看无人机的实时视频流。这篇文章详细记录了从MQTT配置到具体实现的完整过程。

MQTT 服务端搭建

EMQX是一个基于Erlang/OTP的开源物联网MQTT消息服务器,可以支持海量设备连接和低延时消息路由。本文记录了如何使用Docker安装和配置EMQX,包括端口映射、访问管理控制台等关键步骤,方便后续查阅和参考。

为 VPS 配置 ipv6 地址

本文记录了在VPS上配置IPv6的详细操作步骤。首先测试IPv6连通性,然后通过修改系统配置开启IPv6支持。接着使用Tunnel Broker服务创建IPv6隧道,配置网络接口,最后还设置了定时任务来保持隧道连接。

由勘探点生成三维地质层的算法实现

这是一个将勘探点数据转化为可视化的三维地质层表示的算法实现。首先按岩土类别组织地质点,然后配对每个钻孔内的上下表面点。接着通过分析点对之间的空间关系,处理同类地质的多层非连续情况。使用三角剖分创建表面网格,并使用凸包算法生成侧面,最终形成完整的三维地质层模型。