自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

苍云烟

一段通往未来的历史篇章

  • 博客(92)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 SpringBoot系统集成教程

Lison。

2019-10-31 10:45:25 400 1

原创 Spring Cloud Alibaba-05-Gateway网关-03-过滤器(Filter)使用

过滤器就是在请求的传递中对请求和响应做一些手脚。声明周期 Pre(处理前),Post(处理后)需求配置Log,第一个参数控制台是否打印,第二个参数缓存日志是否打印先在配置文件中进行配置spring:cloud:gateway:routes:filters: # 过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改- StripPrefix=1 # 转发之前去掉1层路径- Log=true,false #开启缓存日志和控制台日志,第一个参数控制台日志,第二个参数缓存日志。

2024-02-23 12:00:05 1129

原创 Spring Cloud Alibaba-05-Gateway网关-02-断言(Predicate)使用

我们可以查看内置的断言如何实现?举例:BetweenRoutePredicateFactory//断言工厂的类的命名规则为XXXXRoutePredicateFactory 需要 继承AbstractRoutePredicateFactory//与配置文件映射//判断逻辑方法//核心判断逻辑//参数配置类@Validated知道内置路由断言的实现细节,我们只需要按照它的实现方式,来按部就班的实现自己的路由断言即可。

2024-02-23 11:58:01 670

原创 Spring Cloud Alibaba-05-Gateway网关-01-简介、快速开始、Naocs读取配置

Spring Cloud Alibaba-05-Gateway网关-01-简介、快速开始、Naocs读取配置网关简介Gateway简介什么是spring cloud gateway为什么要使用网关Gateway核心架构Gateway快速开始创建一个 spring-cloud-gateway的模块,导入相关依赖创建主类添加配置文件启动项目, 并通过网关去访问微服务Gateway访问进阶,Nacos 读取配置加入Ncaos依赖主类上添加注解修改配置文件测试。

2024-02-23 11:55:03 980

原创 Spring Cloud Alibaba-04-Sentinel规则持久化Nacos方式-推荐

, , 官网文档地址:https://sentinelguard.io/zh-cn/docs/quick-start.html思路从动态规则扩展章节得知,可以通过NacosDataSource作为配置数据源从Sentinel-Dashboard代码中可以得知,dashboard通过http请求推送配置变更所以,只需要在dashboard推送变更后,将配置保存到nacos中且搭配NacosDataSource扩展即可实现配置持久化从dashboard各个规则的Controller中可以发现,每个Con

2024-02-21 15:56:22 1127

原创 Spring Cloud Alibaba-04-Sentinel服务容错

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

2024-02-20 15:59:33 960

原创 Spring Cloud Alibaba-03-Nacos之配置中心、命名空间分组和DataID的关系

配置文件相对分散。在一个微服务架构下,配置文件会随着微服务的增多变的越来越多,而且分散 在各个微服务中,不好统一配置和管理。配置文件无法区分环境。微服务项目可能会有多个环境,例如:测试环境、预发布环境、生产环 境。每一个环境所使用的配置理论上都是不同的,一旦需要修改,就需要我们去各个微服务下手动 维护,这比较困难。配置文件无法实时更新。我们修改了配置文件之后,必须重新启动微服务才能使配置生效,这对一 个正在运行的项目来说是非常不友好的。基于上面这些问题,我们就需要配置中心的加入来解决这些问题。

2024-02-20 15:46:52 686

原创 Spring Cloud Alibaba-02-Nacos Discovery服务治理及负载均衡

先来思考一个问题通过上一章的操作,我们已经可以实现微服务之间的调用。但是我们把服务提供者的网络地址 (ip,端口)等硬编码到了代码中,这种做法存在许多问题:一旦服务提供者地址变化,就需要手工修改代码一旦是多个服务提供者,无法实现负载均衡功能一旦服务变得越来越多,人工维护调用关系困难那么应该怎么解决呢, 这时候就需要通过注册中心动态的实现服务治理。服务治理是微服务架构中最核心最基本的模块。用于实现各个微服务的自动化注册与发现。

2024-02-20 15:43:00 1206

原创 Spring Cloud Alibaba-01-微服务介绍

Spring Cloud Alibaba-01-微服务介绍微服务简介**架构的演变**微服务架构与SOA架构的不同微服务架构的常见问题微服务架构的常见概念服务治理服务调用服务网关服务容错链路追踪微服务架构的常见解决方案Spring Cloud Alibaba 主要功能与组件**主要功能**组件架构的演变把所有功能都集中在一个应用中,统一部署,开发成本、部署成本和维护成本低,我们会把它们做成一个web项目,然后部署到一台tomcat服务器上。

