自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (3)
  • 收藏
  • 关注

原创 Elasticsearch 摄取节点(Ingest Node)使用Pipeline预处理文档

1. Ingest nodeIngest node是elasticsearch的节点类型之一,通过在Ingest node配置pipeline管道,可以在文档存入索引之前对文档进行预处理。例如:删除字段,重命名字段,修改字段值等等。默认情况下,所有节点都是Ingest Node,可以通过修改elasticsearch.yml,把node.ingest改成false来关闭node.ingest: false要实现索引文档之前进行预处理,需要先定义一个管道(pipeline),每个pipeline包

2020-10-30 17:38:20 991

原创 Elasticsearch Grok Pattern内置表达式大全

USERNAME [a-zA-Z0-9._-]+USER %{USERNAME}EMAILLOCALPART [a-zA-Z][a-zA-Z0-9_.+-=:]+EMAILADDRESS %{EMAILLOCALPART}@%{HOSTNAME}HTTPDUSER %{EMAILADDRESS}|%{USER}INT (?:[+-]?(?:[0-9]+))BASE10NUM (?<![0-9.+-])(?>[+-]?(?:(?:[0-9]+(?:\.[0-9]+)?)|(?:\.[0

2020-10-30 16:23:19 1145

原创 Elasticsearch 使用copy_to组合字段进行查询

copy_to 介绍copy_to 参数允许将多个字段的值复制到另一个字段中,然后对该字段进行查询。例如,first_name和last_name字段可以复制到full_name字段,如下所示:PUT /my_index{ "mappings": { "properties": { "first_name":{ "type": "text", "copy_to": "full_name" }, "last_name":{

2020-10-29 20:56:12 1999

原创 Java clone浅复制与深复制的区别

概述Java对象要调用 clone 进行复制,必须实现 Cloneable 接口,否则会抛出CloneNotSupportedException的异常。clone 方法默认是浅复制,如果要实现深复制,那必须在clone方法调用对象成员的复制方法。浅复制:复制对象时,对象内部引用类型的成员,仍然共用内存空间。此时A对象修改这个成员的属性,B对象的该成员也会受影响。深复制:复制对象时,对象内部引用类型的成员,也会重新开辟新的空间。此时A对象和B对象完全互不干扰。浅复制cloneGrade: 班级

2020-10-29 13:56:56 257

原创 Elasticsearch Metric Aggregation指标聚合详解

PUT /my_index/_doc/_bulk{ "index" : {} }{"ip":"192.168.0.1", "user":"张三"}{ "index" : {} }{"ip":"192.168.0.1", "user":"李四"}{ "index" : {} }{"ip":"192.168.0.1", "user":"王五"}{ "index" : {} }{"ip":"192.168.0.2", "user":"小红"}{ "index" : {} }{"ip":"192

2020-10-29 09:10:39 1009

原创 Elasticsearch Pipeline Aggregation管道聚合详解

文章目录1. buckets_path2. 特殊路径3. Bucket Sort Aggregation4. Avg Bucket Aggregation5. Max Bucket Aggregation6. Sum Bucket Aggregation7. Cumulative Sum Aggregation8. Stats Bucket Aggregation1. buckets_pathPipeline Aggregation 称为管道聚合,它的操作对象是其他聚合,而不是文档数据。这边用的是bu

2020-10-28 22:58:45 955

原创 Elasticsearch Terms Aggregation计数聚合详解

文章目录1. Terms Aggregation考试成绩案例某考试成绩结果如下,几个字段分别为:学科、姓名、成绩PUT /my_index/_doc/_bulk{ "index" : {} }{"course":"语文","name":"张三","score":95}{ "index" : {} }{"course":"语文","name":"李四","score":88}{ "index" : {} }{"course":"语文","name":"王五","score":82}{ "i

2020-10-28 20:31:04 2007

原创 Oracle 获取字符的位置并截取字符串

1、获取字符所在位置用法:instr (字符串, 查找的字符)select instr('福建省/厦门市/思明区', '/') from dual;返回值:42、截取字符串用法:substr(字符串, 开始位置, 截取长度)select substr('福建省/厦门市/思明区', 1, 3) from dual;返回值:福建省...

2020-10-28 10:14:58 3982

原创 Logstash 使用http output处理数据

1. 前言今天遇到一个需求,使用Logstash将Oracle的一张表数据定时地同步到MySQL。数据源使用Jdbc Input Plugin没问题,但是官方文档介绍的输出插件没有Jdbc,也就是说不能直接配置Jdbc -> Jdbc同步。经过一番思索,决定使用 Jdbc -> Http 的方式。2. Http Output Plugin2.1 介绍Http 插件允许我们配置url接口地址,插件会将数据传到接口,然后就可以通过代码进行数据处理了。2.2 配置output { h

2020-10-27 21:23:00 2571 2

原创 Elasticsearch 常用运维命令(持续更新)

查看所有分片状态GET /_cat/shards查看指定索引的分片状态GET /_cat/shards?index=***对集群中分配失败的索引进行重新分配POST /_cluster/reroute?retry_failed=true查看集群状态GET /_cluster/health执行结果为:{ "cluster_name" : "docker-cluster", "status" : "yellow", "timed_out" : false,.

2020-10-26 21:55:37 358

原创 Logstash 使用fingerprint filter过滤重复数据

1. 概要工作中,Elasticsearch有个索引是通过Logstash同步Oracle数据生成的。但是又需要根据一定的规则,过滤掉重复的数据,生成另一个索引。用一张图来表示就是这样:数据源是Oracle数据库Logstash Input插件使用JdbcLogstash Filter插件使用FingerPrint(指纹过滤器)Logstash Output插件就是Elasticsearch,最终输出就是ES2. Logstash配置话不多说,直接上配置Demoinput { st

2020-10-26 21:35:41 1260

原创 Elasticsearch query和filter过滤有什么不同

1. 概述在使用DSL进行Elasticsearch的查询中,通常我们都是使用query进行过滤匹配,如下代码算是相当常见了GET /my_index/_search{ "query": { "match": { "name": "张三" } }}除此之外,ES还提供了filter过滤,二者都是提供过滤查询的功能。很多人对此比较疑惑,ES这样设计有什么目的?下面我们就讲讲他们之间的区别。2. 关注点不同query关注的是搜索条件与索引数据之间的匹配程度,在

2020-10-25 23:37:55 592

转载 Elasticsearch中如何进行日期(数值)范围查询

https://www.cnblogs.com/shoufeng/p/11266136.html

2020-10-24 22:32:36 4265

原创 Docker查看容器完整的COMMAND信息

加上 --no-trunc 就可以docker ps -a --no-trunc

2020-10-23 15:09:13 4802 1

原创 Java注释小技巧:使用linkplain链接跳转到对应的代码

写注释的时候,偶尔需要提醒阅读的人参考其他代码,可以创建 @linkplain 链接,按住ctrl+鼠标左键,就能直接跳转跳转到类、枚举/** * 状态枚举 {@linkplain com.test.modules.enums.StatusEnum} */private Integer status;跳转到方法/** * 状态枚举 {@linkplain StatusEnum#getCode()} */private Integer status;...

2020-10-23 10:01:03 3450 1

原创 Java进阶:多线程Lock管理多个Condition的实践

概述本篇主要讲解Lock管理多个Condition的情况,对Condition基础还不了解的童鞋,请先看下这篇文章:ReentrantLock和Condition基本使用通过一项需求来实践假设,当前当前有3个任务A、B、C需要按顺序反复地执行。A执行完了执行BB执行完了执行CC执行完了重新执行A用一张图简单画一下就是这样:Condition的等待与唤醒正好可以实现上面这项需求代码实现为了更好地体现控制逻辑,这里代码不做封装,会写得更清晰一点首先,创建一个资源类 MyDatast

2020-10-22 22:19:26 920

原创 SpringBoot @PostConstruct和@PreDestroy使用详解

1. @PostConstruct1.1 概述@PostConstruct标记在方法上,在当前类的实例加入到容器之前,会先执行@PostConstruct标记的方法。它的执行顺序是这样的:先执行当前类的构造函数然后执行@Autowired标记对象的初始化最后执行@PostConstruct标记的方法如果没有抛出异常,则该对象加入Spring管理容器1.2 验证执行顺序创建一个空的Spring Boot项目,这步不演示了创建TestComponent@Componentpublic

2020-10-21 21:21:57 4107

原创 SpringBoot使用CommandLineRunner和ApplicationRunner项目初始化事件

1. 概述在实际开发工作中,有时需要在项目启动的时候初始化资源,例如:缓存、定时任务等等。Spring Boot 提供了这样的方案,只要创建 Bean 实现CommandLineRunner或者ApplicationRunner即可。这两个的作用是相同的,只是提供的参数略有不同。如果存在多个类实现CommandLineRunner或者ApplicationRunner,可以添加 @Order 注解或者实现 Ordered 接口来控制执行顺序。2. Demo先创建一个空的 Spring Boot 项

2020-10-21 16:54:55 1488

原创 Java进阶:BlockingQueue阻塞队列的使用

文章目录1. 概述2. 常用的阻塞队列3. 操作方法3.1 抛出异常3.2 特殊值3.3 阻塞3.4 超时1. 概述相比平时讨论的队列,阻塞队列增加了阻塞的功能:当有限长度的队列填满了数据时,继续往队列添加数据的线程将被阻塞住,持续等待,直到超时或队列数据被消费而腾出空间当队列数据为空时,消费线程会因为取不到数据而被阻塞,直到生产线程往队列添加数据,此时成功取到数据而不再阻塞2. 常用的阻塞队列ArrayBlockingQueue:由数组结构组成的有界阻塞队列LinkedBlocking

2020-10-21 14:30:41 1245

原创 Java进阶:ReentrantLock和Condition基本使用

1. 概述Java除了使用synchronized锁之外,还可以使用ReentrantLock实现独占锁。ReentrantLock使用起来更加灵活,也提供了更丰富的功能。2. 加锁解锁验证加锁之前,先来看一段没加锁的代码public class ReentrantLockApp { static class MyTest{ public volatile int num = 0; //自增 public void incr(){

2020-10-20 22:58:56 3357

原创 Java进阶:default方法说明

1. 概述JDK1.8的接口引入了 static 和 default 方法。static相当于public static修饰,和常规的用法一样,直接通过{类名.方法名}调用。而default方法只有public修饰,必须由接口的实现类来调用。2. default 的作用之所以引入 default ,主要是为了接口的升级。在以往开发中,接口只要增加了方法,所有实现类必须实现该方法,否则编译不通过。而default修饰的接口方法,实现类可以不实现该方法,默认调用接口的default方法实现。3. 示例:

2020-10-20 16:09:04 9030

原创 Idea新建项目默认是JDK1.5解决办法

找到Maven安装路径下的settings.xml文件,我这里是 D:\Java\apache-maven-3.5.4\conf\settings.xml在<profiles>标签下新增profile,默认是被注释掉的 <profiles> <profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault

2020-10-20 15:46:35 2054

原创 Java进阶:@FunctionalInterface函数式接口使用说明

概述@FunctionInterface 称为函数式接口,属于JDK8新增的特性。常见的一些接口比如Runnable、Callable都添加了该注解。使用要求标记在接口 Interface 上必须包含一个并且只能有一个抽象方法static方法和default方法,都不算抽象方法接口默认继承Object,显示实现例子先看一个错误示例:@FunctionalInterfacepublic interface MyInterface { //第一个抽象方法 void tes

2020-10-20 12:20:23 1685

原创 Spring Boot文档地址

Spring Boot 官方地址中文版本

2020-10-20 09:06:38 1073

原创 Java进阶:Semaphore信号量基本使用

概述Semaphore 称为信号量,主要用于两个场景1:多个共享资源的互斥使用2:并发线程数的控制Semaphore 实现需求背景:某停车场有3个停车位,现在有6辆车进行抢车位。先抢到车位后停放3秒钟,然后开出停车场,此时剩下的3辆车可以继续抢占车位。代码实现: public static void main( String[] args ) { final int count = 3; //默认是非公平锁,可以使用另一个构造函数,传递公平锁

2020-10-19 22:46:58 1229

原创 Java进阶:CyclicBarrier基本使用

概述上一篇文章讲到 CountDownLatch 的用法,CountDownLatch是倒计时直到最后值等于0,才不再堵塞。CyclicBarrier 相反,它主要是做加法的,直到值为某一个值的时候,堵塞才会消失。CyclicBarrier 实现需求背景:当前某部门准备开会,只有当部门全部10个人都到场后,会议才能开始代码实现: public static void main(String[] args) { final int count = 10;

2020-10-19 22:20:22 1051

原创 Java进阶:CountDownLatch倒计时

概述CountDownLatch 倒计时器,通常用于堵塞某个线程,直到其他前置线程都执行完毕后,堵塞线程才继续执行。CountDownLatch 是基于CAS实现的,因此它是线程安全的。CAS相关介绍看这篇:Java CAS原理详解举个简单的场景例子:某教室内当前有10个同学,等到所有同学都离开教室后,老师才过来锁门。使用 CountDownLatch 实现 public static void main(String[] args) throws InterruptedExceptio

2020-10-19 21:59:46 1162

原创 Windows环境安装Gradle6.4.1

下载Gradle打开下载页面:https://gradle.org/releases/,选择6.3版本下载并解压配置环境变量打开环境变量配置界面点击Path -> 编辑 -> 新增,输入刚才解压的路径并加上bin,我这边路径是:D:\Java\gradle-6.3\bin验证打开命令行输入界面,输入 gradle -v ,正常输出说明安装成功>gradle -vWelcome to Gradle 6.3!Here are the highlights of thi

2020-10-19 17:47:30 1438

原创 Oracle导入报错:ORA-01653表 无法通过 128 (在表空间 MY_BASE_DATA 中) 扩展

异常原因一般是因为表空间DBF文件大小到上限了解决方案:select * from dba_data_files where tablespace_name = 'MY_BASE_DATA'取出当前表空间的FILE_NAME字段值,然后执行如下语句,修改DBF文件,每次增加50M,无限大alter database datafile 'E:\ORADATA\MY_BASE_DATA.DBF' autoextend on next 50M maxsize unlimited;然后再去导入数据,发

2020-10-19 15:16:01 3916

原创 Elasticsearch from、scroll、search_after 分页查询对比

文章目录1. From+Size1.1 基本用法1.2 基本原理1.3 存在的问题2. Scroll2.1 基本用法2.2 基本原理2.3 存在的问题3. Search After3.1 基本用法3.2 基本原理3.3 存在的问题4. 总结1. From+Size1.1 基本用法查出第 6~8 笔数据GET /my_index/_search{ "from": 5, "size": 3}from:表示记录开始的顺序,默认0size:表示取回几笔数据,默认10from+size

2020-10-19 13:44:03 4342 6

原创 Nginx教程系列五:Nginx+Keepalived搭建高可用主从架构

文章目录1. 概述1.1 为什么要Nginx集群1.2 Nginx集群架构1.3 环境准备安装与配置Keepalived1. 概述1.1 为什么要Nginx集群先看下面一张图,这是普通的Nginx负载均衡实现如图可见,所有的请求都由Nginx进行分发。当Nginx挂掉之后,也就意味着后面所有tomcat服务都无法请求。如果能搭建一个备用Nginx,在其中1个Nginx挂掉之后,继续接收并分发请求,就能解决我们的问题了。1.2 Nginx集群架构1.3 环境准备需要2台Nginx服务器(

2020-10-17 21:55:54 1537

原创 Nginx教程系列一:Nginx简介(反向代理、负载均衡)

文章目录什么是Nginx反向代理负载均衡什么是NginxNginx 是一个高性能的HTTP和反向代理web服务器,其特点是占用内存小,并发能力强,能经受高负载的考验,有报告表名能够支持高达50000个并发连接数。反向代理正向代理当局域网的用户访问互联网时,这时候是访问不了的必须在客户端配置代理服务器,由代理服务器访问互联网,再将结果返回反向代理跟正向代理不同,反向代理服务器是配置在服务端的用户将请求发送到反向代理服务器,由该服务器去选择目标服务器获取数据后,再返回给客户端目标

2020-10-17 09:13:15 1163

原创 解决Linux报错:/bin/bash^M: 坏的解释器: 没有那个文件或目录

这个问题一般是windows编辑shell文件后,拷贝到Linux发生的错误。原因是在Windows下每一行结尾是\n\r,而Linux下则是\n,所以才会有 多出来的\r解决方案执行命令修复,把xxx替换成真实的文件名即可sed -i 's/\r$//' xxx.sh...

2020-10-16 22:54:24 1721

转载 Linux下Keepalived安装与配置

一、简介       负载平衡是一种在真实服务器集群中分配IP流量的方法,可提供一个或多个高度可用的虚拟服务。在设计负载均衡拓扑时,重要的是要考虑负载均衡器本身的可用性以及它背后的真实服务器。用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层、第4层和第7层交换机的功能。       Keepalived为负载平衡和高可用性提供了框架。负载

2020-10-15 22:28:54 7039

原创 Elasticsearch Suggester搜索建议详解

文章目录概述Term suggester概述Suggester用途:根据用户提供的文本,给出可能相似的词语。类似百度搜索提示,截个图大家就清楚了Suggester分类:Term suggester、本篇使用的ES版本:7.7Term suggesterterm suggester 先将搜索词进行分词,然后逐个与指定的索引数据进行比较,计算出编辑距离再返回建议词。编辑距离:这里使用了叫做Levenstein edit distance的算法,核心思想就是一个词改动多少次就可以

2020-10-15 18:13:36 2020

原创 Nginx教程系列五:实现负载均衡配置

文章目录1. 案例1.1 环境准备1.2 实现效果1.3 修改Nginx配置文件1.4 测试2. 负载均衡策略对比2.1 轮询2.2 权重2.3 iphash2.4 fair1. 案例1.1 环境准备Nginx2个tomcat实例:8080、80811.2 实现效果访问服务器9002端口,依次请求2个tomcat实例1.3 修改Nginx配置文件upstream myserver { server 127.0.0.1:8080; server 127.0.0.1:808

2020-10-15 16:12:48 1326

原创 Nginx教程系列四:实现反向代理配置

文章目录案例一安装tomcat配置Nginx反向代理测试案例二安装第二个tomcat实例准备测试页面配置Nginx反向代理测试案例一预先安装nginx(还没安装的查看这里:Linux安装Nginx)监听端口号80安装tomcat,端口号8080实现打开80端口地址自动跳转到8080的tomcat主页,如下图安装tomcat下载tomcat安装包,上传到Linux服务器/opt路径,也可以从网盘直接下载:链接:https://pan.baidu.com/s/1_GbsxxCXldA-SqM

2020-10-14 23:04:20 1297

原创 Elasticsearch全文检索对比:match、match_phrase、wildcard

文章目录matchmatch_phrasequery_stringwildcardsuggestmatch根据定义的分词器(默认standard)对搜索词进行拆分,根据拆分结果逐个进行匹配。特点是可以查出大量可能相关联的数据,但是准确率低。PUT my_index/_doc/1?refresh{ "message": "this is a test"}PUT my_index/_doc/2?refresh{ "message": "this is a dog"}PUT my_ind

2020-10-14 10:38:51 3262

原创 Nginx教程系列三:Nginx常用命令

文章目录查看版本号启动nginx停止nginx重新加载nginx进入nginx目录cd /usr/local/nginx/sbin/查看版本号./nginx -v输出nginx version: nginx/1.14.1启动nginx方式一:加载默认配置文件./nginx方式二:加载指定的配置文件./nginx -c /usr/local/nginx/conf/nginx.conf停止nginx./nginx -s stop重新加载nginx修改配置文件后,不需

2020-10-13 22:26:27 1296

原创 Elasticsearch script使用详解

文章目录概述script 格式使用script_score处理_score使用script_fields处理返回的字段值使用script作为过滤条件使用script进行聚合统计概述script作为elasticsearch的拓展功能,通过定制对应的表达式,可以帮助我们实现一些自定义的需求:定义经过处理的字段作为返回值定义查询得分的计算公式定义特殊过滤条件,例如两个字段比较大小定义特殊过滤条件注意:script不能使用索引结构,因此会存在一定的性能问题。如果对查询的速度要求较高,建议在数据存

2020-10-13 16:40:12 22630 2

jodconverter-2.2.2.zip

jodconverter-2.2.2.zip

2021-01-26

jdk1.8中文版文档

JDK1.8中文版本

2020-10-21

spring boot操作kafka例子

spring boot操作kafka例子 创建主题、生产者、消费者 发送消息、消费消息 application.properties配置

2020-10-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除