java 设计模式前篇之面向对象设计模式7大原则

一.面向对象设计原则

在面向对象编程时,以面向对象的设计原则为指导,开发可扩展性和维护性高的程序,多个原则需要适当取舍,达到业务与技术的一个平衡.

二.具体原则

1.开闭原则

(1).定义:对修改关闭,对扩展开放

  • 作用: 用抽象构建框架,用实现扩展细节
  • 优点:提高软件系统的可复用性和可维护性(可扩展性)
  • 实例:

以商城为例:

  1. /**
  2. * 商品接口
  3. * @author shixinke
  4. */
  5. public i

java 设计模式前篇之UML类图快速入门

UML即统一建模语言:面向对象开发系统的产品进行说明、可视化、和编制文档的标准语言

一.UML图分类

众所周知,UML图可以分为以下几种图:

  • 类图:是用来描述系统中的类以及各个类之间的关系
  • 对象图:对象图描述的是一组对象之间的关系,而不是类之间的关系。它是类图的变体,但是又与之不同,对象显示的类的多个对象而不是实际的类
  • 用例图:是需求分析的产物,主要是用来描述用户是如何使用一个系统的,是用户所能观察和

ElasticSearch ElasticSearch扫盲之十二:ElasticSearch关联查询即父子文档查询和嵌套文档nested查询

注:ElasticSearch系列文章适用于ElasticSearch 6.7,部分内容适用于ElasticSearch7.0

在关系型数据库中,可以通过join实现多表的联表查询,那么在ES中,是否能实现多个index联合查询呢?显然,是不能的,那么如何实现多个index联合查询呢?根据本人的一些微薄经验,大体可以通过以下几个方便来实现:

  • 定义一个组合的index,将多个index的值合并到一

ElasticSearch ElasticSearch扫盲之十一:ElasticSearch结构化查询语句Query DSL之组合查询即bool查询

组合条件查询是基于叶子查询条件,将叶子条件作为子条件,形成一个多字段多条件的组合条件.

一、bool条件

1.功能及参数
  • 功能:通过多个叶子条件形成一个bool条件树
  • 参数:
    • must : 必须满足指定的条件(各子条件是AND关系)
    • filter : 指定必须满足的条件(不统计相关度评分)
    • should : 满足一个子条件即可(各子条件是OR关系)
    • must_not : 不满足条件(NOT)

must/f

ElasticSearch ElasticSearch扫盲之十:ElasticSearch结构化查询语句Query DSL之精确匹配即term查询和范围查询

精确匹配是相对于模糊匹配而言的,一般适用于非字符串类型的字段,如数字型,日期型等

一、条件与目标字段相等

1.term
  • 功能:查找目标字段与条件相等的记录
  • 用法:
  1. term:{"fieldName":"value"}

如:查找状态为正常即status为1的用户列表:

  1. GET user/_doc/_search
  2. {
  3. "_source":["user_id","status"],
  4. "query":{

ElasticSearch ElasticSearch扫盲之八:ElasticSearch结构化查询语句Query DSL使用

ElasticSearch查询语句查询条件主要是通过query参数来传递的,而query参数是一种使用JSON来表示搜索条件的一种特殊语句,今天我们来揭开它神秘的面纱。

ElasticSearch的查询语句DSL

一、无查询条件

无查询条件是查询所有,默认是查询所有的,或者使用match_all表示所有

  1. GET /user/_doc/_search
  2. {
  3. "query":{
  4. "match_all":{}
  5. }
  6. }

二、有查询条件

1.叶子条

ElasticSearch Elasticsearch扫盲之七:ElasticSearch的搜索_search的基本用法及分页和排序参数说明

ElasticSearch的_search主要是针对各种搜索条件获取搜索结果的API.

一、主要用法

  • 请求方式:GET
  • 请求地址:
    • 不指定index : search
    • 指定index : /{{indexName}}/_search
    • 指定index和type : {{indexName}}/{{typeName}}/_search
  • 请求参数:
    • 通过URL传参数(Query String)
    • 通过请求体传参数

ElasticSearch Elasticsearch扫盲之六:ElasticSearch文档操作之单个文档、多个文档即_mget批量文档获取和_bulk批量文档操作

ElasticSearch中的文档表示一条记录,类似于MySQL中的一行记录

一、单个文档

1.创建文档
  • 请求类型:PUT
  • 请求地址:{{indexName}}/{{typeName}}/{{id}}
  • 参数:文档数据对象
  1. PUT user/_doc/5
  2. {
  3. "user_id":5,
  4. "account":"frank",
  5. "email":"frank@gmail.com",
  6. "status":1,

ElasticSearch Elasticsearch扫盲之五:ElasticSearch中mapping字段的数据类型详解

在ElasticSearch中,字段有以下类型,主要分为简单类型和复合类型

一、简单类型

1.字符串
  • text : 文本,将会被分词
  • keyword : 有固定格式的文本,不会被分词(当作一个整体)

注:text类型一般用于全文索引,它将会被拆成多个关键词,与文档ID形成倒排索引,因此,在定义为text时,如果需要索引它,有必要指定它的分词器,特定是对于中文的文本

  1. {
  2. "user_id":"1001