2024-02-20 15:36:24 1161

原创 JAVA-编程基础-12-01-创建多线程的3种方式

理解进程和线程的一些关系,一个进程可以有多个线程就叫多线程1、线程在进程下进行2、进程之间不会相互影响,主线程结束将会导致整个进程结束3、不同的进程数据很难共享4、同进程下的不同线程之间数据很容易共享5、进程使用内存地址可以限定使用量多线程创建的方式:代码实现方式:测试方法验证下:实现代码:测试方法验证下:常用方法1、为什么要重新方法?因为方法是用来封装被线程执行的代码。2、方法和方法有什么区别?3、通过继承 Thread 的方法和实现 Runnable 接口的方式创建多线程,哪个好?实现Run

2023-10-24 11:34:35 364

原创 JAVA-编程基础-11-04-java IO 字符流

, , 字符流 Reader 和 Writer 的故事要从它们的类关系图开始,来看图。字符流是一种用于读取和写入字符数据的输入输出流。与字节流不同,字符流以字符为单位读取和写入数据,而不是以字节为单位。常用来处理文本信息。如果用字节流直接读取中文,可能会遇到乱码问题,见下例:运行结果:之所以出现乱码是因为在字节流中,一个字符通常由多个字节组成,而不同的字符编码使用的字节数不同。如果我们使用了错误的字符编码,或者在读取和写入数据时没有正确处理字符编码的转换,就会导致读取出来的中文字符出现乱码。例如,当我

2023-10-24 11:04:43 147

原创 JAVA-编程基础-11-03-java IO 字节流

, , 是字节输出流的超类(父类),我们来看一下它定义的一些共性方法:1、 :关闭此输出流并释放与此流相关联的系统资源。2、 :刷新此输出流并强制缓冲区的字节被写入到目的地。3、 :将 b.length 个字节从指定的字节数组写入此输出流。4、 :从指定的字节数组写入 len 字节到此输出流,从偏移量 off开始。 也就是说从off个字节数开始一直到len个字节结束 有很多子类,我们从最简单的一个子类 FileOutputStream 开始。看名字就知道是文件输出流,用于将数据写入到文件以上代码

2023-10-24 11:01:41 181

原创 JAVA-编程基础-11-02-文件流

, , 类是专门对文件进行操作的类,注意只能对文件本身进行操作,不能对文件内容进行操作,想要操作内容,必须借助输入输出流。 类是文件和目录的抽象表示,主要用于文件和目录的创建、查找和删除等操作。注意:File 跟流无关,File 类不能对文件进行读和写,也就是输入和输出!File 可以表示与,前者是文件夹(Directory,或者叫目录)后者是文件(file),File 类就是用来操作它俩的。在 Java 中,一切皆是对象,File 类也不例外,不论是哪个对象都应该从该对象的构造说起,所以我们来分析分析

2023-10-24 11:00:21 95

原创 JAVA-编程基础-11-01-Java IO

, , 按照传输方式对 IO 进行了一个简单的分类IO, 既 in 和 out ,也就是输入和输出,指应用程序和内外部设备之间的数据传递,常见的外部设备包括文件、管道、网络链接。Java中是通过流处理IO的。什么是流?流(Stream),是一个抽象的概念,是 指一连串的数据(字符或字节),是以先进先出的方式发送信息的通道。当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件、内存、或是网络链接。当程序需要写入数据的时候,就会开启一个通向目的地的流,这时候你就可以想象数据好像在这其中“

2023-10-24 10:58:43 51

原创 JAVA-编程基础-10-集合

, , Java 集合框架可以分为两条大的支线:”List 的特点是存取有序,可以存放重复的元素,可以用下标对元素进行操作。简单介绍一下 ArrayList 的特征可以通过上面的语句来创建一个字符串类型的 ArrayList(通过尖括号来限定 ArrayList 中元素的类型,如果尝试添加其他类型的元素,将会产生编译错误),更简化的写法如下:由于 ArrayList 实现了 List 接口,所以 alist 变量的类型可以是 List 类型;new 关键字声明后的尖括号中可以不再指定元素的类型,因为

2023-08-24 17:45:55 695

原创 JAVA-编程基础-09-常用工具类

