自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mr.Phoebe的专栏

退役后还是一个弱渣

  • 博客(590)
  • 资源 (1)
  • 收藏
  • 关注

原创 高级数据库二十二:矢量化运行

Vectorized Execution (Part I)说实话,这节课有点没听明白。上节课说到了通过矢量化来加速查询的优化,需要这么做的原因是:构建一个DBMS是非常难的一件事情DBMS中有很多的问题需要去克服新的CPU加速效果不明显,所以必须想别的办法来提升效果硬件方面一般来说,现在用的CPU主要分为两种MULTI-CORE CPUS使用少量高功率内

2018-01-16 12:25:23 1727 1

原创 高级数据看二十一:查询计划编译

Query Compilation背景对于in-memory数据库,因为所有的数据都在内存之中,所以很多其他影响速度的因素(如磁盘IO等)都消失了,所以提高吞吐量的唯一方法是减少执行的指令数量。提高十倍速度,DBMS需要减少90%的指令提高百倍速度,DBMS需要减少99%的指令我们可以通过code specialization来实现这种指令数量的减少。即,通过生成DBMS

2018-01-15 13:34:11 913

原创 高级数据库二十:并行JOIN算法(Sorting)

Parallel Join Algorithms (Sorting)背景关于Join的其他背景可以查看上一篇讲Hash Join的文章。SINGLE INSTRUCTION, MULTIPLE DATA (SIMD)有一系列的CPU指令允许处理器同时在多个数据点上执行相同的操作。目前的AMD和Intel CPU均具有ISA和微体系结构,支持SIMD操作。优点:

2018-01-15 07:21:37 1837

原创 高级数据库十九:并行JOIN算法(Hashing)

Parallel Join Algorithms (Hashing)背景我们在执行Join操作的时候,肯定会使用多线程。但是这些多线程不是完全独立运行的,因为你需要在进入下一个阶段前将这一个阶段的所有数据处理完,而不能让一个线程先进入下一个阶段。所以如何设计Join算法来减少overhead就是非常关键的事情了。这篇文章我们将介绍Hash Join的算法,下片文章介绍的是Sort-

2018-01-14 10:39:43 2395 1

转载 系统设计入门

原文地址:github.com/donnemartin/system-design-primer 译文地址:系统设计入门 译文出自:掘金翻译计划 译者:XatMassacrE、L9m、Airmacho、xiaoyusilen、jifaxu 这个 链接 用来查看本翻译与英文版是否有差别(如果你没有看到 README.md 发生变化,那就意味着这份翻译文档是最新的)。 系

2018-01-13 10:46:55 24909

翻译 数据库设计的非正统方法:Shard的来临

数据库设计的非正统方法:Shard的来临关于Shard和Partition的区别,大家可以看看What’s the difference between sharding DB tables and partitioning them?以及Database sharding Vs partitioning。简单而言,就是通常意义上的Partition是在本地数据上的分片,Shard是在多台

2018-01-13 10:02:52 1026

翻译 技术面试的系统设计题(二)

可扩展性基础现在您已经设计了一个可靠的抽象体系结构,下一步就是将其扩展。如果你从来没有建立过大规模的系统,这个任务看起来有点令人生畏。除了接下来的一个视频和四篇博文的翻译,你也可以看看An Unorthodox Approach To Database Design : The Coming Of The Shard可扩展的Web开发视频地址 课件地址比较建议看一看视

2018-01-13 05:03:13 8253

原创 高级数据库十八:查询规划与执行

Query Execution & Scheduling对于数据库系统,交互模式大致如上。前端有多个用户,也就是多个应用程序来访问后端。后端则发送逻辑查询给DBMS,DBMS得到SQL语句或者其他方式的逻辑查询之后,将之转化为物理查询,得到数据后再返回给后端。查询计划一个查询计划是由多个操作组成的。比如,SELECTION,JOIN等等。一个操作对应到具体的物理查询操作

2018-01-09 22:13:15 875

翻译 技术面试的系统设计题(一)

