自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot整合RabbitMQ

添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>添加application配置spring.rabbitmq.port=5672spring.

2021-08-04 11:10:13 233 1

原创 RbbitMQ之RPC实现(八)

RPC是Remote Procedure Call的简称,即远程过程调用。它是一种通过网络从远程计算机上请求服务(接口调用)。使用RabbitMQ如何实现RPC远程调用呢,服务器消费者订阅一个队列,客户端消费者订阅一个队列,客户端发起请求将消息、请求标识、回调队列发送给服务器订阅的队列,服务器收到消息处理数据将处理结果和客户端的请求标识发送给回调队列。RPC服务端 ConnectionFactory factory = new ConnectionFactory();...

2021-07-30 16:42:06 283

原创 RabbitMQ优先级队列(七)

优先级队列,顾名思义就是说该队列中的消息有优先级,优先级越高的消息越先被消费。如果当前队列中只有一条消息,那么优先级就没有存在的意义,即消费速度大于生产速度的时候优先级队列就没有存在的价值。 可以通过设置队列的x-max-priority来设置队列的最大优先级(0-255,超过255之后声明队列会报错),然后发送消息的时候通过priority设置消息的优先级,最小优先级为0,最大优先级不能超过队列的最大优先级,否则不生效。 Map<String, ...

2021-07-29 17:14:26 308

原创 RabbitMQ死信队列和延迟队列(六)

DLX全称dead-letter-exchange,可以称之为死信交换器。当消息在一个队列中变成死信之后,它能被重新发送到另一个交换器中,这个交换器就是DLX,绑定DLX的队列就称之为死信队列。 消息变成死信一般是由一下集中情况: 1.消息被拒绝之后,并设置requeue为false。 2.消息过期。 3.队列达到最大长度。 DLX也是一个普通交换器,它能在任何队列上被指定,实际就是设置某个队列的属性。...

2021-07-29 16:13:50 107

原创 RabbitMQ设置消息和队列过期时间(五)

设置消息过期时间 RabbitMQ设置消息的过期时间有两种方式:在队列设置所有消息的过期时间;发送消息的时候设置单个消息的过期时间,每条消息的TTL可以不同。如果两种方式同时使用则以最小时间为准。通过队列设置TTL 通过队列设置消息TTL的方法时在channel.queueDeclare的时候添加x-message-ttl参数实现,单位毫秒。 Map<String,Object> map = new HashMap&lt...

2021-07-29 14:59:38 3249

原创 RabbitMQ备份交换器(四)

备份交换器,英文名称Alternate Exchange,简称AE,或者更直白的称之为“备胎交换器”。生产者发送消息的时候如果不设置mandatory参数,那么消息在路由失败的时候会被直接丢弃。如果设置了mandatory参数,就需要添加retrurnListener业务逻辑,增加生产者的代码负责度。如果既不想复杂生产代码,又不想消息丢失,那么可以使用备份交换器,可以将路由失败的消息存储在备份交换器队列里面,在需要的时候再去处理。 实例代码: // 声明...

2021-07-29 10:23:53 157

原创 RabbitMQ消息发送与消费(三)

发送消息 调用Channel的basicPublish方法来发送消息,basicPublish有多个构造方法,其他构造方法都是由下面构造方法缺省某些参数构成。void basicPublish(String exchange, String routingKey, boolean mandatory, boolean immediate, BasicProperties props, byte[] body) throws IOException; ...

2021-07-29 09:53:13 846

原创 RabbitMQ交换器和队列声明以及绑定详解(二)

连接RabbitMQ ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); factory.setPort(AMQP.PROTOCOL.PORT); factory.setUsername("guest"); factory.setPassword("guest"); Connection conn

2021-07-27 17:00:51 1384

原创 RabbitMQ相关概念介绍(一)

RabbitMQ整体上是一个生产者与消费者模型,主要负责接收、存储和转发消息。生产者和消费者Producere:生产者,就是消息投递的一方。生产者创建消息之后发布到RabbitMQ中。消息一般包含2个部分:消息体和标签。消息体一般是一个带有业务逻辑结构的数据,比如一个JSON字符串。消息的标签用来表述这条消息,比如一个交换机的名称和一个一个路由键。Consumer:消费者,就是接收消息的一方。 消费者连接到RabbitMQ...

2021-07-27 14:34:29 160

原创 使用Feign调用设置请求头信息

添加feign拦截器,统一设置请求头package com.will.common.filter;import feign.RequestInterceptor;import feign.RequestTemplate;import lombok.extern.slf4j.Slf4j;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.conte

2021-06-27 21:26:04 2364

原创 gateway统一异常处理返回JSON数据

