自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

〆、风神的博客

我们总是梦想着伟大,却过着平凡。

  • 博客(145)
  • 收藏
  • 关注

原创 Redis分布式锁

目录为什么要使用分布式锁满足分布式锁的必要条件实现分布式锁的几种方式Redis实现分布式锁的命令分布式锁考虑的问题互斥性。在任何时刻,保证只有一个客户端持有锁不能出现死锁。如果在一个客户端持有锁的期间,这个客户端崩溃了,也要保证后续的其他客户端可以上锁。保证上锁和解锁都是同一个客户端。java代码实现Redis分布式锁先把需要的jar包引入加锁设置参数的实体类Redis分布式具体代码实现Redis分布式锁使用为什么要使用分布式锁如果在一个分布式系统中,我们从数据库中读取一个数据,然后修改保存,这种情况很

2022-03-15 15:48:50 1003

原创 Lombok之EqualsAndHashCode注解

1)测试准备(父类People,子类User)@Data//不能在此加@EqualsAndHashCode(callSuper = true),会出现报错//Generating equals/hashCode with a supercall to java.lang.Object is pointless.//翻译:生成对该对象的equals和hashcode方法是毫无意义的,最后分析完原理在回答这个错误的原因public class People { private Integer

2022-03-15 11:52:24 2421

原创 RSA加解密、签名及验签的原理及工具类

package com.ahysf.common.utils;import cn.hutool.core.codec.Base64;import com.ahysf.controller.saas.SaaSDemo;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;import javax.crypto.Cipher;import java.nio.charset.StandardCharsets;import java

2022-03-15 11:37:33 2364

原创 AESUtil

package com.ahysf.common.utils;import com.alibaba.fastjson.JSONObject;import org.apache.commons.codec.binary.Base64;import org.apache.commons.lang3.StringUtils;import org.bouncycastle.jce.provider.BouncyCastleProvider;import javax.crypto.Cipher;imp

2022-03-15 11:30:33 412

原创 Linux 中安装 JDK(rpm包安装)

1、进入链接下载 rpm 安装包https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html2、下载完成后,上传到 Linux3、开始安装命令sudo rpm -ivh jdk-8u211-linux-x64.rpm4、查询 jdk 安装路径查询命令find / -name java进入到安装路径下cd /usr/java/jdk1.8.0_211-amd64/查看当前路径,并将该路径进行

2022-02-19 01:15:49 2666

原创 MyBatis-Plus 解除分页限制

前言如果你的MyBatis-Plus的分页受到限制,例如每次最多一页只能查询500条,不用担心,马上解除限制吧。解决方案在MybatisPlusConfig中配置paginationInterceptor.setLimit(-1); 代表分页不受任何限制,当然如果对系统性能有限制,建议选择一个合理值,例如1w等。package org.springblade.config;import com.baomidou.mybatisplus.extension.plugins.PaginationIn

2022-02-11 14:24:24 2049

原创 Linux - yum安装步骤

yum安装步骤yum是Linux系统的安装必备神器,简直不要太方便。但是新系统一般是不自带yum工具的,所以需要手动安装一下。环境:centos71.新建一个目录用来保存yum安装包mkdir yum2.进入文件夹并输入命令wget http://yum.baseurl.org/download/3.2/yum-3.2.28.tar.gz3.解压tar -xvf yum-3.2.28.tar.gz5.进入yum目录cd yum-3.2.286.脚本安装./yummain.py

2022-02-10 22:09:52 23629 5

原创 手把手教你搭建SpringCloud项目(十八)集成Sleuth分布式链路跟踪

今天这篇文章介绍一下链路追踪相关的知识,以Spring Cloud Sleuth和zipkin这两个组件为主。为什么需要链路追踪?大型分布式微服务系统中,一个系统被拆分成N多个模块,这些模块负责不同的功能,组合成一套系统,最终可以提供丰富的功能。在这种分布式架构中,一次请求往往需要涉及到多个服务,如下图:服务之间的调用错综复杂,对于维护的成本成倍增加,势必存在以下几个问题:服务之间的依赖与被依赖的关系如何能够清晰的看到?出现异常时如何能够快速定位到异常服务?出现性能瓶颈时如何能够迅速定位哪个

2021-12-28 19:00:42 3218 2

原创 手把手教你搭建SpringCloud项目(十七)集成Stream消息驱动