技术面试的系统设计题(一)本文为课程翻译和学习笔记,课程地址System Design for Tech Interviews。 关于课后题,这儿就不公布答案了。应该还是比较简单的。什么是系统设计题在面试的时候,面试官经常会让我们设计一些系统,比如:设计一个像bit.ly一样的URL缩短服务。你将如何实现谷歌搜索?设计一个C/S应用程序,允许人们互相下棋。如何将关系存

2018-01-09 09:05:05 23825 2

原创 高级数据库十七:优化器估价模型

Optimizer Cost Models我们在上两次讲查询优化文章中,提到了基于成本的查询计划,它们为数据库的当前状态生成执行特定查询计划的查询成本估计。查询成本与我们上一节课讨论的优化器搜索查询策略的方式无关。就像二维平面上的最短路模型(不同的最短路算法,如Dikstra、Floyd)与它采用的距离模型(曼哈顿距离、欧氏距离、切比雪夫距离)无关。那么这节课就是讲解不同的估价模型。

2018-01-08 12:55:56 1368

原创 CAP原则

CAP原则CAP原则1985年Lynch证明了异步通信中不存在任何一致性的分布式算法(FLP Impossibility)的同时,人们就开始寻找分布式系统设计的各种因素。一致性算法既然不存在,但若能找到一些设计因素,并进行适当的取舍以最大限度满足实现系统需求成为当时的重要议题。比如,在CAP之前研究者就已经发现低延迟和顺序一致性不可能同时被满足。2000年,Eric Brewer教

2018-01-07 10:02:08 519

原创 高级数据库十六:查询优化器(二)

Optimizer Implementation(Part II)在这儿解释一下,逻辑查询计划或者逻辑计划指的是关系代数层面的查询语句;物理查询计划或者物理计划指的是具体查询层面的查询算法,具体到每一个JOIN的算法选择,每一个SELECT操作的算法实现(scan或者index)。瀑布模型(Cascades)分层搜索(STRATIFIED SEARCH)首先使用转换规则重写

2018-01-07 09:05:05 5115

原创 高级数据库十五:查询优化器(一)

Optimizer Implementation(Part I)背景在讲述这个优化器的时候,就必须先了解查询过程。在本系列的数据库四:浅谈数据库查询过程(Query Processing)中大致地说明了一下数据库的查询过程,但是没提到查询优化器的具体策略与实现。对于查询而言,我们期望优化器的作用是找到最小代价的正确执行方案。但是这是一个NP完全问题,所以没有一个优化器能够真正地找到

2018-01-05 10:33:03 9739

原创 高级数据库十四:检查点协议

Checkpoint Protocols背景日志允许DBMS在崩溃/重新启动后恢复数据库。 但是这个系统每次都要重做整个日志。检查点允许系统忽略大部分日志以减少恢复时间,就像存档点一样。理想的检查点应该具有:不能减慢常规事务的处理速度。不能引入不可接受的延迟峰值。不能要求过多的内存。CONSISTENT VS. CHECKPOINTS方法1:一致的检查点

2018-01-02 10:24:41 1561 1

原创 高级数据库十三:日志协议

Logging ProtocolsLogging Schemes恢复算法日志一般与系统恢复有关,恢复算法是确保数据库一致性、原子性和持久性(尽管事务失败)的技术。恢复算法有两个部分:正常txn处理期间的操作,以确保DBMS可以从故障中恢复。无法将数据库恢复到确保原子性,一致性和持久性的状态之后的操作。日志方案有两种日志方案物理日志记录 记录对数

2017-12-31 11:47:41 1764

原创 高级数据库十二(2):HIVE文件存储格式

数据库十二(2):HIVE文件存储格式昨天在看HIVE的时候,突然发现HIVE的文件存储对数据的压缩刚好是前天看的数据库压缩的内容。所以刚好可以拿出来讲一下。TextFileHive默认格式,数据不做压缩,磁盘开销大,数据解析开销大。可结合Gzip、Bzip2、Snappy等朴素压缩算法使用(系统自动检查,执行查询时自动解压),但使用这种方式,hive不会对数据进行切分,从

2017-12-30 00:35:44 644

原创 高级数据库十二:数据库压缩

