锋芒_博客

点滴积累
私信 关注
我傲故我狂
码龄4年

不负时光,不负卿;不负春光,不负己

  • 111,696
    被访问量
  • 118
    原创文章
  • 45,351
    作者排名
  • 15
    粉丝数量
  • 于 2016-12-03 加入CSDN
获得成就
  • 获得37次点赞
  • 内容获得13次评论
  • 获得148次收藏
荣誉勋章
兴趣领域
  • #后端
    #Spring#分布式#Java#Spring Boot#MySQL#Linux#Redis#架构#Elasticsearch
TA的专栏
  • idea
  • mac
    2篇
  • Elastic
    21篇
  • 工具类
  • 流量控制
    1篇
  • http
    2篇
  • Tomcat
    1篇
  • 分布式事务
    1篇
  • 设计模式
    24篇
  • 技术学习
    3篇
  • 生活领悟
  • 管理学习
  • 追求财务自由
  • 技术问题处理回顾
    15篇
  • mysql
    10篇
  • jvm
    7篇
  • 架构
    2篇
  • spring
    14篇
  • 大数据
  • git
    5篇
  • 数据结构
    4篇
  • linux
    1篇
  • redis
  • mongodb
  • SpringCloud
    12篇
  • zookeeper
    2篇
  • nacos
    2篇
  • consul
    2篇
  • Hystrix
    3篇
  • resilience4j
    3篇
  • ActiveMQ
    2篇
  • kafka
    5篇
  • RabbitMQ
    4篇
  • zipkin
    3篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

windows系统同时安装jdk1.7 和jdk1.8

一、背景目前一些老项目用的是jdk1.7,新项目全部用的jdk1.8,每次新老项目交替开发的时候都都需要,重新安装配置jdk,耗时又麻烦,希望能通过一键或简单配置修改当前系统jdk版本。二、配置过程1)下载jdk下载地址:https://www.oracle.com/java/technologies/javase-downloads.html2)创建安装jdk目录,多个jdk版本目录结构需要统一,这样才能统一设置JAVA_HOME3)删除系统环境变量中安装jdk8产生的 Path C:
原创
599阅读
0评论
1点赞
发布博客于 8 月前

MySQL无法远程连接问题处理

1、查看/etc/mysql/my.cnf配置文件是否只允许本地连接注释配置:#bind-address = 127.0.0.1,重启MySQL Server2、防火墙(我用的是iptables)禁止了3306端口访问/etc/sysconfig/iptables配置文件添加3306端口,即添加以下内容再重启防火墙即可:  -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT3、MySQL没有授予相应权限授权用户us
原创
99阅读
0评论
0点赞
发布博客于 10 月前

mac上安装并配置maven

1、下载下载地址:http://maven.apache.org/download.cgi。下载maven文件并解压。2、配置环境变量1)编辑.bash_profile文件:vim ~/.bash_profile#配置maven文件地址:export M2_HOME=/Users/xxx/Documents/maven/apache-maven-3.6.3#注意xxx表示的是用户名...
原创
127阅读
0评论
0点赞
发布博客于 1 年前

git 常用命令

1、查看当前分支git branch2、查看提交记录git log3、创建分支#创建dev分支,-b 表示创建后切换到dev分支git checkout -b dev也可以用git switch -c 还可以两条命令 创建的 v分支+切换到dev分支:git branch devgit checkout dev注意4、提交修改后的文件#将修改后README.md添...
原创
73阅读
0评论
0点赞
发布博客于 1 年前

git merge后保留分支信息

背景:合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。合并命令:$ git merge --no-ff -m "merge with no-ff" devMerge made by the 'recursive' strategy. readme.txt | 1 + 1 file c...
转载
677阅读
0评论
0点赞
发布博客于 1 年前

git reset回退版本三种模式

我们常用的是 hard 模式。命令行:git reset --hard 42294a2adc041c6b37d99fd776dac00a425e4b96
原创
102阅读
0评论
0点赞
发布博客于 1 年前

MAC上Git安装与GitHub基本使用

这博文可以在mac上顺利安装githttps://www.jianshu.com/p/7edb6b838a2e
转载
325阅读
0评论
0点赞
发布博客于 1 年前

Elasticsearch 结构化查询

1)环境准备启动Elasticsearch https://blog.csdn.net/qq_36918149/article/details/104221934启动Kinbana https://blog.csdn.net/qq_36918149/article/details/1042246252)什么是结构化数据?2)什么是结构化数据搜索?3)demo 演示#结构化搜...
原创
321阅读
0评论
0点赞
发布博客于 1 年前

Elasticserach 中文分词插件

一、elasticsearch-analysis-hanlp1)定义:面向生产环境的自然语言处理工具包,中文分词器。2)github官网:https://github.com/KennFalcon/elasticsearch-analysis-hanlp3)特性:中文分词比较准确、可以远程设置词典、可以自定义词典4)官网有安装、版本说明5)演示,该分词插件有多种模式#ik_max_wo...
原创
160阅读
0评论
0点赞
发布博客于 1 年前

Elasticsearch 词项搜索

1)环境准备启动Elasticsearch https://blog.csdn.net/qq_36918149/article/details/104221934启动Kinbana https://blog.csdn.net/qq_36918149/article/details/1042246252)基于term查询定义&描述:示例一:写入数据POST /prod...
原创
209阅读
0评论
0点赞
发布博客于 1 年前

Elasticsearch聚合分析简介

1)环境准备启动Elasticsearch https://blog.csdn.net/qq_36918149/article/details/104221934启动Kinbana https://blog.csdn.net/qq_36918149/article/details/104224625备注:一定要提前导入demo数据2)哪些场景在用聚合分析?场景一:搜索页面预览统计...
原创
251阅读
0评论
0点赞
发布博客于 1 年前

Elasticsearch Dynamic Template

