自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 SpringBoot参数校验及全局异常处理

参数校验的简单实现创建一个springboot项目,引入校验依赖依赖(版本可以更换)<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> <version>2.3.7.RELEASE</

2021-02-26 12:12:17 747

原创 RabbitMQ的死信队列与延时队列,RabbitMQ的延迟插件

承接上文RabbitMQ的死信队列死信,在官网中对应的单词为“Dead Letter”,可以看出翻译确实非常的简单粗暴。那么死信是个什么东西呢?对RabbitMQ来说,产生死信的来源大致有如下几种:消息被拒绝(basic.reject或basic.nack)并且requeue=false.消息TTL过期队列达到最大长度(队列满了,无法再添加数据到mq中)“死信”消息会被Rabbi...

2020-03-24 15:43:19 2014

原创 RabbitMQ的消息确认机制,消息重试机制

承接上文SpringBoot整合RabbitMQRabbitMQ的消息确认机制RabbitMQ的消息确认有两种。一种是消息发送确认。这种是用来确认生产者将消息发送给交换器,交换器传递给队列的过程中,消息是否成功投递。发送确认分为两步,一是确认是否到达交换器,二是确认是否到达队列。第二种是消费接收确认。这种是确认消费者是否成功消费了队列中的消息。消息发送确认通过实现ConfirmCall...

2020-03-24 14:48:23 5140 2

原创 SpringBoot整合RabbitMQ

不了解RabbitMQ,可以先去看我上一篇 RabbitMQ入门本文创建了三个模块producer 消息生产者模块,consumer消息消费者模块,base 通用模块(base模块中只定义了交换机、队列、路由键的值,方便被另外两个模块调用)创建base模块,base模块中什么都没有,只有一个Constants的工具类<dependencies> <dependenc...

2020-03-24 14:33:07 449

原创 RabbitMQ入门

RabbitMQ简介官方定义:RabbitMQ是一种消息中间件,用于处理来自客户端的异步消息。服务端将要发送的消息放入到队列池中。接收端可以根据RabbitMQ配置的转发机制接收服务端发来的消息。RabbitMQ依据指定的转发规则进行消息的转发、缓冲和持久化操作,主要用在多服务器间或单服务器的子系统间进行通信,是分布式系统标准的配置。RabbitMQ是使用 Erlang语言来编写的,并且Rabb...

2020-03-22 10:44:24 337

原创 springboot+dubbo+nacos入门项目

本文环境:springboot:2.1.12apache dubbo:2.7.1nacos:1.0.0项目代码:https://github.com/ROAOR1/dubbo-nacos.gitdubbo简介节点说明节点角色说明Provider暴露服务的服务提供方Consumer调用远程服务的服务消费方Registry服务注册与发现的注册中心...

2020-02-27 21:36:08 2861 1

原创 jdk8新特性

一、函数式接口函数式接口:有且仅有一个抽象方法的接口,接口中可以包含其他方法(默认,静态)接口中继承的Object类中的方法不算下面就算一个函数式接口,其中发现有两个抽象类,但是equals是继承Object类的中的方法,所以不算。//检测是否是函数式接口@FunctionalInterfacepublic interface MyFunctionInterface { publ...

2020-01-03 10:15:57 162

原创 SpringCloud(七):Hystrix仪表盘与Turbine集群监控【Greenwich 版】

断路器是根据一段时间窗内的请求情况来判断并操作断路器的打开和关闭状态的。而这些请求情况的指标信息都是 HystrixCommand 和 HystrixObservableCommand 实例在执行过程中记录的重要度量信息,它们除了 Hystrix 断路器实现中使用之外,对于系统运维也有非常大的帮助。这些指标信息会以 “滚动时间窗” 与 “桶” 结合的方式进行汇总,并在内存中驻留一段时间,以供内部或...

2019-12-18 15:47:41 284

原创 swagger中paramType请求类型为body

今日在使用swagger进行调试的时候发现参数上加上@NotBlank,@NotNull注解之后,参数映射失败,没有加该注解之前是映射成功的。最后发现swagger中的请求类型变成了body,导致参数映射失败。这里只需要使用@paramType注解,将参数类型设置为query就可以了。或者使用@RequestParam注解最后发现swagger中的请求类型变为了query,可以重新映...

2019-12-18 10:12:12 11976

原创 SpringCloud 汇总【Greenwich 版】