一、概述1. 是什么?在实际应用中有很多消息中间件,比如现在企业里常用的有ActiveMQ、RabbitMQ、RocketMQ、Kafka等,学习所有这些消息中间件无疑需要大量时间经历成本,那有没有一种技术,使我们不再需要关注具体的消息中间件的细节,而只需要用一种适配绑定的方式,自动的在各种消息中间件内切换呢?消息驱动就是这样的技术,它能屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型。Spring Cloud Stream 是一个构建消息微服务驱动的框架。可以屏蔽底层消息中间件的差异,降低

2021-12-28 16:36:00 786

原创 手把手教你搭建SpringCloud项目(十六)集成Bus消息总线

为什么要用SpringCloud Bus?用SpringCloud Config时,我们可以实现配置信息手动的动态刷新,也就是远端配置信息发生改变后,需要告诉服务端配置信息发生变化后,服务端才会更新配置信息,而现在我们想要实现分布式自动刷新配置信息功能,这就需要我们使用SpringCloud Bus消息总线配合SpringCloud Config实现配置信息的动态刷新。SpringCloud Bus 原理简介Spring Cloud Bus 使用轻量级的消息代理来连接微服务架构中的各个服务,可以将其用

2021-12-27 18:52:38 1021

原创 超详细的RabbitMQ入门,看这篇就够了

思维导图一、什么是消息队列消息指的是两个应用间传递的数据。数据的类型有很多种形式,可能只包含文本字符串,也可能包含嵌入对象。“消息队列(Message Queue)”是在消息的传输过程中保存消息的容器。在消息队列中,通常有生产者和消费者两个角色。生产者只负责发送数据到消息队列,谁从消息队列中取出数据处理,他不管。消费者只负责从消息队列中取出数据处理,他不管这是谁发送的数据。二、为什么使用消息队列解耦。如图所示。假设有系统B、C、D都需要系统A的数据,于是系统A调用三个方法发送数据到B、C、D

2021-12-27 17:17:20 1236

原创 手把手教你搭建SpringCloud项目(十五)集成Config分布式配置中心

为什么会有Spring Cloud Config分布式配置中心?为什么要有用分布式配置中心这玩意儿?现在这微服务大军已经覆盖了各种大小型企业,每个服务的粒度相对较小,因此系统中会出现大量的服务,每个服务都要有自己都一些配置信息,或者相同的配置信息,可能不同环境每个服务也有单独的一套配置,这种情况配置文件数量比较庞大,维护起来相当费劲,举个栗子:在开发的过程中,一般数据库是开发环境数据库,所有服务DB的IP配置为:92.168.0.1,突然老大说,开发环境换了,DB的IP要修改,这下可不好受了,所有模块挨

2021-12-26 19:58:24 1209 1

原创 手把手教你搭建SpringCloud项目(十四)集成Gateway新一代服务网关

Gateway简介什么是API 网关?是作为一个 API 架构,用来保护、增强和控制对于 API 服务的访问。API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来管理授权、访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的调用者透明。因此,隐藏在 API 网关后面的业务系统就可以专注于创建和管理服务,而不用去处理这些策略性的基础设施。API 网关都有哪些职能?API 网关的分类与功能?Gateway是什么Spring

2021-12-26 17:35:54 1651 1

原创 手把手教你搭建SpringCloud项目(十三)集成Hystrix之图形化Dashboard实时监控

在这篇手把手教你搭建SpringCloud项目(十二)集成Hystrix之服务熔断文章中,介绍了Hystrix的三大作用,其中服务降级和服务降级上两篇文章都学习完了,这篇文章就该轮到实时的监控,Hystrix除了隔离依赖服务的调用以外,还提供了准时的调用监控(Hystrix Dashboard)Hystrix会持续地记录所有通过Hystrix发起的请求的执行信息,并以统计报表和图形的形式展示给用户包括每秒执行多少请求多少成功,多少失败等。Netflix通过hystrix-metrics-event-stre

2021-12-24 17:08:08 841

原创 手把手教你搭建SpringCloud项目(十二)集成Hystrix之服务熔断

什么是断路器?“断路器”本身是一种开关装置,当某个服务单元发生故障监控(类似熔断保险丝),向调用方法返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方法无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延。乃至雪崩。什么是熔断机制?熔断机制是应对雪崩效应的一种微服务链路保护机制,当扇出链路的某一个微服务出错不可用或者响应时间太长,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息,当检测到该