1)环境准备启动Elasticsearch https://blog.csdn.net/qq_36918149/article/details/104221934启动Kinbana https://blog.csdn.net/qq_36918149/article/details/1042246252)什么是Dynamic Template?3)通用模版4)demo演示一...
原创
433阅读
0评论
0点赞
发布博客于 1 年前

Elasticsearch Index Template

1)环境准备启动Elasticsearch https://blog.csdn.net/qq_36918149/article/details/104221934启动Kinbana https://blog.csdn.net/qq_36918149/article/details/1042246252) 什么是Index Template?3) Index Template 有哪...
原创
528阅读
0评论
0点赞
发布博客于 1 年前

Elasticserach 自定义分词器

1)环境准备启动Elasticsearch https://blog.csdn.net/qq_36918149/article/details/104221934启动Kinbana https://blog.csdn.net/qq_36918149/article/details/1042246252)Character Filter演示一:#去除html标签POST _an...
原创
183阅读
0评论
0点赞
发布博客于 1 年前

Elasticsearch 多字段特性

1)多字段特性 定义2)精确值(Exact Values)与全文本(Full Text)精确值(Exact Values)在索引是, 不会做特殊的分词处理, 既不会被分词。
原创
427阅读
0评论
0点赞
发布博客于 1 年前

Elasticsearch Mapping设置

1)、环境准备启动Elasticsearch https://blog.csdn.net/qq_36918149/article/details/104221934启动Kinbana https://blog.csdn.net/qq_36918149/article/details/1042246252)如何定义一个Mappin?PUT users_test{ "mappin...
原创
251阅读
0评论
0点赞
发布博客于 1 年前

ElasticSearch Mapping

一、Mapping介绍1)什么是Mapping ?备注:7.0版本后ES,是通过自动识别字段type2)字段类型备注:相比其它存储,多了IP、坐标等特殊的格式3)什么是Dynamic Mapping ?备注:Dynamic Mapping ,设置不恰当可能导致字段无法被索引。4)Mapping 类型的自动识别5)通过设置dynamic控制Dynamic Mapping6...
原创
126阅读
1评论
0点赞
发布博客于 1 年前

Elasticsearch Query String

1)、数据准备https://blog.csdn.net/qq_36918149/article/details/1042269942)、演示数据添加PUT /users/_doc/1{ "name":"Ruan Yiming", "about":"java, golang, node, swift, elasticsearch"}PUT /users/_doc/2{ ...
原创
630阅读
0评论
0点赞
发布博客于 1 年前

excel中vlookup数据匹配

1)excel 版本为20162)演示实现两个sheet匹配数据3)实例中场景是HR通过晋级名单,到员工信息表中,匹配员工基本信息4)员工基本信息(sheet1)4)晋级名单(sheet2)晋级名单中,等级、工号需要到“人员基本信息”中匹配2)选中你要填充数据单元格,然后在“晋级”sheet中,通过菜单“查找与引用” 找到vlookup公式Lookup_value 应该选中你需...
原创
192阅读
0评论
0点赞
发布博客于 1 年前

JDK命令工具

一、命令工具在哪儿?如图,在你jdk安装目录,bin子目录下。图中, 是windows版jdk所有,你们看到都是*.exe文件。二、怎么执行?2.1 首先启动cmd2.2 切换到jdk 的bin子目录三、有哪些常用的命令?3.1 jps :虚拟机进程状态工具jps -l 3.2 jstat:虚拟机统计信息监控工具jstat -gc 19036 250 201903...
原创
50阅读
0评论
0点赞
发布博客于 1 年前

Elasticsearch Request Body DSL

1、将语句通过HTTP Request Body 发送给Elasticsearch2、Query DSL ,是Elasticsearch查询的语法示例(ignore_unavailable=true表示即使搜索的index不存在也不报错)3、分页/排序1)分页From 从0开始,默认返回10个结果获取靠后的翻页成本较高(Elasticsearch分片机制,在查询分页的时候,需要将前面...
原创
186阅读
0评论
0点赞
发布博客于 1 年前

Elasticsearch URI Search 详解

1、通用查询格式示例2、使用Profile参数格式GET /movies/_search?q=2012&df=title{ "profile":"true"}输出查询语句执行过程,可以看出用查询了哪些字段,用了什么查询方式 等。类似与Mysql中的explain 查看sql执行情况。3、指定字段&泛查询语法1)范查询profile输出中可以看出,查询...
原创
162阅读
0评论
1点赞
发布博客于 1 年前

Elasticsearch Search API 介绍

一、URI Search & Request Body Search按传递参数方式分为两类1)URI Search在URL中使用查询参数。使用“q”,指定查询字符串。“query string syntax”,KV健值对。演示:2)Request Body Search使用Elasticsearch提供的,基于JSON格式的Query Domain Specific ...
原创
160阅读
0评论
1点赞
发布博客于 1 年前

Elasticsearch分词(Analyzer)

一、什么是Analysis ?Analysis 叫做分词,就是将文本转换为一系列单词(term/token)的过程。Analysis 是通过Analyzer来实现的。可使用Elasticserach内置的分析器或按需优化分需求或安装分析器插件 。在数据写入的时候转换词条于Query语句查询的时候也需要用相同的分析器。二、Analyzer的组成与工作机制Character Filter...
原创
146阅读
0评论
0点赞
发布博客于 1 年前

Elasticsearch倒排索引

一、什么是倒排索引倒排索引是相对于正排索引而言的, 正排索引是通过 id(唯一标识)找到对应文档, 倒排索引是通过 关键字找到对应的文档。1)我们以书的目录为例:目录-正排(通过页面找内容)目录-倒排(通过索引页关键字找出现该关键字的内容页)2)图书和搜索引擎类比二、倒排索引数据结构正排索引和倒排索引对照三、Elasticsearch倒排索引Elasticsearch的J...
原创
311阅读
0评论
0点赞
发布博客于 1 年前

