江哥架构师笔记

路漫漫其修远兮
吾将上下而求索

按时间排序目录 第11页

算法学习:bfs+dfs

– 概念 深度优先搜索算法(Depth-First-Search),是搜索算法的一种。它沿着树的深度遍历树的节点,尽可能深的搜索树的分 支。堆栈实现,递归实现 广度优先搜索算法(Breadth-First-Search),是一种...

算法学习:快排

目录 快速排序的介绍 快速排序的Python实现 快速排序的介绍 快速排序(quick sort)的采用了分治的策略。 分治策略指的是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原...

mysql学习:锁

– 共享锁与排它锁 共享锁【S锁】 又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做...

etcd学习:分布式锁实现

概述 在传统单体应用单机部署的情况下,可以使用Java并发处理相关的API(如ReentrantLock或Synchronized)进行互斥控制。在单机环境中,Java中提供了很多并发处理相关的API。但是,随着业务发展的需要,原单体单机部...

redis学习:缓存穿透,缓存击穿,缓存雪崩解决方案分析

前言 设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。 缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数...

k8s学习:容器化落地中网络配置实践

1 为什么需要kube-proxy         我们知道容器的特点是快速创建、快速销毁,Kubernetes Pod和容器一样只具有临时的生命周期,一个Pod随时有可能被终止或者漂移,随着集群的状...

rabbitmq学习(5):Topic

相比fanout类型,基于direct类型的交换器实现的日志记录系统,可以让我们有选择的接收日志。而在其他的一些场景下,direct类型交换器仍然不能够满足人们日益增长的需求。比如:不仅需要对日志的级别进行过滤,还要对日志源进行过滤。 1....

rabbitmq学习(4):Routing

与fanout类型的交换器绑定了的队列,会收到所有经过该交换器的消息,即fanout类型的交换器会转发所有消息到与之绑定的队列中。那么,如果消费者应用程序只想接收经过交换器的一部分消息,该怎么办呢? 1.再谈绑定 前面的章节中,我们已经介绍...

rabbitmq学习(3):Publish/Subscribe

前一篇文章学习了工作队列,细心的你或许会发现:生产者生产的每一条特定的消息要么被消费者C1消费,要么被消费者C2消费。也就是说,一条消息只能被一个消费者消费。那么,多个消费者如何消费同一条消息呢? 1.fanout类型交换器 我们将“向多个...

rabbitmq学习(2):Work Queues

前面介绍了简单的RabbitMQ示例:一个生产者、一个消费者。然而,面对复杂耗时的任务时,为了提高工作效率,往往会使用多个消费者进行消费。此时的工作队列(Work Queue)需要将消息分发给多个消费者。 为了模拟出复杂、耗时的任务,我们假...