, , 数组专用工具类指的是 类,基本上常见的数组操作,这个类都提供了静态方法可供直接调用数组操作可分为以下 9 种。”使用 Arrays 类创建数组可以通过以下三个方法:revised 和 expanded 是复制后的新数组,长度分别是 3 和 6,指定的数组长度是 5。来看一下输出结果:revised 截取了最后一位,因为长度是 3 嘛;expanded 用 null 填充了一位,因为长度是 6 方法需要三个参数,第一个是指定的数组,第二个是起始位置(包含),第三个是截止位置(不包含)。输出

2023-08-24 17:44:47 129

原创 JAVA-编程基础-09-常用类

超类,基类、跟类,所有类的直接或间接父类,位于继承树的最顶层。任何类,如果没有书写extends显示继承某个类,都默认直接继承Object,否则为间接继承。在对象实例化的时候,最终找到的父类就是Object。Object类提供无参构造方法 ,之所以提供这样的无参构造,是因为在子类对象实例化时都会默认调用父类中的无参构造方法,这样在定义类时即使没有明确定义父类为Object,读者也不会感觉代码的强制性要求。Object类中所定义的方法,是所有对象都具备的方法。

2023-08-24 17:25:08 141

原创 (五)RabbitMQ-进阶 死信队列、延迟队列、防丢失机制

什么是延时队列?延时队列即就是放置在该队列里面的消息是不需要立即消费的,而是等待一段时间之后取出消费但RabbitMQ中并未提供延迟队列功能,我们可以使用死信队列实现延迟队列的效果延迟交换机主要帮我们解决什么问题(1)当我们的业务比较复杂的时候, 需要针对不同的业务消息类型设置不同的过期时间策略, name必然我们也需要为不同的队列消息的过期时间创建很多的Queue的Bean对象, 当业务复杂到一定程度时, 这种方式维护成本过高;

2023-07-25 09:36:39 2000

