美文网首页架构
后端架构师技术图谱-分布式和算法(二)

后端架构师技术图谱-分布式和算法(二)

作者: 咪雅先森 | 来源:发表于2019-06-26 10:35 被阅读9次

(Toc generated by simple-php-github-toc

数据结构

队列

集合

链表、数组

字典、关联数组

二叉树

每个节点最多有两个叶子节点。

完全二叉树

  • 《完全二叉树》
    • 叶节点只能出现在最下层和次下层,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树。

平衡二叉树

左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

二叉查找树(BST)

二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree)。

红黑树

B-,B+,B*树

MySQL是基于B+树聚集索引组织表

LSM 树

LSM(Log-Structured Merge-Trees)和 B+ 树相比,是牺牲了部分读的性能来换取写的性能(通过批量写入),实现读写之间的。
Hbase、LevelDB、Tair(Long DB)、nessDB 采用 LSM 树的结构。LSM可以快速建立索引。

  • 《LSM树 VS B+树》

    • B+ 树读性能好,但由于需要有序结构,当key比较分散时,磁盘寻道频繁,造成写性能。
    • LSM 是将一个大树拆分成N棵小树,先写到内存(无寻道问题,性能高),在内存中构建一颗有序小树(有序树),随着小树越来越大,内存的小树会flush到磁盘上。当读时,由于不知道数据在哪棵小树上,因此必须遍历(二分查找)所有的小树,但在每颗小树内部数据是有序的。
  • 《LSM树(Log-Structured Merge Tree)存储引擎》

    • 极端的说,基于LSM树实现的HBase的写性能比MySQL高了一个数量级,读性能低了一个数量级。
    • 优化方式:Bloom filter 替代二分查找;compact 小数位大树,提高查询性能。
    • Hbase 中,内存中达到一定阈值后,整体flush到磁盘上、形成一个文件(B+数),HDFS不支持update操作,所以Hbase做整体flush而不是merge update。flush到磁盘上的小树,定期会合并成一个大树。

BitSet

经常用于大规模数据的排重检查。

常用算法

排序、查找算法

选择排序

冒泡排序

插入排序

快速排序

归并排序

希尔排序

TODO

堆排序

计数排序

桶排序

基数排序

按照个位、十位、百位、...依次来排。

二分查找

Java 中的排序工具

布隆过滤器

常用于大数据的排重,比如email,url 等。
核心原理:将每条数据通过计算产生一个指纹(一个字节或多个字节,但一定比原始数据要少很多),其中每一位都是通过随机计算获得,在将指纹映射到一个大的按位存储的空间中。注意:会有一定的错误率。
优点:空间和时间效率都很高。
缺点:随着存入的元素数量增加,误算率随之增加。

字符串比较

KMP 算法

KMP:Knuth-Morris-Pratt算法(简称KMP)
核心原理是利用一个“部分匹配表”,跳过已经匹配过的元素。

深度优先、广度优先

贪心算法

回溯算法

剪枝算法

动态规划

朴素贝叶斯

推荐算法

最小生成树算法

最短路径算法

相关文章

  • 后端架构师技术图谱

    后端架构师技术图谱

  • 后端架构师技术图谱-分布式和算法(二)

    分布式设计扩展性设计稳定性 & 高可用硬件负载均衡软件负载均衡限流应用层容灾跨机房容灾容灾演练流程平滑启动数据库扩...

  • 01-Spring起步

    一、后端开发的概念和技术栈 1.1 什么是后端开发? 后端开发 1.2 Java后端技术图谱? 二、JavaEE概...

  • spring起步

    一、后端开发的概念和技术栈 1.1什么是后端开发 后端开发 1.2Java后端技术图谱 二、JavaEE概...

  • Spring起步

    一、后端开发的概念和技术栈 1.1 什么是后端开发? 后端开发含义 1.2 Java后端技术图谱? 二、JavaE...

  • day01 Spring起步

    一、后端开发的概念和技术栈 1.1 什么是后端开发? 什么是后端开发 1.2 Java后端技术图谱? 二、Java...

  • springstudy 01

    一、后端开发的概念和技术栈 1.1 什么是后端开发? 百度 1.2 Java后端技术图谱? [技术图谱](http...

  • 后端架构师技术图谱

    后端架构师技术图谱 最后更新于20180502 数据结构队列集合链表、数组字典、关联数组栈树二叉树完全二叉树平衡二...

  • 1.Day 01 Spring起步

    一.后端开发的概念和技术栈 1.1什么是后段开发? 什么是后端开发? 1.2java后段技术图谱 二.javaEE...

  • 后端架构师技术图谱

    《后端架构师技术图谱》 最后更新于20180502 数据结构队列集合链表、数组字典、关联数组栈树二叉树完全二叉树平...

网友评论

    本文标题:后端架构师技术图谱-分布式和算法(二)

    本文链接:https://www.haomeiwen.com/subject/rpvqcctx.html