草庐IT

RocketMQ 5.0 时代,6 张图带你理解 Proxy!

大家好,我是君哥。今天来聊一聊RocketMQ5.0中的Proxy。RocketMQ5.0为了更好地拥抱云原生,引入了无状态的Proxy模块,新的架构图如下:引入Proxy模块后,Proxy承担了协议适配、权限管理、消息管理等计算功能,Broker则更加专注于存储。这样存储和计算相分离,在云原生环境下可以更好地进行资源调度。1、Proxy介绍RocketMQ5.0 把客户端的部分功能下沉到Proxy,Proxy承接了之前 客户端的计算能力,客户端变得更加轻量级。(1)NameServer从上面的架构图可以看到,Producer/Consumer不再需要注册到NameServer,这一部分功能下

细节拉满,80 张图带你一步一步推演 slab 内存池的设计与实现

1.前文回顾在之前的几篇内存管理系列文章中,笔者带大家从宏观角度完整地梳理了一遍Linux内存分配的整个链路,本文的主题依然是内存分配,这一次我们会从微观的角度来探秘一下Linux内核中用于零散小内存块分配的内存池——slab分配器。在本小节中,笔者还是按照以往的风格先带大家简单回顾下之前宏观视角下Linux内存分配最为核心的内容,目的是让大家从宏观视角平滑地过度到微观视角,内容上有个衔接,不至于让大家感到突兀。下面的内容我们只做简单回顾,大家不必纠缠细节,把握整体宏观流程在《深入理解Linux物理内存分配与释放全链路实现》一文中,笔者以内核物理内存分配与释放的API为起点,详细为大家介绍了物

细节拉满,80 张图带你一步一步推演 slab 内存池的设计与实现

1.前文回顾在之前的几篇内存管理系列文章中,笔者带大家从宏观角度完整地梳理了一遍Linux内存分配的整个链路,本文的主题依然是内存分配,这一次我们会从微观的角度来探秘一下Linux内核中用于零散小内存块分配的内存池——slab分配器。在本小节中,笔者还是按照以往的风格先带大家简单回顾下之前宏观视角下Linux内存分配最为核心的内容,目的是让大家从宏观视角平滑地过度到微观视角,内容上有个衔接,不至于让大家感到突兀。下面的内容我们只做简单回顾,大家不必纠缠细节,把握整体宏观流程在《深入理解Linux物理内存分配与释放全链路实现》一文中,笔者以内核物理内存分配与释放的API为起点,详细为大家介绍了物

一步一图带你深入理解 Linux 虚拟内存管理

写在本文开始之前....从本文开始我们就正式开启了Linux内核内存管理子系统源码解析系列,笔者还是会秉承之前系列文章的风格,采用一步一图的方式先是详细介绍相关原理,在保证大家清晰理解原理的基础上,我们再来一步一步的解析相关内核源码的实现。有了源码的辅证,这样大家看得也安心,理解起来也放心,最起码可以证明笔者没有胡编乱造骗大家,哈哈~~内存管理子系统可谓是Linux内核众多子系统中最为复杂最为庞大的一个,其中包含了众多繁杂的概念和原理,通过内存管理这条主线我们把可以把操作系统的众多核心系统给拎出来,比如:进程管理子系统,网络子系统,文件子系统等。由于内存管理子系统过于复杂庞大,其中涉及到的众多

一步一图带你深入理解 Linux 虚拟内存管理

写在本文开始之前....从本文开始我们就正式开启了Linux内核内存管理子系统源码解析系列,笔者还是会秉承之前系列文章的风格,采用一步一图的方式先是详细介绍相关原理,在保证大家清晰理解原理的基础上,我们再来一步一步的解析相关内核源码的实现。有了源码的辅证,这样大家看得也安心,理解起来也放心,最起码可以证明笔者没有胡编乱造骗大家,哈哈~~内存管理子系统可谓是Linux内核众多子系统中最为复杂最为庞大的一个,其中包含了众多繁杂的概念和原理,通过内存管理这条主线我们把可以把操作系统的众多核心系统给拎出来,比如:进程管理子系统,网络子系统,文件子系统等。由于内存管理子系统过于复杂庞大,其中涉及到的众多

