【分布式】Raft 一致性共识算法

分布式存储系统通常通过维护多个副本来进行容错,提高系统的可用性。要实现此目标,就必须要解决分布式存储系统的最核心问题:维护多个副本的一致性。

首先需要解释一下什么是一致性(consensus),它是构建具有容错性(fault-tolerant)的分布式系统的基础。 在一个具有一致性的性质的集群里面,同一时刻所有的结点对存储在其中的某个值都有相同的结果,即对其共享的存储保持一致。集群具有自动恢复的性质,当少数结点失效的时候不影响集群的正常工作,当大多数集群中的结点失效的时候,集群则会停止服务(不会返回一个错误的结果)。

一致性协议就是用来干这事的,用来保证即使在部分(确切地说是小部分)副本宕机的情况下,系统仍然能正常对外提供服务。一致性协议通常基于replicated state machines,即所有结点都从同一个state出发,都经过同样的一些操作序列(log),最后到达同样的state。

架构

img

阅读全文 »

【算法】贪心

贪心算法没有固定的套路,难点就是图和通过局部最优,推出整体最优。

最好的策略就是举反例,想不到范例,那就可以试一试贪心。

想清楚局部最优和全局最优,感觉局部最优可以推出全局最优,并想不出返例,就可以试试贪心。

分发饼干

https://leetcode-cn.com/problems/assign-cookies/submissions/

阅读全文 »

【算法】回溯

回溯其实就是DFS的一种,通常DFS需要有一个全局的纪录,记录哪些节点被访问过了。

回溯是递归的副产品,只要有递归就会又回溯,另外回溯法不是什么高效的算法,因为回溯本质上是穷举,如果想要高效一些,需要加上剪枝。

回溯一般能解决的问题:

  1. 组合问题:N个数中按一定规则找出k个数的集合;
  2. 阅读全文 »

同时安装python2(pip2)和python3(pip3)

在官网正常下载python2和python3安装包安装,然后在环境变量的path下添加安装的位置:

C:\Program Files\Python27\
C:\Program Files\Python27\Scripts\
C:\Program Files\Python39\
C:\Program Files\Python39\Scripts\

                
                  
                  

阅读全文 »

【linux】linux启动过程

1.POST开机自检

linux开机加电后,系统开始开机自检,该过程主要对计算机各种硬件设备进行检测,如CPU、内存、主板、硬盘、CMOS芯片等,如果出现致命故障则停机,并且由于初始化过程还没完成,所以不会出现任何提示信号;如果出现一般故障则会发出声音等提示信号,等待故障清除;若未出现故障,加电自检完成。

2.加载BIOS

开机自检完成后,CPU首先读取位于CMOS中的BIOS程序,按照BIOS中设定的启动次序(Boot Sequence)逐一查找可启动设备,找到可启动的设备后,去该设备的第一个扇区中读取主引导目录(MBR),那么MBR是什么?它又有什么作用?

MBR存在于可启动磁盘的0磁道0扇区,占用512字节,它主要用来告诉计算机从选定的可启动设备的哪个分区来加载引导加载程序(Boot loader),MBR中存在如下内容:

阅读全文 »

【容器】网络配置

Docker容器网络资源通过内核的Network Namespace机制实现隔离,不同的Network Namespace有的各自的网络设备、协议栈、路由表、防火墙规则等,反之,统一Network Namespace下的进程共享同一网络视图。通过对Network Namespace的灵活操作,Docker提供了五种容器网络模式:

  1. none:不为容器配置任何网络配置
    docker run --net=none -it ubuntu ip addr show
  2. container:与另一个运行中的容器共享Network Namespace,共享相同的网络视图

    阅读全文 »

【linux】内存管理

  • 内存管理单元(MMU),通过分段分页的机制,提供虚拟地址到物理地址的映射方法。
  • linux内核态进程之间共享地址空间,如果进行管理?
  • linux用户态进程之间地址空间是隔离的,如果进行管理?

阅读全文 »

【汇编】计算机底层

汇编语言的组成

汇编语言由以下3类指令组成:
1)汇编指令(与机器指令一一对应,它是机器码的助记符)
2)伪指令(由编译器识别并执行)
3)其它符号(由编译器识别并执行)

阅读全文 »