Elasticsearch文档基本CRUD与批量操作

一、文档CRUD1、CRUD 规范2、Create 一个文档支持自动生产文档Id和指定文档Id两种方式1 ) 通过调用‘POST users/_doc’,系统会自动生成document Id2)使用‘PUT users/_doc/1?op_type=create’创建时,URI中显示指定_create,此时如果该id的文档已经存在,则操作失败3、Get 一个文档1)找到文档,...
原创
124阅读
0评论
0点赞
发布博客于 1 年前

Elasticsearch节点与分片说明

1、Elasticsearch为什么引入节点与分片逻辑?Elasticsearch 要实现高可用、高可靠、水平扩展,多节点可以保障,部分节点挂掉以后集群还能正常工作,且在读取集群数据的时候多个节点可以负载均衡;分片可以保证在海量数据写入ES的时候,可以在不同的分片中写, 提高写入性能。2、集群是一组工作节点的集合;不同的集群通过不同的集群名称来区别,默认名称“elasticsearch”...
原创
674阅读
0评论
0点赞
发布博客于 1 年前

Elasticsearch基本概念

1、Index索引、Node节点开发关注数据的索引,运维关注的节点情况及物理情况2、文档(Document)3、JSON文档4、文档元数据5、索引6、Type7、关系型数据库与ElasticSearch 数据结构对比8、ElasticSearch 是怎么实现跨平台ElasticSearch 支持REST API ,所有开发语言都可以调用9、Index 相关 A...
原创
141阅读
0评论
0点赞
发布博客于 1 年前

Logstash安装及数据导入

一、安装前准备1)下载与ES相同版本号的logstash,(7.1.0),并解压到相应目录官网下载地址:https://www.elastic.co/cn/downloads/logstash华为过年镜像地址:https://mirrors.huaweicloud.com/logstash/7.1.0/2)下载最MovieLens最小测试数据集地址:https://grouplens.o...
原创
376阅读
0评论
0点赞
发布博客于 1 年前

Kibana安装

一、安装前准备1)下载kibana官网地址:https://www.elastic.co/cn/downloads/kibana或华为镜像库下载: https://mirrors.huaweicloud.com/二、安装配置1)首先启动ElasticSearch (强依赖)备注:ElasticSearch 安装启动详见另一章节:https://blog.csdn.net/qq_369...
原创
281阅读
0评论
0点赞
发布博客于 1 年前

Elasticsearch安装

一、安装前准备1)Elasticsearch是用java开发,运行需要安装配置JDK设置 $JAVA_HOMEElasticsearch 5 需要Java 8 以上版本Elasticsearch 从6.5 开始Java 11Elasticsearch 从7.0 开始,内置了Java环境2)Elasticsearch 安装包下载https://www.elastic.co/cn/dow...
原创
365阅读
0评论
0点赞
发布博客于 1 年前

Elastic生态圈介绍

Elastic Stack 生态圈介绍Elastic Stack 生态圈可以看出主要专注于网站搜索、代码搜索、日志管理分析、安全指标监控、应用性能监控等功能。1、Kibana数据可视化工具,可以提供图标,也可以基于机器学习进行监控告警。2、Logstash、BeatLogstash 开源的服务器端数据处理管道,支持从不同来源采集数据,转换数据,并将数据发送到不同的存储库中。Logst...
原创
442阅读
0评论
0点赞
发布博客于 1 年前

国外软件下载慢怎么办? 国内镜像下载来帮忙!

背景:今天下在下载elasticsearch的时候,需要连到国外服务器,导致下载非常慢,下载一天后突然下载失败,国内很多互联网企业为了解决这问题就做了镜像下载服务器。一、华为开源镜像站主要内容:常用的开源操作系统、中间件、工具地址:https://mirrors.huaweicloud.com/下载条件:直接通过浏览下载待续。。。。。。。。。。。。。。。。。。。。。。。。。。。。...
原创
4127阅读
0评论
0点赞
发布博客于 1 年前

JVM的钩子函数

虚拟机退出:JVM会在所有非后台线程关闭后才会退出,如在一个main线程里新产生一个线程,而该线程阻塞了,那么虚拟机不会退出。后台线程会在所有非后台线程退出后都停止任务。系统调用System.exit(0):在线程中调用会导致整个系统退出。在调用该代码之后定义代码均不会运行。JAVA的钩子函数是在jvm正常退出时会调用:例如在线程上调用System.exit(0)时会调用注册的钩...
原创
314阅读
0评论
0点赞
发布博客于 1 年前

http连接池未设置获取连接超时时间导致服务死机

一、故障过程回顾2020年1月3日早上7:30收到pay-xx服务连接超时告警,发现问题后马上进行排查,根据链路日志发现,我们请求有通过http发送给第三方,将请求日志发给第三方,但第三方反馈未收到该请求。瞬间懵逼了, 我们有发送请求,但第三方没有收到,请求中途掉包了 ?网络出现了问题?但是我们部分请求是可以送达第三方的,开始怀疑是第三方对我们出口的ip做了白名单限制 ? 7:50 左右我们一个...
原创
856阅读
0评论
3点赞
发布博客于 1 年前

三步透视Guava-RateLimiter

一、定义RateLimiter使用的是一种叫令牌桶的流控算法,RateLimiter会按照一定的频率往桶里扔令牌,线程拿到令牌才能执行,比如你希望自己的应用程序QPS不要超过1000,那么RateLimiter设置1000的速率后,就会每秒往桶里扔1000个令牌。package com.google.common.util.concurrent;@ThreadSafe@Beta@Gwt...
原创
97阅读
0评论
0点赞
发布博客于 2 年前

jdk监控和故障处理工具