2021-12-24 16:04:10 379

原创 手把手教你搭建SpringCloud项目(十一)集成Hystrix之服务降级

微服务架构的雪崩效应什么是微服务中的雪崩效应?首先介绍两个概念:扇入和扇出。对于微服务中某个服务来说,调用它的服务请求称为扇入,它调用其它服务的请求称为扇出。微服务中,⼀个请求可能需要多个微服务接口才能实现,会形成复杂的调用链路。这就带来⼀个问题,假设微服务A调⽤微服务B和微服务C,微服务B和微服务C⼜调⽤其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调⽤响应时间过⻓或者不可⽤,对微服务A的调⽤就会占⽤越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”。雪崩效应的解决方案

2021-12-24 13:06:32 473

原创 手把手教你搭建SpringCloud项目(十)集成OpenFeign服务接口调用

OpenFeign简介什么是Feign?Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解,同时也支持JAX-RS标准的注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用支持负载均衡。Feign是能干什么?Feign旨

2021-12-22 15:42:37 1550

原创 MyBatis中#{}和${}的区别

MyBatis中#{}和${}的区别#{} 和 ${} 的区别#{} 和 ${} 的实例:假设传入参数为 1#{} 和 ${} 的大括号中的值单个参数的情形#{}${}多个参数的情形#{}错误的使用的多个参数的情况${}#{} 和 ${} 在使用中的技巧和建议${}的使用场景举例在MyBatis 的映射配置文件中,动态传递参数有两种方式:#{} 占位符#{} 占位符#{} 和 ${} 的区别区别 1#{} 为参数占位符 ?,即sql 预编译${} 为字符串替换,即 sql 拼接区别

2021-12-20 14:44:59 131

原创 -bash: ifconfig: command not found

执行命令: ifconfig错误截图:解决方案:1.运行命令 :sudo yum install net-tools

2021-12-20 10:41:36 473

原创 IDEA - 更改主题插件(Material Theme UI)保姆级讲解

一、安装在File>Settings>Plugins中直接搜索插件,找到之后下载即可下载完毕后提示要重启,重启重启之后,会有一些设置,先选择默认进来,进来后都可以进行设置二、设置在这里对Material Theme UI插件进行设置File > Settings > Appearance & Behavior > Material Theme主设置主题主题中有多种主题可供选择,根据自己的喜好来就可以了突出颜色这个颜色会把原ID

2021-12-18 19:59:20 4880

原创 IDEA - 插件大全

安装插件教程在这里直接搜索就行了强烈推荐的插件Presentation Assistant —— 快捷键展示录屏或者共享的时候,效果极佳Codota —— 代码智能提示TranslationPlugin —— 必备的翻译插件直接选中你想要翻译的词,然后右键选择,或者快捷键 Ctrl+Shift+F3Rainbow Brackets —— 让你的括号变成不一样的颜色,防止错乱括号HighlightBracketPair —— 括号开始结尾 高亮显示google-java-for

2021-12-18 19:32:09 366

原创 IDEA - 全局配置手册

IDEA全局配置运行速度优化 - 内存配置IDEA的默认配置为了兼容低配置机器,将启动内存参数设置的很小,这导致了庞大的 idea 编辑器在启动的时候经常卡顿。我们在 idea 的安装目录 bin 文件夹,64位找"idea64.exe.vmoptions",默认找"idea.exe.vmoptions" 文件,该文件是配置 idea 内存环境的文件。当然前提是你的电脑内存是足够,否则配置太大也是白瞎。-Xms:最小启动内存参数-Xmx:最大运行内存参数-XX:ReservedCodeCache

2021-12-18 18:42:53 3674

原创 手把手教你搭建SpringCloud项目(九)集成Ribbon负载均衡器

一、Ribbon简介分布式系统中,各个微服务会部署多个实例,如何将服务消费者均匀分摊到多个服务提供者实例上,就要使用到负载均衡器Ribbon 是负载均衡器 ,是一个基于HTTP和CP的客户端负载均衡工具,它提供了很多负载均衡算法,例如轮询、随即等,在配置服务提供者地址后,可以将服务消费者请求均匀的分发Ribbon的架构图Ribbon的核心组件IRuleIRule的七大负载算法IRule接口有7个实现类,每个实现类代表一个负载均衡算法,默认使用轮询什么是Load Balancer?Loa