Database Compression背景如果数据库需要从硬盘中获得数据,那么数据的I/O操作才是数据库的瓶颈。所以需要对数据进行压缩。内存中的数据库管理系统比较复杂。压缩数据库降低了DRAM的性能要求和处理时间。DRAM不仅价格贵,而且在运行且维护的代价也非常大。关键在于如何平衡速度和压缩率之间的关系。在内存数据库中,按照老师的说法,总是选择速度而不是压缩率。也就是说,如果

2017-12-28 12:32:24 5167

原创 高级数据库十一:存储模型和数据布局

存储模型和数据布局(Storage Models & Data Layout)对于内存数据库而言,它的结构大致如下可以将之理解为一个大的数组,通过索引(或者直接扫描全部内存)得到所需要的值和存储地址,则通过页和页偏移等信息找到需要的数据。如果页面是不定长的数据块,可能需要做一个二次指针才可以。类型表示INTEGER/BIGINT/SMALLINT/TINYINT C

2017-12-27 09:28:54 3701 2

原创 高级数据库十:联机分析处理的索引

OLAP Indexes对于传统的分析数据库结构大致如下OLTP数据库保持相互独立,然后将需要的数据传输到OLAP数据库。OLAP Schemas决策支持系统(DECISION SUPPORT SYSTEMS)为组织的管理,运营和计划层面提供帮助的人通过分析历史数据来帮助人们做出有关未来问题和问题的决策的应用程序。大数据的起源就是这儿。STAR SCHE

2017-12-26 07:31:29 1005

原创 高级数据库九:不需要锁和闩的索引(二)

不需要锁和闩的索引(Latch-free OLTP Indexes Part II)Bw-Tree Index对于并发的跳表而言,我们不能在无锁的情况下有反向指针,因为CaS一次只能更新一个地址。这个数据结构是微软在2010年左右做的,一开始微软想用的是Skip List,但是因为Skip List的限制,他们就设计了Bw-Tree。现在用Skip List的数据库,老师知道的只有

2017-12-24 09:04:21 963

原创 高级数据库八:不需要锁和闩的索引(一)

不需要锁和闩的索引(Latch-free OLTP Indexes Part I)T-TreesT-Trees 是一种基于AVL树的数据结构,它的设计是人们针对内存数据库做的优化。不像B-Trees 系列在硬盘上那样存储大量的信息,包括索引、值等等,T-Trees 利用了所有数据都已经在内存中的这个条件,它存储的是指向数据的指针。这样可以有效地减少overhead,具有较高的节点空

2017-12-24 01:05:48 871

原创 高级数据库七:索引的锁和闩

索引的锁和闩(Locking & Latching)索引的锁和闩索引作用一种能够加快数据检索速度的数据结构,但是会占用额外的读写维护操作和存储空间。索引实现B树系列、哈希表等等。这些别的地方说的比较多,我就不多提了。索引锁对于之前疏文章中提到的那些并发控制、多版本控制等,我们知道了如何使用锁来保护数据库的数据。但是对于索引,我们需要用别的方式和方法来

2017-11-28 00:30:10 1232

原创 高级数据库六:浅谈数据库的多版本并发控制(MVCC)

多版本并发控制Multi-Version Concurrency Control基础理解事务T1改变数据V1,将其改为数据V2,在堆中,数据如下图事务T3改变了V2,将其改为V3,在堆中,数据如下图:目前事务T2还在活动中,所以V1和V2属于recently dead状态,而不是真的dead状态。从可视性而言,事务T0只能看到数据V1。因为它早于事务T1启动。事

2017-11-27 09:42:43 6533

原创 Logistic Regression的思考与整理

在NYU上了Machine Learning,学到了一些以前没有注意或者不知道的知识。在原有部分博文的基础上进行更详细地讲解。关于回归算法的Bias和Variance加深了对误差理论的理解。对于一个输入为x⃗ \vec x的回归算法,我们设算法输出的预测函数为g(x)g(x),算法的真正分类函数为f(x)f(x)。我们期望的就是让g(x)g(x)尽可能地与f(x)f(x)靠近。我们将f(x)f(x)

2017-11-01 09:01:42 859

原创 边缘检测之Robert算子

