自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 watermark的作用

上游发过来的数据总是乱序的,有早有晚,然而有些动作是必须要明确的标记触发的,比如窗口计算。那么,此时就需要一个水位线来推进事件时间比如,系统最大时间-时间间隔表示系统允许最大乱序为 10 秒。Flink 在内部生成 Watermark 的公式为:Watermark = 当前观察到的最大事件时间 - 10 秒只要比这个 Watermark 更早的事件,就被认为是“已经延迟太久”的数据,可能被丢弃或作为迟到数据处理。

2025-07-16 23:41:46 336

原创 paimon partial-update实现

根据相同主键插入不同列的代码,或者加和的代码(因为aggregate engine也在使用该processor)分析UseOldExistingProcessor代码,期望能找到。paimon partial-update实现。核心在于ExistingProcessor,

2025-07-05 11:06:37 203

原创 paimon打包

一定要skiptest,否则容易失败。

2025-06-28 00:17:22 91

原创 paimon介绍

Paimon核心概念包括主键和分桶。主键用于记录唯一标识,支持去重、upsert/delete操作,同时也是桶内排序依据。分桶将数据划分为物理单元以优化查询性能,每个桶对应一个文件。分桶设计原则:优先使用高频查询列作为分桶键(默认主键);合理控制桶数(建议200MB-1GB/桶),避免小文件过多;高频upsert操作应以主键作为分桶键,确保同主键记录落入同一桶。

2025-06-25 08:40:02 217

原创 怎么设计数仓

数仓模型设计是数据仓库建设的核心环节,直接影响数据的可扩展性、查询性能和应用价值。数仓模型设计是持续优化的过程,建议每季度做一次架构健康度评估,结合业务变化进行迭代调整。:ODS层用范式建模,DWD/DWS层用维度建模,ADS层按需设计。将高频访问的小维度(如订单号)直接嵌入事实表减少关联。

2025-02-06 17:48:02 626

原创 假设检验的原理

统计学,ab实验

2025-01-24 16:57:57 174

原创 用户访问链路恢复

用户访问链路恢复

2024-05-28 00:24:38 235

原创 单例模式java

它的核心在于,单例模式可以保证一个类仅创建一个实例,并提供一个访问它的全局访问点。该模式有三个基本要点:一是这个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。由于在一个系统中,一个类经常会被使用在不同的地方,通过单例模式,我们可以避免多次创建多个实例,从而节约系统资源。

2024-05-22 17:23:05 563

原创 线程池核心参数

这跟我们之前通过CPU密集型的计算公式N+1所得出的结果差不多。等待队列大小:1.CPU密集型,将queueCapacity调大一些,减少线程上下文切换时间(因为核心线程池中的任务很快就能执行完,不妨等待一下)2.IO密集型,将queueCapacity调小一些,避免线程池不满但是任务却一直不执行的诡异现象等待队列的设置非常关键maximumPoolSize设置:主要根据系统资源。

2024-05-22 16:04:18 406

原创 mem_bak

interview bak

2024-05-09 17:10:40 1027

转载 RSA应用

rsa应用

2024-04-21 16:44:49 125

原创 反转单链表

反转单链表

2024-01-31 19:32:25 175

原创 合并有序链表

合并有序链表

2024-01-31 19:09:23 199

原创 找到丢失的数字

找到丢失的数字

2024-01-31 15:18:13 285

原创 移动0元素

算法面试题,移动0元素

2024-01-31 12:08:37 272

原创 查看springboot starter提供的jar包默认版本

3.最终文件为spring-boot-dependencies-版本.pom。2.在spring-boot-dependencies继续点版本号。1.找到parent的版本,ctrl点进去。

2024-01-08 21:19:00 861

原创 springboot aop详解

springboot aop详解

2023-10-15 16:33:31 378

原创 jwt使用

jwt+filter

2023-09-17 12:22:39 130

原创 回调函数和future对比

在异步编程中,主线程需要等待异步操作完成后才能获取结果。

2023-07-20 17:29:55 228

原创 application.yml文件是如何被解析的

ConfigurationProperties对应的handler是ConfigurationPropertiesBindingPostProcessor,该类实现了BeanPostProcessor接口,可以在对象初始化之前,对事例中的属性进行设置。spring定义了org.springframework.boot.autoconfigure.web.ServerProperties类来解析,该类使用@ConfigurationProperties注解,代码片段。

2023-07-08 14:44:24 360

原创 Java 8 lambda表达式和函数式编程

Lambda 表达式是 Java 8 中引入的一个新特性,它可以用更加简洁的语法来表示匿名函数。Lambda 表达式可以作为参数传递给方法,也可以作为返回值返回。或者其中,parameters表示 Lambda 表达式的参数列表,可以为空或者包含多个参数,多个参数之间使用逗号分隔。expression表示 Lambda 表达式的执行体,可以是一个表达式或者一个语句块。如果expression是一个表达式,则 Lambda 表达式会自动返回该表达式的值。如果expression是一个语句块,则需要使用。

2023-06-30 16:34:39 328

原创 springboot @Value注解是怎么被处理的

