(一)feign原理解析 Feign是一种声明式、模板化的HTTP客户端。feign中文意思是模仿、假装的,顾名思义,它其实内部封装了http客户端,使得我们调用http请求时就像调用接口那么简单。来看一个简单的feign例子。[1] 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 2021-05-12 spring cloud feign
(四)rabbitmq消息堆积、顺序消费 rabbitmq问的最多的问题是使用场景、消息的可靠性保证、消息的重复消费、消息堆积的处理以及如何实现顺序消费。 使用场景:异步、消峰、限流。可靠性保证前面有讲过了。重复消费也好解决,消费端做好幂等校验即可。今天写一写关于rabbitmq的消息堆积和顺序消费问题。 1. 消息堆积 顾名思义,消息堆积是指生产者发送消息的速度远大于消费者消费消息的速度,比如发送者1s 2021-05-09 中间件 rabbitmq
(三)rabbitmq之延迟队列 1. 延迟队列 延迟队列是指进入队列后的元素不会被立即消费,而是达到一定时间后才会被消费。比如我的工作中需要实现这样一个功能。支付常常会因为一些原因导致支付报错,比如DNS解析失败等,这种情况一般客户会再次点击支付。为了避免每次报错都人工排查原因,需要实现一个功能,如果dns解析失败报错,则1分钟后主动查询订单是否支付成功,成功则不管,失败则手动排查。这时候可以采用延迟队列实现,每次报错 2021-05-09 中间件 rabbitmq
(二)rabbitmq之消息的可靠性保证 这是一个面试中经常会被问到的问题,我之前的面试中,几乎每一家都问到了这个问题,因此在这里来做个总结。 可靠性主要是指保证消息在传递过程中,不会出现数据丢失的问题。整个消息传递过程中,消息主要经过三个节点,发送端、mq服务器、消费端,出现数据丢失可能有以下几方面: 发送端数据可能因为自身服务故障或者网络传输问题,导致消息未正确发送到mq mq收到了发送端发的消息,但是还未来 2021-05-09 中间件 rabbitmq
(一)rabbitmq简介及其消息模型 1. AMQP协议 AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一个进程间传递异步消息的网络协议。 AMQP有以下几个概念: Broker:接收和分发消息的应用,就是处理消息的服务器,RabbitMQ Server就是Message Broker。 Virtual host:类似于namespace,通过它可以在同一个m 2021-05-08 中间件 rabbitmq
线程池ThreadPoolExecutor源码阅读 ThreadPoolExecutor数据结构123456789101112131415161718192021222324252627282930313233343536373839404142434445//7个核心参数:// 核心线程数private volatile int corePoolSize;// 最大线程数private volatile int maximumPoolSize;/ 2021-04-28 java 面试必备知识点
后端面试题 经过一个月的准备和接近一个月的面试,终于拿到新公司offer了。这一个月来面试了滴滴、美团、头条、阿里、腾讯、猿辅导、快手,最终拿到了滴滴、美团、猿辅导、快手四家公司的offer。面试让我深刻的体会了自己有多菜,因此决定好好研究源码,日常保持学习,这个行业,不学就会被淘汰,从此我要洗心革面搞技术,矜矜业业做业务,先在此记录下面试题目。本人毕业后刚工作两年,第一次跳槽,题目可供类似经历的 2021-04-26 后端 面试
java线程安全和锁 1. java线程安全 按照线程安全的由强至弱的程度,可以把java语言中各种操作共享的数据分为五类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。 java中的线程安全不可变 不可变对象一定是线程安全的,无需再进行任何安全措施保障。比如final修饰的变量等。比如java.lang.String,它的任何方法substring()、concat()等都是返回新的字符 2021-02-19 java jvm
JVM之后端编译与优化 把class文件转换成与本地基础设施(硬件指令集、操作系统)相关的二进制机器码,这个过程可以看做是整个编译过程的后端。 JVM 的前端编译器: Javac。后端编译器:即时编译器(JIT 编译器)和提前编译器(AOT 编译器)。 java虚拟机规范中并没有规定必须包含即时编译或者提前编译,但是这些是提升编译的一个方案,用来衡量虚拟机的品质。以下提到的即时编译器 2021-01-25 java jvm
JVM之前端编译与优化 编译期是一个很广泛的含义,它可能是指前端编译器(即“编译器的前端”)把.java文件转换为.class文件的过程。也可能是Java虚拟机的即时编译器(JIT编译器,Just In Time)运行期把字节码转变成本地机器码的过程。也有可能是静态的提前编译器(AOT编译器,Ahead Of Time Compile)直接把程序编译成目标机器指令集相关的二进制代码的过程。 前端编译器:J 2021-01-19 java jvm