随笔分类 - 算法/计算机科学
摘要:Nested Loop Join 这一章节主要讲解 join 的算法,我想记录一些重点的地方。有趣的是 关于 Nested Loop join 对驱动表为什么小表会更好这个问题,搜遍简中的 blog 都是一些错误的描述而且排名还贼高。而且大家都是互相拷贝。。互相抄内容,错来错去都差不多。 我们基于上
阅读全文
摘要:B 树是一个家族,感觉 B+Tree 对于喜欢使用 MySQL 的我来说是最常听说的数据库索引结构之一了。但是我从来没有从头到尾自己实现过一个 B+Tree,像类似的数据结构,感觉不真正自己写一次就很难领悟其中的细节。 B+ Tree 的定义 当我们在组织这个树型结构的时候,我们是以节点的形式组织的
阅读全文
摘要:这一章大概是一个 hash tables 的科普。因为刚上课不久 andy 就说我们自己不会去实现一个这玩意儿。现在有非常优秀的方案,你应该去使用那个最好的方案,那个方案把其他方案都给碾碎了。我们当然就应该使用它。 xxhash 是之前搞 zstd 的 facebook 哥们搞的。这俩玩意儿一个是最
阅读全文
摘要:这一章节的重点在 buffer pool manager buffer pool manager 这一章学完我感觉我才理解了,其实我在数据库里拿到所有的数据似乎都过了一次内存。而内存有自己的算法和策略可以尽量帮我缓存我会多次访问的数据。 访问数据的流程大概类似于 execution engine 执
阅读全文
摘要:Storage 1 主要介绍了 slotted-page 组织数据的情况。但是这种方式会有一些问题比如 1. 页分裂 (比如在一个页上面操作,后续对其进行操作可能会有删除的操作后续可能需要使用 compaction 来合并对应页以释放空间) 2. 无用的 io 消耗。比如说如果我们使用 MySQL
阅读全文
摘要:最先的一部分还是介绍存储介质速度层级 总的来说就是 cpu > memory > disk 但是究竟快多少呢? 我觉得这里只需要记住一个常用的关键论点,内存约比 ssd 快 150 倍 比普通的 HDD 快 20000 倍。单从这里就可以比较清晰的知道,在内存里汇总计算大量数据对数据库效率的重要性。
阅读全文
摘要:背景 目前在做一个消息中台,提供给业务方各种消息通道能力。我们在系统设计过程中,除了有对业务方在使用时做 Quota 限制;也有对请求做流量控制(几w+ QPS),防止并发流量上来时打垮服务。下面是个人在调研流量控制方案的一些梳理和总结。 高并发解决方案概述 并发通常是指并发访问,也就是在某个时间点
阅读全文
摘要:正则表达式分组分为捕获组(Capturing Groups)与非捕获组Non-Capturing Groups,那为什么需要分组呢? 正则表达式分组分为捕获组(Capturing Groups)与非捕获组Non-Capturing Groups。正则里面是用成对的小括号来表示分组的,如(\d)表示一
阅读全文
摘要:简介 这个实验要求我们使用 golang 自行实现一个支持并发和简单容错的 分布式 MR ,支持一个 master 多个 wokrer 的工作模式。 我做完实验之后去看了一下之前网上发布的一些 lab1 的作业。感觉今年是不是改版了?后来我去看了一下 2018 年的 lab1 作业,果然改版了。。。
阅读全文
摘要:前言 打算跟着 MIT 的20年春季课程节奏一起通过4个 lab 来更加深刻和系统的来认识和实现分布式系统。我会坚持把每个学习节点和心得和笔记给记录下来。 每个 lec 之前一般要先看甩上来的论文,我之前虽然知晓大数据三驾马车论文大名,但是也从来没有仔细看过。这次花了2天认认真真看了 MapRedu
阅读全文
摘要:今天继续拜读「深入浅出计算机组成原理」专栏,觉得讲 IO_WAIT 这篇很有意思,正好可以结合前面的一篇讲物理硬件存速度的一块儿看。 现在我们看硬盘厂商出品的性能报告,通常会看到两个指标,一个是响应时间(Response Time) 另外一个是 数据传输速率 (Data Transfer Rate)
阅读全文
摘要:Alpha:是内部测试版,一般不向外部发布,会有很多Bug.一般只有测试人员使用。Beta:也是测试版,这个阶段的版本会一直加入新的功能。在Alpha版之后推出。RC:(Release Candidate) 顾名思义么 ! 用在软件上就是候选版本。系统平台上就是发行候选版本。RC版不会再加入新的功能
阅读全文
摘要:上个月参加了一个云存储的技术讨论会。这一个月里,陆续收到几位同学讨论大数据保存和处理的邮件。今天是周末,索性把这个月的交流内容整理写下来,供各位参考。 目前大数据存储有两种方案可供选择:行存储和列存储。业界对两种存储方案有很多争持,集中焦点是: 谁能够更有效地处理海量数据,且兼顾安全、可靠、完整性。
阅读全文
摘要:其实这个问题每次看的时候都觉得很明白,但是很久之后就忘记了,所以这次准备记录下来。深入到这个过程的各个细节之中,以后多看看。 Step 1 请求缓存信息: 当你在开始访问一个 www.baidu.com 开始,第一件事情就是去访问本地缓存查询是否有缓存了这个地址的 ip 地址。如果能获取到直接返回,
阅读全文
摘要:一般现在的SAAS服务提供现在的sdk或api对接服务都涉及到一个身份验证和数据加密的问题。一般现在普遍的做法就是配置使用非对称加密的方式来解决这个问题,你持有SAAS公司的公钥,SAAS公司持有你的公钥,你们就可以进行加密和签名的验证了。 先来看下两种在linux或者mac下面生成key pair
阅读全文
摘要:最近使用tornado做长链接想着怎么着也要试试websocket协议吧。所以说干就干。 首先要知道websocket是基于http协议的,为什么这么说?因为从协议来说,websocket是借用了一部分为http请求头信息来进行验证和请求的的。 让我们来看一个标准的websocket请求头: 可以看
阅读全文
摘要:群里发面试题来看,无意之后看到。自己思考了一下觉得位运算就可以搞定。 题意大概就是让你可以有一个方法对三个数进行encode之后存储进一个数。然后有一个decode方法能将这三个数从这一个数中还原回来。 go实现: 总的来说,思路还是位运算。我们假设这个数是0-255的一个数。我们就可以使用每8bi
阅读全文
摘要:接前文,除了广泛使用在快速排序中。Partition算法还可以很容易的实现在无序序列中使用O(n)的时间复杂度查找kth(第k大(小)的数)。 同样根据二分的思想,每完成一次Partition我们可以轻松的知道该位置前面有几个比自己小的数,后面有几个比自己大的数(或逆序相反)。所以也能知道自己是第几
阅读全文
摘要:最近像在看闲书一样在看一本《啊哈!算法》 当时在amazon上面闲逛挑书,看到巨多人推荐这本算法书,说深入浅出简单易懂便买来阅读。实际上作者描述算法的能力的确令人佩服。就当复习常用算法吧。 后面会依次纪录一下我觉得有意思的常用算法使用,这次就是快排。 快速排序简介: 快排的中心思想还是二分法,通过p
阅读全文
摘要:停止刷题已经三周了,有些想念。最近总算完成了公司代码的重构,于是要继续开始学习算法。 先来看leetcode上面第268题: Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one t
阅读全文