Spring WebFlux中进行页面重定向 Spring Web Flux中进行页面重定向一、 背景说明随着WebFlux技术的成熟,公司在新的技术框架中实践了该技术,本人在使用过程中也记录下一系列实践问题。今天我们要了解的话题,就是如何在Web Flux中进行重定向链接,我们知道在Spring MVC我们通常使用"redirect:xxxx"。但是在Web Flux中却不是这样,下面我们来看看,在Web Flux中它到底是如何进行重定向链接的。二、 案例实践2.1 新建Web Flux类型的项目Maven依赖如下<?xml v
Java对集合中的元素进行排序的几种方法 Java对集合中的元素进行排序的几种方法一、前言实际开发中,对业务数据按照指定规则进行排序是很常见的。比如说,“按照记录的创建日期降序排序”、“按照App的应用率从大到小排序”… 在编码过程中,我们一般在两个层面排序入手:其一、SQL脚本;其二、服务应用层面(通俗来讲就是Java代码层面)。当然,本人探讨的核心是其二。二、需求设定假如有一组学生列表,学生对象具有id、姓名、所在年级、出生日期、身高字段。需对这一组学生列表进行以下规则进行排序。先按照年级从大到小排列,如果年级为空,则排在最后面
Elasticsearch(039):es中搜索之排序 一、概述默认情况下,结果集会按照相关性进行排序 – 相关性越高,排名越靠前。为了使结果可以按照相关性进行排序,我们需要一个相关性的值。在ElasticSearch的查询结果中, 相关性分值会用_score字段来给出一个浮点型的数值,所以默认情况下,结果集以_score进行倒序排列.二、Es中排序使用2.1 简单排序例如下面的按照创建时间的倒序排序。GET example/docs/_search{ "query": { "match_all": {} }, "sort": [
EasyExcel之回填下拉框 一、业务背景1.1 技术演进在业务系统的开发中,我们会经常遇见各类各样的Excel导出,按照传统的做法,我们会引入第三方工具jar: POI来实现我们的导出功能。但是这也有缺点,我们的业务代码中充斥着重复且没有很多意义的代码。于是EasyExcel诞生了,它的出现了大大降低了我们开发的工作量,给我们提供了不少便利。EasyExcel官方源码: 链接官方文档: 链接在这里,对EasyExcel我们就不做过多介绍,有不了解的同学可以根据上述的官方地址进行自行学习。本篇文章所探求的主旨均是建立
EasyExcel之填充公式导出Excel 一、业务背景1.1 技术演进在业务系统的开发中,我们会经常遇见各类各样的Excel导出,按照传统的做法,我们会引入第三方工具jar: POI来实现我们的导出功能。但是这也有缺点,我们的业务代码中充斥着重复且没有很多意义的代码。于是EasyExcel诞生了,它的出现了大大降低了我们开发的工作量,给我们提供了不少便利。EasyExcel官方源码: 链接官方文档: 链接在这里,对EasyExcel我们就不做过多介绍,有不了解的同学可以根据上述的官方地址进行自行学习。本篇文章所探求的主旨均是建立
Spring源码之MethodIntrospector的原理解析与实际应用 一、概述1.1 说明从4.x版本开始,MethodIntrospector是spring-core中一个频繁使用的工具类。该类通常用来:用于搜索与元数据相关的方法的算法,包括接口和父类,同时还处理参数化方法以及基于接口和基于类的代理遇到的常见情况。通常(但不是必须)用于查找带注释的处理程序方法。二、源码解析2.1 源码/** * Defines the algorithm for searching for metadata-associated methods exhaustively *
Elasticsearch(038):es中搜索之入门与分页搜索 ES中搜索的方式分为两种,一种是通过URL参数进行搜索;另一种是通过POST中body请求参数进行搜索。针对第一种我们进行简单的讲解,我们关注的核心放在第二种上面。一、简单搜索(search)1.1 测试使用的index、mapping及数据准备PUT examplePUT example/docs/_mapping{ "properties": { "id": { "type": "long" }, "orderN
Elasticsearch(037):es中批量操作之bulk 一、bulk概述1.1 bulk的基础概念bulk是es提供的一种批量增删改的操作API。1.2 bulk的语法bulk对JSON串的有着严格的要求。每个JSON串不能换行,只能放在同一行,同时,相邻的JSON串之间必须要有换行(Linux下是;Window下是\r)。bulk的每个操作必须要一对JSON串(delete语法除外)。{ action: { metadata }}{ request body }{ action: { metadata }}{ reques
Elasticsearch(036):es中批量操作之mget(批量查询) mget(批量查询)一、介绍mget是es提供的一种批量的读取操作的API。mget API允许根据索引,类型(可选)和id(以及可能的路由)获取多个文档。响应包括一个docs数组。该数组具有与原始多重获取请求相对应的所有提取文档(如果特定的get失败,则在响应中包含包含此错误的对象)。成功获取的结构与get API提供的文档的结构相似。二、示例用法2.1 测试数据准备示例索引结构如下PUT examplePUT example/docs/_mapping{ "properties"
Elasticsearch(035):es中Document(文档)之修改文档 一、概述回顾前几个小节,我们学习了文档的新增、文档的删除、文档的查询。当然,在实际的使用,存在诸多场景对文档进行修改操作的需求,在这一小节中,我们来学习下ES中文档常见的修改api。二、全量更新(等于删除重建重新索引)2.1 说明这种是比较常见的,也就是覆盖更新。所谓的覆盖更新,就是是把原来的值都删掉,只保留新操作填充的字段值。(相当于删除了重新添加一个。其中可能除了id,其他的值可能都不相同)。示例如下。2.2 示例PUT example# 新建mappingPUT example/d
Elasticsearch(034):es中Document(文档)之主键查询文档 一、概述在上一小节中,我们学习了文档的删除用法。当然,除了新增、删除之外,还有最重要的就是文档查询操作。es中的文档的查询操作有以下几类: 主键查询、DSL查询等等。二、查询文档(主键查询)2.1 语法查询GET index(索引名称)/type(type名称)/id(id的值)测试HEAD index(索引名称)/type(type名称)/id(id的值)这是一个测试方法。返回200和404状态码进行判断。2.2 使用查询id为2的用户的详情信息GET example
Elasticsearch(033):es中Document(文档)之删除文档 一、概述在上一小节中,我们学习了文档的定义和新增语法。当然,有新增操作,相反的就会有删除操作。es中的文档的删除操作分为两类: 主键删除 和查询删除。二、删除文档(主键删除)示例: 下面操作的含义 删除id为1的文档记录。DELETE example/docs/1返回结果{ "_index": "example", "_type": "docs", "_id": "1", "_version": 2, "result": "deleted", "_shards": {
Elasticsearch(032):es中Document(文档)之新增文档 一、概述文档是具体的数据记录,一个文档有点像数据库中的一条记录,文档必须包含在一个索引中。二、新增文档2.1 新增语法#新建映射PUT examplePUT example/docs/_mapping{ "properties": { "id": { "type": "long" }, "username": { "type": "text" }, "birt
Elasticsearch(031):es中Meta-Fields(元数据类型)之概述(_source) 概述_source字段包含索引是原始的JSON文档内容,字段本身不建立索引(因此无法进行搜索),但是会被存储,所以当执行获取请求是可以返回_source字段。虽然很方便,但是_source字段的确会对索引产生存储开销,因此可以禁用_source字段。可以通过以下接口进行打开或关闭。PUT example/docs/_mapping{ "secilog": { "_source": { "enabled": false } }}
CentOS常见命令之远程拷贝(scp) 1. 背景作为后端开发或者运维工程师,服务器是我们必须牢牢掌握的一门技术。这小节中我们主要探究ContOS7下远程拷贝文件的用法和示例。说起CentOS中拷贝,我们最常使用的就是cp 命令了,其格式为cp 源目录或文件 目标目录或文件。示例,我们将服务器上的/home/test.txt拷贝到/tmp下: cp /home/test.txt /tmp。当然,这不是我们今天要探讨的主角,我们今天的主角是scp即远程拷贝命令,这个在一个局域网内服务器之间拷贝相当的方便。2. 示例语法scp [可选参
在VMware下安装CentOS7后配置静态IP 在VMware下安装CentOS7后配置静态IP1. 背景说明近些年云服务器、云主机日趋流行起来,使得个人搭建私人博客、网站的成本越来越低。作为一名服务端开发,我们的绝大部分的软件和环境都运行在Linux环境下,所以掌握服务器的相关技术是十分必要,但是对于个人来说,云服务器的费用也是一笔不少的花销(多台服务器集群就更贵了),所以就有了VMware等虚拟机软件来解决我们的问题。但是我们在PC上使用VMware上安装CentOS7系统,通常会面临一个问题,那就是CentOS7的地址不是固定(不固定的IP
Elasticsearch(030):es中Meta-Fields(元数据类型)之概述(_routing) 1. 概述先说明此参数在使用一些高级的ES的特性的时候,经常用到,请认真理解。文档在索引中利用下面的公式路由到特定的分片:shard_num = hash(_routing) % num_primary_shards,_routing字段的默认值使用的文档的_id字段。如果存在父文档,则使用文档的_parent编号。可以通过为每个文档指定一个自定义的路由值来实现自定义的路由方式。2. 示例与理解mappping定义和数据插入PUT examplePUT example/docs/_ma
Elasticsearch(029):es中Meta-Fields(元数据类型)之概述(_index) 1. 概述在多个索引中执行查询的时候,有时候需要添加子查询来关联特定的索引文档。_index字段可以匹配包含某个文档的索引。在term或terms查询,聚合,脚本以及排序的时候,可以访问_index字段的值。注意:_index是一个虚拟字段,不作为一个真实的字段添加到Lucene的索引中。这意味着可以在term或terms查询(任何可以重写term查询:如match.query_string,simple_query_string)中使用_index字段,但是不支持prefix、wildcard、
Elasticsearch(028):es中Meta-Fields(元数据类型)之概述(_id) 1. 概述每个文档都有一个_id唯一标识它的索引,该索引已建立索引,以便可以使用GET API或 ids query查找文档。不指定的话,es也会默认生成一个id字符串。_id查询经常用在一下查询中:term, terms,match,query_string,simple_query_string2. 示例Mapping定义和插入PUT examplePUT example/docs/_mapping{ "properties":{ "cityId":{"type"