
大数据架构+算法+设计模式
Soyoger
申明:个人微信公众号:AI技术研习社,公众号ID:ai2club。本博客只是用来学习,并不从事任何商业活动,其内容是自己总结或者来自互联网搜索到的,并没有过多关注版权问题,如有侵权内容,请私信我进行删除,谢谢。本博客内容主要围绕计算机领域热点技术和工作内容,不涉及版权问题,任何人可以查看、转载。
展开
-
大数据日知录(一)数据分片与路由
概念 目前主流的大数据存储与计算系统通常采用横向扩展(Scale Out)的方式支持系统可扩展性,即通过增加机器数目来获得水平扩展能力。对于待存储处理的海量数据,需要通过数据分片(Shard/partition)来将数据进行切分并分配到各个机器中去,数据分片后如何找到某条记录的存储位置就成为必然要解决的问题,这一般被称为数据路由(Data Routing)。数据分片和数据路由的抽象模型原创 2017-08-28 10:52:27 · 1679 阅读 · 0 评论 -
设计模式的概念和分类
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模...原创 2017-05-12 08:51:36 · 1780 阅读 · 0 评论 -
软件设计原则(七)合成/聚合复用原则(Composite/Aggregate Reuse Principle,CARP)
定义:在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用这些对象的目的。应首先使用合成/聚合,合成/聚合则使系统灵活,其次才考虑继承,达到复用的目的。而使用继承时,要严格遵循里氏代换原则。有效地使用继承会有助于对问题的理解,降低复杂度,而滥用继承会增加系统构建、维护时的难度及系统的复杂度。如果两个类是“Has-a”关系应使用合成、聚合,如果是原创 2017-05-10 17:51:27 · 1781 阅读 · 0 评论 -
软件设计原则(六)迪米特法则 -Law of Demeter
LoD,Law of Demeter:又称最少知识原则(Least Knowledge Principle),一个对象应该对其他对象有最少的了解一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的public方法,不对外泄漏任何信息。问题由来: 类与类之间的关系越密切原创 2017-05-10 17:44:26 · 501 阅读 · 0 评论 -
软件设计原则(五)接口隔离原则 -Interface Segregation Principle
在讲接口隔离原则之前,先明确一下我们的主角——接口。接口分为两种: ◇ 实例接口(Object Interface),在Java中声明一个类,然后用new关键字产生的一个实例,它是对一个类型的事物的描述,这是一种接口,比如你定义Person这个类,然后使用Person zhangSan = new Person()产生了一个实例,这个实例要遵从的标准就是Person这个类,Person类就是z原创 2017-05-10 17:35:39 · 621 阅读 · 0 评论 -
软件设计原则(四)依赖倒置原则 -Dependence Inversion Principle
依赖倒转原则就是要依赖于抽象,不要依赖于实现。(Abstractions should not depend upon details. Details should depend upon abstractions.)要针对接口编程,不要针对实现编程。(Program to an interface, not an implementation.)也就是说应当使用接口和抽象类进行变量类型声明、参原创 2017-05-10 17:25:12 · 1152 阅读 · 0 评论 -
软件设计原则(三)里氏替换原则 -Liskov Substitution Principle
里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类原创 2017-05-10 17:19:31 · 586 阅读 · 0 评论 -
软件设计原则(二)单一职责原则 -Single Responsibility Principle
SRP,Single Responsibility Principle:There should never be more than one reason for a class to change.应该有且仅有一个原因引起类的变更。(如果类需要变更,那么只可能仅由某一个原因引起)问题由来: 类T负责两个不同的职责:职责P1,职责P2。当由于职责原创 2017-05-10 17:13:51 · 589 阅读 · 0 评论 -
软件设计原则(一)开闭原则(Open-Closed Principle, OCP)
在学习设计模式之前,应该先对软件设计原则有一定的了解,设计模式在一定程度上是迎合软件设计原则而产生的,脱离了软件设计原则,设计模式是没有意义的。开-闭原则(Open-Closed Principle, OCP)1.什么是开闭原则1988年,Bertrand Meyer在他的著作《Object Oriented Software Construction》中提出了开闭原则,它的原文是原创 2017-05-10 17:00:10 · 1759 阅读 · 0 评论 -
服务化实战之 dubbo、dubbox、motan、thrift、grpc等RPC框架比较及选型
原文:http://blog.youkuaiyun.com/liubenlong007/article/details/54692241原创 2017-11-06 11:14:34 · 1094 阅读 · 0 评论 -
大数据架构中使用JSON-RPC好,还是RESTful API好?
对外开放给全世界的API推荐采用RESTful,是否严格按照规范是一个要权衡的问题。要综合成本、稳定性、易用性、业务场景等等多种因素。看到知乎上有这样一个问题WEB开发中,使用JSON-RPC好,还是RESTful API好?还有其他优秀的推荐方案吗?------------------------------------------------------------原创 2017-11-06 11:10:17 · 5333 阅读 · 0 评论 -
一致性hash算法
上一篇文章《大数据日知录(一)数据分片与路由》中提到了一致性哈希算法,但是和数据分片和路由结合起来,如果基础差点,可能理解的不透彻,所以专门写了一篇一致哈希算法的文章,对一致性哈希算法详解。consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees中被提出,目前在 cache 系统中应用越来越广泛原创 2017-08-28 12:01:26 · 506 阅读 · 0 评论 -
有向图的深度和广度遍历
题目要求:1.对于下图所示的有向图(访问顺序按序号从小到大),试写出: (1) 从顶点①出发进行深度优先搜索所得到的深度优先生成树;(2) 从顶点②出发进行广度优先搜索所得到的广度优先生成树。 package com.test.tree;import java.util.*;public class Graph { // 存储节点信息 private Object[] ver...原创 2018-05-04 09:33:26 · 23138 阅读 · 0 评论