自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

胜天半子

少时学语苦难圆,只道功夫半未全。到老方知非力取,三分人事七分天。

  • 博客(9)
  • 问答 (1)
  • 收藏
  • 关注

原创 布隆过滤器 学习笔记

一、前言布隆过滤器是大数据领域一个经常用到的算法,他经常用于在海量数据的场景中,快速判断某个元素在不在一个庞大的集合中。二、原理2.1、布隆过滤器用于解决什么问题在我们通常的理解中,要想判断某个元素是否在一个集合中,经典的结构应该是平衡树和Hash表。但无论哪种方法,都逃不开一点,就是存储原值。比如在爬虫场景中,我们需要记录下之前爬过的网站,我们要将之前的网址全部存储在容器里,然后再遇到新网站的时候,去判断他是否已经爬过了。在这个问题中,我们并不关心之前爬过的网址有哪些,我们只关心现在的网站有没有

2020-10-28 16:10:44 210

原创 Skiplist 跳表 学习笔记

一、Skiplist简介Skiplist是功能强大且原理简单的数据结构,且相比布隆过滤器,他的缺点和短板更少,应用更加广泛,如redis就用到了Skiplist。Skiplist是一个实现快速查找、增删数据的数据结构,可以做到O(logN) 时间复杂度的增删查,与红黑树相比他的logN中的N更小(skiplist的logN的在N范围内是随机的,一定小于N),且编码复杂度更低。因为Skiplist不需要旋转来维护红黑树的平衡。二、Skiplist原理Skiplist本质上是list, 也就是链表。我们

2020-10-27 20:56:42 457 2

原创 数据库事务的ACID四大原则 学习笔记

一、前言说起数据库,可以不知道SQL,但一定不能不知道ACID。数据库事务ACID四大原则:A 代表Atomicity,即原子性;C 表示Consistency,即一致性;I 表示Isolation,即隔离性;D 表示Durability,即持久性。二、原子性原子性简单,也最常用。即在事务中所有操作都被视为一个不可分割的整体,要么全成功,要么全失败。原子性经典的例子是A给B转账,不能A扣了钱,但B却没收到(因为网络等原因)。事务的一种实现方法是在执行的时候,先不将最终的结果更新到

2020-10-27 17:54:04 2178

原创 Hadoop与MapReduce学习笔记

一、Hadoop简介Hadoop最早只是单纯的值分布式计算系统,但随着时代的发展,目前hadoop已成了一个完整的技术家族。从底层的分布式文件系统(HDFS)到顶层的数据解析运行工具(Hive, Pig),再到分布式协调服务(Zookeeper),以及流行的分布式数据库(HBase),都属于Hadoop家族,几乎涵盖了大部分大数据应用场景。在Spark没流行之前,hadoop一直是大数据应用中的绝对主流,即使是现在,依旧有大量的中小型公司,还是依靠Hadoop搭建大数据系统。虽然如今Hadoop家族庞大

2020-10-27 17:36:04 717

原创 高吞吐、HBase的承载者 LSMT 学习笔记

一、简介LSMT,即Log-Structured Merge-Tree,这是一个经典的数据结构,在大数据系统中有着非常广泛的应用。很多耳熟能详的经典系统,底层就是基于LSMT实现的。1.1、背景知识B+ Tree和B Tree的最大区别是将所有数据都放在了叶子节点,从而优化了批量插入和批量查询的效率,而优化的核心逻辑就是无论是什么存储介质,顺序存储的效率一定优于随机存储。下面的图很好的描述了随机读和顺序读的性能差异:这种差异不仅在机械硬盘上存储,在SSD上也一样存在。1.2、直观优化既然随机

2020-10-27 13:56:31 3354

原创 LevelDB 底层原理学习笔记

一、LevelDB简介LevelDB不同于关系型数据库,他内部的数据全部以KV形式存储,不支持SQL,只支持API调用。LevelDB是个noSQL的数据库引擎,由google开发并开源,由C++编写。Facebook在此基础上推出了RocksDB,后来包括TiDB等多种分布式noSQL数据库底层都是基于LevelDB。二、LevelDB架构首先上层是MemTable, Immutable MemTable。MemTable本质上就是个存放在内存中的SkipList数据结构。Immutable

2020-10-26 21:57:45 1015 2

原创 LevelDB整体架构学习笔记

一、简介LevelDB是一个可持久化的KV数据库引擎,由Google传奇工程师Jeff Dean和Sanjay Ghemawat开发并开源。二、设计思路众所周知,普通机械磁盘的顺序写性能远高于随机写,例如15000转的SAS盘,4000 IO写入,顺序写IOPS 为 200MB/s,而随机写性能只有 1MB/s,相差200倍。LevelDB的设计正是利用了磁盘的这个特性。LevelDB的数据是存储在磁盘上的,采用 LSM-Tree 结构。LSM-Tree将磁盘的随机写转化为顺序写,从而大大提高了写速

2020-10-14 10:07:01 172 1

原创 Redis 6.0 多线程IO 学习笔记

一、异步处理IORedis的核心工作负荷是一个单线程在处理,但为什么还那么快?(10万qps)纯内存操作IO数据的处理是异步的,每个命令从接收到处理,再到返回,会经历多个“不连续”的工序。这里异步处理IO不是“同步/异步 的IO”,而是IO处理过程是异步的。假设客户端给redis发送了get aaa指令,redis要处理指令,redis必须完整地接收客户端的请求,并对指令解析,然后读取返回结果,再通过网络回写给客户端。这整个过程分以下几部分:接收指令:通过TCP接收到指令,可能会经历多次T

2020-10-09 21:16:36 312

原创 Redis bigkey学习笔记

一、什么是Redis bigkey下面两种情况,redis的key我们认为他是bigkey:字符串类型:在redis中一个字符串最大是512MB,所谓bigkey是指单个value很大,一般超过10KB就认为是bigkey非字符串类型:哈希、列表、集合、有序集合等集合类型,bigkey主要体现在元素个数太多二、bigkey的危害bigkey可以说是redis中的老鼠屎,具体表现在:2.1、内存空间不均匀有bigkey的redis节点占用内存多,而其他节点占用内存少,导致集群中不同redis

2020-10-09 16:56:14 1011

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除