面试题记录
...
SpringBoot3启动源码解析
SpringBoot源码解析自动配置(SpringBootApplication) 自动配置是指根据我们添加的jar包依赖,会自动将一些配置类的bean注册进IOC容器,我们可以在需要的地方使用@Autowired或者@Resource等注解来使用。 那么SpringBoot是如何实现自动配置的呢,都把那些组件进行了自动配置? 首先需要从启动类说起。 被标注了SpringBootApplication的类为核心启动类,此注解是一个组合注解,,此注解中重要的就是SpringBootConfiguration、EnableAutoConfiguration、ComponentScan 123456789101112@Target(ElementType.TYPE) //注解的适用5范围,Type表示注解可以描述在类、接口、注解或枚举中@Retention(RetentionPolicy.RUNTIME) //表示注解的生命周期 Runtime表示运行时@Documented //表示该注解可以记录在javadoc中@Inherited //...
Redis学习笔记
概述 Remote Dictionary Server(远程字典服务)是完全开源的,使用ANSIC语言编写遵守BSD协议,是一个高性能的Key-Value数据库提供了丰富的数据结构,例如String、Hash、List、Set、SortedSet等等。数据是存在内存中的,同时Redis支持事务、持久化、LUA脚本、发布/订阅、缓存淘汰、流技术等多种功能特性提供了主从模式、Redis Sentinel和Redis...
RabbitMQ学习笔记
消息队列MQ的相关概念什么是MQMQ(message queue),从字面意思上看,本质是个队列,FIFI先进先出,只不过队列中存放的内容是message而已,还是一种跨进程的通信机制,用于上下游传递消息。使用MQ之后,消息发送上游只需要依赖MQ,不用依赖其他服务。 为什么使用MQ 流量消峰 应对流量高峰期时,服务处理能力有限,对于多出的数据无法处理,而使用消息队列作为缓冲,则可对数据缓存至消息队列以达到消峰。 应用解耦 例如电商系统中,包含有订单、库存、物流等系统,订单创建后需要对其他服务进行数据处理,如果耦合严重,当其中一个节点出现问题时都会导致订单失败。当转为消息队列的方式后,系统间的调用会减少很多,当其中一个系统故障时,将消息放在消息队列中,等故障服务恢复后,对队列中的消息进行消费处理即可。 异步处理 有些服务间调用是异步的,例如 A 调用 B,B 需要花费很长时间执行,但是 A 需要知道 B 什么时候可 以执行完。使用消息队列时可以很方便解决这个问题,A 调用 B 服务后,只需要监听 B 处理完成的消息,当 B 处理完成后,会发送一条消息给 MQ,MQ 会将此...
Spring Cloud Gateway
随着微服务开发与使用越来越广泛,单组件服务也越来越多,导致服务的维护变得复杂,试想如果使用nginx作为负载均衡,当服务增加一个就需要重新配置nginx,这样就使得项目的维护成本与难度越来越高,于是网关在微服务开发中就成为了也不可或缺的存。 网关可以作为服务的统一入口,封装应用程序的内部结构,客户端提供统一服务,一些与也无无关的公共逻辑也可以放在网关实现,如认证、鉴权、监控、路由转发等。 本文就Spring Cloud Gateway记录一下我自己的学习笔记。 Spring Cloud Gateway 功能特征 动态路由:能够匹配任何请求属性; 支持路径重写; 集成 Spring Cloud 服务发现功能(Nacos、Eruka); 可集成流控降级功能(Sentinel、Hystrix); 可以对路由指定易于编写的 Predicate(断言)和...
基于redis订阅实现分布式websocket
最近在使用websocket过程中,由于使用分布式多节点方式,前端连接到ws时后端会有一个session,使用这个session可以由服务端主动发送消息给前端,首先想象到的是能否把session共享给其他节点,看WsSession源码,发现WsSession并没有系列化,所以无法共享; 12public class WsSession implements Session...
ErrorMvcAutoConfiguration自动配置原理
本文主要对ErrorMvcAutoConfiguration进行说明 在web开发过程中总会遇到各种各样的错误,错误页面可以给予我们很好的帮助,本文介绍下springboot中的错误页面的自动配置与定制错误页面。 使用SpringBoot开发Web项目时,可以看到是有默认的错误处理 1)浏览器访问不存在的请求地址时,包含有时间、状态码等信息。 2)使用postman(非浏览器客户端)发送请求,返回的则是json数据 会出现这种现象是由于请求头的原因 浏览器发送请求会携带有text/html的请求头 如下 而非浏览器请求头中不包含这个值 首先需要将Developer...
windows环境下zookeeper的配置与常用客户端命令
本文主要介绍下zookeeper的安装部署,以及部分常用的客户端命令 首先下载zookeeper 选择版本下载即可 地址如下 zookeeper下载地址 下载完成后解压即可 配置文件下载完成后在conf文件夹下可以看到一个zoo_sample.cfg文件 需要复制此文件并改名为zoo.cfg,然后做一下配置 1234567891011# 对部分配置做以下说明 其余使用默认即可# 数据放置路径dataDir=D:/MyWeb/zookeeper-3.4.11/tmp/zookeeper# zookeeper端口 对cline端提供服务clientPort=2181# 如果要集群的话添加如下配置即可,其中2888端口作用为选举leader使用,3888作用为集群内机器通讯使用(Leader监听此端口) 另外集群时还要注意zookeeper的半数机制#server.0=192.168.146.200:2888:3888#server.1=192.168.146.201:2888:3888#server.2=192.168.146.202:2888:3888 服务启动12#...
windows环境单机搭建kafka配置与测试
本文介绍下kafka部分配置 启动以及部分命令测试 首先下载zookeeper与kafka 选择版本下载即可 地址如下 zookeeper下载地址 kafka下载地址 下载完成后需要进行简单配置 zookeeper配置与启动见另一篇文章 kafka配置1234567###进入config目录 修改server.properties文件# 表示broker的id 必须为不重复的数字broker.id=0# 此处参数名虽为日志 但是其实是数据保存路径 日志文件夹(logs)会自动生成log.dirs=D:/MyWeb/kafka_2.13-2.5.0/tmp/kafka-logs# 配置注册中心地址 端口zookeeper.connect=127.0.0.1:2181 kafka 启动windows 12##首先需要进入kafka目录.\bin\kafka-server-start.sh -daemon .\config\server.properties linux 12##首先需要进入kafka目录./bin/kafka-server-start.sh -daemon...
HttpMessageConvertersAutoConfiguration自动配置类
在我们日常的web开发过程中肯定都用过@RequestBody、@ResponseBody注解,其作用就是将输入输出参数解析成Json,但是Http请求和响应都是基于报文的,意味着浏览器与服务器之间的交互时通过原始文本进行数据同i性能的,这里其实就是HttpMessageConverter在起作用。 首先来看下HttpMessageConvertersAutoConfiguration配置类的源码 HttpMessageConvertersAutoConfiguration源码12345678910111213141516171819202122232425262728293031323334353637383940414243444546@Configuration(proxyBeanMethods = false) //标明是配置类@ConditionalOnClass(HttpMessageConverter.class)//在此类存在时生效@Conditional(NotReactiveWebApplicationCondition.class)...