主要jdk诊断命令jps (JVM Process Status): 类似 UNIX 的 ps 命令。用户查看所有 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息;jstat( JVM Statistics Monitoring Tool): 用于收集 HotSpot 虚拟机各方面的运行数据;jinfo (Configuration Info for Java) : Conf...
原创
3492阅读
0评论
0点赞
发布博客于 2 年前

ThreadLocal遇到线程池时, 各线程间的数据会互相干扰

1、问题现象在一个服务中,我们为了不修改接口,且能在当前线程传递数据,想到了用ThreadLocal保存数据, 测试环境一切正常, 上生产环境后发现,当前线程去ThreadLocal保存的用户数据的时候,莫名其妙的取到了,其它用户的数据。2、问题原因首先我排查了ThreadLocal 中存、取数据的过程,没有线程安全的问题, 然后怀疑是项目中用了线程池复用线程导致数据混乱,排查后发现项目中并...
原创
577阅读
0评论
1点赞
发布博客于 2 年前

生产环境 InputStream.available() = 0 导致的一次血案

1、问题现象 InputStream is = connection.getInputStream(); String reqData = ""; if (is != null && is.available()!=0) { ByteArrayOutputStream bos = n...
原创
1109阅读
3评论
1点赞
发布博客于 2 年前

HTTPS是什么?SSL/TLS是什么?

https是什么?SSL/TLS是什么?
原创
194阅读
0评论
0点赞
发布博客于 2 年前

activemq 控制面板里Number Of Pending Messages、 Messages Enqueued等含义解释

Number Of Consumers :表示消费者数量;Number Of Pending Messages :等待消费的消息,这个是当前未出队列的数量;Messages Enqueued :进入队列的消息;( 这个数量只增不减,重启acmq后会清零)Messages Dequeued :出了队列的消息 可以理解为是消费这消费掉的数量 (重启acmq后会清零)一般情况下,1、当有生...
转载
112阅读
0评论
0点赞
发布博客于 2 年前

JAVA8之StringJoiner类

简介:StringJoiner是Java8新出的一个类,用于构造由分隔符分隔的字符序列,并可选择性地从提供的前缀开始和以提供的后缀结尾。省的我们开发人员再次通过StringBuffer或者StingBuilder拼接。撸代码效果:public class Test { public static void main(String args[]) { final St...
原创
104阅读
0评论
0点赞
发布博客于 2 年前

设计模式 _第十六招式_享元模式

一、定义享元模式(Flyweight Pattern)是池技术的重要实现方式其定义如下:使用共享对象可以有效地支持大量的细粒度的对象。享元模式的定义为我们提出列两个要求:细粒度对象和共享对象。我们知道分配太多的对象到应用程序中将有损程序的性能,同时还容易造成内存溢出,那怎么规避呢 ?就是享元模式提供的共享技术。要求细粒度对象,则会导致对象的数量多且属性都非常相似,为了抽取相同的属性, 可以将...
原创
43阅读
0评论
0点赞
发布博客于 2 年前

设计模式 _第十七招式_桥梁模式

一、定义二、代码演示2.1 通用类图2.2 角色说明State–抽象状态角色接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换。ConcreteSate–具体状态角色每一个具体状态必须要完成两个职责:本状态行为管理及趋向状态处理,通俗的说就是本状态要做的事情, 及如何过渡到其它状态。Context–环境角色定义客户端需要的接口,并且负责到状态的切换。状态模式相...
原创
50阅读
0评论
0点赞
发布博客于 2 年前

设计模式 _第十五招式_解释器模式

一、定义解释器模式(Interpreter Pattern)是一种按照规定语法进行的解析方案,现在在项目中运用比较少。给定一门语音,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。二、代码演示2.1 通用类图2.2 角色说明AbstractExpression–抽象解释器具体的解释任务由各个实现类完成,具体的解释器分别有TerminalExpress...
原创
67阅读
0评论
0点赞
发布博客于 2 年前

设计模式 _第十四招式_状态模式

一、定义当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类,状态模式的核心是封装,状态的变更引起行为的变更,从外面看起来就像这个对象对应的类发生了改变一样。二、代码演示2.1 通用类图2.2 角色说明State–抽象状态角色接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换。ConcreteSate–具体状态角色每一个具体状态必须要完成两个职责:本状...
原创
37阅读
0评论
0点赞
发布博客于 2 年前

Tomcat系统架构解剖

一、总体架构1.1 Tomcat 实现类两大核心功能:处理Socket连接,负责网络字节流与Request和Response对象的转换。加载和管理Servlet,以及处理具体的Request请求。因此Tomcat设计了两个核心组件连接器(Connetor)和容器(Container)来分别做这两件事情。连接器负责处理对外交流,容器负责处理内部逻辑。1.2 Tomcat支持的I/O模型...
原创
64阅读
0评论
0点赞
发布博客于 2 年前

设计模式 _第十三招式_访问者模式

一、定义封装一些作用于某种数据结构中的个元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新操作。二、代码演示2.1 通用类图2.2 角色说明Visitor(抽象访问者)抽象类或者接口,声明访问者哪些可以访问哪些元素,具体到程序中就是visit方法的参数定义哪些对象是是可以被访问的。ConcreteVisitor(具体访问者)它影响访问者访问到一个对象以后该干什么,...
原创
37阅读
0评论
0点赞
发布博客于 2 年前

设计模式 _第十二招式_备忘录模式

一、定义备忘录模式(Memento Pattern)提供了一种弥补真实世界缺陷的方法,让“后悔药”在程序的时间真实可行;在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象外部保存这个状态,这样以后就可将对象恢复到原先保存的状态。二、代码演示2.1 通用类图2.2 角色说明Originator抽象构建记录当期时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数...
原创
62阅读
0评论
0点赞
发布博客于 2 年前

推荐一篇分布式事务文章

https://mp.weixin.qq.com/s?__biz=MzA5Mjg2MDQ5NQ==&mid=2452509135&idx=1&sn=8fd574c6723c19c072d4d9eb4d776632&chksm=87bc48efb0cbc1f97edbb9126d1c7efc3502f58b877a433978dbf32ecdc95c70c6a0adc...
转载
85阅读
0评论
0点赞
发布博客于 2 年前

zipkin实现SpringCloud链路追踪

一、概述在微服务架构中,涉及服务与服务间的依赖关系非常复杂,SpringCloud 官方推荐 sleuth + zipkin 方式实现链路追踪,zipkin web 管理页面中,可以每个请求的依赖关系、请求时间、返回时间、服务与服务间的依赖图等。在本文中主要介绍两种服务依赖情况微服务调用微服务微服务通过RabbitMQ发送消息环境依赖:名称值备注JD...
原创
686阅读
0评论
0点赞
发布博客于 2 年前

Consul作为SpringCloud配置中心

一、背景介绍在分布式系统中动态配置中,可以避免重复重启服务,动态更改服务参数等。一句话非常重要。 另外一篇文章也是这样说的,哈哈。 Consul 作为Spring 推荐的分布式调度系统其也具备配置中心的功能, 我们也可以利用其作为配置中心,其client端主动定时发起与配置中心同步机制,实现动态配置的的更新。环境依赖:名称值备注JDK1.8Consul1.5...
原创
4856阅读
0评论
1点赞
发布博客于 2 年前

zipkin之 CentOS 安装配置

1、下载jar包curl -sSL https://zipkin.io/quickstart.sh | bash -s备注:系统中安装jdk 1.8 以上2、配置启动1)经典模式只能支持web(http)采集数据java -jar zipkin.jar2)链路监控RabbitMQjava -jar zipkin.jar --zipkin.collector.rabbitmq.ad...
原创
377阅读
0评论
0点赞
发布博客于 2 年前

zipkin

一 、概述zipkin为分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪。在复杂的调用链路中假设存在一条调用链路响应缓慢,如何定位其中延迟高的服务呢?日志: 通过分析调用链路上的每个服务日志得到结果;zipkin:使用zipkin的web UI可以一眼看出延迟高的服务;zipkin主要涉及四个组件 collector storage search web UI...
转载
46阅读
0评论
0点赞
发布博客于 2 年前

SpringCloud之RabbitMQ

一、背景介绍在Spring Cloud 中,对消息中间件的支持, 做了比较完善的抽象, 让使用者直接可以通过注解完成消息的生产、消费,这也是Spring框架比较厉害的特性“海纳百川”!今天,我就以“王家大少爷到江南皮革厂买皮鞋”的故事,给大家演示一下,SpringCloud 中怎么使用RabbitMQ!故事情节是:有一天,王家大少爷,在逛王府井的时候,发现 江南皮革厂直销店在吆喝卖皮鞋,他大...
原创
561阅读
0评论
0点赞
发布博客于 2 年前

RabbitMQ简介

一、简介在本文开始,用RabbitMQ官网的一句话进行开篇“RabbitMQ is the most widely deployed open source message broker”,看来RabbitMQ对自己还是挺有信心的!在开源社区里RabbitMQ确实活跃!在实际应用中主要用于异步化、服务解耦、消峰 等。RabbitMQ 支持持久化、多协议、丰富的路由规则、消息确认、实现了AMQP消...
原创
67阅读
0评论
0点赞
发布博客于 2 年前

RabbitMQ模拟器(Simulator)使用方法

模拟器地址: http://tryrabbitmq.com/使用方法:直接将画框左面的图标拖进画图区,构建想要的拓扑图;按住ALT或SHIFT键,鼠标点击需要连接的图标(如果不能连接,试试相反方向,例如先点击queue再点击exchange);双击击图标进行编辑设置各项功能;binding key不在queue上设定,双击击连线中间binding key。开始界面:运行界面:...
转载
600阅读
0评论
0点赞
发布博客于 2 年前

nacos作为SpringCloud配置中心

一、简介
原创
5402阅读
0评论
0点赞
发布博客于 2 年前

Zookeeper作为SpringCloud配置中心

一、背景介绍在分布式系统中动态配置中,可以避免重复重启服务,动态更改服务参数等。一句话非常重要。 哈哈。 Zookeeper 作为知名的分布式调度系统, 我们也可以利用其作为配置中心,其wacther 主动通知机制, 可以将node 节点数据变更信息及时通知到client 端。环境依赖名称值备注JDK1.8Consul1.5.2注册中心,Consul安装及...
原创
6064阅读
2评论
4点赞
发布博客于 2 年前

Kafka消费者组是什么?

一、Kafka消费者组是什么?二、Kafka消费者组解决了哪些问题?
原创
2868阅读
0评论
1点赞
发布博客于 2 年前

Kafka生产者消息分区机制剖析

一、为什么要分区?二、有哪些分区策略?
原创
627阅读
0评论
1点赞
发布博客于 2 年前

Resilience4j_服务端限流、并发控制_RateLimiter

一、背景描述由于Hystrix官方已经停止更新,Spring 官网推荐使用Resilience4j作为服务的熔断保护中间件,可见Resilience4j的重要性。为了探究Resilience4j实现服务熔断功能, 我们选用了 consul 作为注册中心,启动了一个服务端(waiter),验证其服务端限流、并发控制熔断。我们在极端的时间内访问较多次数指定接口,观察接口是否会进行熔断处理。 con...
原创
491阅读
0评论
0点赞
发布博客于 2 年前

Resilience4j_服务调用端异常熔断

一、背景描述由于Hystrix官方已经停止更新,Spring 官网推荐使用Resilience4j作为服务的熔断保护中间件,可见Resilience4j的重要性。为了探究Resilience4j实现服务熔断功能, 我们选用了 consul 作为注册中心,启动了一个服务端(waiter)、一个消费端(consumer)。我们关掉waiter 节点,验证 consumer 节点是否能正常熔断。 c...
原创
414阅读
0评论
0点赞
发布博客于 2 年前

Kafka幂等Producer和事务Producer

一、Kafka 消息交付可靠性Kafka 对Producer和Consumer 需要处理的消息提供三种承诺:最多一次(at most once):消息可能丢失,但绝不会被重发;至少一次(at least once):消息不会丢失,但有可能被重复发送(默认此可靠性);精确一次(at most once):消息不会丢失,也不会被重复发送。目前,Kafka默认提供的交付可靠性保障是第二种,...
原创
331阅读
0评论
0点赞
发布博客于 2 年前

Kafka无消息丢失实现

一、Kafka 无消息丢失核心概念Kafka 只对“已提交”的消息做有限度的持久化保证。二、生产者程序丢失数据目前Kafka Producer 是异步发送消息,也就是说如果你调用的是 producer.send(msg)这个API,那么它通常会立即返回,但此时你不能认为已经发送成功了。 如果出现消息丢失,我们是无法知晓的, 这种发送方式不靠谱,不过还有一些公司在用这种API发送消息。这种发...
原创
648阅读
0评论
1点赞
发布博客于 2 年前

kafka是什么?

一、定义Apache Kafka 是一款开源的消息系统。可以在系统中起到“肖峰填谷”的作用,也可以用于异构、分布式系统中海量数据的异步化处理。系统包括四个主要API:Producer API允许一个应用推送流记录通过一个或多个Kafka topics ;Consumer API允许一个应用订阅一个或多个topics 并且处理这些流记录;Streams API允许一个应用作为一...
原创
4840阅读
0评论
1点赞
发布博客于 2 年前

mysql分区表

一、什么是分区表 ?1.1 创建一个分区表并写入数据CREATE TABLE `t` ( `ftime` datetime NOT NULL, `c` int(11) DEFAULT NULL, KEY (`ftime`)) ENGINE=InnoDB DEFAULT CHARSET=latin1PARTITION BY RANGE (YEAR(ftime))(PARTITI...
原创
104阅读
0评论
0点赞
发布博客于 2 年前

mysql系统维护命令手册

1、查询mysql正在运行的进程show processlist;2、杀进程kill 18 备注:18 表示进程id ,可以通过show processlist;查看到;3、查看系统隔离级别SHOW VARIABLES LIKE "%tx_isolation%";4、查询缓存命中率show engine innodb status;...
原创
180阅读
0评论
0点赞
发布博客于 2 年前

BigDecimal的3个toString方法

本文介绍BigDecimal的3个toString方法的区别。BigDecimal类有3个toString方法,分别是toEngineeringString、toPlainString和toString,从BigDecimal的注释中可以看到这3个方法的区别:toEngineeringString:有必要时使用工程计数法。工程记数法是一种工程计算中经常使用的记录数字的方法,与科学技术法类似,...
转载
164阅读
0评论
0点赞
发布博客于 2 年前

mysql普通索引与唯一索引区别

一、创建索引语句差异1.1 普通索引ALTER TABLE `tt_test`ADD INDEX `k_title` (`title`) USING BTREE ;1.2 唯一索引ALTER TABLE `tt_test`ADD UNIQUE INDEX `un_index_title` (`title`) USING BTREE ;二、查询语句差异我们用这个查询语句来分析一下...
原创
3748阅读
0评论
0点赞
发布博客于 2 年前

什么是ActiveMQ?

一、官方简介Apache ActiveMQ™是最流行的开源,多协议,基于Java的消息服务器。它支持行业标准协议,因此用户可以通过广泛的语言和平台获得客户选择的好处。可以使用C,C ++,Python,.Net等连接。使用无处不在的AMQP协议集成您的多平台应用程序。使用STOMP通过websockets 在Web应用程序之间交换消息官网:http://activemq.apache.org/...
转载
2070阅读
0评论
1点赞
发布博客于 2 年前

一条SQL更新语句是如何执行的呢?

1、MySQL逻辑框架图更新语句涉及两个重要的日志模块:redo log (重做日志)和binlog(归档日志)2、redo log当有一条更新语句的时候,InnoDB引擎就会将记录写到redo log里, 并更新内存,这个时候更新就算完成了。同事,InnoDB在适当的时候,将这个操作的记录更新到磁盘里面,这个更新往往是系统空闲的时候。我们可以将,InnoDB的redo log 配置为一...
转载
87阅读
0评论
0点赞
发布博客于 2 年前

一条sql查询语句如何执行?

1)MySQL的逻辑框架图Server 层:包括 连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如 存储过程、触发器、视图等。存储引擎层:负责数据的存储和提取。其架构模式是插件式的, 支持InnoDB、MyISAM、Memory等多个存储引擎。常用的是InnoDB引擎。2)连接器第一步:先连上这个数据库,这时候接待你的就是连接器。连接器负责跟客户端建立...
原创
291阅读
0评论
0点赞
发布博客于 2 年前

resilience4j是什么?

一、简介Resilience4j是一个轻量级的容错库,受Netflix Hystrix的启发,但专为Java8和函数式编程而设计。轻量级,因为库只使用Vavr,它没有任何其他外部库依赖项。相比之下,NetflixHystrix对Archaius具有编译依赖性,Archaius具有更多的外部库依赖性,例如Guava和Apache CommonsConfiguration。Resil...
原创
755阅读
0评论
0点赞
发布博客于 2 年前

Hystrix Dashboard 可视化监控熔断数据

一、背景Hystrix 在下游服务异常的时候熔断对下游服务的调用,在实际应用中,我们需要知道服务被熔断的实时情况, 有助于发现问题,决解问题。在本次demo搭建中, 会有服务提供方(waiter)、服务消费方(consumer) 、Hystrix Dashboard 监控服务 。环境完全搭建完成后, 我们可以通过Hystrix Dashboard 监控服务的web界面,获取到服务请求被熔断的情...
原创
143阅读
0评论
0点赞
发布博客于 2 年前

Hystrix实现服务熔断_单机版

一、背景描述为了探究Hystrix实现服务熔断功能, 我们选用了 consul 作为注册中心,启动了一个服务端(waiter)、一个消费端(consumer)。我们关掉waiter 节点,验证 consumer 节点是否能正常熔断。 consul 启动及运行状态监控,不在这里描述, 我们默认 consul 已经正常运行。本地安装运行consul 参考:https://jingyan.baid...
原创
180阅读
0评论
0点赞
发布博客于 2 年前

手动实现服务熔断功能

在我们分布式系统中, 经常会用用到 Hystrix 、Resilience4j 等主流服务熔断器,平时使用得非常熟悉,但是否有想过,自己手动实现一个,熔断器呢 ?今天我们就以前来基于Spring AOP实现一个服务熔断器。一、熔断器概念在断路器对象中封装受保护的⽅法调⽤;该对象监控调⽤和断路情况;调⽤失败触发阈值后,后续调⽤直接由断路器返回错误,不再执⾏实际调⽤;下图为熔断器的工作原...
原创
670阅读
0评论
0点赞
发布博客于 2 年前

Hystrix是什么?

一、什么是Hystrix?Hystrix从Netflix API团队于2011年开始的弹性工程工作演变而来。在分布式环境中,许多服务依赖项中的一些不可避免地会失败。Hystrix是一个库,可通过添加延迟容错和容错逻辑来帮助您控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的访问点,阻止它们之间的级联故障以及提供后备选项来实现这一目标,所有这些都可以提高系统的整体弹性。Hystrix...
原创
317阅读
1评论
1点赞
发布博客于 2 年前

consul作为SpringCloud注册中心

一、consul 简介Consul是一种服务发现和配置工具。Consul具有分布式,高可用性和极高的可扩展性。服务发现 - 使用简单的服务来注册自己并通过DNS或HTTP接口发现其他服务。也可以注册SaaS提供商等外部服务。运行状况检查 - 运行状况检查使Consul能够快速向运营商发出有关群集中任何问题的警报与服务发现的集成可防止将流量路由到不健康的主机,并启用服务级别的断路器。密钥...
原创
263阅读
0评论
0点赞
发布博客于 2 年前

nacos作为SpringCloud注册中心

一、nacos 简介一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。动态配置服务:动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。服务发现及管理:动态服务发现对以服务为中心的(例如微服务和云原生)应用架构方式非常关键。Nacos支持DNS...
原创
284阅读
0评论
0点赞
发布博客于 2 年前

nacos单机源码调试

首先从github上获取对应的源码Nacos源码git clone https://github.com/alibaba/nacos.git使用idea打开,由于项目是使用maven进行管理的mvn clean install -Dmaven.test.skip=true进入到module:nacos-console【由于项目是使用SpringBoot】需要进行Run/Debug Con...
转载
653阅读
0评论
1点赞
发布博客于 2 年前

zookeeper作为SpringCloud注册中心

一、ZooKeeper 简介ZooKeeper是一种集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务。实现高度可靠的分布式协调。简单:直接通过ip+端口号连接后,就可以使用;多副本:在集群中有基数个节点,节点间的znode信息相互复制;有序:每一次更新都有 唯一的zxid (ZooKeeper Transaction Id),按zxid顺序依次更新;快:数据保存在内存中...
原创
1099阅读
0评论
0点赞
发布博客于 2 年前

zookeeper安装和使用_Windows环境

今天在在本地准备安装一个zookeeper,记录一下安装过程一、环境ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。环境:jdk 1.8 zookeeper 3.5.5 windows 10zookeeper官网下载地址:https://...
原创
541阅读
0评论
0点赞
发布博客于 2 年前

Feign

一、定义1)简介Feign使得编写java http客户端变得更容易,它使用Jersey和CXF等工具为ReST或SOAP服务编写Java客户端。有了它我们就不用谢restTemplate、webClient 调用 HTTP APIs 规则的 ReSTful 接口。Feign 10.x 需要jdk 8, 9 ,11 支持,如果是jdk 6 可以用 Feign 9.x 。官方地址:h...
原创
998阅读
0评论
0点赞
发布博客于 2 年前

Eureka注册与发现

Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。一、原理EureKa采用C-S的设计架构,即包括了Eureka Server(服务端),EureKa c...
原创
56阅读
0评论
0点赞
发布博客于 2 年前

可执行jar黑科技解剖

一、常规服务启动方式在java领域需要启动一个服务主要有三种方式1)单独运行servlet 容器,如Tomcat,Jboss 等2)war包中自带Jetty容器,通过java 命令运行3)通过Maven打一个可执行的jar执行运行这三种运行服务的方式都需要jdk环境支持,今天主要来研究一下 通过Maven打一个可执行的jar运行服务。二、只执行jar的运行原理在Maven的pom文件...
原创
151阅读
0评论
1点赞
发布博客于 2 年前

