自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JH_Zhai的博客

破帽遮颜过闹市,漏船载酒泛中流。

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

原创 ?SpringBoot

Spring Boot Starter 主要通过起步依赖和自动配置机制来简化项目的构建和配置过程。

2025-03-22 23:21:22 116

原创 【算法】快排详解

英国计算机科学家Tony Hoare在1960年为了解决计算机上的排序问题,提出了快速排序的算法,最初是为了在英国的英尔兰电子公司(ELLIOTT Brothers)的快速硬件上实现高效的排序算法。上述为快速排序递归实现的主框架,发现与二叉树前序遍历规则非常像,在写递归框架时想想二叉树前序遍历规则即可快速写出来,后序只需分析如何按照基准值来对区间中数据进行划分的方式即可。快排利用的分治的编程思想 ,快速排序的主要思想是分治法,将一个大问题分割成小问题,解决小问题后再合并它们的结果。

2024-12-09 00:12:57 385

原创 Hbase入门

这个逻辑结构只是方便我们理解数据,但是在存储上并不是这样的结构。逻辑结构上的每一列的值,都要使用一行去存储。

2024-11-12 10:22:40 526

原创 RocksDB入门

SSTable(Sorted String Table)是一个通常放在磁盘上的,排序的字符串表, 用来高效存储大量的键值对数据, 同时搭配上优化实现IO操作的高吞吐量.block是SSTable里面存储信息的一个单元,主要由数据区record和restarts组成,

2024-11-11 21:54:40 516

原创 NoETL

相对于ETL先生产后消费的模式。NoETL是一种直接消费,是否预计算、如何预计算由一个系统决定。

2024-11-10 17:41:49 451

原创 Headless BI

Headless BI 是由 Ankur Goyal 和 Alana Anderson 两位硅谷投资人在这篇博客中提出了 的概念指标只需定义一次,就可以统一地在仪表盘,以及自动化工具中使用”为什么叫Headless个人用大白话诠释下对 Headless BI 的理解:Headless BI 要实现的是砍掉 BI 的“头”(报表可视化),只保留指标层,通过提供各类消费接口,满足企业内丰富的消费场景;

2024-11-10 17:05:26 645

原创 DDD中的一些基础概念 & 观点摘录

软件系统的复杂性主要体现在三个方面。

2024-11-05 23:00:35 919

原创 什么是空间放大、读取放大、写入放大

导致空间放大的因素主要是已删除或更新的键仍占用磁盘空间。写入放大(Write amplification) 是指写入存储的字节数与写入数据库的字节数之间的比率,量化了存储系统为适应用户写操作而产生的额外I/O操作。在一次读取操作中,RocksDB需要搜索多个SST文件来查找特定的键值,访问SST文件数量会导致读取放大,读取放大的增加会影响系统的读取性能。压缩是合并多个SSTable并优化其存储的过程,包括将多个SSTable的数据合并和重写到数量较少的新SSTable中,消除冗余数据,提高读写性能。

2024-11-05 14:06:29 579

原创 什么是数据编织

What Is Data Fabric?Data fabric is a unified data architecture that connects disparate data sources, simplifying access and management while ensuring consistency and security across the entire data landscape.The data fabric architecture style has three cor

2024-10-08 20:01:33 956

原创 Java中类的初始化和实例化区别

是完成程序执行前的准备工作。在这个阶段,静态的(变量,方法,代码块)会被执行。同时在会开辟一块存储空间用来存放静态的数据。初始化只在类加载的时候执行一次。

2024-08-26 14:10:19 474

原创 Spring 解决bean的循环依赖

重新考虑系统的架构,采用合适的设计模式、解耦方式和依赖注入机制,可以帮助解决或避免循环依赖带来的问题。其实,Spring容器中单例(singleton)的场景是支持循环依赖的,Spring使用了三级缓存和提前曝光(early exposure)的机制来处理循环依赖问题。死锁和无限递归:当循环依赖中的对象在创建过程中相互等待对方完成创建时,可能会导致死锁或无限递归的情况发生。在一个循环依赖链中,修改一个类可能会影响到其他所有相关的类,增加了代码的脆弱性。这可能导致错误的结果或意外的行为。

2024-08-17 00:11:56 606

原创 使用Spring来管理bean的优点

使用Spring来管理Bean可以提供依赖注入、松耦合、生命周期管理和AOP支持等优势,减少了开发人员的工作量,提高了代码的可维护性和可测试性。相比之下,自己手动管理Bean存在代码冗余、耦合性高、难以管理复杂依赖关系以及缺乏一致性和灵活性等缺点。版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.youkuaiyun.com/qq_46130027/article/details/131602559。

2024-08-16 23:14:48 359

原创 什么是Bean