Robert算子,之前被用到了图像增强中的锐化,原因是作为一阶微分算子,Robert简单,计算量小,对细节反应敏感。算子对边缘检测的作用是提供边缘候选点,Robert算子相比于其他3x3算子,在不经过后处理时,可以给出相对较细的边缘。算子介绍以下坐标新采用的是i,ji, j坐标系,其中i=−y,j=xi = -y, j = x。Robert算子的形式是Gi≅−1001 Gj≅01−10G_i \co

2017-10-21 10:51:57 39729 1

原创 高斯噪声与高斯滤波

噪声噪声表现形式噪声在图像上常表现为一引起较强视觉效果的孤立像素点或像素块。一般,噪声信号与要研究的对象不相关,它以无用的信息形式出现,扰乱图像的可观测信息。通俗的说就是噪声让图像不清楚。噪声对数字图像的影响对于数字图像信号,噪声表为或大或小的极值,这些极值通过加减作用于图像像素的真实灰度值上,对图像造成亮、暗点干扰,极大降低了图像质量,影响图像复原、分割、特征提取、图像识别等后继工作的进行。高斯噪

2017-10-09 12:06:58 63386 1

原创 Memory Game

Memory GameThe game of Memory is played with NN pairs of cards where each pair has the same picture, i.e. there are NN different pictures, and each of them appear on exactly two cards.The cards are shu

2017-09-30 10:02:35 481

转载 正则化方法:L1和L2 regularization、数据集扩增、dropout

正则化方法:防止过拟合,提高泛化能力在训练数据不够多时,或者overtraining时,常常会导致overfitting(过拟合)。其直观的表现如下图所示,随着训练过程的进行,模型复杂度增加,在training data上的error渐渐减小,但是在验证集上的error却反而渐渐增大——因为训练出来的网络过拟合了训练集,对训练集外的数据却不work。为了防止overfitt

2017-09-28 10:35:14 370

原创 理解神经网络中的Dropout

dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。注意是暂时,对于随机梯度下降来说,由于是随机丢弃,故而每一个mini-batch都在训练不同的网络。过拟合是深度神经网(DNN)中的一个常见问题:模型只学会在训练集上分类,这些年提出的许多过拟合问题的解决方案,其中dropout具有简单性而且效果也非常良好。算法概述我们知道如果要训练一个大型的网络,而

2017-09-28 10:32:06 33614 3

原创 浅谈Django中的Signal

前言在web开发中, 你可能会遇到下面这种场景: 在用户完成某个操作后, 自动去执行一些后续的操作. 譬如用户完成修改密码后, 你要发送一份确认邮件.当然可以把逻辑写在一起,但是有个问题是,触发操作一般不止一种(如用户更改了其它信息的确认邮件),这时候这个逻辑会需要写多次,所以你可能会想着DRY(Don’t repeat yourself),于是你把它写到了一个函数中,每次调用。当然这是

2017-09-27 11:17:09 3293

转载 Django权限机制的实现

作者:Gevin 链接:http://www.jianshu.com/p/01126437e8a4 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。1. Django权限机制概述权限机制能够约束用户行为,控制页面的显示内容,也能使API更加安全和灵活;用好权限机制,能让系统更加强大和健壮。因此,基于Django的开发,理清Django权限机制是非常必要的。1.1

2017-09-27 10:00:35 707

原创 浅谈Django中的mptt

层级结构层级结构,也叫树形结构。在实际应用中,你经常需要保存层级结构到数据库中。比如说:你的网站上的目录。不过,除非使用类XML的数据库,通用的关系数据库很难做到这点。对于树形数据的存储有很多种方案。主要的方法有两种:邻接表模型,以及修改过的前序遍历算法。因为mptt使用的是修改过的前序遍历算法,而此算法又是从邻接表改进得来的,所以本文先要说这两块。本文以食品商店为例,通过类别、颜色以及种类来对其食

2017-09-26 11:37:28 6981 4

原创 高级数据库五:浅谈数据库隔离级别与锁机制

因为数据库中的事务是具有隔离性的,一个事务的运行不应该影响另一个事务的运行。 但是因为并行机制的存在,会有一系列的问题: 脏读:事务A修改了一个数据,但未提交,事务B读到了事务A未提交的更新结果,如果事务A提交失败,事务B读到的就是脏数据。 不可重复读:在同一个事务中,对于同一份数据读取到的结果不一致。比如,事务B在事务A提交前读到的结果,和提交后读到的结果可能不同。 幻读:

