首页 / 技术专题CATEGORY / SPRINGFORALL

架构运维

在这个技术方向,积累扎实的知识与实践。

共 315 篇文章

如何手搓一个自定义的RPC(远程过程调用框架)

1、RPC(远程过程调用概述) 远程过程调用(RPC, Remote Procedure Call)是一种通过网络从远程计算机程序上请求服务,而无需了解网络细节的通信技术。在分布式系统中,RPC是一种常用的技术,能够简化客户端与服务器之间的交互。本文将介绍如何基于Netty(网络编程框架)实现一个自定义的简单的RPC框架。 首先简单介绍一下RPC…

RocketMQ 刷盘机制!

这篇文章,我们将详细介绍 RocketMQ 的刷盘机制,包括它写了哪些文件,如何写入磁盘,以及相关的源码分析和示例代码。 本文源码基于 RocketMQ 5.0 RocketMQ 的刷盘流程主要涉及以下几类文件: CommitLog 文件 :存储所有消息,支持顺序写入和随机读取。 ConsumeQueue 文件 :存储消息的逻辑索引,加速消息消费。…

设计模式学习总结

设计模式 创建型模式 创建型模式 创建型模式的作用就是创建对象,说到创建一个对象,最熟悉的就是 new 一个对象,然后 set 相关属性。但是,在很多场景下,我们需要给客户端提供更加友好的创建对象的方式,尤其是那种我们定义了类,但是需要提供给其他开发者用的时候。 单例…

请说一下Mysql中count(1)、count(*)以及count(列)的区别?

近期在Review项目代码时,发现同事们在查询MySQL行数时存在多样的方式,有的使用 COUNT(1) , 有的用 COUNT(id) , 还有人选择了 COUNT(*) 。这混杂的选择引发了我的思考。当然这三种count的方式也是众说纷纭,其中最大的分歧点就是 COUNT(*) 和 COUNT(1) 查询性能上,有人觉得 COUNT(*) 需要转换为…

使用事件驱动架构简化程序逻辑

你有没有遇到过创建一个需要长时间处理的API的挑战?随着项目的扩展,一个API可能需要多个进程来完成某些任务。让我用下面的故事来帮助你理解这个复杂的场景。 想象一下,有一家名为“披萨屋”的披萨餐厅。当顾客下单时,需要发生多件事情: 厨房需要开始制作披萨。 收银员需要处理付款。 送货员需要被提醒送披萨。 订单详情需要记录在我们的记录中。…

从 ElasticSearch 中删除数据的几种方式

1. 概述 ElasticSearch 是一款功能强大的分布式搜索和分析引擎,擅长提取和查询大量数据。然而,有时需要删除数据,无论是出于合规性、存储优化还是数据准确性的原因。 在本教程中,我们探讨了从 ElasticSearch 中删除数据的各种方法,从删除单个文档到管理生产环境中的大规模删除。 2. 删除单个文档 首先,ElasticSearch…

消息队列的拉模式和推模式

消息队列(Message Queue)是一种应用程序之间传递数据和信息的通信方法。消息队列中的推拉模式(Push-Pull Model)是指消息的生产者(Producer)将消息发送到队列,然后消费者(Consumer)可以按照推(Push)或拉(Pull)的方式从队列中获取消息。 简单阐述 RocketMQ 推模式(Push Mode)…

MySQL的页与行格式

什么是MySQL的页? 页是指存储引擎使用的最小的数据存储单位。 当 MySQL 执行读取或写入操作时,是以页为基本单位来进行操作的。即使读写一条数据,MySQL 也会按页操作。 MySQL 的存储引擎会将数据分成多个页,并根据需要将这些页加载到内存中进行处理。 通过使用页来组织数据,MySQL 能够更高效地管理存储空间,减少读取数据时的硬盘 I/O…