自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(221)
  • 收藏
  • 关注

原创 Redis Stream 底层数据结构 — 基数树

Redis Stream 的消息由ID与数据组成。而ID由时间戳和序列号组成。Stream内部使用基数树来存储消息,根据ID来指向数据。基数树支持高效的范围查找和内存存储。

2025-04-04 08:16:37 228

原创 Redis 数据结构的底层实现—字符串、哈希表、列表、集合

Redis 的键(key)查找机制基于哈希表实现。常用的数据结构有字符串、哈希表、列表、集合及有序集合。

2025-04-02 18:45:27 439

原创 深入探究Spring MVC

Spring MVC 核心是请求驱动模型(请求是起点,处理流程完全围绕请求展开,所有组件的行为由请求驱动)和分层设计。

2025-04-01 22:04:18 310

原创 TCP/IP协议的应用层与传输层

 TCP/IP协议簇是互联网的核心通信框架,定义了数据如何在网络中封装、寻址、传输和路由(确定数据包从源主机到目标主机的传输路径的过程)。

2025-03-31 19:49:45 920

原创 Spring AOP 的设计与实现

AOP,Aspect Oriented Programming面向切面编程,通过横向切割的方式将通用逻辑(如日志、事务、权限校验等)插入到业务逻辑中,并在编码上与业务逻辑代码解耦。

2025-03-26 20:45:35 575

原创 Spring IoC的设计与实现

IoC,Inversion of Control 控制反转,将原本由应用程序负责对象创建的工作,交给IOC容器来完成。容器通过依赖注入(DI,Dependency Injection)来实现。作用:降低类对象之间的耦合度,减少代码量。

2025-03-23 17:45:58 754

原创 Java 方法执行原理底层解析

java 文件经过javac编译后,变成了存储了一系列指令的.class文件。本文从指令层面分析Java 方法从解析、调用到执行的过程。

2025-03-22 20:37:45 934

原创 深入探究 JVM 堆的垃圾回收机制(二)— 回收

GC Roots 枚举需要遍历整个应用程序的上下文,而在进行可达性分析或者垃圾回收时,如果我们还是进行全堆扫描及收集,那么会非常耗时。JVM 将堆分为新生代及老生代,它们的回收频率及算法不一样。

2025-03-21 19:48:12 785

原创 深入探究 JVM 堆的垃圾回收机制(一)— 判活

垃圾回收分为两步:1)判定对象是否存活。2)将“消亡”的对象进行内存回收。

2025-03-20 22:31:11 704

原创 Java多线程基石—内存模型

Java Memory Model Java内存模型(JMM),定义了线程如何与内存交互及线程间的可见性、有序性和原子性。JMM屏蔽了各种硬件和操作系统的访问差异,保证Java程序在各种平台下对内存的访问都能保证一致效果。

2025-03-14 19:06:15 663

原创 计算机的三级缓存

CPU的处理速度远大于内存的吞吐速度,三级缓存是一种比内存读写速度更快的存储结构,用于缓解这种矛盾。

2025-03-11 20:15:00 549

原创 java 重点知识 — JVM存储模块与类加载器

jvm主要模块:方法区、堆、栈区、PC寄存器、本地方法栈;类加载器:负责将.class文件加载到jvm内存,并生成对应的Class<?>对象。

2025-03-05 22:24:27 1003

原创 Spring Cloud — 消息驱动 Stream

Spring Cloud Stream 是让微服务更容易在应用中实现消息的发布和订阅处理的框架。Stream 支持与多种消息中间件整合,如Kafka、RibbitMQ等。

2025-02-28 20:30:38 775

原创 Spring Cloud — 统一配置中心 Config

Spring Cloud Config 配置中心,实现配置服务。开发者可以使用配置服务器集中地管理所有服务的各种环境配置文件。配置服务中心默认采用Git的方式进行存储,可以对环境配置进行版本管理。

2025-02-26 07:30:00 876

原创 Spring Cloud — API服务网关 Zuul

Zuul 作为网关服务,负责处理所有外部请求,并将这些请求路由到相应的服务实例。为微服务架构中的各个服务提供动态路由、监控、身份认证与安全、负载均衡等功能。

2025-02-24 20:54:15 711

原创 Spring Cloud — Hystrix 服务隔离、请求缓存及合并

Hystrix 的核心是提供服务容错保护,防止任何单一依赖耗尽整个容器的全部用户线程。使用舱壁隔离模式,对资源或失败单元进行隔离,避免一个服务的失效导致整个系统垮掉(雪崩效应)。