文件内容清洗转换

一、背景在日常开发中经常会遇到,从数据库导出一批离线数据,然后通过程序清洗转换为结果文件。在本示例中我导出了一般mysql表的主键, 然后对主键的行记录进行修改,需要逐条生成备份sql及更更新sql。环境:离线数据是csv文件;结果文件需要是sql文件;操作语言是java;二、示例 public void fileConvert() { FileReader reader...
原创
327阅读
0评论
0点赞
发布博客于 2 年前

MySQL数据库索引B+树

一、B+树定义在数据结构中我们经常用到二叉树,这种数据结构的时间复杂度是O(logn),相对于数组、链表有较好的 读、写效率。B+树是二叉树的一种变种,它既有 二叉树 数据有序性、良好读写效率 又可以控制树的高度,避免二叉树退化为链表。B+树就是M叉树,其必须符合如下条件:每个节点个数不能超过M,但不能小于M/2;根节点的子节点树可以小于M/2;通过链表将叶子节点连在一起,这样方便区...
原创
153阅读
0评论
1点赞
发布博客于 2 年前

SpringMVC拦截器Interceptor

一、Interceptor定义SpringMVC拦截器(Interceptor)实现对每一个请求处理前后进行相关的业务处理,类似与servlet中的Filter。SpringMVC 中的Interceptor 拦截请求是通过HandlerInterceptor来实现的。在SpringMVC中定义一个Interceptor非常简单,主要有4种方式:1)实现Spring的HandlerInte...
转载
745阅读
0评论
0点赞
发布博客于 2 年前

