自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 外观模式

为子系统中的一组接口提供一个一致的界面,Facade 模式定义了一个高层接 口,这个接口使得这个子系统更加容易使用。适用性1.当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而 变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重 用性,也更容易对子系统进行定制,但这也给这些不需要定制子系统的用户带来一些使用 上的困难。 Facade 可以提供一个简单的缺...

2019-04-29 23:41:02 86 1

原创 装饰模式

动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator 模式相 比生成子类更为灵活。适用性1.在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。2.处理那些可以撤消的职责。3.当不能采用生成子类的方法进行扩充时。参与者1.Component定义一个对象接口,可以给这些对象动态地添加职责。2.ConcreteComponent定义一个对象,可以给这个对...

2019-04-28 21:37:14 84

原创 组合模式

将对象组合成树形结构以表示"部分-整体"的层次结构。“Composite 使得用户 对单个对象和组合对象的使用具有一致性。”适用性1.你想表示对象的部分-整体层次结构。2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构 中的所有对象。参与者1.Component为组合中的对象声明接口。在适当的情况下,实现所有类共有接口的缺省行为。声明一个接口用于访问和管理 Com...

2019-04-28 16:14:06 89

原创 桥接模式

将抽象部分与它实现部分分离,使它们都可以独立地变化。适用性1.你不希望在抽象和它的实现部分之间有一个固定的绑定关系。 例如这种情况可能是因为,在程序运行时刻实现部分应可以选择或者切 换。2.类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。 这时 Bridge 模式使你可以对不同的抽象接口和实现部分进行组合,并分别 对它们进行扩充。3.对一个抽象的实现部分的...

2019-04-25 21:46:52 70

原创 适配器模式

将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于 接口兼容而不能一起工作的那类可以一起工作。适用性 :1.你想使*一个已经存在的类,而它的接口不符合你的需求。2.你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类 (即那*接口 可能不一定兼容的类)协同工作。3.(仅适用于对象 Adapter)你想使用一些已经存在的子类,但是不可能对每 ...

2019-04-25 00:14:27 61

原创 原型模式

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。适用性:1.当一个系统应该独立于它的产品创建、构成和表示时。2.当要实例化的类是在运行时刻指定时,例如,通过动态装载。3.为了避免创建一个与产品类层次平行的工厂层次时。4.当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更 方便一些。参与者 :1.Prot...

2019-04-23 21:20:28 70

原创 单例模式

保证一个类仅有一个实例,提供一个访问它的全局访问点。适用性:1.当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。2.当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码 就能使用一个扩展的实例时。参与者:Singleton定义一个 Instance 操作,允许客户访问它的唯一实例。Instance 是一个类 操作。 创建它自己的唯一实例。Sing...

2019-04-18 14:22:49 80

原创 建造者模式

将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。适用性:1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。2.当构造过程必须允许被构造的对象有不同的表示时。参与者:1.Builder为创建一个 Product 对象的各个部件指定抽象接口。2.ConcreteBuilder实现 Builder 的接口以构造和装配该产品的各个部件。定义并...

2019-04-17 18:58:03 74

原创 设计模式---工厂模式

工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod 使一个类的实例延迟到其子类。适用性:1.当一个类不知道它所必须创建的对象的类的时候。2.当一个类希望由它的子类来指定它所创建的对象的时候。3.当将创建对象的职责委托给多个帮助类中的某一个,并且希望将哪一个帮助子类是代理者这一信息局部化的时候。参与者:1.Product 定义工厂方法...

2019-04-16 21:54:48 88

转载 堆排序

堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。算法描述将初始待排序关键字序列(R1,R2….Rn)构建成大顶堆,此堆为初始的无序区;将堆顶元素R[1]与最后一个元素R[n]交换,此时得到新的无序区(R1,R2,……Rn-1)和新的有序区(Rn),且满足R[1,2…...

2019-04-15 21:32:03 76

转载 归并排序的实现

归并排序的思想:分治法;分治法的思想是,当我们求解一个大问题需要很多的时间,并且方式很难实现,我们发现,如果将这个如果将这个大问题分解成若干个小问题,则问题就变得简单很多,这些小问题求解的同时,原问题也得以求解,我们将一个大问题逐步分解成若干个小问题求解的思想,就是分治法,同时也是递归思想。归并排序算法就是利用了这种思想。首先对于一个大的数据集,我们不好排序,我们将这个数据集一分为二,分成两...

2019-04-15 08:36:28 78

原创 MR作业提交流程

客户端到RM取号,作业编号检验输入目录或文件是否存在检验输出目录是否指定,并且不存在计算切片信息将配置文件/jar包/切片信息发送到HDFS以作业编号命名的目录中(HDFS目录)向RM发送请求,提交作业监控作业执行的进度,每秒发送一次请求,请求作业执行进度,如果进度有变,则在控制台打印进度信息HDFS存储配置文件/jar包/切片信息ResourceManager调度Node...

2019-04-11 21:50:07 914

原创 联邦

NameNode需要多大的内存?由于NameNode在内存中维护文件系统中每个文件和block的映射关系,就有可能耗尽NameNode的内存。由于内存占用依赖于每个文件的block数目,文件名长度以及文件系统中目录的数目,而且有可能hadoop的不同版本也不一样,如此则很难给出精确的内存使用统计方式。默认情况下,1000MB内存足够至少1000,000个文件的元数据存储了。例如,200个节点...

2019-04-10 21:58:09 134

原创 纠删码

纠删码相对于多副本的区别:存储空间降低 :原来3副本需要3倍空间存储一份数据,纠删码只需要1.4倍空间存储一份数据。可靠性:3副本允许坏的副本数:2/3; 纠删码允许坏的副本数:4/14额外负担:计算量(只要有一个坏盘就得通过网络读出n倍的数据并重新计算)数倍的网络负载算法核心下面重点讲一讲Reed-Solomon(RS)码:Reed-Solomon(RS)码是存储系统较为常用的...

2019-04-09 22:17:45 1815 1

原创 HA架构之浅析

手动切换HA两个NameNode,一主一备主备NN做数据同步:edits log借助于JNN客户端对主NN操作,主NN将edits log写到JNN集群备份的NN从JNN读取数据,同步内存数据block列表信息 DataNode向两台NN汇报列表信息,发送心跳N个DataNode向两台NN汇报block列表信息,发送心跳3台JNN过半机制保证数据的同步CAP如果主N...

2019-04-08 21:19:59 1370

转载 冒泡排序

算法原理比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。算法分析时间复杂度若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数 和记录移动次数 均达到...

2019-04-08 16:14:45 114

转载 深入理解希尔排序

首先它把较大的数据集合分割成若干个小组(逻辑上分组),然后对每一个小组分别进行插入排序,此时,插入排序所作用的数据量比较小(每一个小组),插入的效率比较高可以看出,他是按下标相隔距离为4分的组,也就是说把下标相差4的分到一组,比如这个例子中a[0]与a[4]是一组、a[1]与a[5]是一组…,这里的差值(距离)被称为增量每个分组进行插入排序后,各个分组就变成了有序的了(整体不一定有序)此时,...

2019-04-08 08:31:20 130

转载 插入排序之浅析

直接插入排序 T(n) = O(n^2)直接插入排序「Insertion Sort」的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。设数组为a[0…n-1]:初始时,a[0]自成1个有序区,无序区为a[1…n-1]。令i=1。将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间。i++并重复第二步直...

2019-04-03 21:48:26 74

转载 数据结构与算法系列——链表详解

链表的结构五花八门,我们今天主要看一下三种最常用的链表结构:单链表、双向链表和循环列表。单链表我们首先来看一下最简单、最常用的单链表。前边我们已经知道链表是通过指针将一些分散的内存块连接到一起。其中,我们把每个内存块叫做链表的一个结点。为了将每个结点连接到一起,每个结点不仅存储数据,而且还需要记录下一个结点的地址。我们把这个记录下一个结点的指针称为后继指针next。我们通过下边示意图来更形象的...

2019-04-02 21:50:59 270

转载 快速排序及优化

快速排序, 是最经典的排序算法之一。快速排序拥有良好的时间复杂度,平均为O(nlog2n)O(nlog2n),最差为O(n2)O(n2)。在这里,我们不妨略略深入讨论一下快速排序:时间复杂度分析首先说平均时间复杂度。以比较常用的从两头进行扫描的算法为例,算法主要分两步:是快排的核心:“分趟”。就是“每一趟”下来,找到某一个元素应该待的位置,这个元素一般被称为pivot;2.再分别对piv...

2019-04-02 21:37:06 249

空空如也

空空如也

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

TA关注的人

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