自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

李玉志的博客

不积跬步,无以致千里;不积小流,无以成江河

  • 博客(182)
  • 收藏
  • 关注

原创 11111111111111111111

1111111111。

2024-03-21 13:41:21 403

原创 Spring创建Bean源码 - 解析配置类: 延迟导入选择器DeferredImportSelector

DeferredImportSelector`延迟导入选择器是Spring提供的一个扩展导入器,该导入器是`ImportSelector`的一个变体,该导入器是在处理配置类上`@Import`注解的时候注册的,当所有`{@code @Configuration}`配置类解析完成后才会运行所有被注册的`DeferredImportSelector`。该导入器的主要作用是,委托`Group`接口导入一组配置类。Springboot 的`AutoConfigurationImportSelector`实现了该接

2023-06-30 18:56:29 1534

原创 Spring创建Bean源码 - 加载配置类

在中已经介绍了Spring是怎么解析配置类的,这个章节主要介绍Spring是怎么将解析后的配置类加载并注册到Spring中的。以下是包含了解析配置类和加载配置类的代码片段。就是将解析后的配置类加载并注册到Spring的代码片段。

2023-06-28 18:24:56 631

原创 Redisson分布式锁-源码分析

尝试获取分布式锁,获取到分布式锁后,开启一个开门狗,为分布式锁续期。为获取到分布式锁,返回分布式锁剩余的过期时间,毫秒为单位。

2023-06-26 16:39:24 408 1

原创 Spring创建Bean源码 - 解析配置类(一)

Spring创建Bean源码 - 解析配置类(一)

2023-06-26 14:01:57 603

原创 Spring Bean创建Bean源码 - 注解方式(一)

Spring Bean创建Bean源码 - 注解方式

2023-06-21 18:12:27 949

原创 Spring源码之AnnotationConfigApplicationContext流程图

Spring源码之AnnotationConfigApplicationContext源码流程图

2023-02-09 15:25:05 146 1

原创 线程池ThreadPoolExecutor

主要陈述了ThreadPoolExecutor整体的实现细节

2022-11-12 22:48:34 1355

原创 CacheManager设置Jackson2JsonRedisSerializer的时候不生效问题

CacheManager设置Jackson2JsonRedisSerializer的时候不生效问题不生效的代码 @Bean public CacheManager cacheManager(RedisConnectionFactory factory, CacheProperties cacheProperties) { RedisCacheConfiguration config = redisCacheConfiguration(cacheProperties);

2022-04-02 14:42:02 1021 2

原创 Springboot的autoConfiguration

自己写的的模块想要集成到当前springboot中,需要制作一个xxAotuConfiguration类。然后在resource/META-INFO/spring-factories中加入以下元素:org.springframework.boot.autoconfigure.EnableAutoConfiguration=\xxx.xxxx.xxxx.xxxxutoConfiguration...

2022-03-07 14:04:07 410

原创 【无标题】

由于springcloud2020弃用了Ribbon,因此Alibaba在2021版本nacos中删除了Ribbon的jar包,因此无法通过lb路由到指定微服务,出现了503情况。所以只需要引入springcloud loadbalancer包即可<!--客户端负载均衡loadbalancer--><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>s

2022-03-05 19:09:27 282

原创 flink(八)两阶段提交(备份别人的)

两阶段提交在Flink的两阶段提交中,JobManager充当协调者,TaskManager中的Source、Operator、Sink充当参与者,他们之间的通信有Checkpoint触发,其中barrier是核心中的核心。两阶段提交是实现精确一次性语义的核心原理。其核心原理就是在Barrier对齐的情况下所有的算子都成功的完成了Checkpoint,就完成了真正的两阶段提交。JobManager向Source发送Barrier,开始进入pre-Commit阶段,当只有内部状态时,pre-commit

2021-12-23 19:16:38 1354

原创 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是有界的,这时候新

2021-12-23 19:14:52 613

原创 数仓(三)数仓与数据库区别

文章目录数仓与数据库区别数据库数据仓库对比数仓与数据库区别数据库通常我们可以接为关系型数据库。是一种逻辑概念,用来存放数据的,通过数据库软件来实现,数据库由多张二维表组成,一张表可以有多个字段。表与表存在关联关系。数据库主要有MySQL、Oracle、Postgree等关系型数据库。主要用于OLTP(联机事务处理)数据仓库数据仓库是面向主题的,存储的数据体量大,常用于数据分析与数据挖掘。辅助领导做决策。主要用于OLAP(联机分析处理)。对比操作型处理,也叫联机事务处理(OLTP),也可以称为面

2021-12-21 19:17:46 1552

原创 数仓(二)数据建模

文章目录数仓建模表分类事实表维度表维度退化范式建模维度建模星型模型雪花模型星系模型模型对比建模原则数仓建模数据模型是抽象描述现实世界的一种工具和方法,是通过抽象的实体以及实体之间的关系来表达现实世界中事务以及事务之间关联关系的一种映射。在这里,数据模型表现的是实体以及实体和实体之间的关系,通过对实体以及实体与实体之间关系的定义和描述,来表达实际业务中具体的业务关系。数据仓库模型是数据模型中针对数据仓库应用系统的一种特定数据模型。数据仓库建模的发展历程:建立比较好的数据模型能够有以下好处:性能:

2021-12-21 18:58:28 578

原创 数仓(一)数据分层

文章目录数仓(一)数据分层数据运营层数据仓库层数据应用层事实表`(Fact Table)`维表层(`Dimension`)数仓(一)数据分层数据分层在建设数据仓库中是一个十分重要的环节,良好的数据分层能够使得数据仓库更容易理解和使用,提升数据处理速度,并且能够降低存储压力和企业成本。在数据仓库建设中,数据分层主要分为数据运营层、数据仓库层、数据应用层。数据运营层数据运营层ODS(Operation Data Store) -也就是最接近数据源的一层,直接对接的数据源(如:业务库、埋点日志、消息队列等

2021-12-21 12:54:39 4161

原创 IO(一)IO多路复用

IO多路复用所谓的IO多路复用就是实现一个线程能够监听多个网络连接的机制。一旦监听到其中一个或者多个网络连接发起了读写请求,那么该线程就会通知事件处理器进行IO操作。同步阻塞IO当客户端请求服务端的时候,服务端采用单线程,当accpet到一个请求后,在send或者receive的时候阻塞,这个时候无法accpet其他请求,必须等到上一个send或者receive完成后才能继续accpet其他请求,与此同时客户端一直处于等待服务端响应的状态,无法同时处理其他事情,直到服务端响应后才能继续往下执行。同步

2021-12-06 11:27:59 827

原创 Redis(三)Redis线程模型

文章目录Redis的线程模型Redis快的原因Redis线程模型原理I/O多路复用技术I/O多路复用与多线程的区别I/O多路复用底层技术对比Redis的线程模型Redis快的原因Redis为什么这么快呢,其主要的原因有以下几个:纯内存操作单线程操作,避免了线程之间的切换 - 单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有网络请求,其他模块仍用了多个线程。使用单线程模型也并不意味着程序不能并发的处理任务,Redis 虽然使用单线程模型处理用户的请求,但是它却使

2021-12-03 17:28:36 812

原创 Redis(二)持久化

文章目录Redis之持久化RDB原理流程触发条件优点缺点AOF原理重写机制重写规则触发方式CopyOnWriteRedis之持久化Redis支持数据持久化,Redis会将当前内存中的数据以特定的格式持久化到磁盘中,防止数据丢失,而且持久化的数据可以做备份和数据恢复。Redis提供了两种持久化机制,RDB和AOFRDB原理流程RDB为Redis Database的缩写,也就是Redis的数据库。RDB的原理其实就是Redis达到了触发持久化的条件以后,Redis的主线程立刻创建一个fork子进程,然

2021-12-03 16:18:54 613

原创 Redis(一)哨兵模式原理

文章目录Redis哨兵模式原理工作原理如何判断master宕机主观下线(SDOWN)客观下线(ODOWN)哨兵leader选举选举原理选举过程故障转移配置版本号配置传播哨兵和副本的自动发现没有故障转移的情况下哨兵实例的重新配置副本选择和优先级算法和内部原理Quorumconfiguration epoch哨兵配置哨兵脑裂Sentinel命令Redis哨兵模式原理Redis哨兵机制是保证了Redis服务的高可用,在master故障的情况下,在slave中选取一台作为新的master,并将新的master通

2021-12-03 16:05:29 2566

原创 分布式(一)分布式事务解决方案

文章目录分布式事务CAP理论XA方案TCC方案可靠消息最终一致性方案成熟开源的分布式事务框架分布式事务分布式事务主要有以下五种解决方案XA方案,也叫两段式提交方案TCC方案,也叫三段式提交方案可靠消息最终一致性方案CAP理论CAP理论中,C(Consistency)是强一致性,A(Availability)是可用性,P(Partition Tolerance)分区容错行。该理论在实际的分布式系统环境中,只能满足其中的两项,而不能同时满足这三个属性。一致性:所有节点上的数据时刻保持同步

2021-12-02 15:13:50 1114

原创 MySQL InnoDB 存储引擎(一)InnoDB 锁

InnoDB 锁共享锁和排它锁InnoDB实现了标准的行级锁,其中有两种类型的锁,共享(S)锁和独占(X)锁。共享 (S) 锁允许持有锁的事务读取一行。排他 (X) 锁允许持有锁的事务更新或删除行。如果事务T1在r行上持有一个共享(S)锁,那么某个不同事务T2对r行上的一个锁的请求将被处理如下:可以立即授予 T2 对共享(S)锁的请求。结果,T1 和 T2 都持有 r 上的 S 锁。不能立即授予 T2 对排他 (X) 锁的请求。如果事务 T1 在行 r 上持有排他 (

2021-11-26 16:00:27 542

原创 flink DataStream API(六)算子-joining

joining窗口连接将共享一个公共键并位于同一窗口中的两个流的元素连接起来。这些窗口可以通过使用窗口分配器来定义,并在来自两个流的元素上进行计算。然后将两侧的元素传递给用户定义的 JoinFunction 或 FlatJoinFunction,用户可以在其中输出满足连接条件的结果。一般用法可以总结如下:stream.join(otherStream) .where(<KeySelector>) .equalTo(<KeySelector>) .win

2021-11-17 15:47:36 907

原创 flink DataStream API(六)算子-window

window窗口是处理无界流的核心。Windows将流分成大小有限的“桶”,我们可以在这些桶上进行计算。一个 Flink窗口化程序的一般结构如下所示。第一个代码段引用键控流,而第二个代码段引用非键控流。可以看到,唯一的区别是键控流的keyBy(…)调用和非键控流的window(…)调用。keyed Windowsstream .keyBy(...) <- keyed versus non-keyed windows .window(..

2021-11-17 14:42:00 896

原创 flink DataStream API(六)算子-概述

文章目录Operators概述DataStream TransformationsMapFlatMapFilterKeyByReduceWindowWindowAllWindow ApplyWindowReduceUnionWindow JoinInterval JoinWindow CoGroupConnectCoMap, CoFlatMapIteratePhysical Partitioning(物理分区)自定义分区随机分区RescalingBroadcastingTask Chaining and R

2021-08-23 12:56:10 338

原创 flink DataStream API(五)用户自定义函数

文章目录用户自定义函数实现一个接口匿名类Java 8 LambdasRich functions累加器和计数器如何使用累加器:自定义累加器用户自定义函数大多数操作都需要用户自定义函数。我们还介绍了Accumulators,可用于深入了解您的 Flink 应用程序。实现一个接口最基本的方法之一是实现提供的接口:class MyMapFunction implements MapFunction<String, Integer> { public Integer map(String

2021-08-20 17:45:06 289

原创 flink DataStream API(四)状态和容错-状态后端

文章目录状态后端状态后端Flink 提供了不同的状态后端,用于指定状态的存储方式和位置。状态可以位于 Java 的堆内或堆外。这意味应用程序可以保持非常大的状态。默认情况下,配置文件flink-conf.yaml确定所有flink作业的状态后端。但是,可以在每个作业的基础上覆盖默认状态后端,如下所示。有关可用状态后端、它们的优点、限制和配置参数的更多信息,请参阅Deployment & Operations中的相应部分。StreamExecutionEnvironment env = St

2021-08-20 16:16:51 130

原创 flink DataStream API(四)状态和容错-checkpointing

文章目录checkpointing前提条件启用和配置`checkpoint`相关的配置选项选择检查点存储迭代作业中的状态检查点checkpointingFlink 中的每个函数和算子都可以是有状态的。有状态函数在单个元素/事件的处理过程中存储数据,使状态成为任何类型的更复杂操作的关键组成部分。为了使状态能够容错,Flink需要对状态进行检checkpoint。checkpoint允许Flink恢复流中的状态和位置,为应用程序提供与无故障执行相同的语义。前提条件Flink的checkpoint机制与

2021-08-20 15:57:02 349

原创 flink DataStream API(四)状态和容错-广播状态模式

文章目录广播状态模式提供的APIBroadcastProcessFunction 和 KeyedBroadcastProcessFunction重要的注意事项广播状态模式在本节中,您将了解如何在实践中使用广播状态。请参阅有 Stateful Stream Processing 以了解有状态流处理背后的概念。提供的API为了展示所提供的 API,在展示它们的全部功能之前,我们将从一个示例开始,然后再展示它们的完整功能。在此示例中,第一个流将包含具有 Color 和 Shape 属性的 Item 类型

2021-08-20 13:13:01 361

原创 flink DataStream API(四)状态和容错-使用状态

文章目录使用State`Keyed` DataStream使用`keyed state`State 生存时间 (TTL)清除过期状态完整快照清理增量清理RocksDB 压缩期间的清理算子 StateBroadcast State使用算子 State有状态的源函数使用State在本节中,您将了解 Flink 提供的用于编写有状态程序的 API。请查看 Stateful Stream Processing以了解有状态流处理背后的概念。Keyed DataStream如果要使用Keyed state,首先

2021-08-19 19:11:25 534

原创 flink DataStream API(三)事件时间-内置水印生成器

文章目录内置水印生成器单调递增的时间戳固定的延迟时间内置水印生成器如生成水印中所述,Flink提供了抽象,允许程序员分配他们自己的时间戳并发出他们自己的水印。更具体地说,可以通过实现WatermarkGenerator接口来实现。为了进一步简化此类任务的编程工作,Flink 附带了一些预先实现好的时间戳分配器。本节提供了它们的列表。除了开箱即用的功能外,它们的实现还可以作为自定义实现的示例。单调递增的时间戳周期性生成水印最简单和特殊的情况下是任务收到的时间戳是按照单调递增的顺序出现的。在这种情况下

2021-08-19 16:57:29 699

原创 flink DataStream API(三)事件时间-生成水印

文章目录生成水印水印策略介绍使用水印策略处理空闲源编写 `WatermarkGenerators`编写周期 WatermarkGenerator编写标点WatermarkGenerator水印策略和 Kafka 连接操作者如何处理水印已弃用的 AssignerWithPeriodicWatermarks 和 ssignerWithPunctuatedWatermarks生成水印在本节中,您将了解Flink为处理事件时间戳和水印提供的API。有关事件时间、处理时间和摄取时间的介绍,请参阅introduct

2021-08-19 15:33:13 758

原创 flink DataStream API(二)执行模型

文章目录执行模式(批处理/流处理)什么时候可以/应该使用 BATCH 执行模式?配置BATCH执行模式Execution Behavior(执行行为)任务调度和网络shuffle流执行模式批执行模式状态后端/状态Order of Processing(处理顺序)Event Time / Watermarks(时间时间 / 水印)Processing Time(处理时间)故障恢复重要注意事项检查点执行模式(批处理/流处理)DataStream API 支持不同的运行时执行模式,您可以根据用例的要求和作业的

2021-08-18 18:54:52 344

原创 flink DataStream API(一)概述

文章目录flink DataStream API编程指南什么是DataStreamFlink程序的分解示例程序数据源Data SinksIterations(迭代器)Execution Parameters (执行参数)Fault Tolerance(容错)Controlling Latency(控制延迟)flink DataStream API编程指南flink中的DataStream程序是对数据流进行转换(过滤、更新状态、定义窗口、聚合)的常规程序。数据流最初是由各种数据源提供的(文件、消息队列、套

2021-08-18 15:05:52 378

原创 flink 什么是fink(三)flink操作

flink操作flink是一个框架,用于对有界流和无界流进行有状态的计算。由于许多流应用程序被设计为以最少的停机时间连续运行,因此流处理器必须提供出色的故障恢复,以及在应用程序运行时监控和维护应用程。Apache Flink 非常关注流处理的操作。在这里,我们解释 Flink 的故障恢复机制,并展示其管理和监控正在运行的应用程序的功能。7乘24小时运行你的应用程序机器和进程故障在分布式系统中无处不见。像 Flink 这样的分布式流处理器必须能够在故障中恢复,以便能够 24/7 全天候运行流应用程序。

2021-08-17 16:49:34 326

原创 flink 什么是fink(二)flink应用程序

flink应用程序flink是一个框架,用于在无界和有界数据流上进行有状态计算。Flink在不同的抽象级别上提供了多个api,并为常见用例提供了专用的库。流应用程序的构建块流处理框架可以构建和执行的应用程序类型由该框架控制流、状态和时间的来定义。下面,我们将描述这些流处理应用程序的构建块,并解释 Flink 处理它们的方法Streams很显然,流是流处理的基础。但是流可以具有不同的特性,这些特性会影响流处理的处理方式。flink是一个通用的处理框架,可以处理任何类型的数据流。有界流和无界流:流

2021-08-17 16:05:06 624

原创 flink 什么是fink(一)flink架构

文章目录flink架构处理无界流和有界流随处部署应用程序以任何规模运行应用程序利用内存性能flink架构flink是一个框架和分布式处理引擎,它被用于对无界和有界数据流进行有状态计算。flink被设计成可以运行在所有常见的集群环境中,并以内存速度和任何规模执行计算。处理无界流和有界流任何种类的数据都是作为事件流产生的。数据可以作为无界流和有界流进行出来。无界流:无界流是一个又开始但是没有定义结束的数据流。无界流必须实时的处理,不可能等待所有数据到达后再处理,这是不可能的,因为无界流是无限的,任

2021-08-16 18:13:25 729

原创 ElasticSearch 设置-配置(四)安全配置

文章目录配置ElasticSearch安全配置配置ElasticSearch安全配置有些设置是敏感的,仅依靠文件系统权限来保护它们的值是不够的。对于这个用例,Elasticsearch提供了一个密钥库和elasticsearch-keystore tool来管理密钥库中的设置。只有一些设置被设计为从密钥库读取,但是,密钥库不会阻止不支持的设置。将不支持的设置添加到密钥库会导致Elasticsearch无法启动。要查看密钥库中是否支持设置,请在设置引用中查找“安全”限定符。所有对 keystore

2021-08-16 16:13:42 714

原创 ElasticSearch 设置-配置(三)重要的ElasticSearch配置

文章目录配置ElasticSearch重要的ElasticSearch配置路径设置集群名字设置节点设置网络设置发现和集群形成设置discovery.seed_hostscluster.initial_master_nodes堆大小设置JVM堆转储路径设置GC 日志设置临时目录设置JVM 致命错误日志设置集群备份配置ElasticSearch重要的ElasticSearch配置Elasticsearch 只需很少的配置即可开始使用,但在生产中使用集群之前必须考虑许多事项:路径设置集群名称设置节点

2021-08-16 16:12:57 2286

原创 ElasticSearch 设置-配置(二)集群级分片分配和路由设置

文章目录配置ElasticSearch集群级分片分配和路由设置集群级分片分配设置分片重新平衡设置分片平衡启发式设置基于磁盘的分片分配设置配置ElasticSearch集群级分片分配和路由设置分片分配是将分片分配给节点的过程。这可能发生在初始恢复、副本分配、重新平衡或添加或删除节点时。master 的主要作用之一是决定将哪些分片分配给哪些节点,以及何时在节点之间移动分片以重新平衡集群。有许多设置可用于控制分片分配过程:Cluster-level shard allocation settings

2021-08-16 16:11:38 1955

空空如也

空空如也

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

TA关注的人

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