Java8 lambda表达式

一、Java8新特性Java8最大的变化就是引入了lambda表达式,一种紧凑的传递行为的方式,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等,主要新特性如下:Lambda 表达式 − Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。方法引用 −方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的...
原创
122阅读
0评论
0点赞
发布博客于 2 年前

Spring AOP

一、Spring AOP 的一些核心概念概念含义备注Aspect切面Join Point连接点,Spring AOP里总代表一次方法执行Advice通知,在连接点执行的动作Pointcut切入点,说明如何匹配连接点Introduction引入,为现有的类型声明额外的方法和属性Target object目标对象AOP...
原创
89阅读
0评论
0点赞
发布博客于 2 年前

Spring两种动态代理:Jdk和Cglib 的区别和实现

一、原理区别:java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP3、如果目标对象没有实...
转载
773阅读
0评论
0点赞
发布博客于 2 年前

Springboot的缓存抽象

在Springboot中支持基于注解方式,实现缓存,这简化了缓存的使用,且可以支持多种缓存模式:ConcurrentMap、EhCache、Caffeine、JCache(JSR-107)一、主要注解@EenableCacheing开启缓存支持@CacheEvict缓存清理@CachePut缓存设置@Caching可以对缓存清理、设置 等操作打包@CacheConfig缓存设...
原创
225阅读
0评论
0点赞
发布博客于 2 年前

