企业开发进阶-6-Elasticsearch
1 初识 Elasticsearch
2 索引库操作
3 文档操作
4 RestAPI
5 RestClient操作文档
6 DSL查询文档
7 搜索结果处理
8 RestClient查询文档
9 酒店项目
10 数据聚合
11 自动补全
12 数据同步
13 ES集群
企业开发进阶-5-DockerBasic
Docker 简介Docker 官网(官方文档)Docker Hub 官网(镜像仓库)
Docker概念
解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。
Docker 是基于 Go 语言实现的云开源项目。Docker 的主要目标是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的 APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。
Linux 容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用打成镜像,通过镜像成为运行在Docker 容器上面的实例,而 Docker 容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机器上就可以一键部署好,大大简化了操作。
虚拟机和容器
传统虚拟机技术
虚拟机就是带环境安装的一种解决方案。可以在一种操作系统里面运行另一种操作系统。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。这类虚拟机完美的 ...
企业开发进阶-5-DockerQuickStart
Docker 简介Docker官网
Docker官方文档
Docker源码
概述Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
应用场景
Web 应用的自动化打包和发布。
自动化测试和持续集成、发布。
在服务型环境中部署和调整数据库或其他的后台应用。
从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。
优点Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
1、快速, ...
设计模式-14-访问者模式
访问者模式
在访问者模式中,使用了一个访问者类,它改变了元素类的执行算法。
通过这种方式,元素的执行算法可以随着访问者改变而改变。
属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。
意图:
主要将数据结构与数据操作分离。
主要解决:
稳定的数据结构和易变的操作耦合问题。
何时使用:
需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作”污染”这些对象的类,使用访问者模式将这些封装到类中。
如何解决:
在被访问的类里面加一个对外提供接待访问者的接口。
关键代码:
在数据基础类里面有一个方法接受访问者,将自身引用传入访问者。
优点:
符合单一职责原则
优秀的扩展性
灵活性。
缺点:
具体元素对访问者公布细节,违反了迪米特原则
具体元素变更比较困难
违反了依赖倒置原则,依赖了具体类,没有依赖抽象。
使用场景:
对象结构中对象对应的类很少改变,但经常需要在此对象结构上定义新的操作
需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作”污染”这些对象的类,也不希望在增加新操作时 ...
设计模式-13-命令模式
命令模式
命令模式是一种数据驱动的设计模式,它属于行为型模式。
请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
意图:
将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。
主要解决:
在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。
何时使用:
在某些场合,比如要对行为进行”记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将”行为请求者”与”行为实现者”解耦?将一组行为抽象为对象,可以实现二者之间的松耦合。
如何解决:
通过调用者调用接受者执行命令,顺序:调用者→命令→接受者。
关键代码:
定义三个角色:1、received 真正的命令执行对象 2、Command 3、invoker 使用命令对象的入口
优点:
降低了系统耦合度
新的命令可以很容易添加到系统中去。
缺点:
使用命令模式可能会导致某些系统有过多的具体命令类。
注 ...
设计模式-12-模板模式
模板模式
在模板模式中,一个抽象类公开定义了执行它的方法的方式/模板。
它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
属于行为型模式。
意图:
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
主要解决:
一些方法通用,却在每一个子类都重新写了这一方法。
何时使用:
有一些通用的方法。
如何解决:
将这些通用算法抽象出来。
关键代码:
在抽象类实现,其他步骤在子类实现。
优点:
封装不变部分,扩展可变部分
提取公共代码,便于维护
行为由父类控制,子类实现。
缺点:
每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。
使用场景:
有多个子类共有的方法,且逻辑相同
重要的、复杂的方法,可以考虑作为模板方法。
注意事项:
为防止恶意操作,一般模板方法都加上 final 关键词。
案例说明将创建一个定义操作的 Game 抽象类,其中,模板方法设置为 final,这样它就不会被重写。Cricket 和 Football 是扩展了 Game 的实体类,它们重写了 ...








