自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深入解析ForkJoinPool核心原理

ForkJoinPool是Java并发框架中的核心类,专门为分治算法和工作窃取设计。它通过Fork/Join模式高效执行可分解的并行任务,比传统线程池更适合处理递归分解的计算任务。该框架提供了三种任务提交方法(invoke、submit、execute),支持工作窃取算法、线程管理机制和任务超时控制。关键特性包括:1) 工作窃取算法实现负载均衡;2) ManagedBlocker机制处理阻塞操作;3) 调度功能支持延迟和周期性任务;4) 超时控制机制。ForkJoinPool还包含common池。

2025-06-03 16:54:18 528

原创 ForkJoinTask深度解析:Java并行计算利器

ForkJoinTask采用"分治"思想,通过fork()分解任务并行执行,join()合并结果。文章分析了其两种实现(RecursiveAction无返回值,RecursiveTask有返回值),并探讨了关键方法fork()、join()、invoke()的工作原理。特别深入剖析了任务状态管理、工作窃取机制和异常处理等底层实现,阐述了ForkJoinTask与ForkJoinPool的协作机制,以及在不同调用场景(直接invoke、pool提交、fork等)下的执行路径差异。

2025-06-03 15:35:33 622

原创 揭秘 CompletedFuture 的设计精髓(深入实现分析)

通过Completion构建有向无环图(DAG)实现任务流水线。关键设计包括:无锁栈管理:通过Treiber栈(CAS操作)维护依赖关系。结果传递与异常处理:结果存储于volatile字段,异常通过AltResult封装异步协作:双源操作通过CoCompletion双向监听;Signaller实现阻塞等待组合操作:anyOf和allOf分别通过AnyOf监听器和二叉树(BiRelay)协调超时机制:结合Timeout和Canceller实现任务取消与超时处理

2025-06-02 13:11:31 762

原创 揭秘 CompletedFuture 的设计精髓(基础)

CompletionStage接口实现了Java异步编程的核心功能,通过volatile字段存储异步结果或异常(用AltResult封装),并采用Treiber栈结构管理依赖操作。其无锁设计通过CAS操作保证原子性,支持单/双源依赖和阻塞唤醒机制。完成触发流程包括complete()设置结果和postComplete()遍历依赖栈。异常处理通过AltResult包装传播,JDK9+扩展了超时控制等高级功能。关键设计包括观察者模式、工厂模式和无锁化Treiber栈,性能优化体现在循环处理栈结构和资源清理机制。

2025-06-02 13:11:28 593

原创 Java异步编程:CompletionStage接口详解

CompletionStage是Java8引入的异步编程接口,提供链式异步操作、多阶段组合和异常处理能力。主要功能包括单阶段依赖操作(如thenApply)、双阶段组合(如thenCombine)、任一完成操作(如applyToEither)以及异常处理方法(如exceptionally)。从Java12开始新增默认方法加强异常处理灵活性,支持同步、默认异步和自定义执行器三种执行模式。该接口以声明式方式构建异步操作,是Java异步编程的重要基础。

2025-06-01 22:35:50 717

原创 深入解析AQS:Java并发核心框架

AQS是并发包的核心框架,为ReentrantLock、Semaphore等同步器提供基础机制。AQS通过volatile变量state表示同步状态,使用CLH变体的FIFO队列管理线程排队,支持独占和共享两种模式。其核心流程包括:获取状态时尝试tryAcquire,失败则入队等待;释放状态时调用tryRelease并唤醒后继节点。ConditionObject实现条件变量机制,通过await/signal协调线程等待与唤醒。AQS采用原子CAS操作、惰性初始化、状态驱动等设计,兼顾性能与灵活性。

2025-05-30 15:52:45 584

原创 深入解析ThreadPoolExecutor设计精髓

线程池设计通过循环复用线程和阻塞队列解决核心矛盾。其核心机制是将线程run()方法封装在循环中,由线程池策略控制生命周期,实现线程复用。当无任务时,线程通过阻塞队列(生产者-消费者模型)进入等待状态避免CPU空耗。JUC线程池在此基础上扩展出精细配置:通过core/max线程数平衡资源与响应;提供多种队列和拒绝策略应对任务特性;支持线程工厂定制和生命周期管理。

2025-05-29 15:34:05 1677

原创 Java虚拟线程(VirtualThread)核心揭秘

Java虚拟线程是轻量级并发实现的关键机制。它通过JVM管理的Continuation机制和Executor调度框架的结合,在少量平台线程上运行大量虚拟线程,显著提升应用吞吐量。虚拟线程包含三个核心组件:调度器(Executor)负责分配载体线程、Continuation实现执行流的挂起与恢复、runContinuation处理任务执行。虚拟线程通过状态机管理生命周期,在执行阻塞操作时能优雅地挂起并释放载体线程。当创建虚拟线程未指定调度器时,会继承父虚拟线程的调度器或使用默认ForkJoinPool。

2025-05-29 12:25:30 779

原创 Paimon远程文件系统连接机制解析