2017-09-23 00:00:25 2509 4

原创 直方图变换

直方图变直方图拉伸(Histogram stretching)图像对比度增强的方法可以分成两类:一类是直接对比度增强方法;另一类是间接对比度增强方法。直方图拉伸和直方图均衡化是两种最常见的间接对比度增强方法。直方图拉伸是通过对比度拉伸对直方图进行调整,从而“扩大”前景和背景灰度的差别,以达到增强对比度的目的,这种方法可以利用线性或非线性的方法来实现;直方图均衡化则通过使用累积函数对灰度值进行“调整”

2017-09-22 11:08:11 6199 1

原创 朴素贝叶斯分类

背景 我们先举一个例子,关于向天上抛硬币的实验,有一个训练集{h,t,x,t,t,t,t}\{h,t,x,t,t,t,t\} 。那么我们通过这个训练集预测下一个抛的结果就应该是t,因为P(t)=57P(t) = {5\over 7}是最大的。 我们再举一个例子,现在有两种假设 1. 老师被外星人绑架了 — P(1)=0.00...01P(1) = 0.00...01 2. 老

2017-09-21 11:05:09 1597

转载 高级数据库四:浅谈数据库查询过程(Query Processing)

我们知道,目前通用的数据库查询语言是SQL语言(Structured Query Language)。SQL语言也是一种编译型语言,需要SQL编译器编译后才能执行,但它与C、C++、Java等语言不同,SQL语言是一种非过程化语言,这意味着使用SQL进行操作的时候,你只需要指定你要达到什么目的,而无需指明要怎样达到目的。 既然用户只需要解决“做什么”的问题,那么,“怎么做”的问题正是本文要讨论的

2017-09-18 05:36:45 7439 1

原创 高级数据库三:浅谈数据库事务(transaction)

事务的定义事务(txn)是一系列在共享数据库上执行的行为,以达到更高层次更复杂逻辑的功能。事务是DBMS中最基础的单位,事务不可分割。ACIDACID,是指在可靠数据库管理系统(DBMS)中,事务(transaction)所应该具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。原子性

2017-09-11 00:22:32 27695 5

转载 高级数据库二:深入理解DB2索引(Index)

原文地址索引(Index)是数据库管理系统中一个非常重要的数据结构,索引的合理使用能够极大提高数据库系统的性能。那么,什么是索引?索引有时如何提高数据库系统性能的呢?阅读本文时建议参考:《深入理解数据库磁盘存储(Disk Storage)》索引概念以一本书为例,通常一本书开头会有目录,而后才是正文,通过目录中每行左侧的标题和右侧的页码,我

2017-09-09 08:23:51 4627

转载 高级数据库一:深入理解数据库磁盘存储(Disk Storage)

原文地址数据库管理系统将数据存储在磁盘、磁带以及其他的裸设备上,虽然这些设备的访问速度相比内存慢很多,但其非易失性和大容量的特点使他们成为数据存储的不二之选。本文主要讨论大型数据库产品的磁盘存储内部结构,这对于深入理解数据库各种数据结构具有至关重要的作用。数据库磁盘存储的体系结构以上两图分别展示了存储器分级结构以及磁盘内部物理结构

2017-09-09 07:19:54 1717

原创 382. Linked List Random Node 蓄水池抽样法

382. Linked List Random Node题目链接题意给你一个(很长)的链表,你需要从中随机地取出一个结点的值,并且保证取每个结点的概率是相同的。解法蓄水池抽样法(resevoir sampling)的特例。在这种情况下,蓄水池抽样法总是选择第一个对象,以1/2的概率选择第二个,以1/3的概率选择第三个,以此类推,以1/m的概率选择第m个对象。当该过程结束时,每一个对象具有相同的选中概

2017-09-08 04:44:38 434

poj第1200题

北京大学在线测评网站POJ第1200题的解答,已经AC通过

2013-11-30

空空如也

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

TA关注的人

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