自定义异常处理逻辑package com.will.gateway.exception;import org.springframework.boot.autoconfigure.web.ErrorProperties;import org.springframework.boot.autoconfigure.web.ResourceProperties;import org.springframework.boot.autoconfigure.web.reactive.error.Defa

2021-06-27 21:06:45 2088

原创 Spring Cloud Alibaba集成Seata分布式事务

框架版本Spring Cloud:Hoxton.SR5Spring Cloud Alibaba:2.2.3.RELEASENacos:2.0.0Seata:1.3安装下载Seata下载地址Nacos下载地址nacos启动脚本在bin目录下startup.cmdseata在启动之前需要做一些配置修改(本文seata服务注册中心使用nacos,配置文件加载地址也使用nacos)修改conf文件下的file.confmode="db"以及mysql和redis的配置信息修改re..

2021-06-11 10:47:46 246

原创 java设计模式之代理模式

代理模式提供了间接对目标对象访问的方式,即使用代理对象访问目标对象,这样做的好处在于不改变目标对象的前提下增加额外的功能补充。代理模式分为三种静态代理、动态代理、cglib代理。/** * 接口对象 */public interface Exercise { void running();}/** * 目标对象 */public class MyExercise implements Exercise { @Override public void runni.

2020-08-12 00:27:22 89

原创 java设计模式之观察者模式

定义在对象间定义了一对多关系,当对象该表,依赖他的对象会收到通知并更新代码/** * 被观察者对象 */public class Subject { /** * 存放所有的观察者对象 */ private List<Observer> observerList; private String message; public Subject(){ observerList = new ArrayLis

2020-08-12 00:27:04 132

原创 java常用设计模式:工厂模式、策略模式、状态模式

工厂模式、策略模式、动态模式,这三个模式很像又有一定的区别,用代码来看一看有什么区别。写一个接口,输出水果价格public interface Fruit { void price();}写三个不同水果的实现类public class Apple implements Fruit { @Override public void price() { System.out.println("苹果20元一斤"); }}public class B

2020-08-12 00:26:48 319

原创 6种@Transactional注解的失效场景

事务事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种。编程式事务: 是指在代码中手动的管理事务的提交、回滚等操作,代码侵入性比较强,如下示例:try { //TODO something transactionManager.commit(status);} catch (Exception e) { transactionManager.rollback(status); throw new Invoi

2020-08-12 00:18:39 152

原创 SpringCloud之Ribbon负载均衡器介绍

AbstractLoadBalanceAbstractLoadBalance是ILoadBalancer接口的抽象实现。在该抽象类中定义了一个关于服务实例的分组枚举类ServerGroup,它包含了三种不同类型。ALL:所有服务实例。STATUS_UP:正常服务实例。STATUS_NOT_UP:停止服务实例。另外还实现了一个chooseServer()函数,该函数通过调用接口中的chooseServer(Object key)实现,其中参数为null,表示在选择具体的服务实例的时候忽略key的条

2020-08-12 00:10:28 215

原创 SpringCloud之Ribbon负载均衡策略

AbstractLoadBalancerRule负载均衡策略的抽象类,在该抽象类中定义了负载均衡器ILoadBalancer对象,该对象能够再具体实现选择服务策略时,获取到一些负载均衡器中维护的信息作为分配依据,并以此设计一些算法针对特定场景的高校策略。public abstract class AbstractLoadBalancerRule implements IRule, IClientConfigAware { private ILoadBalancer lb;

2020-07-07 23:55:17 443

原创 SpringBoot整合redis做数据缓存

Spring的支持Spring对redis的支持也是通过Spring Data Redis来实现的,Spring Data JPA为我们提供了链接相关的ConnectionFactory和数据库操作相关的RedisTemplate。Spring Data Redis提供了两种JedisConnectionFactory和LettuceConnectionFactory。默认使用的是LettuceConnectionFactory。Spring Data Redis为我们提供了RedisTempl

2020-06-05 00:24:44 470

原创 SpringBoot使用EhCache做数据缓存

SpringBoot使用Eache作为数据缓存是基于SpringBoot对缓存的支持来做的,不了解的查看上一篇文章SpringBoot整合Cache,本文demo也是在上一个基础之上改造的。使用EhCache作为缓存技术的时候,需要在pom.xml中添加EhCache的依赖: <!--ehcache--> <dependency> <groupId>net.sf.ehcache</groupId>

2020-05-28 23:08:31 569

原创 SpringBoot整合Cache缓存数据

Spring支持的CacheManagerSpring定义了org.springframework.cache.CacheManager和org.springframework.cache.Cache接口用来统一不同的缓存技术。其中CacheManage是Spring提供的各种缓存技术抽象接口,Cache接口包含缓存的各种操作,我们一般不会直接和此接口打交道。针对不同的缓存技术,需要实现不同CacheManager,Spring定义了以下CacheManage实现。CacheManage

2020-05-28 21:47:34 537

原创 java做图片压缩

/** * 指定图片宽度和高度和压缩比例对图片进行压缩 * * @param imgsrc 源图片地址 * @param imgdist 目标图片地址 */ public static void reduceImg(String imgsrc, String imgdist, String format) { try { File srcfile = new File(imgsrc); ...

2020-05-19 15:32:42 301

原创 SpringBoot之Aop,使用Aop添加操作日志

Aop:面向切面编程,相对于OOP面向对象编程。Aop存在的目的是为了解耦,Aop可以让一组类共享相同的行为。在OOP中只能通过继承类和实现接口,来使得代码的耦合度增强,且类只能为单继承,阻碍更多行为添加到一个类上,Aop弥补了这个不足。结合实际例子来了解Aop,给项目添加用户的操作日志。引入Aop依赖 <!--AOP--> <dependency> <groupId>org.springframew

2020-05-18 22:37:26 464

原创 SpringBoot整合MyBatis,通用mapper,Druid,log4j2

pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/m

2020-05-18 21:31:03 414

原创 SpringCloud之Ribbon

Ribbon简介Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP客户端的行为。为Ribbon配置服务提供者地址列表后,Ribbon就可基于某种负载算法,自动地帮助服务消费者去请求。Ribbon默认的负载算法有很多,比如轮询,随机等。当然也可以自定义负载均衡算法。在SpringCloud中,当Ribbon与Eureka配合使用时,Ribbon可以自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例。启动两个到三个之前写好的

2020-05-13 22:14:01 151

原创 SpringCloud之Eureka

Eureka简介Eureka是Netflix开源的服务发现组件,本身是一个基于REST的服务。它包含server和client两部分。Spring Cloud将它继承在子项目Spring Cloud Netflix中,从而实现服务的发现与注册。Eureka包含两个组件:Eureka Server和Eureka Client。Eureka Server提供服务发现的能力,各个微服务启动时,会向Eureka Server注册自己的信息(例如IP地址,端口号,服务名称等等),Eureka Server

2020-05-11 22:03:47 529

原创 springboot之spring-boot-starter-jdbc

如果想SpringBoot为我们提供自动配置数据访问的基础设施,那么,我们需要直接或间接依赖spring-jdbc,一旦spring-jdbc位于我们SpringBoot应用的classpath,即会触发数据访问相关的自动配置行为,最简单的方法就是把spring-boot-starter-jdbc加为应用的依赖。默认情况下,如果我们没有配置DataSource,那么,SpringBoot会为我们自动配置一个基于嵌入式数据库的DataSource,如果我们的SpringBoot项目只依赖一个数据库,那么,

2020-05-10 21:05:34 12430 1

原创 springboot之spring-boot-starter-web

在这个互联网的时代,使用spring框架除了开发少数的独立应用,大部分情况下实际上在使用SpringMVC开发web应用,为了帮我们简化快速搭建并开发一个Web项目,Spring boot为我们提供了spring-boot-starter-web自动配置模块。只要将spring-boot-starter-web加入项目的maven依赖:<dependency> <groupId>org.springframework.boot</groupId>

2020-05-10 20:29:46 15144

转载 MySql中的悲观锁和乐观锁

mysql中的锁分为两类:悲观锁和乐观锁悲观锁:悲观锁的特点是先拿到所在进行业务操作,即“悲观”的认为获取锁是非常有可能失败的,因此要先确保获取锁成功再进行业务操作。通常所说的“一锁二查三更新”即指的是使用悲观锁。通常来讲在数据库上的悲观锁需要数据库本身提供支持,即通过常用的select … for update操作来实现悲观锁。当数据库执行select for update时会获取被select...

2018-05-04 10:52:37 128

转载 Mysql数据库支持Emoji表情

mysql的utf8编码一个字符最多3个字节,但是emoji表情是4个字节,所以utf8不支持emoji表情,utf8的超类utf8mb4一个字符最3个字节,所以能够支持emoji,我们只需要把字符集改为utf8mb4即可。1.修改mysql的配置文件Windows系统为my.iniLinux系统为my.cnf这里以windows系统为例:找到my.ini文件添加一下配置[

2017-12-08 16:59:00 398

转载 Tomcat配置Https协议

windows系统下生成keystore文件第一步:进入jdk的安装文件路径下面的bin目录第二步:输入以下命令keytool-genkey -v -alias mykey -keyalg RSA -validity 3650 -keystore F:\tomcat.keystore-genkey 创建新证书-v 详细信息-alias 以”mykey”作为该证书的别

2017-12-08 16:07:44 174

空空如也

空空如也

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

TA关注的人

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