Spring创建Bean源码 - 解析配置类: 延迟导入选择器DeferredImportSelector DeferredImportSelector`延迟导入选择器是Spring提供的一个扩展导入器,该导入器是`ImportSelector`的一个变体,该导入器是在处理配置类上`@Import`注解的时候注册的,当所有`{@code @Configuration}`配置类解析完成后才会运行所有被注册的`DeferredImportSelector`。该导入器的主要作用是,委托`Group`接口导入一组配置类。Springboot 的`AutoConfigurationImportSelector`实现了该接
Spring创建Bean源码 - 加载配置类 在中已经介绍了Spring是怎么解析配置类的,这个章节主要介绍Spring是怎么将解析后的配置类加载并注册到Spring中的。以下是包含了解析配置类和加载配置类的代码片段。就是将解析后的配置类加载并注册到Spring的代码片段。
CacheManager设置Jackson2JsonRedisSerializer的时候不生效问题 CacheManager设置Jackson2JsonRedisSerializer的时候不生效问题不生效的代码 @Bean public CacheManager cacheManager(RedisConnectionFactory factory, CacheProperties cacheProperties) { RedisCacheConfiguration config = redisCacheConfiguration(cacheProperties);
Springboot的autoConfiguration 自己写的的模块想要集成到当前springboot中,需要制作一个xxAotuConfiguration类。然后在resource/META-INFO/spring-factories中加入以下元素:org.springframework.boot.autoconfigure.EnableAutoConfiguration=\xxx.xxxx.xxxx.xxxxutoConfiguration...
【无标题】 由于springcloud2020弃用了Ribbon,因此Alibaba在2021版本nacos中删除了Ribbon的jar包,因此无法通过lb路由到指定微服务,出现了503情况。所以只需要引入springcloud loadbalancer包即可<!--客户端负载均衡loadbalancer--><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>s
flink(八)两阶段提交(备份别人的) 两阶段提交在Flink的两阶段提交中,JobManager充当协调者,TaskManager中的Source、Operator、Sink充当参与者,他们之间的通信有Checkpoint触发,其中barrier是核心中的核心。两阶段提交是实现精确一次性语义的核心原理。其核心原理就是在Barrier对齐的情况下所有的算子都成功的完成了Checkpoint,就完成了真正的两阶段提交。JobManager向Source发送Barrier,开始进入pre-Commit阶段,当只有内部状态时,pre-commit
flink(七)反压的原理(别人的博客,自己备份一下) 网络流控网络流控的作用如上是一张网络流控的图,Producer的吞吐率是2MB/s,Consumer是1MB/s,此时在网络通信时Producer的速度是比Consumer要快的,有1MB/s的速度差。假定两端都有一个Buffer,Producer端有一个发送用的Send Buffer,Consumer端有一个接收用的Receive Buffer,在网络端的吞吐率是2MB/s,5s后Receive Buffer可能就撑不住了,这时候会面临两种情况:如果Receive Buffer是有界的,这时候新
数仓(三)数仓与数据库区别 文章目录数仓与数据库区别数据库数据仓库对比数仓与数据库区别数据库通常我们可以接为关系型数据库。是一种逻辑概念,用来存放数据的,通过数据库软件来实现,数据库由多张二维表组成,一张表可以有多个字段。表与表存在关联关系。数据库主要有MySQL、Oracle、Postgree等关系型数据库。主要用于OLTP(联机事务处理)数据仓库数据仓库是面向主题的,存储的数据体量大,常用于数据分析与数据挖掘。辅助领导做决策。主要用于OLAP(联机分析处理)。对比操作型处理,也叫联机事务处理(OLTP),也可以称为面
数仓(二)数据建模 文章目录数仓建模表分类事实表维度表维度退化范式建模维度建模星型模型雪花模型星系模型模型对比建模原则数仓建模数据模型是抽象描述现实世界的一种工具和方法,是通过抽象的实体以及实体之间的关系来表达现实世界中事务以及事务之间关联关系的一种映射。在这里,数据模型表现的是实体以及实体和实体之间的关系,通过对实体以及实体与实体之间关系的定义和描述,来表达实际业务中具体的业务关系。数据仓库模型是数据模型中针对数据仓库应用系统的一种特定数据模型。数据仓库建模的发展历程:建立比较好的数据模型能够有以下好处:性能:
数仓(一)数据分层 文章目录数仓(一)数据分层数据运营层数据仓库层数据应用层事实表`(Fact Table)`维表层(`Dimension`)数仓(一)数据分层数据分层在建设数据仓库中是一个十分重要的环节,良好的数据分层能够使得数据仓库更容易理解和使用,提升数据处理速度,并且能够降低存储压力和企业成本。在数据仓库建设中,数据分层主要分为数据运营层、数据仓库层、数据应用层。数据运营层数据运营层ODS(Operation Data Store) -也就是最接近数据源的一层,直接对接的数据源(如:业务库、埋点日志、消息队列等
IO(一)IO多路复用 IO多路复用所谓的IO多路复用就是实现一个线程能够监听多个网络连接的机制。一旦监听到其中一个或者多个网络连接发起了读写请求,那么该线程就会通知事件处理器进行IO操作。同步阻塞IO当客户端请求服务端的时候,服务端采用单线程,当accpet到一个请求后,在send或者receive的时候阻塞,这个时候无法accpet其他请求,必须等到上一个send或者receive完成后才能继续accpet其他请求,与此同时客户端一直处于等待服务端响应的状态,无法同时处理其他事情,直到服务端响应后才能继续往下执行。同步
Redis(三)Redis线程模型 文章目录Redis的线程模型Redis快的原因Redis线程模型原理I/O多路复用技术I/O多路复用与多线程的区别I/O多路复用底层技术对比Redis的线程模型Redis快的原因Redis为什么这么快呢,其主要的原因有以下几个:纯内存操作单线程操作,避免了线程之间的切换 - 单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有网络请求,其他模块仍用了多个线程。使用单线程模型也并不意味着程序不能并发的处理任务,Redis 虽然使用单线程模型处理用户的请求,但是它却使
Redis(二)持久化 文章目录Redis之持久化RDB原理流程触发条件优点缺点AOF原理重写机制重写规则触发方式CopyOnWriteRedis之持久化Redis支持数据持久化,Redis会将当前内存中的数据以特定的格式持久化到磁盘中,防止数据丢失,而且持久化的数据可以做备份和数据恢复。Redis提供了两种持久化机制,RDB和AOFRDB原理流程RDB为Redis Database的缩写,也就是Redis的数据库。RDB的原理其实就是Redis达到了触发持久化的条件以后,Redis的主线程立刻创建一个fork子进程,然
Redis(一)哨兵模式原理 文章目录Redis哨兵模式原理工作原理如何判断master宕机主观下线(SDOWN)客观下线(ODOWN)哨兵leader选举选举原理选举过程故障转移配置版本号配置传播哨兵和副本的自动发现没有故障转移的情况下哨兵实例的重新配置副本选择和优先级算法和内部原理Quorumconfiguration epoch哨兵配置哨兵脑裂Sentinel命令Redis哨兵模式原理Redis哨兵机制是保证了Redis服务的高可用,在master故障的情况下,在slave中选取一台作为新的master,并将新的master通