- 博客(602)
- 资源 (6)
- 收藏
- 关注

原创 Kimball维度模型之构建数据仓库先决条件
成功的DW/BI项目通常共享上述一系列关键特征,而失败的项目则往往面临各种问题,其中一些问题可以总结自数据仓库专家Kimball的观点。失败的DW/BI项目因素:失败的项目往往出现在业务发起人缺乏深刻业务理解或技术发起人无法有效沟通业务需求的情况下。成功的项目通常建立在业务和技术团队紧密协作的基础上,而弱势的业务或技术发起人可能导致沟通障碍和项目目标的偏离。例子:在一个以技术为主导的项目中,业务发起人可能无法有效传达业务需求,导致最终交付的数据仓库无法满足真实业务场景。
2024-03-09 02:42:50
1245
原创 图论(4)单源赋权最短路径算法实现(BFS实现)
本文介绍了赋权最短路径问题及Dijkstra算法实现。赋权最短路径指在带权图中寻找两点间总权重最小的路径。Dijkstra算法通过贪心策略,从源点出发逐步扩展最短路径树,使用优先队列优化时间复杂度为O(ElogV)。文章详细说明了算法思想:初始化距离、松弛操作、优先队列处理等关键步骤,并提供了完整的Java实现代码,包括节点和边的数据结构定义、算法执行过程以及路径回溯功能。代码示例展示了从节点A出发到其他各点的最短路径计算结果。
2025-08-12 00:20:01
336
原创 图论(3)单源无权最短路径算法实现(BFS实现)
本文介绍了使用广度优先搜索(BFS)算法解决单源无权最短路径问题的方法。BFS通过层级遍历图结构,确保最先找到的路径即为最短路径。算法采用队列管理待访问顶点,时间复杂度为O(V+E)。文章详细阐述了算法步骤,包括初始化、距离标记和路径追踪,并提供了完整的Java实现代码,包含顶点类定义、路径计算和重构等功能。通过校园地图的测试案例,验证了算法能正确计算从源点到各顶点的最短路径。该算法在网络路由、社交分析等领域具有重要应用价值。
2025-08-11 13:19:17
689
原创 图论(2)算法之拓扑排序介绍
本文介绍了拓扑排序及其两种实现方法。拓扑排序是针对有向无环图(DAG)的排序方式,确保所有先决任务排在后续任务之前。文章详细讲解了BFS算法(Kahn算法)和DFS算法的实现思路,并提供了Java代码示例。BFS算法通过统计节点入度并使用队列实现,DFS算法则通过递归标记节点状态来检测环。最后,文章展示了拓扑排序在任务调度系统中的应用,通过结合优先级队列实现带优先级的任务调度。测试用例验证了算法的正确性,当图中存在环时会返回空值。
2025-08-08 00:37:24
314
原创 图论(1)图数据结构
本文系统介绍了图论的基础概念与表示方法,从图的基本定义出发,详细阐述了图的分类(按方向、权值、边类型、连通性等)和基本术语。重点比较了四种图的表示方法:邻接矩阵(适合稠密图)、邻接表(适合稀疏图)、边列表和关联矩阵,分析其空间复杂度与适用场景。文章还探讨了如何在关系型数据库中实现图结构建模,包括顶点表、边表等表结构设计。最后附图中归纳了图论相关的重要概念,涵盖图的基本结构、类型性质、遍历算法、矩阵表示及高阶图模型等核心知识,为读者构建图论学习的完整框架。
2025-08-07 17:02:47
798
原创 Neo4j 社区版 Mac 安装教程
本文介绍了Neo4j图数据库的安装配置步骤。首先确认JDK版本要求(Neo4j5.x+需JDK11/17),然后下载社区版并解压到指定目录。提供两种启动方式:前台启动(实时查看日志)和后台启动(静默运行)。安装完成后通过浏览器访问localhost:7474,首次登录需重置默认密码。文中还列出了关键目录路径(配置、数据、日志文件)和修改端口等配置方法,并给出密码重置流程。最后推荐了官方文档和Cypher语法手册作为学习资源。该指南为金融反欺诈等项目选用图数据库时提供了Neo4j的快速入门参考。
2025-08-04 23:11:19
356
原创 Java高级之基于Java Attach与Byte-Buddy实现SQL语句增强
本文介绍了一种基于Java Attach机制和ByteBuddy的无侵入式动态增强技术方案。通过构建包含Agent、Attacher和测试三个模块的Maven项目,实现了对Druid SQLUtils.format方法的运行时增强,自动为SQL语句追加LIMIT限制。核心原理是利用Attach API将agent动态注入目标JVM,配合ByteBuddy的Advice机制修改方法行为。该方案无需修改源代码或重启服务,适用于监控、埋点等需要动态增强第三方库的场景,具有低侵入性和高灵活性特点。
2025-07-26 23:29:14
1007
原创 利用 Google Guava 的令牌桶限流实现数据处理限流控制
本文介绍了使用Google Guava库中的令牌桶限流机制(RateLimiter)实现数据处理速率控制的方法。通过创建生产者线程(每秒生成2条数据)、消费者线程(每秒限流处理1条数据)和监控线程,展示了如何在Java中实现高效、线程安全的限流处理。代码演示了RateLimiter.acquire()的阻塞等待机制如何控制处理速率,并配套监控队列积压情况。该方案适用于Kafka消费限速、数据清洗任务控制等场景,能够有效防止系统过载,保证处理过程的稳定性和可控性。
2025-07-25 13:42:28
951
原创 使用 QLExpress 构建灵活可扩展的业务规则引擎
本文介绍了阿里巴巴开源的QLExpress规则引擎在业务系统中的应用实践。QLExpress是一款轻量级、高性能的Java表达式引擎,支持动态规则编写与执行,具有表达式能力强、变量注入、运行时加载等特性。文章通过推荐系统和风控系统两个典型场景,展示了如何使用QLExpress实现脚本型规则管理:在推荐系统中,根据用户属性动态生成推荐内容;在风控系统中,基于设备、IP等特征进行风险评估。两个案例都提供了完整的代码实现和执行结果,并给出了系统设计建议。文章指出,采用QLExpress可以实现业务逻辑与代码解耦,
2025-07-23 13:29:05
943
原创 Java高级之基于Byte Buddy(字节码增强技术)对SQL语句执行增强
本文介绍了一种基于ByteBuddy字节码增强技术的Hive查询自动优化方案,通过JavaAgent机制非侵入式地为Druid SQLUtils类添加LIMIT 100子句。文章详细阐述了技术实现路径:1) 使用AgentBuilder精确匹配目标方法;2) 通过Advice机制实现SQL修改逻辑;3) 创新性设计FormatHelper防递归安全区。同时解决了SQL边界处理、精确方法匹配等关键问题,并提供了完整的Maven配置方案。该方案在不修改源码的情况下实现了Hive查询的安全防护,为同类需求提供了可
2025-07-22 00:29:43
992
原创 Flink本地源码开发环境搭建
本文介绍了Flink本地源码开发环境搭建的完整流程。首先需要准备JDK8、Maven3.5+和Git等基础环境,并在IDEA中安装Scala插件。然后通过git获取1.16分支的Flink源码,并进行相关配置。接着在IDEA中导入项目完成Maven编译。最后通过运行SocketWindowWordCount示例程序,使用Netcat测试服务验证环境搭建是否成功。整个过程涵盖了从环境准备到功能验证的完整步骤,为后续Flink源码分析奠定了基础。
2025-07-21 01:09:02
424
原创 Dinky (Mac) 本地开发环境搭建指南
本文介绍了Dinky系统的开发环境搭建流程,包括前端和后端的配置步骤。首先列出所需软件(Git、JDK、Maven等),然后详细说明前端环境搭建过程(安装Node.js、PNPM及构建前端)。后端部分包含本地编译依赖、添加必要JAR文件及启动服务的步骤。最后提供系统访问方式(默认端口8888),并附有首次登录指南(用户名admin,需设置初始密码)。文章还指出可参考官方文档配置MySQL数据源替代默认H2数据库。整个过程涵盖了从代码克隆到系统运行的完整配置流程。
2025-07-17 00:32:01
1172
原创 设计模式之对象池模式
摘要:对象池是一种通过预创建和管理可复用对象来优化性能的设计模式,适用于数据库连接、线程等创建成本高的资源。其核心优势包括提升性能、降低GC压力、资源管控等,但也面临状态管理、泄漏风险等挑战。文章详细介绍了对象池的架构、实现示例(含Java代码),并与享元模式、单例模式进行了对比。对象池通过"空间换时间"的机制,在解决特定性能问题方面具有独特价值,但需谨慎处理对象状态重置和配置参数。
2025-07-15 15:50:03
926
原创 设计模式之回调模式
摘要:回调(Callback)是一种程序设计模式,实现"控制反转"思想,将代码作为参数传递执行。主要分为同步和异步两种形式:同步回调通过接口或函数式编程实现,包括Lambda表达式和方法引用;异步回调通过Future和CompletableFuture实现非阻塞处理。此外,Stream API也内置回调机制。不同回调方案在复杂度、线程模型、异常处理等方面各有特点,适用于不同场景。随着函数式编程的普及,Lambda和CompletableFuture已成为Java回调的主流实现方式,开发者
2025-07-15 12:30:04
776
原创 DeepSeek 本地部署
摘要:本文介绍Ollama的安装使用指南。首先下载对应操作系统的安装包,安装后通过ollama -v验证。部署DeepSeek-R1 1.7B模型使用ollama run命令,进入交互界面后输入问题即可对话。可通过Ollama模型库查询支持模型,并可选安装WebUI实现网页交互。常用命令包括查看已安装模型、运行/下载模型等。首次运行会自动下载模型文件,建议保持网络稳定。默认存储路径为系统用户目录下的.ollama/models文件夹。(149字)
2025-07-14 23:31:43
742
原创 Netty编程模型介绍
本文介绍了Netty框架的核心概念与开发实践,主要包含以下内容:Netty作为异步事件驱动的高性能网络框架,采用Reactor模式实现高并发通信,核心组件包括Bootstrap类、EventLoopGroup线程组、Channel管道和Handler处理器链。文章详细讲解了服务端和客户端的开发结构,比较了两者的差异,并通过一个完整的命令行聊天室示例,展示了从协议设计、编解码器实现到业务处理的全流程。该示例可直接运行,包含服务端管理多连接、客户端登录认证、消息广播等功能,涵盖了Netty开发的关键环节。最后提
2025-07-14 22:32:54
1154
1
原创 在macOS上安装Anaconda3
摘要:本文详细介绍了在macOS系统上彻底卸载conda环境并重新安装Anaconda的完整流程。主要内容包括:1)彻底删除现有conda安装目录、配置文件和环境变量;2)下载安装最新版Anaconda并进行验证;3)配置conda环境、创建虚拟环境和使用Jupyter Notebook;4)常见问题解决方法;5)最佳实践建议。文章特别强调了环境隔离的重要性,并提供了国内镜像配置等实用技巧,帮助用户获得一个干净、高效的Python开发环境。适用于需要重新配置Anaconda环境的数据科学从业者和开发者。
2025-07-14 01:42:32
634
原创 DolphinScheduler 3.2.0 Worker启动核心源码解析
摘要:DolphinScheduler Worker启动流程包括多个关键步骤:1)启动Netty RPC服务端和客户端,实现任务接收与结果反馈;2)通过SPI加载任务插件,支持多种任务类型;3)注册到Zookeeper注册中心,使Master可发现;4)启动管理线程处理任务队列和执行;5)开启消息重试线程确保可靠性。Worker采用Netty异步通信、线程池任务执行、注册中心心跳检测等机制,实现了高并发、可靠性和可扩展性,完整支持"接收-执行-反馈"的任务处理闭环。(148字)
2025-07-09 23:43:20
995
原创 DolphinScheduler 3.2.0 Master启动核心源码解析
DolphinScheduler 3.2.0 Master启动流程全解析 摘要:本文深入剖析了DolphinScheduler 3.2.0版本中Master节点的启动流程。从手动调度触发机制切入,详细解析了MasterServer的完整启动过程,包括RPC服务(Server/Client)搭建、Task插件SPI加载、注册中心心跳维护等核心环节。重点阐述了调度引擎的三层架构设计:Command恢复机制、事件循环处理、任务派发系统,并分析了基于Netty的RPC通信和ZooKeeper的高可用保障。通过故障转
2025-07-09 19:11:58
783
原创 Key-Value:简约的力量
Key-Value结构以极简的“标识-数据”映射,复刻了人类“命名万物”的认知本能:Key是锚定存在的符号(能指),Value是流动的意义实体(所指)。它践行奥卡姆剃刀原则,剥离冗余关系,以单元自治性解耦复杂性——每个键值对如同自洽的宇宙,无需全局语境即可独立存在与迁移。这种原子性成为分布式世界的基石:通过Key分区,系统实现弹性扩展;通过符号与实体的分离,Value获得自由演化的空间。其力量源于对本质的回归:以最经济的路径连接“所知”与“所求”,在认知与工程间架起高效桥梁。从图书馆索引到数字文明底层,Ke
2025-07-09 01:14:28
950
原创 DolphinScheduler 3.2.0 后端开发环境搭建指南
本文介绍了DolphinScheduler 3.2.0版本的部署流程。首先需准备JDK8、Maven3.6.0+、Git和MySQL5.7+环境,通过Git获取源码后切换至3.2.0分支。在编译过程中可能遇到Spotless格式检查失败和Maven版本不兼容问题,前者可通过自动修复解决,后者需升级Maven版本。关键配置包括修改MySQL驱动作用域,以及针对Master、Worker和API服务的数据库、日志配置。最后列出各服务的启动类路径,完成部署。
2025-07-06 21:49:10
669
原创 Hera调度系统运行时架构源码分析
Hera分布式调度系统采用Master-Worker架构,通过DB分布式锁实现Master选举。系统启动时,节点通过周期性检查锁状态确认角色(Master/Worker)。Master节点负责任务调度,包含Quartz调度服务、Netty通信服务和任务分发器;Worker节点通过Netty连接Master,执行任务并定时发送心跳(包含CPU/内存指标)。任务调度采用双通道机制:调度指令通过Quartz触发后进入内存队列,由Master根据负载均衡策略分发给Worker执行。系统具备心跳检测(10秒超时)、任
2025-07-03 12:57:49
794
原创 Java 并发利器: CompletionService 详解与实战
ExecutorCompletionService是Java并发编程中简化异步任务结果处理的高级工具。它通过内部BlockingQueue存储已完成任务的Future对象,实现三大优势:1)按任务完成顺序处理结果,2)解耦任务执行与结果处理,3)提升系统吞吐量。典型使用步骤包括创建线程池、绑定CompletionService、提交任务、按完成顺序获取结果。相比传统Future.get()的阻塞问题,它特别适合批量下载、并行查询等需要流式处理结果的场景。通过take()/poll()等API,开发者能高效实
2025-07-01 20:13:54
954
原创 设计模式之上下文对象设计模式
上下文对象模式是一种用于多层架构中共享状态和服务的有效设计模式。该模式通过封装与特定作用域相关的数据和行为为Context对象,使各组件无需显式传递参数或依赖环境细节,从而提升系统的可复用性和可维护性。其核心价值在于解耦、集中管理和生命周期控制,典型应用包括SparkContext和Flink的执行环境。实现时包含Context接口、具体实现类和可选工厂类,适用于Web应用和微服务场景,可简化跨层数据传递。但需注意避免Context过度膨胀,必要时可结合IoC容器使用。该模式为现代分布式系统提供了重要的架构
2025-07-01 19:18:21
1086
原创 Spring之Spring源码环境搭建
本文介绍了在MacOS环境下搭建Spring源码开发环境的完整流程。首先通过git clone获取Spring 5.3.39版本源码,确认需要Gradle 7.5.1版本后完成其安装和环境变量配置。然后使用IDEA导入源码项目,经过Gradle编译下载依赖后,创建测试模块并添加spring-context依赖。最后编写简单的AnnotationConfigApplicationContext测试用例验证环境搭建成功。整个过程涵盖了从源码获取、构建工具配置到测试验证的关键步骤,为后续Spring框架源码研究和
2025-06-30 01:42:19
272
原创 Java操作H2数据库实战
摘要:本文详细介绍了H2数据库系统及其Java操作实践。第一部分阐述了H2数据库的特性,包括多模式运行、高性能、兼容性和安全性,以及其典型的嵌入式应用场景和存储架构。第二部分完整展示了Java操作H2数据库的代码实现,包括环境配置、连接池管理、CRUD操作、JOIN查询、事务处理和批处理等核心功能,并配有完整的测试用例。文章通过实例代码和运行结果,系统地演示了如何利用H2轻量级特性进行应用开发。
2025-06-25 16:42:50
1001
原创 Apache SeaTunnel 插件化架构源码深度解析
Apache SeaTunnel的插件化架构采用三层设计:API层规范接口标准,实现层提供具体插件,发现层处理动态加载。其核心通过SPI机制实现插件注册与发现,利用@AutoService注解自动生成配置文件,优化传统SPI的使用体验。系统采用分层类加载器实现插件隔离,支持Kafka、Doris等数据源的连接器实现,以及SQL转换等数据处理功能。通过双亲委派模型改进和运行时加载机制,平衡了插件扩展性与稳定性,为分布式数据处理提供灵活高效的集成方案。(150字)
2025-06-24 01:12:08
641
原创 Apache SeaTunnel Spark引擎执行流程源码分析
本文解析SeaTunnel 2.3.x Spark引擎的执行流程。从SparkTaskExecuteCommand启动任务,到创建SparkExecution实例并初始化三大处理器(Source、Transform、Sink)。核心流程包括:配置解析、插件加载(通过SPI机制)、DAG构建(表驱动设计)、类型系统转换(TypeConverterUtils处理)和数据转换执行(mapPartitions实现)。重点突出了插件化架构、表注册机制和分布式转换处理等关键设计,通过SparkRuntimeEnviro
2025-06-23 21:40:37
920
原创 Apache SeaTunnel Flink引擎执行流程源码分析
本文分析了SeaTunnel 2.3.x版本中Flink引擎的执行流程。核心流程包括:1)通过FlinkTaskExecuteCommand解析配置并创建FlinkExecution实例;2)初始化三大处理器(SourceExecuteProcessor、TransformExecuteProcessor、SinkExecuteProcessor)和Flink执行环境;3)构建DAG依次执行Source、Transform和Sink处理流程。系统采用插件化架构,通过SPI机制动态加载组件,实现了表名映射、类
2025-06-23 20:30:00
1295
原创 使用 @AutoService 注解简化 SPI 实现
本文介绍了Google提供的@AutoService注解如何简化Java SPI实现。传统SPI需要手动在META-INF/services目录下创建配置文件,既繁琐又易出错。而@AutoService通过编译期自动生成配置文件,开发者只需在实现类上添加注解即可。文章详细对比了两者的区别:传统SPI需手动维护配置文件且缺乏编译期校验,而@AutoService自动化完成服务注册,提供编译期类型检查,代码更易读维护。源码分析显示@AutoService通过注解处理器自动扫描实现类并生成配置文件。最终得出结论:
2025-06-17 20:49:07
842
原创 Caesar数据开发平台(2)安装部署
Caesar前后端分离系统部署指南 后端部署: 环境要求:JDK1.8、Maven3.5+ 下载源码并编译打包 配置数据库连接和调度系统参数(推荐DolphinScheduler 3.2.0) 初始化数据库并启动服务 前端部署: 环境要求:Nodejs14.16.0、Nginx1.25+ 安装依赖并编译打包 配置Nginx指向dist目录 默认登录账号:admin/admin 注:需分别配置生产环境参数,包括数据源、调度系统、执行引擎等。系统支持DolphinScheduler工作流级别的调度依赖管理。
2025-06-14 21:10:25
780
原创 解决Hadoop环境错误:java.io.FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.ho
Windows下Hadoop开发常见问题:HADOOP_HOME缺失报错解决方案 摘要:在Windows平台进行Hadoop开发时,常会遇到"java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset"错误。该问题是由于缺少Windows原生支持文件所致。解决方法包括:1)从GitHub下载winutils工具包;2)设置HADOOP_HOME环境变量指向winutils目录;3)将hadoop.dll
2025-06-12 13:50:34
911
原创 Seatunnel2.x.x编译报错org.apache.seatunnelseatunnel-flink-starter-common问题处理
编译Seatunnel 2.3.2源码时出现Flink启动器模块依赖错误,报错显示seatunnel-flink-starter-common模块2.3.2-SNAPSHOT版本未找到。检查seatunnel-flink-15-starter的pom.xml发现依赖版本参数revision存在问题,将其修改为project.version后成功解决编译问题。该问题是由于版本参数引用方式不当导致依赖解析失败,修改参数后重新编译通过。
2025-06-11 17:49:22
351
原创 微内核架构(Microkernel Architecture)
微内核架构是一种将系统拆分为核心系统和插件模块的灵活设计模式。核心系统仅提供基础服务(如插件管理、通信机制等),业务功能则由独立插件实现,通过定义良好的接口交互,确保松耦合和高内聚。该架构的关键在于插件管理(注册表、加载策略)、连接机制(接口回调、消息传递)和通信方式(事件总线等)。架构师需权衡灵活性、性能与安全性,考虑版本兼容、测试维护等挑战。常见实现方案包括OSGi、Java SPI和Spring插件机制,适用于需要高扩展性和模块化的系统。该架构通过隔离变化、明确契约,为系统演进提供了高效迭代能力。
2025-06-10 15:52:09
1015
原创 SOA架构深度剖析:面向服务的体系结构与设计范式
面向服务的架构(Service-Oriented Architecture, SOA)是一种将业务功能构建为可互操作服务的软件设计范式。其核心理念是通过服务间的松散耦合和标准化接口来整合企业内异构系统,提升复用性和灵活性。SOA概念于1996年由Gartner分析师Roy W. Schulte和Yefim V. Natis首次提出。2005年,Gartner曾预言到2008年SOA将成为80%开发项目的基础。然而,历史证明这一预测过于乐观。
2025-06-09 12:43:40
491
原创 Caesar数据开发平台(3)离线任务开发流程
本文详细介绍了基于Caesar数据平台的离线任务开发全流程。主要内容包括:1)创建ETL任务并填写规范信息;2)开发ETL脚本,平台提供包含任务描述、参数配置、Schema定义和ETL脚本四个模块的标准模板;3)进行数据测试;4)提交测试审核;5)发布任务;6)管理员审核;7)创建调度任务并配置依赖关系;8)最后上线调度。该流程规范了从开发到上线的各个环节,确保任务质量和调度可靠性,为数据处理工作提供了完整的解决方案。
2025-06-09 00:13:08
1050
原创 分层架构在软件设计中的应用
分层架构(Layered Architecture)的思想源远流长,其核心理念是通过将系统按照职能水平划分为若干层次来降低复杂度、实现关注点分离。
2025-06-06 23:23:37
640
原创 Caesar 数据开发平台 (1) 介绍
本文介绍了Caesar数据开发平台的功能架构。该平台采用前后端分离架构,前端基于Vue2+ElementUI实现交互界面,后端Java开发包含执行器、调度器和工具三大模块。主要功能包括:数据开发(SQL编写调试、多引擎支持)、调度管理(依赖配置、多周期调度)和发版管理(多级审核、环境隔离)。平台通过标准化流程和自动化管理,为企业数据开发提供一站式解决方案,有效提升开发效率并降低运维成本。
2025-05-26 23:09:37
300
原创 数学基础之排列组合知识点整理
排列强调顺序,公式为n!n−m!\dfrac{n!}{(n - m)!n−mn!。组合忽略顺序,公式为n!m!n−m!\dfrac{n!}{m!(n - m)!m!n−mn!。其性质与定理(如二项式定理)在概率计算、多项式展开等领域具有重要应用。
2025-04-01 13:55:39
988
原创 机器学习-西瓜书 第一章 绪论
核心定义机器学习是研究如何通过计算手段,利用经验(数据)改善系统自身的性能,从而在未知数据上做出有效预测或决策的学科。关键理解数据驱动:从数据中自动学习规律(模型),而非依赖人工规则传统编程 vs 机器学习:传统编程:输入规则+数据 → 输出结果机器学习:输入数据+结果 → 输出规则(模型)
2025-03-25 14:03:58
645
实时数仓模拟流式数据源代码
2024-03-15
p8670579_112010_LINUX
2014-08-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人