17张图带你深度剖析 ArrayDeque(JDK双端队列)源码

ArrayDeque(JDK双端队列)源码深度剖析前言在本篇文章当中主要跟大家介绍JDK给我们提供的一种用数组实现的双端队列,在之前的文章LinkedList源码剖析当中我们已经介绍了一种双端队列,不过与ArrayDeque不同的是,LinkedList的双端队列使用双向链表实现的。双端队列整体分析我们通常所谈论到的队列都是一端进一端出,而双端队列的两端则都是可进可出。下面是双端队列的几个操作:数据从双端队列左侧进入。数据从双端队列右侧进入。数据从双端队列左侧弹出。数据从双端队列右侧弹出。而在ArrayDeque当中也给我们提供了对应的方法去实现,比如下面这个例子就是上图对应的代码操作:pub

17张图带你深度剖析 ArrayDeque(JDK双端队列)源码

ArrayDeque(JDK双端队列)源码深度剖析前言在本篇文章当中主要跟大家介绍JDK给我们提供的一种用数组实现的双端队列,在之前的文章LinkedList源码剖析当中我们已经介绍了一种双端队列,不过与ArrayDeque不同的是,LinkedList的双端队列使用双向链表实现的。双端队列整体分析我们通常所谈论到的队列都是一端进一端出,而双端队列的两端则都是可进可出。下面是双端队列的几个操作:数据从双端队列左侧进入。数据从双端队列右侧进入。数据从双端队列左侧弹出。数据从双端队列右侧弹出。而在ArrayDeque当中也给我们提供了对应的方法去实现,比如下面这个例子就是上图对应的代码操作:pub

一步一图带你深入理解 Linux 物理内存管理

1.前文回顾在上篇文章《深入理解Linux虚拟内存管理》中,笔者分别从进程用户态和内核态的角度详细深入地为大家介绍了Linux内核如何对进程虚拟内存空间进行布局以及管理的相关实现。在我们深入理解了虚拟内存之后,那么何不顺带着也探秘一下物理内存的管理呢?所以本文的目的是在深入理解虚拟内存管理的基础之上继续带大家向前奋进,一举击破物理内存管理的知识盲区,使大家能够俯瞰整个Linux内存管理子系统的整体全貌。而在正式开始物理内存管理的主题之前,笔者觉得有必须在带大家回顾下上篇文章中介绍的虚拟内存管理的相关知识,方便大家来回对比虚拟内存和物理内存,从而可以全面整体地掌握Linux内存管理子系统。在上篇

一步一图带你深入理解 Linux 物理内存管理

1.前文回顾在上篇文章《深入理解Linux虚拟内存管理》中,笔者分别从进程用户态和内核态的角度详细深入地为大家介绍了Linux内核如何对进程虚拟内存空间进行布局以及管理的相关实现。在我们深入理解了虚拟内存之后,那么何不顺带着也探秘一下物理内存的管理呢?所以本文的目的是在深入理解虚拟内存管理的基础之上继续带大家向前奋进,一举击破物理内存管理的知识盲区,使大家能够俯瞰整个Linux内存管理子系统的整体全貌。而在正式开始物理内存管理的主题之前,笔者觉得有必须在带大家回顾下上篇文章中介绍的虚拟内存管理的相关知识,方便大家来回对比虚拟内存和物理内存,从而可以全面整体地掌握Linux内存管理子系统。在上篇

20 张图带你全面了解 HTTPS 协议,再也不怕面试问到了!

本文详细介绍了HTTPS相较于HTTP更安全的原因,包括对称加密、非对称加密、完整性摘要、数字证书以及SSL/TLS握手等内容,图文并茂、理论与实战结合、建议收藏!1.不安全的HTTP近些年来,越来越多的网站使用HTTPS协议进行数据传输,原因在于HTTPS相较于HTTP能够提供更加安全的服务。很多浏览器对于使用HTTP协议的网站会加上『警告』的标志表示数据传输不安全,而对于使用HTTPS协议的网站会加上一把『锁』标志表示数据传输安全。为什么HTTP协议不安全呢?主要表现在以下三个方面:容易被窃听:HTTP传输的数据是明文。黑客很容易通过嗅探技术截获报文,由于数据没有加密,内容可以被黑客所理解