Value注解是Spring Framework中的一个注解,用于将配置文件中的属性值注入到Bean中。它可以用于注入简单类型的属性值、字符串、数组、集合等。在上面的代码中,使用@Value注解将配置文件中名为"my.property"的属性值注入到MyComponent类的属性myProperty中。在上面的代码中,使用@Value注解将配置文件中名为"my.array"的属性值注入到MyComponent类的属性myArray中。

2023-06-16 16:39:19 849

原创 stringbuilder和+拼接字符串区别

在Java中,字符串可以使用或者运算符进行拼接。是可变的,而String是不可变的。使用可以避免在每次拼接字符串时都创建一个新的字符串对象,从而提高性能。可以使用链式调用,比如,这样可以更加简洁地拼接字符串。使用运算符进行字符串拼接时,实际上会创建一个新的字符串对象,将原来的字符串和新的字符串拼接起来。这样会导致内存的浪费,尤其是在循环中进行字符串拼接时,会频繁地创建新的字符串对象,从而影响性能。可以设置容量,从而避免频繁地扩容。在创建对象时,可以指定容量,例如,这样可以避免在拼接字符串时频繁地扩容。

2023-06-15 15:45:18 1573

原创 mongo常用命令

其中,第一个参数{age: 30}表示查询条件,第二个参数{name: 1, age: 1, _id: 0}表示只返回name和age字段,而忽略_id字段。需要注意的是,_id字段默认会返回,如果不需要可以将其设置为0。该命令会返回users集合中的所有文档,但只包含name和age字段,而忽略_id字段。查找符合条件的某字段。

2023-06-15 11:19:08 248

原创 application.yml中的配置怎么写

application.yml中的配置怎么写

2023-06-01 21:45:11 736

翻译 MANIFEST.MF文件使用说明

JAR 文件支持广泛的功能,包括电子签名、版本控制、包封装等等。什么赋予 JAR 文件这种多样性?答案是 JAR 文件的 MANIFEST 文件。MANIFEST 是一个特殊的文件,可以包含有关打包在 JAR 文件中的文件的信息。通过调整 MANIFEST 包含的这些“元”信息,您可以使 JAR 文件具有各种用途。本课程将解释 MANIFEST 文件的内容,并向您展示如何处理它,包括以下基本功能的示例:1.了解默认 MANIFEST2.修改 MANIFEST 文件3.设置应用程序的入口点。

2023-05-15 22:23:26 4774

原创 java泛型备忘

在Java语言早期版本中,集合框架(比如List)中的元素是Object类型的,这就意味着可以向集合中存储任何对象。但是,使用Object类型会因为运行时类型错误和难以维护的代码而带来许多问题。因此,为了提高代码的类型安全性和可维护性,Java引入了泛型。Java泛型的设计目标之一是提高代码的可读性。泛型使用类型参数来替代原来集合框架中使用的Object类型。在这个例子中,names列表中的元素类型是Object。这意味着我们需要在运行时对列表中的元素进行类型转换。

2023-05-05 11:16:28 514

转载 缓存穿透问题的解决思路

缓存穿透 :缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。

2023-05-05 10:59:07 154

原创 基于redis和threadlocal实现登录状态校验和拦截

基于redis和threadlocal实现登录状态校验和拦截

2023-05-04 14:26:37 1004

原创 cookie和session区别

cookie和session区别

2023-04-24 14:57:04 791

原创 springboot依赖注入的三种方式

springboot依赖注入的三种方式

2023-04-17 19:27:34 3884

原创 使用sharding-jdbc来实现读写分离

使用sharding-jdbc来实现读写分离

2023-03-26 14:56:07 111

原创 利用 Docker 搭建主从服务器

docker搭建mysql主从复制

2023-03-26 00:26:23 415

原创 代理模式:代理在RPC、缓存、监控等场景中的应用

前面几节,我们学习了设计模式中的创建型模式。创建型模式主要解决对象的创建问题,封装复杂的创建过程,解耦对象的创建代码和使用代码。其中,单例模式用来创建全局唯一的对象。工厂模式用来创建不同但是相关类型的对象(继承同一父类或者接口的一组子类),由给定的参数来决定创建哪种类型的对象。建造者模式是用来创建复杂对象,可以通过设置不同的可选参数,“定制化”地创建不同的对象。原型模式针对创建成本比较大的对象,利用对已有对象进行复制的方式进行创建,以达到节省创建时间的目的。

2023-03-16 23:55:40 506

原创 自动拼接sql的原理

自动拼接sql原理

2023-02-21 10:25:50 342

原创 技术方案模板

技术方案模板

2023-02-13 17:07:10 843

原创 前端常用案例代码-全页面

前端常用案例

2023-02-12 16:47:32 164

转载 外边距合并

外边距合并

2023-02-12 00:09:59 88

原创 前端常用案例代码-单个知识点

前端常用代码

2023-02-11 22:08:22 110

原创 css行内块元素垂直居中

css行内块元素垂直居中

2023-02-08 23:23:37 782

空空如也

空空如也

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

TA关注的人

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