CentOS环境安装mongoDB

一、安装1、环境系统:CentOS 7 64位安装方式:使用.rpm包(yum)注意:mongodb奇数次要版本(例如3.5)是开发版本,不适合生产使用2、配置包管理系统(yum)1)创建仓库文件vi /etc/yum.repos.d/mongodb-org-3.4.repo2)然后复制下面配置,保存退出[mongodb-org-3.4]name=MongoDB Repos...
原创
2460阅读
0评论
1点赞
发布博客于 2 年前

CentOS7安装redis

一、redis的安装先以管理员身份,升级系统 #sudo yum update2.如果wget没有安装则需要安装 # yum install wget3.创建redis目录# mkdir /usr/local/redis# cd /usr/local/redis4.下载redis,并编译#wget http://download.redis.io/releases/re...
原创
1345阅读
0评论
0点赞
发布博客于 2 年前

使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)

一、为什么要使程序在后台执行我们计算的程序都是周期很长的,通常要几个小时甚至一个星期。我们用的环境是用putty远程连接到日本Linux服务器。所以使程序在后台跑有以下三个好处:1:我们这边是否关机不影响日本那边的程序运行。(不会像以前那样,我们这网络一断开,或一关机,程序就断掉或找不到数据,跑了几天的程序只能重头再来,很是烦恼)2:不影响计算效率2:让程序在后台跑后,不会占据终端,我们可...
转载
977阅读
0评论
0点赞
发布博客于 2 年前

