【设计模式】 (2)关于UML
UML —— Unified Modeling Lanaguage(统计建模语言),是一种软件系统分析和设计的语言工具,他用于帮助软件开发人员进行思考和记录思路的结果。
UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系。比如:类、接口、实现、泛化、依赖、组合、聚合等。
UML 图画UML图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理,UML图分类:
用例图
静态结构图:类图,对象图,包图,组件图,部署图
动态行为图:交互图(时序图与协作图),状态图,活动图
说明
类图是描述类与类之间关系的,是UML图中最核心的
UML 类图
用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系
类之间的关系,依赖,泛化(继承),实现,关联,聚合与组合
比如说:
1234567891011class Person{ private Integer id ; private String name ; public Integer getId() { ...
【设计模式】 (1)设计模式的七大原则
在我们的称后续的编写过程中,我们会面临着来自耦合。内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式为了让程序具有更好的:
代码重用性(即相同功能的代码,不用多次编写)
可读性(即:编程规范,便于其他人阅读理解)
可靠性(即:当我们增加新功能是,非常方便,对原来的功能没有影响)
使程序实现高内聚,低耦合的特性
设计模式的七大原则不要问为什么设计模式要这么去设计,这个只是设计模式的一个开发规范,你不遵守也没关系,但是我们应该去遵守这个规范,方便你我他。
单一职责原则基本介绍简单的理解就是:一个类只负责一项职责,就像笔者一样,一生只够爱一人,虽然目前还是单身。
注意点
降低类的复杂性,一个类只负责一项职责
提高类的可读性,可维护性
降低变更引起的风险
只有逻辑足够简单,才可以在代码级别违反单一职责原则;只有类中方法只够少,可以再方法级别保持单一原则
接口隔离原则基本介绍简单的理解就是:一个类对另一个类的依赖应该建立在最小的接口上。比如说,我是安徽的,安徽是中国的一个省,是依赖于中国的,我是依赖于安徽的,但是这个时候,虽然可以说,我是依赖于中国的,但是,我们不 ...
Redis 初步认识
Redis的认识Redis 简介Redis是完全开源免费的,遵守BSD协议,是一个高性能的 k-v 数据库
特点
Redis支持数据的持久化,可以将内存中的数据保存在磁盘,重启的时候可以再次加载使用
Redis不仅仅支持简单的 k-v 类型数据,同事还提供了 List , Set , ZSet , Hash 等数据结构存储
Redis 支持数据的备份,即 master-slave 模式的数据备份
Redis的优势
性能很高
丰富的数据类型
原子性,单操作是原子性,多操作也支持事务,也是原子性,通过MULTI和EXEC指令包起来。
丰富的特性 , Redis还支持 publish/subscribe,通知,key过期等等特性
Redis安装我们不考虑Windows下的Redis的安装
我们下载我们的安装包,上传到我们的Linux中。我的目录在:/opt/software/redis下
我们在安装的过程中,可能会出现 gcc 命令未找到的错误提示,我们需要做:
12sudo yum install -y gcc sudo yum install -y gcc-c++
然后,我们在执 ...
大数据计算引擎之Flink SQL
Flink SQL简单介绍Why Flink SQL
灵活的,丰富的语法;
能够应用于大部分的计算场景;
Flink SQL底层使用的是Apache Calcite框架,将标准的Flink SQL语句解析并转换成底层的算子处理逻辑,并在转换过程中基于语法规则层面进行性能优化。
可以屏蔽底层技术上的细节,能够更加方便且高效的通过SQL语句来构建Flink应用;
FlinkSQL在``Table API之上,涵盖了大部分的Table API`功能特性;
SQL和``TableAPI`混用,Flink最终会在整体上将代码合并在同一套代码逻辑中;
构建一套``SQL代码可以同时应用在相同数据结构的流式计算和批量计算的场景,不需要用户对SQL`语句做任何调整,最终达到实现批流同一的目的
Flink SQL 实例1234567891011121314151617181920212223242526272829303132StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();Str ...
大数据计算引擎之Flink Table API
Flink中Table API & SQL简单介绍对于像DataFrame这样的关系型编程接口,因其强大且灵活的表达能力,能够让用户通过非常丰富的接口对数据进行处理,有效降低了用户的使用成本,近年来逐渐成为主流大数据处理框架主要接口形式之一。Flink也提供了关系型编程接口Table API以及基于TableAPI的SQL API,让用户能够通过使用结构化编程接口高效的构建Flink应用。同时Table API以及SQL能够统一处理批量和实时计算业务,无需切换到修改任何应用代码就能够基于同一套API编写流式应用和批量应用,从而达到真正意义的批流统一。
Apache Flink具有两个关系API - 表API和SQL - 用于统一流和批处理。Table API是Scala和Java的语言集成查询API,允许以非常直观的方式组合来自关系运算符的查询,Table API和SQL接口彼此紧密集成,以及Flink的DataStream和DataSet API。您可以轻松地在基于API构建的所有API和库之间切换。例如,您可以使用CEP库从DataStream中提取模式,然后使用Table ...
大数据计算引擎之Flink流处理基础
数据流程序描述了数据如何在算子之间流动。数据流程序通常表示为有向图,其中节点称为算子,用来表示计算。算子是数据流程序的基本功能单元。
流处理基础流编程简介数据流图(DataFlow Graph)如上图所示,数据流图被称为逻辑流图。为了执行一个数据流程序,Flink会将逻辑流图转换为物理数据流图。
数据并行和任务并行我们可以以不同的方式利用数据流图中的并行性:
我们可以对输入数据进行分区,并在数据的子集上并行执行具有相同算子的任务并行。即数据并行,数据并行是有限度的,因为他允许处理大量数据,并将计算分散到不通透计算节点上。
我们可以将不同算子在相同或不同的数据上并行执行。即任务并行,可以更好地利用资源。
数据交换策略数据交换策略定义了在物理执行流图中如何给数据分配给任务。数据交换策略可以由执行引擎自动选择,具体取决于算子的语义或我们明确指定的语义。
前向策略将数据从一个任务发送到接收任务。如果两个任务都位于同一台物理计算机上(这通常由任务调度器确保),这种交换策略可以避免网络通信。
广播策略将所有数据发送到算子的所有的并行任务上面去。因为这种策略会复制数据和涉及网络通信,所以代 ...
大数据计算引擎之Flink简介
Flink简介1.1 Flink的初步认识Apache Flink是为分布式、高性能、随时可用以即准确的流处理应用程序打造的开源处理框架Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据进行有状态计算,Flink被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。[外链图片转存失败(img-bWUWJdZh-1567043547838)(en-resource://database/1282:1)]Flink的几个模块
Flink Table & SQL
Flink Gelly (图计算)
Flink CEP (复杂事件处理)
1.2 选择Flink的理由在流处理技术中,我们常见的Storm,层风靡一时。他是流处理的先锋,Storm提供了低延时的流处理,但是他为了实时性付出了一些代价:很难实现高吞吐,并且其正确性没能达到通常所需的水平,也就是说不能保证 exactly-once语义。
在低延时和高吞吐的流处理系统中维护良好的容错性是非常困难的,因此,开发人员提出将连续事件中的数据分割成一系列微小的批量作业。几遍分割在小,也无法做 ...
大数据存储框架之HBase(1) 概述
认识HBase首先,HBase是Hadoop集群环境下的一个是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。HBase的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。
HBase的特点说道HBase的特点,其实也很好说:
海量存储
列式存储
极易扩展: Hbase 的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)。通过横向添加RegionSever 的机器,进行水平扩展,提升Hbase 上层的处理能力,提升Hbsae服务更多Region 的能力。备注:RegionServer 的作用是管理region、承接业务的访问,这个后面会详细的介绍通过横向添加Datanode 的机器,进行存储层扩容,提升Hbase 的数据存储能力和提升后端存储的读写能力。
高并发: 这里说的高并发,主要是在并发的情况下,Hbase 的单个IO 延迟下降并不多。能获得高并发、低延迟的服务。
稀疏 :稀疏主要是针对Hbase 列的灵活性,在列族中,你可以指定任意多的列,在列 ...
大数据计算引擎之Flink概述
Flink起源于Stratosphere项目,Stratosphere是在2010~2014年由3所地处柏林的大学和欧洲的一些其他的大学共同进行的研究项目,2014年4月Stratosphere的代码被复制并捐赠给了Apache软件基金会,参加这个孵化项目的初始成员是Stratosphere系统的核心开发人员,2014年12月,Flink一跃成为Apache软件基金会的顶级项目。
Flink概述1.1 初识Flink在德语中,Flink一词表示快速和灵巧,项目采用一只松鼠的彩色图案作为logo,这不仅是因为松鼠具有快速和灵巧的特点,还因为柏林的松鼠有一种迷人的红棕色,而Flink的松鼠logo拥有可爱的尾巴,尾巴的颜色与Apache软件基金会的logo颜色相呼应,也就是说,这是一只Apache风格的松鼠。
Flink项目的理念是:“Apache Flink是为分布式、高性能、随时可用以及准确的流处理应用程序打造的开源流处理框架”。
Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink被设计在所有常见的集群环境中运行,以内存 ...
大数据框架开发基础之Zookeeper入门
Zookeeper是Hadoop分布式调度服务,用来构建分布式应用系统。构建一个分布式应用是一个很复杂的事情,主要的原因是我们需要合理有效的处理分布式集群中的部分失败的问题。例如,集群中的节点在相互通信时,A节点向B节点发送消息。A节点如果想知道消息是否发送成功,只能由B节点告诉A节点。那么如果B节点关机或者由于其他的原因脱离集群网络,问题就出现了。A节点不断的向B发送消息,并且无法获得B的响应。B也没有办法通知A节点已经离线或者关机。集群中其他的节点完全不知道B发生了什么情况,还在不断的向B发送消息。这时,你的整个集群就发生了部分失败的故障。
Zookeeper不能让部分失败的问题彻底消失,但是它提供了一些工具能够让你的分布式应用安全合理的处理部分失败的问题。
Zookeeper基本是什么
是一个基于观察者模式设计的分布式服务管理框架,他负责存储和管理大家都关心的数据,然后接受管擦者的注册,一旦这些数据的状态发生了变化,Zookeeper就将负责通知已经在Zookeeper上注册的观察者做出相应的反应。
特点是什么
集群中半数以上的机器存活,Zookeeper集群就可以正常服 ...