自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM中的运行时常量池详解

保存编译时确定的常量(数字、字符串、方法引用等)。在程序运行时,把这些符号解析成实际的内存地址或数据。确保代码里的每一部分都能找到它需要的东西,正确执行。

2025-03-21 16:35:07 857

原创 完整的类在JVM中的生命周期详解

在。

2025-03-21 15:41:53 1334

原创 Java 中的引导类加载器(Bootstrap ClassLoader) 详解

原生实现:由 C/C++ 编写,非 Java 类。核心职责:加载 JVM 运行所需的核心类库。委托模型:作为类加载器层次结构的顶端,确保类加载的顺序和唯一性。不可见性:在 Java 中表现为null,无法直接操作。从底层看,它是 JVM 启动的关键组件;从源代码看,它通过 JNI 与 Java 的体系协作,共同完成类的动态加载。理解引导类加载器不仅有助于深入掌握 JVM 内部机制,还能更好地调试类加载相关问题(如上面的内容不太易于理解,因此我下面用更加通俗易懂的解释,方便读者理解。

2025-03-19 15:34:58 894

原创 双机算法:主备、主主 对比

怎么实现:ZooKeeper集群有3个或更多节点,只有一个Leader写数据,其他Follower同步数据并处理读请求。为什么:分布式系统需要一个“指挥官”协调,避免混乱。原理:用Zab协议(类似Paxos),确保写操作顺序一致,故障时快速选新Leader。特性主备 (ZooKeeper)主主 (Memcached)节点角色1主多备全主0备数据同步主节点实时同步到备无同步,数据分片一致性强一致性弱一致性性能主节点瓶颈高并发,线性扩展故障处理选举切换,短暂停机局部失效,无切换复杂度。

2025-03-18 15:14:03 861

原创 主备(主从)方案 详解

特性冷备温备热备运行状态备份系统关机备份系统待机备份系统运行数据同步定期手动定期自动实时自动切换时间几小时到几天几分钟到几小时几秒到毫秒成本低中高复杂度简单中等复杂数据丢失多(几小时-几天)少(几小时)几乎无。

2025-03-18 14:48:27 863

原创 任务分配器做负载均衡方案对比和选择

性能优先:F5 > LVS > HAProxy ≈ Nginx > 交换机(仅 L2/L3)。成本优先:Nginx ≈ HAProxy > LVS > 交换机 > F5。易维护性:Nginx > HAProxy > F5 ≈ 交换机 > LVS。高可用性:F5 > 交换机 ≈ LVS > HAProxy ≈ Nginx。选择时需根据业务规模、技术团队能力、预算和具体需求(如第 4 层还是第 7 层)综合权衡。小型项目从软件方案起步,中大型项目可逐步引入 LVS 或硬件设备以满足增长需求。

2025-03-17 11:11:47 848

原创 数据中台联接方式:以对象(主体)为中心联接

Users:存储用户信息。Orders:存储订单信息,关联到用户。-- 创建用户表UserID INT PRIMARY KEY, -- 用户IDUserName VARCHAR(100), -- 用户姓名Email VARCHAR(100), -- 用户邮箱RegisterDate TIMESTAMP -- 注册日期-- 创建订单表OrderID INT PRIMARY KEY, -- 订单IDUserID INT, -- 用户ID。

2025-01-23 14:16:58 791

原创 CAP原则中的P:分区容错性(Partition tolerance)

一致性(Consistency):所有节点的数据始终保持一致。可用性(Availability):系统始终能够响应请求,无论请求是否成功。分区容错性(Partition Tolerance):系统能够在部分机器故障、网络故障、机房停电等异常情况下继续运行。CAP 定理的核心内容是,在一个分布式系统中,分区容错性(P)和一致性(C)可用性(A)三者之间是相互制约的。也就是说,如果发生网络分区,系统只能选择保证一致性或可用性,但不能同时保证这两者。

2025-01-23 11:26:43 1160

原创 数据中台联接方式:以业务流(事件)为中心联接

订单创建事件(OrderCreatedEvent)当用户下单时,系统会生成一个订单创建事件。OrderID(订单ID),UserID(用户ID),(订单金额),(订单状态,初始为“未支付”)。支付完成事件(PaymentCompletedEvent)当用户完成支付时,系统会生成一个支付完成事件。OrderID(订单ID),(支付金额),(支付时间)。事件驱动:订单创建事件触发了订单的初始状态,而支付完成事件通过匹配支付金额和订单金额,更新了订单的状态为“已支付”。联接方式:我们通过SQL的。

2025-01-23 10:56:53 847

原创 可扩展性设计架构模式——开闭原则

在架构设计中,遵循开闭原则(Open/ClosedPrinciple,OCP)是实现可扩展性的关键。这个原则指导我们设计系统时,应使其对新增功能开放,而对现有代码的修改封闭。这样,当系统需求变化或需要添加新功能时,我们可以通过添加新的代码模块而不是修改现有代码来实现,从而减少了对现有系统稳定性和已有功能的风险。开闭原则基于抽象构建架构。系统中稳定的部分(例如数据模型、核心逻辑)应该通过抽象接口或者抽象类来定义,而变化的部分(例如具体实现、附加功能)则通过具体的实现类来扩展。这种方式使得核心架构保持稳定,

2025-01-22 11:00:26 491

原创 大数据和人工智能融合展望

大数据技术和人工智能(AI)的融合是科技发展的方向,其实很多年前就已经提出来并在不断前行,未来几年将会因为算力的进步和AI技术的飞速发展继续加速。

2025-01-21 17:23:30 990

原创 数据标准化——数据字典发布

数据字典发布是数据标准化的关键环节,为企业的数据治理、共享和使用提供了基础支持。从底层原理看,它通过标准化描述减少认知差异,促进数据资产化和治理闭环的实现。通过系统化的步骤,如内容规范、收集整理、发布与动态维护,企业能够确保数据字典的高效发布和持续利用,为业务决策和开发效率提供强有力的保障。

2025-01-17 17:23:05 1076

原创 数据入湖的前提条件:数据标准 之 元数据注册

是数据入湖的核心步骤,通过系统化管理元数据,确保数据的可发现性、可理解性、可追溯性和可治理性。它既是数据治理的基础设施,也是数据资产化的重要环节。只有完成元数据注册,才能真正实现数据湖中数据的高效管理和价值挖掘。元数据是描述数据的“数据”,包括数据的结构、来源、用途等关键信息。下面从底层原理、操作步骤及背后原因进行全面解析。记录和管理数据的元信息(Metadata),为数据的理解、发现、管理、使用和治理提供依据。是数据入湖的重要前提条件之一,其核心目的是。

2025-01-17 16:25:01 1034

原创 数据入湖的前提条件:数据标准 之 数据质量评估

是数据入湖前必须满足的核心标准之一,其目的是确保数据的准确性、完整性、一致性和可靠性。通过系统化评估,能够最大限度地提升数据的价值,降低数据问题对业务决策的负面影响。下面从底层原理、详细步骤及背后原因进行全面解析。数据质量评估是数据入湖前的重要保障,确保数据的真实性、完整性和可用性。通过质量评估,企业能够优化数据治理流程,提升数据的业务价值,

2025-01-17 16:15:28 952

原创 数据入湖的前提条件:数据标准 之 明确数据源

是数据入湖的重要前提,通过记录数据来源、生成逻辑、责任人和合法性,确保数据的真实性、可追溯性和合规性。它不仅是数据治理的基础,也是数据安全和高效管理的核心环节,能够有效避免“数据沼泽”、提升数据价值。确保数据的来源合法、清晰、可追溯,为数据的可靠性、完整性和可用性提供基础保障。下面从底层原理、具体操作以及其背后原因进行详细解析。是数据入湖的重要前提条件之一,其核心目的是。

2025-01-16 16:03:46 980

原创 数据入湖的前提条件:数据标准 之 定义数据密级

是数据入湖前必须完成的步骤,它确保了数据的安全性、合规性和高效管理。通过科学的密级分类、清晰的判定标准和有效的保护策略,企业可以在保护数据的同时,最大限度地支持业务需求,平衡安全与效率。是对数据敏感性和重要性的分类,明确数据的保密程度和使用权限。它是确保数据安全、合规、合理使用的关键环节。下面从底层原理层面逐步解析数据密级定义的原因及其详细实现步骤。

2025-01-16 15:27:42 652

原创 数据入湖的前提条件:数据标准 之 发布数据标准

在数据入湖(Data Ingestion)过程中,“发布数据标准”是确保数据治理规范化、数据质量一致性以及后续数据可用性的核心环节。从底层原理来看,数据标准的发布涉及定义、审核、发布和执行多个阶段,贯穿技术、业务和治理逻辑。总结而言,发布数据标准是数据入湖治理中不可或缺的环节,其从定义、发布到执行的全过程,构建了确保数据质量与规范性的系统性保障。数据标准是关于数据属性、结构、质量、语义等方面的规范,它是数据入湖的基础条件,发布数据标准不仅是定义标准,还涉及审核、发布和监督执行的流程。

2025-01-16 12:10:37 990

原创 数据入湖的前提条件:数据标准 之 明确数据Owner

明确数据Owner,就像给每一块“田地”分配一个具体的“农夫”。这个农夫负责田地的种植、维护、收获。如果田地没人管理,它可能荒废;如果有人管理,它就会不断产生价值。通过明确数据Owner,公司可以清楚知道数据的责任人是谁,提升数据质量,确保安全合规,最终让数据更高效地服务于业务需求。

2025-01-14 17:22:39 1236

原创 领域驱动设计(Domain-Driven Design,DDD)详解

领域驱动设计(Domain-Driven Design,简称DDD)是一种软件开发方法论,一种软件设计方法,帮助软件开发团队准确理解复杂业务需求,并创建反映这些需求的高效、可维护的软件系统。它强调的是基于业务领域的复杂性进行建模,并通过语言和实现这些模型的方法促进软件项目和业务专家之间的沟通。这种方法论特别适用于那些业务规则复杂、业务逻辑多变的环境。此设计方法由Eric Evans在其2004年的书《领域驱动设计:软件核心复杂性应对之道》中首次提出。

2025-01-10 16:45:28 1430

原创 领域驱动设计(DDD)——限界上下文(Bounded Context)详解

每个街区都有自己的规则和运作方式(比如商业区禁止夜间施工,住宅区保持安静),虽然它们同属于一个城市,但它们的行为是互相独立的。,帮助我们将复杂的业务系统划分成多个相对独立的上下文,每个上下文内都有自己独立的模型、规则和语义。这样,每个上下文的模型都是独立的,能够根据上下文的需求量身定制。限界上下文的一个重要原则是:每个上下文都应该是自治的,即使一个上下文失效,也不会影响到其他上下文的正常运行。通过限界上下文,我们能够构建出模块化、易维护且高效协作的业务系统,是 DDD 中解决复杂系统问题的重要策略。

2025-01-10 16:43:25 1202

原创 领域驱动设计(DDD)——实体(Entity)和值对象(Value Object) 详解和示例

例如,一个用户的 ID 是其身份的唯一标识,即使姓名或其他信息发生变化,用户的身份不变。值对象通常用来表示实体的属性或某些业务概念,帮助实体表达更复杂的业务逻辑,如地址(Address)、货币金额(Money)等。理解实体与值对象的区别和正确使用场景,可以帮助我们设计更清晰的领域模型,减少复杂度,增强代码的可维护性和可读性。即使实体的其他属性值发生变化,只要它的唯一标识(ID)保持不变,它仍然是同一个实体。值对象没有唯一标识,它通过属性值来判断是否相同(两个值对象如果属性值相同,就认为它们是相等的)。

2025-01-10 15:57:06 968

原创 领域驱动设计(DDD)——聚合 详解和示例

聚合根是聚合的入口点,对聚合内的所有对象负责。聚合帮助我们定义哪些对象需要一起变化、被一起操作,同时帮助我们控制领域模型的复杂性。

2025-01-09 15:51:50 765

原创 领域驱动设计(DDD)——仓储(Repository)详解和示例

*** 订单(Order):这是领域模型中的聚合根。* 聚合根是领域模型中的一个重要概念,表示领域的一部分及其边界。*/// 订单的唯一标识// 用户 ID// 订单总金额// 订单创建时间// Getter 和 Setter 方法/*** 订单仓储接口(Order Repository)。* 定义了对订单领域对象的基本操作。*//*** 保存订单。* @param order 要保存的订单对象*//*** 根据订单 ID 查找订单。

2025-01-09 12:29:57 1077

原创 领域驱动设计——触发领域事件 详解和示例

在领域驱动设计(DDD, Domain-Driven Design)中,“触发领域事件”是一个非常重要的概念。它涉及到如何在业务逻辑中表达和传播重要的状态变化,并实现系统中不同领域对象或模块之间的解耦与协作。下面具体解释这个概念。领域事件的定义领域事件是指在领域模型中发生的重要业务事件。这些事件是对领域中某些有意义的行为或状态变化的抽象描述,通常使用领域语言来表达。订单创建成功库存减少用户注册完成这些事件通常表示的是“已经发生的事情”,而不是未来要做的事情。它们是过去式的。触发领域事件的含义。

2025-01-09 12:09:34 709

原创 可扩展性设计架构模式——关注未来需求的思想

在架构设计中,可扩展性是一个至关重要的考虑因素。设计一个可扩展的系统意味着这个系统能够适应未来增长的需求,包括处理更大的数据量、支持更多的用户,或者增加新的功能而不需要重构整个系统。在底层原理层面上,实现可扩展性通常涉及到几个关键方面:模块化设计、数据管理、资源管理和系统集成。

2025-01-06 17:17:14 1353

原创 特征工程——高维组合特征的处理

当原始特征数量很大时,可能需要探索指数级的组合空间,这会带来计算复杂度和存储资源的挑战。高维组合特征的处理是特征工程的重要环节,尤其是在处理复杂数据关系时,通过构造交互特征或高阶组合特征可以提高模型性能。在高维数据中,不可能对所有特征进行盲目组合,通常需要结合领域知识或统计方法来选择重要特征进行交互。以下将从底层原理到代码实现详细解析高维组合特征的处理,尽量通俗易懂,同时全面覆盖相关技术细节。通过模型的重要性分数(如树模型的特征重要性)筛选组合特征。生成所有特征的高阶组合和交互特征。

2025-01-03 16:01:20 990

原创 实时数仓与离线数仓的全面对比

特性实时数仓离线数仓数据处理模式流式处理、增量更新批处理、定时更新延迟要求毫秒级到秒级数分钟到数小时技术栈Spark、Hive、Hadoop、关系型数据库资源消耗高资源消耗、高计算需求计算资源更集中,资源可预测运维难度高,实时监控、容错处理较低,周期性任务,运维相对简单使用场景实时监控、即时分析、实时推荐历史数据分析、业务报表、数据挖掘成本高(硬件、软件、运维复杂)低(资源消耗可控,成本可优化)

2025-01-03 11:34:37 904

原创 常见的架构模式 简介

不同的架构模式适用于不同场景,没有绝对的优劣。系统规模:单体架构适合小型项目,微服务适合大型系统。性能需求:事件驱动、CQRS 更适合高性能场景。复杂性:分层架构适合简单系统,DDD 适合复杂业务。团队能力:简单模式适合经验不足的团队,复杂模式需要更多经验。如果有具体场景,我可以帮助推荐合适的架构模式。

2024-12-31 11:39:38 1037

原创 可扩展性设计架构模式——分层架构

分层架构是一种软件设计模式,它将应用程序分割为互相独立的层次,每层都有其特定的职责。这些层次通常包括表示层、业务逻辑层、持久层和数据访问层。通过这种方式,每个层次都可以独立开发、测试和维护。在目录下创建一个新的package叫model,并创建一个Java类Product。@Entity // 表示这是一个与数据库表映射的实体类@Id // 表示这个字段是表的主键@GeneratedValue(strategy = GenerationType.AUTO) // 自动生成主键值。

2024-12-31 10:56:37 1180

原创 可扩展性设计架构模式——事件驱动架构

原理:在事件驱动架构中,一个事件代表了一个明确的状态变化或业务行为。定义事件是确定哪些动作或变化应当被系统捕捉并触发后续流程的关键步骤。操作步骤识别事件源:分析业务流程,找出需要触发通知的行为,例如订单的创建、支付和发货。定义事件结构:为每个事件定义必要的信息结构,如订单号、客户ID、商品详情等。事件驱动架构通过使用事件作为主要的通信方式,实现系统组件的高度解耦和动态互动。这种架构提供了高度的可扩展性和灵活性,特别适用于处理异步数据、实时响应以及构建微服务架构的系统。

2024-12-30 17:06:15 1230

原创 Hive on Spark 离线数据仓库中拉链表全流程使用

的离线数据仓库中装载拉链表(SCD,Slowly Changing Dimension)通常是为了解决维度表中的历史变化跟踪问题(主要是 SCD2 类型的拉链表)。如果维度表字段很多,最好对字段变化生成哈希值(MD5/SHA)比较,避免逐字段检查。使用高效的存储格式(如 ORC 或 Parquet),提升 I/O 性能。每次装载增量时,仅更新受影响的记录,减少对拉链表的全表扫描。对于首次装载,直接从原始维度表全量加载数据,设置初始的。为拉链表设计按时间分区(如。将增量数据与当前的拉链表。

2024-12-27 17:30:06 1222

原创 随机游走(Random Walk)

随机游走是一种强大的工具,通过简单的随机过程揭示复杂网络的结构和特性。它的实现简单,但可以扩展到包括机器学习在内的多种复杂算法中,为理解和分析网络提供了一种直观而有效的方法。

2024-12-27 15:41:25 1582

原创 DeepWalk 原理详解

DeepWalk 是一种流行的图嵌入方法,用于学习图结构数据中节点的低维表示。它通过将图的节点视作序列数据,利用自然语言处理中的技术(类似于word2vec算法)来捕捉节点间的关系,可以帮助我们理解和利用图中节点的关系。这种方法在社交网络分析、推荐系统、图分类等领域非常有用。在图中,节点可以是人、地点、物品等,而边表示它们之间的关系,例如朋友关系、道路连接等。DeepWalk是通过随机游走在图中采样节点序列,并使用类似word2vec的方法学习这些序列中节点的嵌入向量。

2024-12-24 16:14:24 1311

原创 FAISS进行高效的向量检索 原理详解

FAISS(Facebook AI Similarity Search)是由Facebook研发的一个用于高效相似性搜索和密集向量聚类的库。它特别适用于处理大规模向量数据库和提供快速的近邻搜索。FAISS高效的原因在于其专门的索引结构和优化的搜索算法。以下将详细解释FAISS的底层原理和源代码层面的内容。

2024-12-24 15:34:56 827

原创 迁移学习 详解及应用示例

迁移学习是一种机器学习技术,其核心思想是利用在一个任务上已经学到的知识(源任务:任务已经有一个训练好的模型,然后我们将这个模型的某些部分或知识迁移到一个新的但相关的“目标任务”上。)来帮助解决另一个相关但不同的任务。这种方法在深度学习领域尤其有用,因为它可以显著减少模型训练所需的数据量和计算资源,同时提高模型在新任务上的性能。我们将在预训练的基础模型上添加自定义层,以适应我们的猫狗分类任务。这里添加一个扁平化层(Flatten)和一个密集层(Dense),最后是一个具有两个输出(猫和狗)的分类层。

2024-12-24 15:28:54 1799

原创 Flink 的并行度配置低于Kafka 分区数会出现的问题

当 Flink 的并行度低于 Kafka 分区数时,由于单线程处理多分区、负载不均和水印生成延迟等问题,会导致吞吐量下降、延迟增加甚至作业停滞。从底层原理看,这是因为 Flink 的。

2024-12-23 17:30:42 1166 1

原创 在 Spring Boot 的 MVC 框架中 路径匹配的实现 详解

在 Spring Boot 的 MVC 框架中,路径匹配是由处理的。它负责将传入的 HTTP 请求映射到合适的控制器方法上。

2024-12-23 15:47:03 1366

原创 JOIN 后面使用on过滤和WHERE 条件过滤的区别

在 SQL 中,LEFT JOIN和WHERE条件的使用方式会直接影响查询结果。

2024-12-23 15:37:47 987

原创 架构师需要具备的能力

一个优秀的软件开发者或架构师,需要具备扎实的技术能力系统性思维良好的沟通能力和持续学习的态度。可维护性、可扩展性、可重用性等这些具体指标,是在这些品质的基础上实现的结果。通过不断实践、反思和学习,开发者和架构师才能在快速变化的技术领域中脱颖而出。

2024-12-20 15:53:50 940

原创 系统设计:微服务架构的可扩展性系统 详解

微服务是一种分布式架构模式,将系统分解为多个小型、独立的服务,每个服务都实现一个特定的业务功能,并通过轻量级协议(如HTTP或gRPC)进行通信。核心思想:每个服务是独立的,围绕具体的业务能力(如订单、用户、支付)设计。

2024-12-20 15:46:37 927

空空如也

空空如也

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

TA关注的人

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