- 博客(75)
- 资源 (2)
- 收藏
- 关注
原创 【说清架构系列】万字长文,说清Redis分布式高可用架构,打造不宕机的缓存系统
Redis的高可用架构就像一座冰山,表面上看起来简单,但内部蕴含着丰富的技术细节和设计思想,作为架构师,我们需要深入理解这些原理,才能在实际工作中设计出稳定可靠的系统,希望本文能够帮助你更深入地理解Redis分布式高可用架构,从入门到精通,逐步掌握这一技术栈
2025-04-03 07:51:32
789
原创 【说清架构系列】万字长文剖析ElasticSearch高可用架构,内含代码,从入门到精通的避坑实战
ElasticSearch作为一个分布式搜索和分析引擎,具有高扩展性、高可用性和近实时性的特点。它的核心架构包括集群、节点、索引、分片等组件,通过分布式存储和计算实现了大规模数据的处理能力。
2025-04-02 07:45:00
1289
原创 Kafka最新架构深度剖析,一文掌握分布式消息引擎核心架构
Kafka的发展历程告诉我们,优秀的架构设计必定是简单且高效的,从最初的消息队列到如今的事件流平台,Kafka始终保持着其设计哲学,简单,高性能,可扩展,在实际工作中,不仅要掌握Kafka的使用方法,更要理解其设计思想,只有这样才能在合适的场景选择合适的技术解决方案,希望这篇文章能帮助你更好地理解和应用Kafka,如果你想深入学习,可以阅读官方文档和相关书籍,也可以关注我的公众号,我会持续分享更多架构设计和技术实践的经验,技术没有终点,让我们一起在学习的路上前行。
2025-04-01 07:37:32
609
原创 【说清架构系列】万字长文剖析MySQL高可用架构,内含代码,从入门到精通的避坑实战
MySQL高可用是任何严肃的生产系统都必须考虑的问题。从简单的主从复制到复杂的分布式集群,每种方案都有其适用场景和优缺点。
2025-03-31 07:55:55
636
原创 架构师必备!一文吃透分布式事务框架选型,从入门到精通
分布式事务是分布式系统中不可避免的挑战,随着微服务架构的普及,掌握分布式事务的原理和实践变得越来越重要。
2025-03-31 06:45:00
917
原创 分布式锁,万字长文,从入门到实战,看这一篇就够了
分布式锁看似简单,实则蕴含了丰富的分布式系统理论和实践经验。本文能帮助大家更全面、更深入地理解分布式锁的工作原理和实现方式,在实际项目中更好地应用这一技术。
2025-03-30 08:33:42
693
原创 面试被吊打!Redis跳表,难道只有我不知道吗
面试过程中,Redis作为微服务中不可缺少的技术应用,经常会出现在面试官的啼哭中,而跳表又是Redis中非常重要的一个数据结构,它支撑着Redis有序集合(Sorted Set)的高效实现。
2025-03-29 15:07:59
606
原创 Reactor网络模型详解,高性能服务器的心脏
为什么Nginx能支撑如此多的并发连接?又或者Redis为何能达到惊人的性能?这篇文章会告诉你答案
2025-03-27 07:26:36
873
原创 Linux I/O多路复用技术详解,从select到epoll的进化之路
Linux I/O多路复用技术详解,从select到epoll的进化之路
2025-03-26 07:51:15
639
原创 考验Java深度!零拷贝技术,mmap和sendfile深度对比
Java世界中两种超强的零拷贝技术,也是面试中经常会遇到的问题,mmap和sendfile
2025-03-24 06:45:00
1470
原创 LinkedList,经典永不过时,面试官角度深度剖析
在这种数据机构中,如果是添加和删除,只需要改变指针的引用即可,时间复杂度为O(1),但是查询需要遍历节点才能找到对应的节点值,但是linkedlist做了优化,会将遍历分成前后两部分,然后判断查询的索引在那一块区域,如果在前半部分,从头结点开始遍历,如果是后半部分,从尾结点开始遍历,总的来说,时间复杂度为O(n)。LinkedList,首先说说它的链表数据结构,清楚链表的特性,可以帮助更好的匹配LinkedList的使用场景。通过上面代码的分析,可以发现,全程操作是没有做任何线程安全处理的,所以也是线程。
2025-02-09 21:50:21
764
原创 HashMap,经典永不过时,不一样的视角和面试技巧
有两个线程A和B,A线程向HashMap中插入(key-A,value-A),B线程向HashMap中插入(key-B,value-B)通过索引计算,通过hash计算后,key-A和key-B的值都为3,但是key-A.equals(key-B)为false,也就是说值不相等,那么都会往table[3]的位置插入,假设线程A和B同时执行,此时都通过。在进行索引位进行计算的时候,如果是2的倍数,在进行索引取模进行计算的时候,可以利用位运算进行取模,加快计算速度,提升性能。key:记录存储元素的key。
2025-01-31 21:03:57
747
原创 ArrayList,经典永不过时,掌握设计亮点和面试技巧
这里逻辑比较简单,首先判断elementData这个变量是否等于DEFAULTCAPACITY_EMPTY_ELEMENTDATA,这里DEFAULTCAPACITY_EMPTY_ELEMENTDATA是一个空的Object[],如果elementData是空Object[],那么指定的容量minCapacity和默认的容量DEFAULT_CAPACITY比较大小,这里的DEFAULT_CAPACITY=10,意思就是初始化容量是10,随着元素的添加,超过10就返回传递的容量值size+1。
2025-01-31 16:50:43
797
原创 Git常用命令
1 初始化Git仓库Git说白了就是一个版本仓库,每个版本都关联本地磁盘中具体的文件,那么如何将文件关联到仓库中呢。(1)首先先进入本地磁盘文件目录(2)先使用git 仓库状态命令查看仓库情况发现当前目录还不是git仓库(3)执行git仓库初始化命令Git init (4)查看仓库状态仓库中状态正常,没有任何文件2仓库文件管理初体验(1)执行touch命令创建一个java文件(2)查看新增文件的状态Git statu...
2022-05-18 23:25:00
1066
原创 Git安装和配置
Linux安装如果您使用 Fedora(或任何密切相关的基于 RPM 的发行版,例如 RHEL 或 CentOS),您可以使用dnf:sudo dnf install git -all如果您使用的是基于 Debian 的发行版,例如 Ubuntu,请尝试apt:sudo apt install git-allMacOS安装在 Mac 上安装 Git 有多种方法。最简单的可能是安装 Xcode 命令行工具。在 Mavericks (10.9) 或更高版本上,您只需第一次尝试g
2022-05-11 23:41:09
254
原创 什么是Git
1 是快照不是差异Git 与任何其他 VCS(包括 Subversion 和朋友)之间的主要区别在于 Git 对其数据的思考方式。从概念上讲,大多数其他系统将信息存储为基于文件的更改列表。这些其他系统(CVS、Subversion、Perforce、Bazaar 等)将它们存储的信息视为一组文件以及随时间对每个文件所做的更改(这通常被描述为基于 delta 的版本控制)。将数据存储为每个文件的基本版本的更改Git 不会以这种方式思考或存储其数据。相反,Git 认为它的数据更像是一个微型文件系.
2022-04-27 22:38:16
295
原创 大话GIT之版本管理简介
1 版本管理是什么相信大家在玩游戏的时候,都有这样的体验,比如游戏有5个关卡,大杠同学第一天就过了3关,非常开心,但是第二天要上班,就会保存游戏进度,等到下次的时候再继续,然后第二次又过了1关到了第4关,马上就要通关了,这个时候大杠在官网发现第3关还有隐藏彩蛋没有体验到,于是保存了第4关,把游戏进度设置为第3关,重新打怪升级,毕竟花钱买的游戏,一定要榨干每一个体验,但是玩着玩着,发现第3关的新玩法玩不下去了,大杠同学很烦,不想在第3关继续浪费时间,但是又有些遗憾,希望通关后再重新来试一下,于是又保存了第
2022-04-23 11:16:22
332
原创 Redis脑裂问题
背景假设现在有三台机器,分别安装了redis服务,结构如图故障发生:如果此时master服务器所在区域网络通信出现异常,导致和两台slave机器无法正常通信,但是和客户端的连接是正常的。那么sentinel就会从两台slave机器中选举其中一个作为新的master来处理客户端请求。如图这个时候,已经存在两台master服务器,client发送的数据会持续保存在旧的master服...
2019-11-02 09:20:03
4770
3
原创 设计模式-装饰者模式
什么是装饰者模式装饰模式是在不使用继承和不改变原类文件的情况下,动态的扩展一个对象的功能。组成结构1.Component(抽象组件又叫被装饰对象的基类)2.ConcreteComponent(具体组件又叫具体被装饰对象)3.Decorator(装饰者抽象类)4.ConcreteDecorator(具体装饰者)假设一个场景在学校门口有一个卖煎饼的早餐车,主要是...
2019-10-31 23:03:23
144
原创 设计模式-简单工厂模式
简单工厂模式的优缺点优点简单工厂模式的核心是工厂类,其中包含了必要的判断逻辑,由此决定应该去创建哪个对象,客户端不用管理创建的具体逻辑,如果逻辑非常复杂,对于客户端来说更加方便简捷。缺点创建所有产品的逻辑都放在工厂类中,工厂需要知道每一种产品的创建过程,逻辑过于集中,添加新的产品生产逻辑时,势必会违反开闭原则,需要修改工厂类。简单工厂模式代码package com....
2019-10-29 20:36:36
137
原创 设计模式-模板模式
背景现在餐厅有两个服务员,一个人负责煮茶,一个人负责煮咖啡,步骤如下煮茶:1.把水烧开2.倒入茶叶3.加水煮咖啡:1.把水烧开2.倒入咖啡3.加水不用设计模式的实现package com.example.designMode.template;public class Origin { public static class TeaP...
2019-10-29 13:40:24
161
原创 设计模式-中介者模式
背景现在有三个模块,A,B,C,这三个模块之间存在互相调用使用设计模式之前package com.design.mode.meditor;public class Origin { public static class ModuleA { public void executeModule() { System.out.prin...
2019-10-27 23:12:57
246
原创 设计模式-观察者模式
背景在军训的时候,当教官发起命令立正的时候,所有的学员必须执行教官的命令。在这个场景中,教官是一个被所有学员观察的对象,一旦教官的指令发出,学员就必须做出相应的反应。代码package com.design.mode.observer;import java.util.ArrayList;import java.util.List;public class Observer...
2019-10-27 21:11:20
128
原创 设计模式-策略模式
背景根据不同的折扣政策,计算商品的价格使用策略模式之前package com.design.mode.strategy;public class Origin { public static void main(String[] args) { int discountRate = 8; discount(discountRate); ...
2019-10-27 20:34:32
200
原创 零拷贝
1.为什么使用零拷贝我们假设一个场景,将本地文件上传到网络上,伪代码如下:read(file, tmp_buf, len);write(socket, tmp_buf, len);注意,别看代码操作就读和写两个,实际在操作系统中涉及到4次以上的数据复制以及上下文切换,如图注意:该图分成上下两部分,上面是上下文切换,下面是对应的数据在内存中的操作过程是这样的:步骤一:...
2019-07-30 22:25:50
472
原创 链表实现栈结构及应用场景描述
1.栈的特点仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。如果用链表实现栈,怎么利用链表去做呢,我们可以把链表头看成栈顶,链尾堪称栈底,添加元素的时候,元素添加到链表头,删除的时候,删除链表头即可。2.代码实现2.1先构建一个链表实现,方便自定义链表的操作代码如下,具体实现可参考上篇文章public class StackBaseLink&l...
2019-07-08 23:37:28
1014
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人