2025-02-21 18:23:01 1009

原创 Spring Cloud — 微服务容错保护 Hystrix入门

微服务之间是通过网络进行相互调用,如果单个服务出现问题,用户调用相关服务时或造成调用延迟或失败,进而可能让整个系统奔溃。提前做好应急措施,当遇到问题时,可及时启动应急方案,让系统进行自我调节和保护。

2025-02-13 18:01:41 1048

原创 Spring Cloud — 深入了解Eureka、Ribbon及Feign

 Eureka 负责服务注册与发现;Ribbon负责负载均衡;Feign简化了Web服务客户端调用方式。这三个组件可以协同工作,共同构建稳定、高效的微服务架构。

2025-02-12 18:12:36 1403

原创 Spring Cloud 入门

一个典型的单体架构应用就是将一个应用中所有的功能都打包在一个war文件中。单体架构应用存在以下缺点:一个应用职责太多,其开发、部署及运维复杂度后期几乎会呈几何性增长。会逐渐变得不稳定,不常用的模块可能会造成整个服务无法正常提供服务。数据管理上容易产生漏洞,不同团队之间可能会操纵相同的数据表,容易产生冲突。开发时要求使用同一个技术栈。在部署上,难以进行水平扩展,因为每个应用实例对服务器来说都需要相同的硬件配置。微服务架构是将功能分解成一系列服务的一种架构模式。

2025-02-10 19:37:45 569

原创 Kafka 可靠性探究—副本刨析

Kafka 的多副本机制提升了数据容灾能力。副本通常分为数据副本与服务副本。数据副本是指在不同的节点上持久化同一份数据;服务副本指多个节点提供同样的服务,每个节点都有能力接收来自外部的请求并进行相应的处理。

2025-02-06 20:48:44 773

原创 Kafka 深入客户端 — 事务

Kafka 事务确保了数据在写入Kafka时的原子性和一致性。

2025-01-29 07:30:00 584

原创 Kafka 深入客户端 — 分区分配策略与协调器

Kafka 消费者客户端参数partition.assignment.strategy 来设置消费者与订阅主题之间的分区分配策略。多个消费者之间的分区分配是需要协同的,这个协同过程由消费者协调器(ConsumerCoordinator)和组协调器(GroupCoordinator)来完成。

2025-01-28 07:30:00 509

原创 Kafka 深入服务端 — 协议设计与控制器

Kafka 自定义了一组基于TCP的二进制协议,只要遵守这组协议的格式,就可以向Kafka发送消息,也可以从Kafka中拉取消息,或者做些其他事。Kafka集群中有且只有一个broker会被选举为控制器,它负责管理整个集群中所有分区和副本的状态。

2025-01-27 07:30:00 583

原创 Kafka 深入服务端 — 时间轮

Kafka中存在大量的延迟操作,比如延时生产、延时拉取和延时删除等。Kafka基于时间轮概念自定义实现了一个用于延时功能的定时器,来完成这些延迟操作。

2025-01-24 18:28:18 1458

原创 Kafka 日志存储 — 磁盘存储

Kafka 依赖与磁盘来存储和缓存消息,采用文件追加的方式来写入消息。顺序写盘的速度快于随机写内存。

2025-01-23 07:30:00 1237

原创 Kafka 日志存储 — 日志清理

Kafka 提供两种日志清理策略:日志清理(Log Delete)与日志压缩(Log Compaction)。

2025-01-22 21:17:38 1447

原创 Kafka 日志存储 — 日志索引

每个日志分段文件对应两个索引文件:偏移量索引文件用来建立消息偏移量到物理地址之间的映射;时间戳索引文件根据指定的时间戳来查找对应的偏移量信息。

2025-01-20 22:25:18 1324

原创 Kafka 日志存储 — 文件目录及日志格式

日志存储机制是Kafka实现高吞吐量和持久化能力的关键。

2025-01-19 23:49:06 1060

原创 Kafka 分区管理

分区是主题的子集,每个主题可以被分割成多个分区,一个分区有一个主副本(Leader)及一个或多个从(Follower)副本。分区允许将数据分布在多个broker上,这样可以提高数据的处理能力、并行性及可靠性。每个分区在物理上是一个有序、不可变的消息序列,存储为一系列连续的、有序的日志文件。

2025-01-13 22:05:36 847

原创 Kafka 主题管理

主题作为消息的归类,分区则是对消息的二次归类。分区可以有一至多个副本,每个副本对应一个日志文件。分区的划分不仅为Kafka提供了可伸缩性、水平扩展的功能,还通过多副本机制来为Kafka提供数据冗余以提高可靠性。