GitHub源码下载地址本文环境Spring Cloud Greenwich.SR4Spring Boot 2.1.11.RELEASESpring Cloud入门教程目录Spring Cloud教程第一篇:EurekaSpring Cloud教程第二篇:RibbonSpring Cloud教程第三篇:Hystrix(请求熔断)Spring Cloud教程第四篇:Hystrix(请...

2019-12-13 17:13:51 2289

原创 SpringCloud(四):Hystrix熔断器介绍【Greenwich 版】

Hystrix的中文含义是 “豪猪”,豪猪周身长满了刺,能保护自己不受天敌的伤害,代表了一种防御机制,这与 Hystrix 本身的功能不谋而合,因此 Netflix 团队将该框架命名为 Hystrix,并使用了对应的卡通形象做作为 logo。分布式系统中经常会出现某个基础服务不可用造成整个系统不可用的情况,这种现象被称为服务雪崩效应。为了应对服务雪崩,一种常见的做法是手动服务降级。而 Hyst...

2019-12-13 16:35:36 367

原创 redis集群搭建

准备环境这里准备好了三台虚拟机(裸机)刚刚联网,准备从头搭建我们从redis官网可以看到redis的安装命令,这里就不在讲述redis的安装了,网上很多使用xshell连接虚拟机,三台同时操作,下面只截一台的图,其实是三台同时操作这里我redis已经装好了redis集群搭建我们都知道,redis是靠配置文件启动的,我们只需要将配置文件备份,以多个配置文件启动,就相当于启动了多台...

2019-12-10 17:02:43 190 1

原创 idea导入spring源码并调试运行

花费几天时间总算搭建好了spring源码环境,并简单调试运行,这里记录一下过程。写在前面:这里用的idea是最新版本,因为之前搭建的时候用的是2018.1的版本,构建项目时总是报错,后来上网查了查,可能是grdle版本或者idea版本问题,这里用的是spring源码里使用的gradle版本,更换idea版本,成功搭建。本文环境IDEA 2019.2.4JDK 1.8.0_131Spri...

2019-12-02 15:41:31 6617 2

原创 springboot整合shiro

springboot整合shiro进行权限管理源码:https://github.com/ROAOR1/shiro数据库设计为了方便,只创建了三张表,用户表,权限表,用户权限表CREATE TABLE `user` ( `id` int(11) NOT NULL, `username` varchar(50) NOT NULL, `password` varchar(255) ...

2019-11-20 11:38:41 206

原创 spring boot整合mybatis plus

简介MyBatis-Plus是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文环境jdk1.8spring boot 2.1.8.RELEASEmybatis-plus 3.2.0mysql 5.1.47MyBatis-Plus的逆向工程一、添加依赖 <dependency> ...

2019-10-01 17:35:42 583

原创 synchronized修饰静态方法和普通方法的区别

synchronized具有同步功能,是一种互斥锁,锁的是对象,synchronized修饰普通方法时,锁对象是this对象。修饰静态方法时,锁对象是字节码文件对象。synchronized可以用来修饰代码块和方法。synchronized可以保证原子性,有序性,可见性。synchronized的缺点:1、synchronized底层是由jvm实现,因此不能手动控制锁的释放,不如lock锁...

2019-03-27 15:16:56 12516 6

原创 String不可改变的类

String使用private final char value[]来实现字符串的存储,也就是说String对象创建之后,就不能 再修改此对象中存储的字符串内容,就是因为如此,才说String类型是不可变的(immutable).String a = “java”, String b = “java”, a 和 b指向一个地址,当修改a = “world"时,不是直接修改a指向的"java...

2019-03-13 21:34:16 276

原创 二叉树的先序,中序,后序遍历

先序遍历:1、访问根节点,2、先序遍历左子树,3、先序遍历右子树中序遍历:1、中序遍历左子树,2、访问根节点,3、中序遍历右子树后序遍历:1、后序遍历左子树,2、后序遍历右子树,3、访问根节点三种遍历方式时间复杂度都是0(n)由二叉树的先序遍历和中序遍历可以唯一的确定一颗二叉树。在先序遍历中,第一个节点就是根节点。在中序遍历中,根节点必然将中序遍历分割成两个子序列,前一个子序列就是根节点左...

2019-03-12 20:48:46 5190

原创 基于spring AOP进行数据源的切换

我们准备了三个数据源,一主两从,并且配置了主从复制。这里我们之说一下多数据源的配置,ssm整合配置就不列出来了。db.propertiesjdbc.url.master=jdbc:mysql://localhost:3307/bikejdbc.url.slave_1=jdbc:mysql://localhost:3308/bikejdbc.url.slave_2=jdbc:mysql:/...

2019-03-11 16:57:48 279

原创 spring的IOC,DI,AOP理解

IOC即控制反转,是一种设计思想,由spring去管理javaBean,标记被spring管理的类都会再IOC容器中登记,需要使用时告诉spring你需要的使用的是哪个对象,通过byName或者byType的方式,spring就会在你需要的时候提供给你。springIoc容器相当于一个中介,当你想要什么房子的时候不需要满大街去找房子,只需要告诉中介你需要什么房子,中介就给你一个房子。spring...

2019-03-11 15:35:38 480

原创 java中堆,栈,==与equals的区别

最近看面试题的时候经常发现这么一道经典的题,那就是==与equals的区别,但是发现看了几遍之后老是忘,看来好几记性还是不如烂笔头,就在这里做个总结。首先来看一个int类型例子,我们来想一下输出结果 int a = 200; Integer b = 200; Integer c = 200; Integer b2 = 100; Integer c2 = 100;...

2019-03-11 14:42:38 299

原创 spring的声明式事务

什么是事务事物就是一组原子性的sql查询,要么全部成功,要么全部失败。最经典的就是银行转账的例子,比如A向B转1000块,A这边显示扣费成功,但是B却没有收到钱,必须要保证A转钱成功和B收钱成功这两个动作是同时成功,或者同时失败的。事务的四大特性原子性:一个事物的操作是原子性的,要么全部成功,要么全部失败,如果事物出错,就会回滚到事物之前的状态。一致性:事物开始前后,数据库的完整性约束没...

2019-03-11 14:20:42 221

原创 jvm栈和堆的区别

栈区:1.每个线程包含一个栈区,栈中只保存基础数据类型的值和对象以及基础数据的引用2.每个栈中的数据(基础数据类型和对象引用)都是私有的,其他栈不能访问。3.通过栈帧从处理器那里获取支持,堆栈指针若向下移动,则分配新的内存;若向上移动,则释放那些内存。栈中的数据必虚要有确切大小和生命周期,因为JAVA编译器必须生成相应的代码,以便上下移动堆栈指针,这一约束限制了程序的灵活性。4、栈中的数据...

2019-03-09 00:06:44 857

原创 Integer的常量池,自动拆装箱源码分析

首先我们来看一下常量池的概念,当-128&lt;= i &lt;=127会直接从常量池中取,不会新new对象(这也是很多面试题中Integer128,和127比较的区别)下面是Integer维护常量池的源码。 static final int low = -128; static final int high; static final Integer cache[]; //...

2019-03-08 23:33:38 364

原创 java中使用elasticsearch进行简单的搜索

最近突然想写博客了,但是elasticsearch已经装好,我装在本地虚拟机上,这里就先不说elasticsearch的安装了,以后有机会再写一篇博客,这里仅仅使用es进行简单的搜索。有一段时间没启动elasticsearch了,启动报错,显示没有文件权限,后来发现logs目录下有root用户的文件。修改文件所有者:这里我们直接修改logs文件夹的权限,这里要切换回root用户修改。...

2019-03-08 19:52:32 15481 1

原创 SpringCloud(十二):Sleuth链路跟踪【Greenwich 版】

spring boot 2.x版本和之前发生了很大变化,Sleuth服务端不需要我们部署了,我们只需要从官网下载下来jar包就可以,启动起来就是服务端。这里说一下jar包下载下来要改名zipkin.jar,否则启动不起来。java -jar zipkin.jar启动接着我们访问9411端口,可以看到zipkin的管理界面:表示zipkin启动成功。接着在其他所有服务上都加上&amp;lt;d...

2019-03-07 22:47:26 351

原创 SpringCloud(十一):Stream消息驱动 + RabbitMQ【Greenwich 版】

Spring Cloud Stream 的 binder 负责与消息中间件交互(和消息中间件解耦,不需要关注具体的消息中间件)应用通过Spring Cloud Stream插入的input(相当于消费者consumer,它是从队列中接收消息的)和output(相当于生产者producer,它是从队列中发送消息的。)通道与外界交流。当需要升级消息中间件,或者是更换其他消息中间件产品时,我们需要做的就...

2019-03-07 21:16:45 514

原创 SpringCloud(十):Bus消息总线【Greenwich 版】

我们上面讲到了config配置中心,但是每次更新属性还要去一个一个访问接口,太麻烦了,这个时候我们就要象到发布-订阅模型,让所有服务去订阅这个事件(配置文件发生改变),当配置文件改变时,去通知所有服务更新配置,Bus消息总线就可以完成这样的功能。Spring Cloud Bus除了支持RabbitMQ之外,还支持现在被广泛应用的Kafka,本文中使用kafka做消息总线。首先安装kafka从...

2019-03-07 17:34:20 617

原创 SpringCloud(九):Config配置中心【Greenwich 版】

在分布式系统中对配置文件的集中管理的必要的,SpringCloud config就可以实现配置管理。Config分为Server端和Client端的,Server端负责管理配置,Client端用来加载配置。我们每一个为服务都要集成一个Client端的。Config支持配置文件放在远程Git仓库里,当我们进行更改配置的时候,只需要在本地更改,然后推送到Git仓库中就可以了,所有的客户端都可以去配置...

2019-03-07 14:37:41 841

原创 SpringCloud(八):Zuul网关【Greenwich 版】

网关是什么就不用多说了,网关最大的作用就是隐藏我们内部服务器的IP地址,外界通过网管访问,由网管决定请求是否可以进入内部服务,因此网管也可以做权限检验,网关还具备动态路由,负载均衡等功能。搭建zuul模块pom文件&lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;art...

2019-03-07 12:54:00 400 3

原创 SpringCloud(三):Feign声明式服务调用【Greenwich 版】

前面我们一直使用RestTemplate去调用服务,这样做太不爽了,每一次都要将参数拼接在url中,是不是很麻烦,那么我们有没有更好的办法呢,答案是有的,那就是Feign声明式服务调用。Feign整合了Ribbon和Hystrix,可以让我们不再需要显式地使用这两个组件。而且Feign还提供了声明式的服务调用,和SpringMVC类似,我们只需要创建一个接口并用注解方式配置它,即可完成服务提供方...

2019-03-07 10:32:31 481

转载 sql50条

https://blog.csdn.net/xiushuiguande/article/details/79476964

2019-03-07 09:46:15 259

原创 javaBean与map集合的互相转换

方式一通过反射的方法,通过属性字段操作public static Map&amp;lt;String, Object&amp;gt; bean2Map1(Object obj) throws IllegalAccessException { if (obj == null) return Collections.EMPTY_MAP; Map&amp;lt;String,Object&amp;g...

2019-03-06 23:34:55 309

原创 SpringCloud(六):Hystrix的请求合并【Greenwich 版】

上一篇我们说到了Hystrix的请求熔断和服务降级,接下来我们说说Hystrix的请求缓存,线程隔离和请求合并。Hystrix的隔绝策略分为两种:线程隔离和信号量隔离线程隔离:Hystrix在用户请求和服务之间加入了线程池。Hystrix为每个依赖调用分配一个小的线程池,如果线程池已满调用将被立即拒绝,默认不采用排队.加速失败判定时间。线程数是可以被设定的。原理:用户的请求将不再直接访问服务...

2019-03-06 23:14:50 1462 1

原创 SpringCloud(五):Hystrix的请求熔断与服务降级【Greenwich 版】

在复杂的分布式 架构 的应用程序有很多的依赖,都会不可避免地在某些时候失败。高并发的依赖失败时如果没有隔离措施,当前应用服务就有被拖垮的风险。Spring Cloud Netflix Hystrix就是隔离措施的一种实现,可以设置在某种超时或者失败情形下断开依赖调用或者返回指定逻辑,从而提高分布式系统的稳定性.hystrix提供了请求熔断,服务降级,请求缓存、请求合并以及服务监控等功能。Hy...

2019-03-06 20:41:28 1040 3

原创 SpringCloud(二):Ribbon负载均衡【Greenwich 版】

ribbon是一种客户端的负载均衡,nginx是一种服务端的负载均衡创建ribbon模块添加pom依赖:&amp;amp;amp;lt;dependency&amp;amp;amp;gt; &amp;amp;amp;lt;groupId&amp;amp;amp;gt;org.springframework.boot&amp;amp;amp;lt;/groupId&amp;amp;amp;gt; &amp;amp;amp;lt;arti

2019-03-06 17:05:41 417

原创 SpringCloud(一):Eureka注册中心【Greenwich 版】

简介SpringCloud Eureka主要负责完成服务治理功能,Eureka分为服务端和客户端。Eureka服务端,即服务注册中心,主要是用来管理服务,注册中心按照服务名维护一份服务清单,服务清单中包含服务提供者提供的服务信息(包括服务的主机与端口号、服务版本号、通讯协议等一些信息),服务之间的调用不再通过指定的IP地址进行调用,而是通过服务名去请求。Eureka客户端,即服务提供者。向服...

2019-03-06 15:46:13 609

原创 ArrayList扩容机制

ArrayList扩容机制简介ArrayList的底层是一个Object类型的数组,可以进行动态扩容ArrayList不是线程安全的,不建议在多线程环境下使用ArrayList实现了Serializable接口,因此它支持序列化,能够通过序列化传输ArrayList实现了RandomAccess接口,支持快速随机访问,实际上就是通过下标序号进行快速访问ArrayList实现了Clone...

2019-03-05 23:21:10 268

空空如也

空空如也

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

TA关注的人

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