2021-12-17 13:42:30 1102

原创 手把手教你搭建SpringCloud项目(八)集成Consul服务注册中心

一、了解Consul这篇文章学习另外一个服务注册中心Consul,那什么是Consul?Consul是一个服务网格(微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控)解决方案,它是一个一个分布式的,高度可用的系统,而且开发使用都很简便。它提供了一个功能齐全的控制平面,主要特点是:服务发现、健康检查、键值存储、安全服务通信、多数据中心。与其它分布式服务注册与发现的方案相比,Consul 的方案更“一站式”——内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value 存

2021-12-16 19:35:01 1189 1

原创 至高心法 - SpringCloud Alibaba (四)Sentinel 监控与流控(限流)

微服务集成SentinelMaven父工程:https://blog.csdn.net/qq_42322632/article/details/1217122231.新建module: springcloudalibaba-sentinel-service84012.pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xm

2021-12-16 13:12:04 242

原创 至高心法 - SpringCloud Alibaba (三)初识 Sentinel 以及安装

Sentinel简介Sentinel官网:https://github.com/alibaba/SentinelSentinel (分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案。它以流量为切入点, 从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。Sentinel 具有以下特征:丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景, 例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下

2021-12-16 11:16:49 306

原创 VMware+CentOS7+连接Xshell+克隆 图文并茂,傻瓜式教程

VMware手把手教你VMware虚拟机的下载与安装CentOS71.阿里镜像下载centos7http://mirrors.aliyun.com/centos/7/isos/x86_64/DVD ISO:普通光盘完整安装版镜像,可离线安装到计算机硬盘上,包含大量的常用软件,一般选择这种镜像类型即可。Everything ISO:包含了完整安装版的内容,并对其进行补充,集成了所 有软件。Minimal ISO:这个版本为精简版的镜像,可以安装一个基本的CentOS系 统,包含了可启动系统基本

2021-12-10 00:58:58 1406 1

原创 手把手教你VMware虚拟机的下载与安装

VMware 下载进入官网的 VMware Workstation Pro 页面,下滑页面点击 试用 Workstation 16 Pro 下方的下载链接,跳转至下载页面。在下载页面中下滑,根据操作系统选择合适的产品,在这里以 Windows10 系统为例,选择Workstation 16 Pro for Windows,开始下载安装文件。VMware 安装打开下载好的 .exe 文件, 即可开始安装。安装位置默认在 C 盘下,在这里我选择安装在 D 盘,安装路径尽量不要有中文。可勾选 增

2021-12-09 21:10:50 909

原创 至高心法 - SpringCloud Alibaba (二)Nacos 服务注册与配置中心

Nacos 作为服务注册中心官方文档:https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html基于Nacos的服务生产者1.新建module springcloudalibaba-provider-payment9001

2021-12-07 22:27:43 490

原创 至高心法 - SpringCloud Alibaba (一)初识 Nacos 以及安装

Nacos简介Nacos官网:https://nacos.io/zh-cn/docs/what-is-nacos.html前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service。是什么一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos:Dynamic Naming and Configuration ServiceNacos就是 注册中心 + 配置中心的组合Nacos = Eureka + Config + Bus能干嘛替代

2021-12-07 17:40:12 288

原创 初次邂逅SpringCloud Alibaba

Spring Cloud AlibabaSpring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。主要功能服务限流降级:默认支持 WebServlet、WebFlux

2021-12-06 15:34:42 157

原创 SpringCloud简介与5大常用组件

springcloudspringcloud是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于springboot构建,对我们熟悉spring的程序员来说,上手比较容易。通过一些简单的注解,我们就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。SpringCloud的组件相当繁杂,拥有诸多子项目。重点关注Netflixspringcloud的版本说明springcloud项目是由多个独立项目集合而成的,每个项目都是独立的,各自进行自己的迭代和版本发布。所以springcloud

2021-12-05 19:45:56 543

原创 手把手教你搭建SpringCloud项目(六)actuator微服务信息完善与Eureka自我保护机制