数据结构_如何实现搜索引擎的搜索关键词提示功能 ?

一、场景搜索引擎的搜索关键词提示功能,我先你应该不陌生吧 ?为了方便舒服,当你在搜索框,输入文字的某一部分的时候,搜索引擎会自动弹出下拉框,里面有各种关键词提示。 你可以从下拉框中选中你要搜索的东西。二、Trie 树定义现在主流的搜索引擎,他们的关键词提示功能非常全面和精确,肯定做了很多优化,但最基本的原理是用了数据结构:Trie 树。Trie 树 ,也叫“字典树”。顾名思义,它是一个树...
转载
1251阅读
0评论
0点赞
发布博客于 2 年前

为什么会有hash冲突?

我们知道,哈希算法产生的哈希值的长度是固定且有限的。比如前面举的 MD5 的例子,哈希值是固定的 128 位二进制串,能表示的数据是有限的,最多能表示 2^128 个数据,而我们要哈希的数据是无穷的。一般情况下,哈希值越长的哈希算法,散列冲突的概率越低。...
原创
2400阅读
0评论
3点赞
发布博客于 2 年前

数据结构_递归

一、什么是递归?1.递归是一种非常高效、简洁的编码技巧,一种应用非常广泛的算法,比如DFS深度优先搜索、前中后序二叉树遍历等都是使用递归。2.方法或函数调用自身的方式称为递归调用,调用称为递,返回称为归。3.基本上,所有的递归问题都可以用递推公式来表示,比如f(n) = f(n-1) + 1;f(n) = f(n-1) + f(n-2);f(n)=n*f(n-1);二、为什么使用递归...
转载
144阅读
0评论
1点赞
发布博客于 2 年前

数据结构_栈与队列

一、栈1.1、什么是栈?1).后进者先出,先进者后出,这就是典型的“栈”结构。2).从栈的操作特性来看,是一种“操作受限”的线性表,只允许在端插入和删除数据。1.2、为什么需要栈?1).栈是一种操作受限的数据结构,其操作特性用数组和链表均可实现。2).但,任何数据结构都是对特定应用场景的抽象,数组和链表虽然使用起来更加灵活,但却暴露了几乎所有的操作,难免会引发错误操作的风险。3).所...
原创
80阅读
0评论
0点赞
发布博客于 2 年前