2025-01-12 16:40:54 1050

原创 Kafka 消费者

Kafka消费者主要负责消费(读取和处理)由生产者发布的消息。

2025-01-06 07:30:00 1373

原创 Kafka 生产者

生产者就是负责向Kafka发送消息的应用程序。

2025-01-03 19:01:04 1063 2

原创 Kafka入门

Kafka是一种高吞吐量的分布式发布订阅消息系统。

2024-12-30 21:31:36 741

原创 Redis 多机功能 — 复制、Sentinel及集群

Redis 的复制功能通过主从模式实现,允许用户为存储着目标数据库的服务器(主服务)创建多个拥有相同数据库副本的服务器(从服务)。让客户端的读请求可以分摊到从服务器中,从而提升性能。复制功能适合对数据一致性要求高、且读写比例不平衡的场景,例如读操作远多于写操作。Sentinel,哨兵模式是Redis推荐的高可用性解决方案,用于解决和管理主从复制环境,确保主节点发生故障时能自动进行故障转移和主从切换。集群是通过对数据进行分片,并在多个节点之间进行数据复制来提供高可用性和负载均衡。不同的节点负责不同的范

2024-12-26 21:28:06 933

原创 Redis 附加功能(三)— 持久化、发布与订阅及模块

Redis 把所有数据都存储在内存中,而传统数据库将实际的数据存储在硬盘中。Redis的持久化功能把内存中存储的数据以文件形式存储到硬盘上,服务器也可以根据这些文件在系统停机之后实施数据恢复。发布与订阅功能可以让客户端通过广播方式,将消息同时发送给可能存在的多个客户端。模块功能允许开发者通过Redis开放的API,通过C语言在Redis之上构建任意复杂的、全新的数据结构、功能和应用。

2024-12-19 18:38:30 1143

原创 Redis 附加功能(二)— 自动过期、流水线与事务及Lua脚本

键自动过期功能,可以让特定的键在指定时间之后自动被移除。流水线功能允许客户端把任意多条Redis命令请求打包在一起,然后一次性将它们全部发送给服务器,服务器将这些命令都处理完毕后,会一次性地将它们的执行结果返回给客户端。事务可以将多个命令打包成一个命令来执行,打包发送,打包执行。当事务成功执行时,事务中包含的所有命令都被执行,否则,所有命令都不执行。Lua脚本是一个小巧的脚本语言,由C语言编写,目标是成为一个很容易嵌入其他语言中使用的语言。

2024-12-17 19:11:45 1160

原创 Redis 附加功能(一) - 数据库

Redis的数据会被存储到一个名为数据库的容器中。一个Redis服务器可以包含多个数据库,默认情况下,会创建16个数据库。这些数据库用号码进行标志,第一个数据库为0号数据库。

2024-12-14 23:30:27 1164 1

原创 Redis数据结构(四)— 流

流(stream)是Redis 5.0 新增的数据结构。 它本质是一个消息链表,将所有加入的消息都串起来,每个消息都有一个唯一的id和其对应的内容。它主要用于实现消息队列,与Redis之前的发布订阅功能相比,流提供了消息的持久化、主备复制功能,支持ack确认消息的模式以及支持消费组等特性,使得消息队列更加稳定可靠。

2024-12-13 18:05:50 945

原创 Redis 数据结构(二)—集合和有序集合

集合(Set)允许用户将多个各不相同的元素(文本或二进制数据)存储到集合中,以无序的方式存储元素。有序集合(SortedSet)同时具有“有序”和“集合”两种性质。每个元素由一个成员和分值组成。成员以字符串方式存储,而分值以64位双精度浮点数格式存储。

2024-12-10 22:34:44 499

原创 Redis 数据结构(三) HyperLogLog、位图、地理坐标

HyperLogLog 超日志,是一个专门计算集合的基数的概率算法。可以计算出集合的近似基数,标准误差为0.81%。它进行计算的内存是固定的(12kb。2的64次方)。bitmap 位图,是由多个二进制位组成的数组,每个二进制位都有与之对应的偏移量,用户通过这些偏移量可以对位图中的一个或多个二进制位进行操作。它是在字符串的基础上实现的。geo 地理坐标,用户可以将经纬度格式的地理坐标存储到Redis,并对这些坐标执行距离计算、范围操作等操作。其是在有序集合基础上实现的。

2024-12-10 18:42:42 886

个人博客文章格式模版.doc

个人专属

2024-11-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除