REST: HTTP 缓存

Cache 在 REST 设计中使用缓存可以缩短响应时间、节约网络带宽。 A “cache” is a local store of previous response messages and the subsystem that controls its message storage, ret...

REST:HTTP API 设计思路

What is REST REST, stands for REpresentational State Transfer, proposed by Roy Fielding in his 2000 PhD dissertation[1], is an architectural approach ...

BFF治理与优化实践

在Thoughtworks的第25期 技术雷达中有一个主题:便利背后的陷阱,再次强调了软件开发的一种反模式: 开发团队一般为了图方便,而在其技术生态系统的复杂环节中,引入一些不合理的行为,从而欠下长期存在的技术债务,并会引发更糟的问题。这种例子不胜枚举,包括将数据库作为集成点,使用 Kafka 作为...

BFF架构下需要注意的坑

BFF(Backend for Frontend)架构是一种设计模式,它在后端服务器和前端用户界面之间引入了一个中间层。BFF充当中介,负责处理前端应用程序的请求并与后端服务通信。这种架构可以提高前后端协同效率,优化接口调用,以及满足不同前端设备的需求。 BFF架构开发注意点 在使用BFF架构进行项...

RabbitMQ消息堆积的原因

RabbitMQ消息堆积的主要原因包括生产者发送速度远超消费者处理速度、消费者处理能力不足或故障、消费者未正确发送确认信号(ack)、不合理的QoS/Prefetch设置以及网络或系统资源瓶颈。 当生产者发送的消息堆积在队列中,如果堆积超过队列容量或设置了过期时间(TTL),可能会导致消息被丢弃。 ...

Kafka和RabbitMQ架构对比

Kafka和RabbitMQ在架构设计、数据处理方式和适用场景上存在显著差异。 Kafka 是一个分布式流处理平台,使用基于主题和分区的日志存储,采用拉取(pull)模式,适合高吞吐量、大数据流和实时数据处理的场景,并允许消息重放。 而RabbitMQ 是一种传统的、更灵活的消息代理,基于**推送(...

判断质数,为什么判断到根号N 就可以了?

先说结论 判断一个数n是否为质数(素数)时,只需要判断小于或等于sqrt(n)的数能否整除n即可。这是因为如果n是一个合数,那么n可以分解为a和b两个数,即n = a ✖️ b,那么这两个因数中必然有一个小于或等于sqrt(n),另一个大于或等于sqrt(n)。因此只需要找出小于或等于sqrt(n)...

优秀程序员经验总结

重构是程序员的主力技能。 工作日志能提升脑容量。 先用profiler调查,才有脸谈优化。 软件设计有两种方式:一种方式是,使软件过于简单,明显没有缺陷;另一种方式是,使软件过于复杂,没有明显的缺陷。 大部分情况下,构建程序的过程本质上是对规范调试的过程。 注释贵精不贵多。杜绝大姨妈般的“例注”。漫...

HyperDock不显示预览图的解决方法

HyperDock 是一款 macOS 上的增强型窗口管理与 Dock 辅助工具,它为用户带来了更高效的多任务操作体验,起作用类似于Windows的任务栏图标预览。通过 HyperDock,你可以在 Dock 上直接预览应用的窗口缩略图,快速切换、关闭或管理应用。它还支持强大的窗口管理功能,如将窗口...

六边形架构模式深度解析

在分布式系统设计领域,六边形架构(Hexagonal Architecture,又称端口与适配器模式)作为一种以领域为中心的架构模式,通过明确分离核心业务逻辑与外部交互,有效提升系统的可测试性、可扩展性与可维护性。本文从核心概念、实现原理、应用场景及面试高频问题四个维度,结合Spring生态实践,系...