Paimon通过定义通用的FileIO接口实现对多种文件系统的灵活支持。该接口封装了读、写、删除等文件操作,采用工厂模式根据路径scheme动态加载对应的实现。对于HDFS、S3等远程文件系统,Paimon复用Hadoop FileSystem API进行集成,利用其成熟的连接管理和认证机制。同时支持通过继承基类实现特定文件系统的优化扩展,如OSS可获取额外元数据。使用时需配置正确的依赖和认证信息,保证Hadoop connector JAR在classpath中。

2025-05-29 10:38:51 822

原创 Outbox模式:确保微服务间数据可靠交换的设计方案

Outbox模式是微服务架构中解决数据库更新与消息发布一致性的有效方法。其核心思想是将业务数据变更与事件记录放入同一本地事务:服务先更新业务表,同时将事件写入专用的outbox表,确保原子性。随后,独立的消息中继进程轮询outbox表,将新事件发布到消息代理(如Kafka),并在成功后标记或删除记录。该模式避免了分布式事务的复杂性,通过分解操作为"持久化+异步发送"来实现可靠通信,需配合消费者幂等性处理可能的重复消息。

2025-05-28 14:35:39 484

原创 深入解析PrimaryKeyPartialLookupTable

本文分析了Paimon框架中PrimaryKeyPartialLookupTable的核心实现机制。重点阐述了LocalQueryExecutor如何通过Caffeine缓存管理LookupFile对象,实现基于LRU淘汰策略的高效键值查询。系统详细介绍了从元数据刷新(refresh)到本地文件创建的完整流程,包括Levels层级管理、LookupStoreReader/Writer读写接口的实现(支持排序和哈希两种存储格式),以及基于BloomFilter的查询优化。

2025-05-27 19:11:58 681

原创 Apache Paimon:存储结构、写入及其源码分析

本文介绍了Paimon写入流程和文件的组织形式。详细的源码分析。

2025-05-27 16:16:37 1052

原创 FullCacheLookupTable:Apache Paimon全缓存查找表技术解析

FullCacheLookupTable是Apache Paimon项目中的一个抽象基类,主要用于实现全缓存查找表功能,支持流批一体场景下的维表关联(LookupJoin)。其核心特性包括多级缓存支持(通过RocksDB实现内存+磁盘混合存储)、异步刷新机制、谓词下推(支持分区和行级过滤)以及序列字段处理(适用于CDC场景)。该类通过RocksDBStateFactory实现缓存管理,提供了初始化、全量加载、增量刷新和查找等关键接口。子类通过工厂方法创建具体实现,如无主键表、主键表和二级索引表。

2025-05-23 17:29:47 996

原创 FileStoreLookupFunction:Paimon-Flink Connector维表关联和点查Look up核心解析

FileStoreLookupFunction 和 LookupTable 是 Paimon Flink Connector 中实现维表关联(LookupJoin)的核心组件。FileStoreLookupFunction 负责管理维表查找的生命周期、数据查找和缓存刷新,而 LookupTable 接口定义了维表查找和缓存管理的基本操作。FileStoreLookupFunction 依赖 LookupTable 完成实际的数据查找和缓存管理,根据配置和表结构选择合适的 LookupTable 实现。

2025-05-22 16:27:38 674

原创 马文明斯基论教育和学习

此外,你还经常对以前的心理活动进行反思。此外,一个合格的学习理论还应该涵盖“反思技能”,这种技能可被人们用来识别一般情况下的例外、避免采取费时太多的策略,还可更普遍地用来制定更长远的计划,并形成更宽广的视角。肤浅的总结是无济于事的,因为只有当人们不仅了解各个知识片段,还对这些知识片段的来源、常见的例外情况、适用情境,以及可替代方法有了足够的了解,才能具备良好的能力。这类人包括:敬佩我们的那些人、我们敬佩的那些人、我们希望被敬佩的那些人、我们与之竞争的那些人以及我们尊重其观点(关于我们的观点)的那些人。

2024-02-22 08:43:48 566 1

原创 关于语言与经验世界模型的一个问题

语言;世界模型;相对论;语言游戏;判断依据

2024-02-21 13:22:45 1492 1

原创 哥德尔定理

我是个怪圈》的第十章有趣地谈论了这一点。蒯因引号悖论非常直观的展示了一个句子如何谈论自身,这也是哥德尔定理的实质。直观上如果不适用指代,一个句子似乎没办法谈论自己,比如说谎者悖论‘我在说话’,似乎必要的使用‘我’、‘本句话’这样的词语。哥德尔到底是如何把一个公式的哥德尔配数纳入这个公式本身的?它看起来就像要努力把一头大象塞进一个火柴盒里——而且从某种意义上来说就是这样。!这里的要诀有赖于一个简单的事实,即(例如,387 420 489,用五个字就可以描述出来:9的9次方)。;

2024-02-19 22:06:17 1026 1

原创 自然语言处理 NLP

Attention;RNN;统计;NLP

2024-02-18 21:46:01 1206 1

原创 Sora:通过视频生成模型制造世界模拟器(世界模型)

世界模型;人工智能;深度学习;视频生成;OpenAI;Sora

2024-02-17 08:35:34 2362 1

原创 图灵·停机问题的不可判定性

停机问题;算法;图灵机

2024-02-16 13:23:23 1879 2

空空如也

空空如也

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

TA关注的人

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