在 Spring 中,构成应用程序主干并由 Spring IoC 容器管理的对象称为 bean。bean 是由Spring IoC。Bean 是 Spring 框架中最核心的两个概念之一(另一个是面向切面编程 AOP)容器实例化、组装和管理的对象。

2024-08-16 23:12:08 390

原创 过滤器和拦截器

拦截器可以获取ioc中的service bean实现业务逻辑,拦截器可以获取ioc中的service bean实现业务逻辑,拦截器可以获取ioc中的service bean实现业务逻辑,⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。①拦截器是基于java的反射机制的,而过滤器是基于函数回调。

2024-08-14 21:54:20 405

原创 【转载】系统负载

负载是服务器运行是否正常的一个风向标,当服务器软件异常时,大部分都会排查线上服务器的负载状况。那么到底什么是负载呢?在Linux内核调度中,负载的评估指标不是CPU使用率,而是进程处于runnable的平均时间。Linux内核调度包含调度实体负载、CPU负载和系统负载等3个级别的负载计算方式的。其中CPU负载是用来体现当前CPU的工作任务loading情况,和CPU繁忙程度的,其主要通过统计CPU rq上task处于runnable的平均时间。而我们在服务治理中经常提到的负载实际指的是系统负载。

2024-05-25 18:37:38 610

原创 RuntimeException 和 Exception区别 (比如事务管理中)

在 Spring 框架中,RuntimeException 和 Exception 的区别主要体现在异常处理和事务管理的方面。

2024-05-22 12:14:04 777

原创 logback 配置

【代码】logback 配置。

2024-05-18 21:14:38 326

原创 【产品调研】现代数据栈产品

百科 https://baike.baidu.com/item/DENODO%20SL/63615915?官网 https://www.denodo.com.cn/

2024-04-06 23:42:25 368

原创 【阅读笔记】京东数坊

http://5th.tma999.com/uploads/soft/180923/1-1P923153J3.pdf

2024-04-06 22:32:27 338

原创 【阅读笔记】指标平台加速零售数字化转型--Kyligence Zen 智能一站式指标平台

https://mp.weixin.qq.com/s/doA0q-2hmqhDBpFEQtHWNQ

2024-04-06 22:28:18 136

原创 【名词概念】Headless BI

在理解Headless BI之前,我们需要先理解一下什么叫做Headless?Headless的概念最初的来源与内容管理平台有关,一般是指内容管理平台中的一些应用不提供可视化界面,只是通过API方式把内容以数据的方式给前端。从这里,可以理解Headless实际上是把GUI部分跟数据部分进行了分离,这实际上比较符合现在技术的一种发展趋势,尤其是数据要去在不同的环境中去显示的时候。实际上就是把BI的数据指标层和展示层做了分离,把BI提供数据的部分以数据服务的方式提供服务,与可视化部分进行分离。

2024-04-06 22:06:56 558

原创 Apache Hudi Compaction

https://medium.com/@simpsons/apache-hudi-compaction-6e6383790234While serving the read query(snapshot read), for each file group, records in base file and all its constituent log files are merged together and served. And hence the read latency for MOR snap

2024-04-03 15:30:31 254

原创 第三代指标平台

传统的第一代指标平台注重指标口径登记与管理、而第二代依赖 ETL 开发。Aloudata CAN 作为第三代指标平台,采用了基于明细语义数据模型定义指标的方式,提供了“语义化”和“自动化”两大核心能力,从根本上解决了传统指标平台的局限性。

2024-02-29 10:05:23 410

原创 【Hudi】核心概念

大数据新风口:Hudi数据湖(尚硅谷&Apache Hudi联合出品)

2024-02-27 22:09:18 470

原创 【Hudi】调优指南

1 并行度2 Off-heap (堆外)内存3 Spark内存4 调整文件大小5 时间序列/日志数据6 GC调优7 OutOfMemory

2024-02-27 19:42:38 307

原创 【Hudi】并发控制

Hudi的表操作,如压缩、清理、提交,hudi会利用多版本并发控制来提供多个表操作写入和查询之间的快照隔离。使用MVCC这种模型,Hudi支持并发任意数量的操作作业,并保证不会发生任何冲突。Hudi默认这种模型。

2024-02-27 19:36:39 825

原创 【Hudi】MOR建表会额外生成rt和ro后缀两张表

当hudi表按照MOR格式新建以后,会默认生成3个表,如新建 hudi_os_dev表,则会生成。(1)MOR,写入快,适用于源端数据快速接入ODS层,也就是常说的贴源层的场景;(2)COW,读取快,适用于从贴源层取数据,经过处理后在存储至标准层的场景;(1)Merge-On-Read(MOR-读时合并);(2)Copy-On-Write(COW-写时复制);最后,对MOR方式存储时产生的三种格式进行简要总结。首先,Hudi表可以支持多种数据类型,如。

2024-02-27 10:17:31 1305

原创 【Hudi】索引

