02 2022 档案
摘要:一、部署图 主要跟架构部署有关,例如客户端、节点、网关、队列、数据库等 二、用例图 三、时序图 四、ER图 五、领域图
阅读全文
摘要:什么是实时协同编辑 这里所说的实时协同编辑,是指多人同时编辑一个文档,最典型的例子是 Google Docs,你可以实时看到别人做出的修改,不用手动刷新页面。 要实现实时编辑,我们需要解决两个技术点:实时通信问题、编辑冲突问题,其中实时通信问题比较好解决,可以使用 long pull 或 WebSo
阅读全文
摘要:四种常用的解决方案 方案一:Cache Aside Pattern 读请求 先读缓存再读库 如果缓存命中,返回数据 如果缓存未命中,读库并把数据写入缓存,然后再返回 写请求 数据写库 删除缓存 这里很重要的一点在写请求中,要删除缓存而不是更新缓存。缓存的更新会发生在下一次读请求时。这里为什么会选择删
阅读全文
摘要:1、zookeeper 实现方式: 方案1:利用节点名称的唯一性来实现共享锁。 算法思路: 利用名称唯一性,加锁操作时,只需要所有客户端一起创建/test/Lock节点,只有一个创建成功,成功者获得锁。解锁时,只需删除/test/Lock节点,其余客户端再次进入竞争创建节点,直到所有客户端都获得锁。
阅读全文
摘要:树 1、二叉树 二叉树:最多有两颗子树的树被称为二叉树。 二叉树又分为斜树,满二叉树,完全二叉树: 斜树:所有节点都只有左子树的二叉树叫做左斜树,所有节点都只有右子树的二叉树叫做右斜树。(本质就是链表) 满二叉树:二叉树中所有非叶子结点的度都是2,且叶子结点都在同一层次上。 完全二叉树:如果一个二叉
阅读全文
摘要:相关概念 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。 不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。 时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。 空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据
阅读全文
摘要:共享内存是System V版本的最后一个进程间通信方式。共享内存,顾名思义就是允许两个不相关的进程访问同一个逻辑内存,共享内存是两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常为同一段物理内存。进程可以将同一段物理内存连接到他们自己的地址空间中,所有的进程都可以访
阅读全文
摘要:堆就是用数组实现的二叉树,所以它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置。 堆的常用方法: 构建优先队列 支持堆排序 快速找出一个集合中的最小值(或者最大值) 堆属性 堆分为两种:最大堆和最小堆,两者的差别在于节点的排序方式。 在最大堆中,父节点的值比每一个子
阅读全文
摘要:TCP协议保证数据传输可靠性的方式主要有: 校验和 序列号 确认应答 超时重传 连接管理 流量控制 拥塞控制 校验和 计算方式:在数据传输的过程中,将发送的数据段都当做一个16位的整数。将这些整数加起来。并且前面的进位不能丢弃,补在后面,最后取反,得到校验和。 发送方:在发送数据之前计算检验和,并进
阅读全文
摘要:缓存算法用于决定缓存系统中哪些数据应该被删去。 LFU(Least Frequently Used):最近最不常用算法,根据数据的历史访问频率来淘汰数据。 核心思想是:最近使用频率高的数据很大概率将会再次被使用,而最近使用频率低的数据,很大概率不会再使用。 做法:把使用频率最小的数据置换出去。这种算
阅读全文
摘要:1.RabbitMQ是什么? RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。 PS:也可能直接问什么是消息
阅读全文
摘要:雪崩效应 由于服务提供者A不可用,导致服务调用者B对A的请求阻塞,没有相关的机制通知或解决请求阻塞,导致在服务调用者B对A请求的阻塞越来越多,阻塞请求变多并且不断对A进行请求重试导致服务调用者B所在的系统的资源会被耗尽,而服务调用者B所在的系统可能并不会只有对A的调用,还有存在对其他服务提供者的调用
阅读全文
摘要:什么是CPU上下文 Linux是一个多任务操作系统,它支持远大于CPU核心数的任务同时进行。当然,这些任务并不是真的同时在运行,而是因为系统在很短的时间内,将CPU轮流分配给它们,造成多任务同时运行的错觉。每个任务在运行前,CPU都需要知道任务从哪来加载,又从哪里开始运行,也就是说,需要事先帮它们设
阅读全文