主机名称:服务名称修改问题服务注册含有主机名称,要想按照规范的要求,只暴露服务名,不要出现主机名。解决方法1.找到application.yml,添加配置8001服务: instance: instance-id: payment80018002服务: instance: instance-id: payment80022.测试访问信息有IP信息显示问题鼠标放在①上,在左下角②中没有IP显示。后续的话,这些微服务可能部署到几号机器上的,服务端口是多少

2021-12-05 17:56:03 850 1

原创 手把手教你搭建SpringCloud项目(七)Eureka实现服务发现(Discovery)

服务发现简介各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件上(eureka,zookeeper,Consul),服务发现组件会存储这些信息。服务消费者会从服务发现组件查询服务提供者的网络地址,然后根据该地址调用服务提供者的接口。各个微服务与服务发现组件使用一定的机制来维持心跳,服务发现组件若发现有服务没有提供心跳,那么服务发现组件会将该服务剔除。微服务网络地址发生变更(例如实例增减或者IP端口发生变化等),会重新注册到服务发现组件上,使用这种方式,可以避免因网络变化导致服务之间的通讯停止,服

2021-12-05 16:40:09 903

原创 手把手教你搭建SpringCloud项目(五)生产者集群版搭建

这篇文章主要是演示生产者集群的搭建与负载均衡,也就是我们支付的服务,我们参照之前搭建的端口为8001的服务springcloud-provider-payment8001,现在我们搭建服务springcloud-provider-payment8002,端口为8002。生产者支付服务8001集群环境搭建1.建立module: springcloud-provider-payment80022.pom.xml 同8001的 pom.xml 一样3.写application.yml,注意改端口4.

2021-12-05 16:10:38 1148

原创 手把手教你搭建SpringCloud项目(四)EurekaServer集群版搭建

上一篇我们只是简单的搭建了Eureka的单机版,但是在真正的生产环境上,是远远不够的,微服务RPC远程服务调用最核心的就是高可用,如果一台Eureka宕机了,那我们整个服务就不能使用了,所以就需要我们的集群版,实现负载均衡与故障容错。搭建EurekaServer集群环境1.建立module: springcloud-eureka-server70022.pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="ht

2021-12-05 15:06:56 493

原创 手把手教你搭建SpringCloud项目(三)集成Eureka服务注册中心

我们首先了解 Eureka:官方介绍了解Eureka1、什么是服务治理?Springcloud 封装了Netfix公司开发的Eureka模块来实现服务治理。在传统的RPC远程调用中,管理每个服务于服务之间依赖关系复杂,管理复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。2、什么是服务注册与发现?Eureka采用了CS的设计架构,Eureka Server服务端作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用Eur

2021-12-04 19:10:25 932

原创 什么是微服务?有手就行

一、微服务架构的演变微服务是一种服务间松耦合的、每个服务之间高度自治并且使用轻量级协议进行通信的可持续集成部署的分布式架构体系。这一句包含了微服务的特点,微服务架构和其他架构有什么区别?以下对比一些常见的架构。1、单体结构单体架构是最简单的软件架构,常用于传统的应用软件开发以及传统 Web 应用。传统 Web 应用,也就是大家早期所学习的ssm或者ssh项目,采用分层架构模式,数据库访问层、业务逻辑层、控制层、从前端到后端的代码都放到同一个项目一般是将所有功能模块都打包(jar、war)在一个 Web

2021-12-04 16:38:54 478

原创 手把手教你搭建SpringCloud项目(二)生产者与消费者

项目版本技术版本cloudHoxton.SR1boot2.2.2.RELEASEcloud alibaba2.1.0.RELEASEjavajava8Maven3.5及以上Mysql5.7及以上搭建生产者微服务模块步骤:建module改pom写yml主启动业务类1.建立支付module: cloud-provider-payment8001项目结构:2.pom.xml如下:<?xml version="1.

2021-12-04 13:52:35 1504 1

原创 手把手教你搭建SpringCloud项目(一)搭建Maven父工程,傻瓜式操作

项目版本技术版本cloudHoxton.SR1boot2.2.2.RELEASEcloud alibaba2.1.0.RELEASEjavajava8Maven3.5及以上Mysql5.7及以上1.新建Maven父工程maven架构选择org.apache.maven.archetypes:maven-archetype-sitepom.xml代码如下<?xml version="1.0" encoding="UTF-8"?

2021-12-04 12:19:00 2900

空空如也

空空如也

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

TA关注的人

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