假设在数据分布最糟糕的情况下,需要被更新的 100 条数据分布在 100 个文件中。在有了索引之后,更新的数据可以快速被定位到对应的 File Group,以下面的官方的示意图为例,在传统 Hive 数仓的场景下,如果需要对一个分区数据做更新,整个更新过程会涉及三个很重的操作。假设一个 Hive 分区存在 100,000 条记录,分布在 400 个文件中,我们需要更新其中的 100 条数据。索引,其依赖布隆过滤器来判断记录存在与否,当记录存在时,会读取实际文件进行二次判断,以便修正布隆过滤器带来的误差。

2024-02-22 21:02:50 512

原创 【Hudi】Upsert原理

3.数据去重:一批增量数据中可能会有重复的数据,Hudi会根据主键对数据进行去重避免重复数据写入Hudi 表。4.数据fileId位置信息获取:在修改记录中可以根据索引获取当前记录所属文件的fileid,在数据合并时需要知道数据update操作向那个fileId文件写入新的快照文件。8.hive元数据同步:hive 的元素数据同步这个步骤需要配置非必需操作,主要是对于hive 和presto 等查询引擎,需要依赖hive 元数据才能进行查询,所以hive元数据同步就是构造外表提供查询。

2024-02-20 19:23:27 556

原创 【Hudi】设置复合主键

【代码】【Hudi】设置复合主键。

2024-02-18 19:11:34 574

原创 【数据仓库】主题域和数据域

举个更形象点的例子,建设数仓就像饭店做菜一样,数仓在面向业务系统数据根据其特点划分出数据域,如同厨房根据采购的食材特点将它们摆放在不同货架区,如肉禽区、果蔬区、调味区等。而数仓在面向业务分析根据其需求划分出主题域,如同饭店根据不同食客群体的口味需求将食材做成了不同菜系,如江浙菜、鲁菜、川菜等。对于数据仓库的定义是这样的,它是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。

2024-02-18 14:43:55 938

原创 【整理】指标体系

这幅图上面灵活分析场景,下面是周期建模场景,不同场景会配套出不同栈。

2024-02-18 11:25:15 183

原创 【Hudi】小文件问题

https://blog.youkuaiyun.com/u013411339/article/details/123287899

2024-02-07 15:49:05 177

原创 【Hudi】参数

官方文档 https://hudi.apache.org/docs/configurations/#FLINK_SQL。

2024-02-07 15:42:59 332

原创 【Hudi】Hoodie是什么?

It was named Hoodie initially and when officially entering apache, it was renamed to Hudi. Both can be used interchangeably. Most code references use Hoodie, but in general for other purposes, we use Hudi.

2024-02-05 15:30:52 145

原创 【Hudi】Copy-on-Write(COW)和Merge-on-Read(MOR)

这个过程对所有的线程都是透明的,也就是说AC两个线程使用的还是原来的内存数据,当线程B将数据更改后,系统将数据指针移向修改后的数据段上,这样在所有线程都不知情的情况下完成了数据的更新操作。每次新数据的写入,都会基于当前的数据文件产生一个带有提交时间戳的新副本文件,新数据会插入到当前的新副本文件中,直到整个操作没有完成前,所有的查询操作都不会看到这个新的文件副本。在新的副本上进行写入操作,这种方式带来的问题就是在每次数据写入时,都需要重写整列数据文件,哪怕只有一个字节的数据写入(也就是所谓的写放大)。

2024-02-05 15:29:21 953

原创 SQL Parser

ChatGPT 生成case。

2024-02-04 18:59:08 536

原创 【Java】JVM垃圾回收

垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止内存泄露。有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。Java 语言出来之前,大家都在拼命的写 C 或者 C++ 的程序,而此时存在一个很大的矛盾,C++ 等语言创建对象要不断的去开辟空间,不用的时候又需要不断的去释放控件,既要写构造函数,又要写析构函数,很多时候都在重复的 allocated,然后不停的析构。

2024-01-18 13:26:13 980 1

原创 【协议】时间语法Jakarta Expression Language

Jakarta Expression Language(简称JEXL)是一种简单、动态的表达式语言,用于在Java应用程序中执行动态表达式。它是Apache Jakarta项目的一部分,旨在提供一种灵活、可扩展的表达式解析和求值机制。JEXL在许多Java应用程序中被广泛使用,特别是在需要动态生成和执行表达式的场景中。JEXL提供了一种类似于JavaScript或其他脚本语言的语法,可以在Java应用程序中进行动态表达式的求值。它支持基本的算术运算、逻辑运算、条件判断、循环控制等常见的表达式操作。

2023-12-26 15:38:48 619

原创 【项目管理】

作为一个协助开发团队其他人角色,哪部分有问题直接去问

2023-12-25 11:45:25 445

空空如也

空空如也

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

TA关注的人

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