原创 (四)RabbitMQ高级特性(消费端限流、利用限流实现不公平分发、消息存活时间、优先级队列

, , 之前我们讲过MQ可以对请求进行“削峰填谷”,即通过消费端限流的方式限制消息的拉取速度,达到保护消费端的目的。1、生产者批量发送消息2、消费端配置限流机制3、消费者监听队列利用限流实现不公平分发在RabbitMQ中,多个消费者监听同一条队列,则队列默认采用的轮询分发。但是在某种场景下这种策略并不是很好,例如消费者1处 理任务的速度非常快,而其他消费者处理速度却很慢。此时如果采用公平分发,则消费者1有很大一部分时间处于空闲状态。此时可以 采用不公平分发,即谁处理的快,谁处理的消息多1、生产者批

2023-07-25 09:33:36 1820

原创 (三)RabbitMQ七种模式介绍与代码演示

七种模式介绍与代码演示四大交换机四种交换机介绍工作模式简单模式(Hello World)工作队列模式(Work queues)订阅模式(Publish/Subscribe)路由模式(Routing)主题模式(Topics)远程过程调用(RPC)发布者确认(Publisher Confirms)代码演示简单模式工作队列模式发布订阅模式路由模式主题模式SpringBoot整合RabbitMQ引入依赖基础配置生产者消费者。

2023-07-25 09:31:52 1807

原创 (二)RabbitMQ【安装Erlang、安装RabbitMQ 、账户管理、管控台、Docker安装 】

, , RabbitMQ是使用Erlang语言编写的,所以在安装RabbitMQ前需要先安装Erlang环境1、安装Erlang所需的依赖2、添加存储库条目3、安装Erlang4、查看Erlang是否安装成功安装RabbitMQ1、为了外部能够正常访问RabbitMQ服务,先关闭防火墙2、RabbitMQ是通过主机名进行访问的,必须给服务器添加主机名3、使用rz命令上传RabbitMQ压缩文件4、安装RabbitMQ5、配置环境变量6、开启管控台插件7、后台运行8、通过管控台访问R

2023-07-25 09:28:15 829

原创 (一)RabbitMQ概念-优势、劣势、应用场景 、AMQP、工作原理

, , RabbitMQ,俗称“兔子MQ”(可见其轻巧,敏捷),是目前非常热门的一款开源消息中间件,不管是互联网行业还是传统行业都广泛使用(最早是为了解决电信行业系统之间的可靠通信而设计)。RabbitMQ具有很强大的插件扩展能力,官方和社区提供了非常丰富的插件可供选择:Community Plugins — RabbitMQ消息队列MQ全称Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于系统之间的异步通信消息两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字

2023-07-25 09:25:24 2243

原创 JAVA-编程基础-08-try-catch性能探究

, , 在 for 循环里面搞了个 ,不知道有性能损耗?需要怎么改呢?有些人回答: 提到外面啊。这种回答是错误的:且不说性能这代码的目的明显是让循环内部单次调用出错不影响循环的运行,移到外面,业务逻辑不就变了。catch 整个 for 循环和在循环内部 catch,在不出错的情况下,其实性能差不多测试代码:请允许我补充一些概念,以便大家能更好的理解这段代码。 从 for 循环里面提出来跟在for循环里面做个对比跑一下可以看到,两者的性能(数字越大越好)其实差不多:[外链图片转存失败,源站可能有防盗链

2023-06-30 11:51:18 263

原创 JAVA-编程基础-08-Java异常处理全面解析

那到底什么是异常呢?“异常是指中断程序正常执行的一个不确定的事件。当异常发生时,程序的正常执行流程就会被打断。一般情况下,程序都会有很多条语句,如果没有异常处理机制,前面的语句一旦出现了异常,后面的语句就没办法继续执行了。“有了异常处理机制后,程序在发生异常的时候就不会中断,我们可以对异常进行捕获,然后改变程序执行的流程。“除此之外,异常处理机制可以保证我们向用户提供友好的提示信息,而不是程序原生的异常信息——用户根本理解不了。

2023-06-30 11:50:27 144

原创 JAVA-编程基础-07-面向对象思想

, , 利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外的接口使其与外部发生联系。用户无需关心对象内部的细节,但可以通过对象对外提供的接口来访问该对象。优点:以下 Person 类封装 name、gender、age 等属性,外界只能通过 get() 方法获取一个 Person 对象的 name 属性和 gender 属性,而无法获取 age 属性,但是 age 属性可以供 work() 方法使用。注意

2023-06-30 11:47:16 133

原创 JAVA-编程基础-06-数组

​ 数组是一种线性数据结构,是一个使用连续的内存空间存放相同的数据类型的集合容器,与其他容器相比,数组的区别主要在于性能与保存基本类型的能力。​ 在Java中,数组是一种效率最高的存储和随机访问对象的方式,通过寻址公式,随机访问的时间复杂可以达到O(1),但是为了保持空间的连续性,在数组中插入、删除数据时,都需要移动后面数据,该操作的时间复杂度为O(n)。另外,由于空间上连续,所以数组对CPU缓存比较友好,借助CPU的缓存机制,预读数组中的数据,提高访问效率。

2023-06-30 11:46:28 97

原创 JAVA-编程基础-05-方法的定义、调用、重载

JAVA-编程基础-05-方法的定义、调用、重载方法的概念什么是方法方法的定义和调用无参数方法定义和调用方法调用过程图解带参数方法的定义和调用带返回值方法的定义和调用方法的注意事项方法重载方法重载方法的参数传递方法参数传递基本类型方法参数传递引用类型Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段。方法包含一个方法头和一个方法体修饰符 返回值类型 方法名(参数类型 参数名) {. . . 方法体 . . . return 返回值;下面是一个方法的所有部分。

2023-06-30 11:45:23 156

原创 JAVA-编程基础-04-流程控制

, , 两种输入方法。方法一:java.util.Scanner代码如下:方法二:JOptionPane输入内容确定就字符串值,只要不是确定都是null输出分支语句if else多次判断如下:第一次判断不对就进行下一条判断,当返回值为true时执行,否则执行elseswitch case defaultswitch 多分支开关语句switch(w) 括号中w为判断参数,case 后面的数字是和w匹配的值。当w的值与case后面的值匹配上就执行当前case中的语句break 是退出

2023-06-30 11:44:43 105

原创 JAVA-编程基础-03-运算符

, , 举例说明:+:是运算符,并且是算术运算符。 a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式。注意: /和%的区别:两个数据做除法,/取结果的商,%取结果的余数。 整数操作只能得到整数,要想得到小数,必须有浮点数参与运算。字符的“+”操作char类型参与算术运算,使用的是计算机底层对应的十进制数值。需要我们记住三个字符对应的数值:‘a’ – 97 a-z是连续的,所以’b’对应的数值是98,'c’是99,依次递加‘A’ – 65 A-Z是连续的,所以’B’对应的数值是6

2023-06-30 11:27:44 99

原创 JAVA-编程基础-02-数据类型

Java语言中的数据类型分为两大类,分别是基本类型和引用类型。程序中需要处理许多数据,对于不同数据都有其对应的数据类型,其实就是在内存中开辟一个存储空间来存放数据,不同数据所开辟的内存大小也会不一样。

2023-06-30 11:26:42 115

原创 JAVA-编程基础-01初始Java

Java是一种优秀的程序设计语言,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。

2023-06-30 11:11:44 120

原创 SpringBoot系统搭建集成-016-RabbitMq延时队列

延时队列即就是放置在该队列里面的消息是不需要立即消费的,而是等待一段时间之后取出消费。

2023-06-06 18:44:29 1030

原创 SpringBoot系统搭建集成-015-自动化测试

实现BaseMatcher< T》/**//返回匹配器示例,就是一个单例 return new islisonWorldMatcher();} //匹配的业务逻辑 @Override public boolean matches(Object actual) {} //对输入项的描述,在断言失败的时候就会打印到console中 @Override public void describeTo(Description description) {} }

2023-06-06 18:42:23 1724 1

原创 Google guava工具类的介绍和使用

Lison <[email protected]>, v1.0.0, 2020.12.16Google guava工具类的介绍和使用概述工具类 就是封装平常用的方法,不需要你重复造轮子,节省开发人员时间,提高工作效率。谷歌作为大公司,当然会从日常的工作中提取中很多高效率的方法出来。所以就诞生了guava。guava的优点:高效设计良好的API,被Google的开发者设计,实现和使用遵循高效的java语法实践使代码更刻度,简洁,简单节约时间,资源,提高生产力Guava工程

2021-02-25 09:51:19 831 1

原创 分享几个网站资源

一、几十项技术文档http://goalkicker.com ps: 纯英文的,英语不好的小伙伴要多多学习英语(ps:我也一般般)二、菜鸟教程 适合快速入门三、Leetcode 一些算法题目,支持多种语言。...

2020-10-13 11:14:59 8460

原创 mysql和ES对比

ES数据架构的主要概念与关系数据库Mysql对比这里写图片描述(1)关系型数据库中的数据库(DataBase),等价于ES中的索引(Index)(2)一个数据库下面有N张表(Table),等价于1个索引Index下面有N多类型(Type),(3)一个数据库表(Table)下的数据由多行(ROW)多列(column,属性)组成,等价于1个Type由多个文档(Document)和多Field组成。(4)在一个关系型数据库里面,schema定义了表、每个表的字段,还有表和字段之间的关系。

2020-09-30 09:26:07 14611

原创 JDK11简单安装教程

JDK 11安装文章目录JDK 11安装下载安装检查下载JDK11 官网下载地址根据每个电脑的操作系统不同而选择不同的版本,.exe是安装版本的,.zip是解压版本,根据个人喜好自己选择下载,还有要点击版本上面的同意按钮才能下载。安装等待安装完成1.桌面“此电脑”,右键“属性”,“高级系统设置”;2.“高级”,“环境变量”检查打开“命令提示符”,输入“java”,接着输入“javac”,如果出现一系列图上信息则表示JDK安装和配置成功了。安装完成...

2020-09-05 08:51:01 4252

原创 SpringBoot系统搭建集成-014-如何使用ehcache缓存

Lison <[email protected]>, v1.0.0, 2019.10.05SpringBoot系统搭建集成-014-如何使用ehcache缓存Spring Boot的cache支持多种缓存,参考缓存支持,其中常用的有EhCache和Redis,Redis需要安装redis服务器,而EhCache不依赖任何第三方软件,只需引入jar即可。下面主要介绍ehcache的集成...

2019-11-21 17:42:50 172

原创 SpringBoot系统搭建集成-013-Docker 部署Spring Boot项目

Lison <[email protected]>, v1.0.0, 2019.11.01SpringBoot系统搭建集成-013-Docker 部署Spring Boot项目使用Dockerfile来部署Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。Docker程序将这些Dockerfile指令...

2019-11-21 17:41:17 132

原创 SpringBoot系统搭建集成-012-集成SpringSecurity+JWT

SpringBoot系统搭建集成-012-集成SpringSecurity+JWT引言Spring Boot 项目如何集成 Spring Security 完成权限拦截操作。 为基于前后端分离的后端权限管理部分JWT的应用场景关于JWT是什么,请参考JWT官网。这里就不多解释了,可理解为使用带签名的token来做用户和权限验证,现在流行的公共开放接口用的OAuth 2.0协议基本也是类似的...

2019-10-31 10:38:27 460

Docker IDEA插件

下载不了docker idea插件的小伙伴,可以下载此插件,采用导入的方式安装此插件

2019-11-07

fastdfs插件安装所有软件.rar

Fastdfs 安装时所需要的安装包打包,fastdfs-5.11.tar.gz fastdfs-nginx-module-master.zip libfastcommon-master.zip

2019-06-11

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

TA关注的人

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