代码改变世界

[置顶]谈算法与数据结构的学习

2019-11-10 21:05 by bangerlee, 715 阅读, 0 推荐, 收藏, 编辑
摘要:算法与数据结构曾是我薄弱的一块,甚至产生过畏难情绪、一度怀疑自己是否能够掌握这方面技能。 18年8月,我下决心通过做LeetCode题目去理解常用算法和数据结构,并掌握它们的应用方法。 一年多的时间里,总共完成1,000+道题,为加深对不同算法的理解,部分题目用不同方式做了2~3遍。从刚开始刷简单题 阅读全文

[置顶]分布式系统理论 - 从放弃到入门

2017-01-01 02:45 by bangerlee, 8160 阅读, 11 推荐, 收藏, 编辑
摘要:随承载用户数量的增加和容灾的需要,越来越多互联网后台系统从单机模式切换到分布式集群。回顾自己毕业五年来的工作内容,同样有这样的转变。 毕业头两年负责维护运行在刀片机上的业务,在机房里拔插单板的日子是我逝去的青春。设备之间通过VCS组成冷备,但即使有双机软件保护,宕机、网络丢包等问题发生时业务仍会受影 阅读全文

算法与数据结构基础 - 图(Graph)

2019-09-20 13:22 by bangerlee, 1153 阅读, 1 推荐, 收藏, 编辑
摘要:图基础 图(Graph)应用广泛,程序中可用邻接表和邻接矩阵表示图。依据不同维度,图可以分为有向图/无向图、有权图/无权图、连通图/非连通图、循环图/非循环图,有向图中的顶点具有入度/出度的概念。 面对图相关问题,第一步是将问题转为用图表示(邻接表/邻接矩阵),二是使用图相关算法求解。 相关Leet 阅读全文

算法与数据结构基础 - 递归(Recursion)

2019-09-17 15:03 by bangerlee, 1558 阅读, 1 推荐, 收藏, 编辑
摘要:递归基础 递归(Recursion)是常见常用的算法,是DFS、分治法、回溯、二叉树遍历等方法的基础,典型的应用递归的问题有求阶乘、汉诺塔、斐波那契数列等,可视化过程。 应用递归算法一般分三步,一是定义基础条件(base case),二是改变状态、向基础条件转移,三是递归地调用自身。例如 LeetC 阅读全文

算法与数据结构基础 - 分治法(Divide and Conquer)

2019-08-13 13:11 by bangerlee, 1576 阅读, 4 推荐, 收藏, 编辑
摘要:分治法基础 分治法(Divide and Conquer)顾名思义,思想核心是将问题拆分为子问题,对子问题求解、最终合并结果,分治法用伪代码表示如下: 分治法简单而言分三步 Divide、Conquer、Combine,图示如下: 和动态规划、贪心等一样,分治法是一种算法思想,不是用于解决专门某类问 阅读全文

算法与数据结构基础 - 合并查找(Union Find)

2019-04-20 15:14 by bangerlee, 4569 阅读, 2 推荐, 收藏, 编辑
摘要:Union Find算法基础 Union Find算法用于处理集合的合并和查询问题,其定义了两个用于并查集的操作: Find: 确定元素属于哪一个子集,或判断两个元素是否属于同一子集 Union: 将两个子集合并为一个子集 并查集是一种树形的数据结构,其可用数组或unordered_map表示: F 阅读全文

分布式系统理论进阶 - Paxos变种和优化

2016-12-18 20:38 by bangerlee, 6684 阅读, 1 推荐, 收藏, 编辑
摘要:引言 《分布式系统理论进阶 - Paxos》中我们了解了Basic Paxos、Multi Paxos的基本原理,但如果想把Paxos应用于工程实践,了解基本原理还不够。 有很多基于Paxos的优化,在保证一致性协议正确(safety)的前提下,减少Paxos决议通信步骤、避免单点故障、实现节点负载 阅读全文

分布式系统理论进阶 - Raft、Zab

2016-10-26 21:50 by bangerlee, 19197 阅读, 10 推荐, 收藏, 编辑
摘要:引言 《分布式系统理论进阶 - Paxos》介绍了一致性协议Paxos,今天我们来学习另外两个常见的一致性协议——Raft和Zab。通过与Paxos对比,了解Raft和Zab的核心思想、加深对一致性协议的认识。 Raft Paxos偏向于理论、对如何应用到工程实践提及较少。理解的难度加上现实的骨感, 阅读全文

分布式系统理论基础 - 选举、多数派和租约

2016-08-21 21:11 by bangerlee, 10777 阅读, 6 推荐, 收藏, 编辑
摘要:选举(election)是分布式系统实践中常见的问题,通过打破节点间的对等关系,选得的leader(或叫master、coordinator)有助于实现事务原子性、提升决议效率。 多数派(quorum)的思路帮助我们在网络分化的情况下达成决议一致性,在leader选举的场景下帮助我们选出唯一lead 阅读全文

分布式系统理论进阶 - Paxos

2016-07-12 23:22 by bangerlee, 28377 阅读, 5 推荐, 收藏, 编辑
摘要:引言 《分布式系统理论基础 - 一致性、2PC和3PC》一文介绍了一致性、达成一致性需要面临的各种问题以及2PC、3PC模型,Paxos协议在节点宕机恢复、消息无序或丢失、网络分化的场景下能保证决议的一致性,是被讨论最广泛的一致性协议。 Paxos协议同时又以其“艰深晦涩”著称,下面结合 Paxos 阅读全文