自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(624)
  • 资源 (9)
  • 收藏
  • 关注

原创 JVM专题

从JDK源码级别彻底剖析JVM类加载机制

2022-02-01 16:47:01 422

原创 MySQL学习系列

系列文章目录MySQL 的分支、变种与替代

2021-12-31 22:51:06 462

原创 gradle构建工具学习系列

系列文章目录

2021-12-18 12:05:23 529

原创 并发编程系列

系列文章目录并发编程之深入理解JMM&并发三大特性并发编程之深入理解Java线程

2021-11-28 16:07:26 397

原创 MyBatis源码学习系列文章目录

系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存MyBatis日志模块MyBatis日志增强MyBatis数据源MyBatis缓存模块(二级缓存深入理解)MyBatis反射模块MyBatis工作流程-初始化阶段一MyBatis工作流程-初始化阶段二MyBatis工作流程-代理封装阶段MyBatis工作流程-数据访问阶段MyBatis工作流程-与Spring整合...

2021-04-24 21:44:25 264

原创 腾讯课堂某培训机构Spring源码问题集锦

系列文章目录注解方式与xml方式注册问题

2021-04-17 11:12:25 353

原创 MyBatis工作流程-与Spring整合

系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存MyBatis日志模块MyBatis日志增强MyBatis数据源MyBatis缓存模块(二级缓存深入理解)MyBatis反射模块MyBatis工作流程-初始化阶段一MyBatis工作流程-初始化阶段二MyBatis工作流程-代理封装阶段MyBatis工作流程-数据访问阶段MyBatis工作流程-与Spring整合文章目录系列文章目录 前言与MyBatis相关的Beanbean实例化的流程1. Sql

2020-12-19 16:12:11 244 1

原创 兼容Oracle与MySQL的一些事

文章目录前言一、字段类型差异二、函数差异 1、几种兼容方案a. 利用Mybatis的特性b. 是否存在相同的函数c. 自定义同名函数三、语法差异四、锁的差异总结前言由于公司目前主要使用的数据库为Oracle,然后部分兼容MySQL,后期会考虑全部支持Oracle和MySQL。由于二者的各种差异,我们必须有一套可行的方案减少工作量。在兼容Oracle与MySQL的那些事中我们已经仔细讨论过在数据层对多数据库的支持了,接下来的目标就是结合这种支持同时考虑其他手段达到目标了。本文从以下几点来谈一下对兼容考

2020-11-09 10:56:58 2025 7

原创 Java FTPClient详解:高效文件传输指南

摘要: Apache Commons Net 的 FTPClient 类封装了完整的 FTP 客户端功能,简化了文件传输操作。核心特点包括:自动管理控制连接(PORT/PASV)和数据连接;提供高层 API(如 storeFile()/retrieveFile());支持二进制/文本传输模式设置;内置异常处理和保活机制(NOOP)。使用流程需遵循连接→登录→操作→断开的标准步骤,并建议强制设置二进制模式以避免文件损坏。文档还详细说明了目录分页查询、错误码处理及安全验证等进阶功能。

2025-08-20 15:06:09 731

原创 FTP协议核心术语全解析05

FTP协议中的用户端组件包括:User(用户实体或代理进程)、User-DTP(负责建立数据连接,在主动/被动模式中扮演不同角色)、User-FTP Process(整合协议解释器、数据传输和用户界面的完整客户端),以及User-PI(控制连接的核心组件,负责命令发送和流程协调)。这些组件共同实现文件传输功能,其中现代应用更推荐使用封装好的FTP客户端而非直接交互。协议设计偏向自动化操作,数据连接模式(主动/被动)的选择会影响User-DTP的工作方式。

2025-08-20 13:39:11 677

原创 深入解析FTP核心术语03

FTP 协议核心术语解析 Record:顺序文件可分割为连续记录,但现代FTP多采用无结构字节流传输(如.txt文件)。 Reply:服务器通过控制连接返回的响应,含状态码(如220就绪/530登录失败)和人类可读文本。 Server-DTP:负责数据传输的进程,支持主动(连接客户端)和被动(监听端口)两种模式,后者更适应防火墙环境。 Server-FTP Process:由协议解释器(PI)和DTP组成,PI处理命令,DTP执行文件传输。

2025-08-20 13:30:49 328

原创 FTP协议核心术语全解析03

FTP协议术语解析摘要:FTP命令(USER/PASS等)通过控制连接传输指令;文件由路径名唯一标识;传输模式(Stream/Block/Compressed)决定数据格式;NVT解决终端兼容性问题;NVFS是未实现的标准化文件系统概念;分页传输功能已很少使用;路径名需适配不同操作系统;协议解释器PI分客户端和服务器端,分别处理命令解析与响应。这些术语共同构成FTP文件传输的基础框架。

2025-08-20 11:14:24 799

原创 FTP协议核心术语全解析02

FTP协议核心术语解析 控制连接(21端口)遵循Telnet协议,用于传输命令与响应;数据连接(主动/被动模式)实现文件传输,支持全双工通信。DTP进程负责建立管理数据连接,而数据端口的开放方式(主动/被动)影响防火墙兼容性。协议规定行结束符为CR+LF(\r\n),通过EOF标记文件结束,支持断点续传(REST命令)实现错误恢复。理解这些术语是掌握FTP文件传输机制的关键。

2025-08-20 10:59:58 803

原创 FTP协议核心术语全解析01

FTP协议规范中的术语部分定义了三个关键概念:1)ASCII指7位字符集,FTP传输时最高位必须为0,文本文件需用ASCII模式传输;2)访问控制由服务器决定用户权限,可设置匿名或实名访问;3)字节大小分为逻辑字节和固定8位的传输字节,确保异构系统兼容。实际应用中,文本文件用ASCII模式,非文本文件必须用Binary模式传输以避免数据损坏。这些术语构成了FTP协议实现跨平台文件传输的基础机制。

2025-08-20 10:49:27 396

原创 Apache Ignite超时管理核心组件解析

摘要: GridTimeoutProcessor 是 Apache Ignite 内核中管理异步超时事件的核心组件,负责调度延迟任务、监听 Future 超时及处理各类协议超时。其核心机制包括:使用线程安全的跳表结构(GridConcurrentSkipListSet)按时间排序任务,通过 TimeoutWorker 后台线程轮询触发到期事件,并支持高效的任务增删与唤醒。设计亮点包括统一调度、高并发安全、精准定时和异步友好,典型应用场景涵盖延迟任务、周期心跳和 Future 超时控制。

2025-08-11 13:57:49 656

原创 Ignite计算任务运行指标收集器解析

特性说明高并发写入优化使用分段队列 + 随机选择,避免单点锁瓶颈内存友好指标有过期机制(expireTime)和最大历史数限制线程安全使用volatile+ 无锁结构状态感知能准确判断节点是“空闲”还是“繁忙”可扩展设计模式清晰,易于替换为其他存储后端是 Ignite旧一代指标收集系统的核心组件,它通过分段队列 + 状态机实现了高性能、低开销的任务指标采集。虽然它已被高并发日志采集实时监控系统分布式任务调度器🔔记住:它是“过去的好设计”,但未来应使用标准 Metrics API。

2025-08-11 13:39:05 552

原创 Ignite端口管理组件GridPortProcessor全解析

Apache Ignite的GridPortProcessor是一个端口管理组件,负责统一跟踪和记录节点使用的网络端口。它相当于一个"端口注册中心",通过GridPortRecord存储端口号、协议和使用类,并支持监听器机制在端口变化时通知。关键功能包括端口注册/注销、线程安全操作、不可变记录查询等,为系统提供端口使用情况的统一视图,便于调试和监控。其设计体现了注册-通知模式和不可变值对象等优秀实践,是分布式系统中资源管理和可观测性的典型实现。

2025-08-11 13:26:51 629

原创 Apache Ignite 核心组件:GridClosureProcessor解析

摘要: Apache Ignite 的 GridClosureProcessor 是分布式闭包任务调度的核心组件,负责处理 Runnable、Closure 等任务的远程执行(如 compute().run() 或亲和性计算)。其设计通过自旋读写锁(busyLock)实现优雅关闭机制:读锁保障任务并发提交,写锁在节点停止时阻断新任务,并通过忙等待确保快速释放资源。组件还集成线程池管理、拓扑检查及任务包装(如 T1/T8 内部类),支持广播、单节点、数据本地化(affinity)等模式,“移动计算而非数据"

2025-08-11 11:26:39 968

原创 Ignite后台诊断守护者:揭秘系统稳定性的关键

摘要:GridDiagnostic是Apache Ignite的后台诊断组件,通过异步执行6项关键检查来提升系统稳定性:1)本地主机可达性检测;2)回环地址检查;3)有效网络接口验证;4)JMX远程配置校验;5)JVM堆内存阈值警告;6)线程池可用性监控。该组件采用"Fail-Fast+告警"机制,以低侵入方式在后台运行所有检查,通过明确日志提示常见配置错误(如小堆内存、网络绑定错误等),显著降低用户部署门槛。其设计体现了"预防优于修复"的工程思想。

2025-08-11 11:13:39 837

原创 Apache Ignite 生产级的线程池关闭工具方法揭秘

目标实现方式安全关闭线程池防止任务丢失检查返回的任务,打警告日志避免中断信号丢失保存并恢复中断状态增强可观测性记录线程池所有者、未执行任务健壮性空值保护、异常处理、重复尝试是一个生产级的线程池关闭工具方法,它不仅尝试关闭线程池,还关注任务是否丢失、线程是否真正退出、中断信号是否保留,体现了 Ignite 对稳定性、可观测性和健壮性的高度重视。如果你在开发中间件、框架或高可用系统,这种关闭模式必须掌握并复用。

2025-08-11 10:32:37 684

原创 Apache Ignite分片线程池深度解析

Apache Ignite 的 StripedExecutor 是一个高级分片线程池实现,相比基础版本提供更强的监控、容错和性能优化功能。其核心通过 idx % N 路由任务到特定线程,保证相同索引任务的顺序执行,同时支持随机分配负载均衡。关键特性包括:饥饿检测机制监控线程卡顿,丰富的运行时统计指标,以及企业级的错误处理和日志记录。该执行器适用于数据流处理、事件回调等需要保序和高吞吐的场景,通过独立条带线程设计(每个包含独立队列)实现高效并发。它还提供了细粒度的生命周期管理和诊断能力。

2025-08-11 10:16:16 328

原创 Apache Ignite分片线程池:高并发保序新方案

Apache Ignite的IgniteStripedThreadPoolExecutor是一个分片线程池实现,通过将任务按索引分发给固定线程,实现局部串行与全局并行的平衡。核心采用线程池数组结构,每个子线程池为单线程,确保同一索引的任务顺序执行。该设计专门用于需要保序且高并发的场景(如回调处理、数据流),通过禁用标准提交方法强制使用索引路由。相比JDK原生线程池,它填补了完全并行与完全串行之间的空白,但需注意负载均衡问题。使用时需合理设置并发级别,并保证索引分布均匀。

2025-08-11 10:15:20 441

原创 Ignite线程池架构与核心设计

Apache Ignite 线程池管理机制概述 这段代码展示了Apache Ignite中PoolProcessor类的核心功能,负责管理节点内所有线程池的创建与生命周期。

2025-08-11 10:02:33 837

原创 Ignite故障处理:优雅关闭与强制终止策略

摘要:StopNodeOrHaltFailureHandler是Apache Ignite的关键故障处理类,采用"先礼后兵"策略处理节点故障。当节点发生严重错误时,会优先尝试优雅关闭(释放资源、持久化数据),若超时则强制终止JVM。核心机制通过两个协作线程实现:一个执行正常关闭,另一个监控超时。该处理器提供tryStop和timeout参数配置,平衡安全性与响应速度,是生产环境推荐的故障处理方案,能有效防止故障节点对集群造成更大影响,保障系统高可用和数据一致性。(149字)

2025-08-11 09:50:13 349

原创 Ignite故障处理机制解析

Apache Ignite的FailureProcessor是一个分布式容错组件,负责统一处理节点中的严重错误(如OOM、系统异常等)。它会根据配置的FailureHandler策略(如停止节点、记录日志等)进行响应,并提供线程转储、预留内存等恢复机制。该处理器通过限流控制、故障类型判断等机制确保系统稳定性,是Ignite容错体系的核心模块,建议生产环境使用保守的停机策略而非无操作处理。

2025-08-11 09:36:41 260

原创 Ignite启动流程深度解析

摘要 该代码段展示了Apache Ignite内核启动的核心流程,主要包括以下关键步骤: 状态检查与转换:通过网格网关(GridKernalGateway)管理启动状态,防止重复启动或冲突操作。 配置验证:对Ignite配置进行全面校验,确保配置正确性。 环境初始化:包括日志系统、JVM暂停检测器等基础设施的建立。 系统信息输出:记录系统配置、环境变量、JVM参数等详细信息。 核心组件启动:依次初始化诊断处理器、集群处理器、资源处理器等核心组件,并处理生命周期bean的资源注入。

2025-08-08 15:39:22 1053

原创 Ignite核心启动流程:组件生命周期管理揭秘

本文解析了 Apache Ignite 的组件启动机制,重点介绍了其核心类 LifecycleAware 接口及实现原理。代码通过 lifecycleAwares(cfg) 方法从配置中收集可能实现 LifecycleAware 的组件(包括日志、序列化、SSL等),然后通过 startLifecycleAware() 统一调用这些组件的 start() 方法。这种设计实现了组件的自动发现和生命周期管理,体现了"配置即代码"的思想,保证了系统启动的有序性和组件的可插拔性。

2025-08-08 15:33:32 725

原创 Ignite节点生命周期钩子机制详解

Apache Ignite 的 LifecycleBean 是一个关键接口,用于在节点启动和停止的关键时刻执行自定义逻辑。它支持四种生命周期事件:启动前(BEFORE_NODE_START)、启动后(AFTER_NODE_START)、停止前(BEFORE_NODE_STOP)和停止后(AFTER_NODE_STOP)。通过实现该接口,开发者可以在这些阶段插入自定义操作,如依赖检查、缓存预热、状态保存等。LifecycleBean 支持依赖注入,并可通过编程或 XML 两种方式配置

2025-08-08 15:18:45 766

原创 IgniteScheduler:轻量级本地任务调度神器

Apache Ignite内置的本地任务调度器IgniteScheduler是一个轻量级的定时任务解决方案,支持异步、延迟和周期性任务执行。它提供类似Quartz的cron表达式功能,并扩展了初始延迟和最大执行次数等特性。核心功能包括立即执行runLocal、延迟执行runLocal(delay)、异步调用callLocal,以及基于cron的周期调度scheduleLocal。该调度器适用于节点本地的定时任务、心跳检测、数据预热等场景,但不支持分布式调度。

2025-08-08 15:17:44 544

原创 Ignite 资源注入核心:GridResourceProcessor 详解

摘要 GridResourceProcessor 是 Apache Ignite 实现依赖注入的核心组件,负责为分布式任务、服务等对象自动注入资源(如 Ignite 实例、日志、Spring Bean 等)。它通过注解(如 @IgniteInstanceResource)识别需要注入的字段或方法,并利用内置的 Injector 实现资源绑定。该组件支持安全沙箱(代理注入)、Spring 集成和生命周期回调(@OnStart),通过缓存元数据优化反射性能,是 Ignite DI 系统的核心引擎。

2025-08-08 15:02:36 776

原创 Ignite高性能时钟机制揭秘

摘要:这段代码实现了一个高性能本地时间维护机制,通过启动高优先级守护线程以10ms间隔更新共享时间变量curTimeMillis,替代频繁的System.currentTimeMillis()调用。采用单例模式确保JVM中仅一个时钟线程,通过同步块控制线程安全,在首个Ignite实例启动时初始化。该设计在时间精度(最大10ms误差)与性能间取得平衡,适用于日志记录、超时控制等场景,显著降低高并发下的系统调用开销。(149字)

2025-08-08 14:53:04 454

原创 Ignite集群核心:ClusterProcessor解析

ClusterProcessor 是 Apache Ignite 中负责集群元数据管理的核心组件,主要功能包括: 集群身份管理:为集群分配唯一 UUID 和可读标签(Tag) 状态同步:通过 Discovery SPI 在节点间同步集群信息 持久化支持:在持久化模式下利用 Metastorage 保存/恢复集群状态 安全更新:提供 CAS 操作保证集群标签更新的原子性 版本检查:可选的新版本提醒功能 关键特点是: 同时支持内存和持久化两种模式 确保集群重启后身份一致性 提供用户友好的集群标签管理接口(ign

2025-08-08 14:43:39 1018

原创 Ignite内部事件总线揭秘

摘要: GridInternalSubscriptionProcessor是Apache Ignite内部的核心事件协调器,采用观察者模式实现组件间松耦合通信。它专为四大关键子系统(元存储、数据库、分布式配置等)提供生命周期事件订阅/通知机制,确保组件按正确顺序初始化(如缓存等待数据库就绪)。作为最早启动的处理器,它通过类型安全的监听器接口(如DatabaseLifecycleListener)实现本地节点内的事件分发,但不处理网络通信或异步逻辑。

2025-08-08 13:26:10 749

原创 DiagnosticProcessor

🔍 Ignite诊断处理器核心解析 DiagnosticProcessor是Apache Ignite的智能故障诊断模块,在系统发生严重错误时自动执行以下关键操作: 自动检测:捕获数据页损坏等持久化异常 信息收集: 可选记录页面锁状态(排查死锁) 生成损坏页列表文件(corruptedPages_xxx.txt) 修复指导:输出包含完整修复命令的指南,包括: 需备份的WAL目录路径 专用分析工具调用方式(IgniteWalConverter) 相关参数(页大小、损坏页文件)

2025-08-08 11:32:28 834

原创 Ignite核心组件启动机制startProcessor解析

摘要:这段代码展示了Apache Ignite在组件管理和启动流程中的设计思想。核心机制是通过skipDaemon()方法判断是否需要跳过带@SkipDaemon注解的组件(当节点运行在Daemon模式时),配合startProcessor()方法实现条件化启动。这种设计实现了资源优化(Daemon节点不加载非必要模块)、关注点分离(注解声明与逻辑判断解耦)和统一生命周期管理,体现了Ignite高度可配置和模块化的架构特点,特别适用于构建轻量级协调节点等场景。

2025-08-08 11:18:26 454

原创 GridKernalGateway

GridKernalGateway是Apache Ignite架构中的核心安全组件,主要功能包括:1)作为内核访问的安全网关,阻止已关闭节点上的外部API调用;2)管理异步操作生命周期,主动中断挂起的Future;3)保护ClusterGroup等富接口对内核的访问。它采用门面模式+观察者模式,确保节点关闭时能优雅终止任务,避免资源泄漏和无效请求,是实现系统稳定性的关键机制。该组件不保护Ignite和ClusterNode等自管理接口,专注于需要深度内核调用的场景。

2025-08-08 10:43:24 920

原创 IgniteKernal

IgniteKernal是Apache Ignite节点的核心实现类,作为连接用户API与底层组件的桥梁。它负责节点的全生命周期管理(启动/停止)、协调内部组件(如缓存、发现等处理器),并监控运行时健康状态(线程池、GC等)。作为Ignite的"操作系统内核",它实现了IgniteEx接口以提供内部扩展方法,同时通过配置验证和优化建议提升系统性能。用户通过Ignite接口操作时,实际执行的是IgniteKernal的实现逻辑,体现了Ignite分布式引擎的核心调度功能。

2025-08-08 09:55:34 289

原创 WorkersRegistry

Apache Ignite的WorkersRegistry组件用于监控和管理系统工作线程的健康状态。它通过注册关键后台线程(如清理、通信、故障检测等),并定期检查其运行情况。当线程执行超时或阻塞时,会触发失败处理机制:收集线程堆栈信息,生成异常报告,并提交给故障处理子系统进行响应(如告警、服务重启或节点关闭)。超时阈值可通过系统属性或配置灵活设置。该机制有效防止了因单一线程问题导致的集群级故障,是保障分布式系统稳定性的重要组件。

2025-08-08 09:28:55 903

原创 Ignite 内部系统级缓存(Utility System Cache)

Ignite系统工具缓存配置解析 这是一个为Apache Ignite内部系统功能设计的缓存配置方法,用于创建名为"ignite-sys-cache"的复制模式缓存。该缓存采用事务性原子模式,确保数据强一致性,通过同步再平衡和完全同步写入模式保证高可靠性。配置使用Rendezvous哈希函数进行数据分布,设置-2的再平衡优先级确保先于用户缓存初始化,适合存储集群协调、元数据、分布式锁等关键系统数据。该配置体现了Ignite内核对系统数据的高可靠要求,虽牺牲部分性能但确保了集群稳定运行。

2025-08-07 19:54:02 896

原创 LoadBalancingSpi

摘要: Apache Ignite的Load Balancing SPI(默认实现RoundRobinLoadBalancingSpi)是分布式任务调度的核心组件,通过智能分配计算任务(Job)到集群节点,实现资源均衡与性能优化。支持两种轮询模式: Per-Task模式:每个任务独立轮询节点,确保Job均匀分布; Global模式(默认):全局共享轮询队列,长期均衡但短期可能热点。

2025-08-07 19:11:24 769

K8S安装以及基础知识的学习

K8S学习笔记

2023-08-20

Quartz2.2.2版本发布包脚本定义

Quartz发布包

2023-07-28

examples.zip

MySQL学习系列SQL案例

2022-01-03

Spring Boot整合Druid Demo项目代码包

Spring Boot整合Druid Demo项目源代码,同时整合了MyBatis,以及实现动态的数据源、Druid连接池的监控。

2020-03-03

simpe-demo-diffdb.7z

该项目包含了动态数据源、兼容Oracle/MySQL数据库、同时通过MyBatis-PageHelper、MyBatis-Plus解决多数据库分页的问题

2020-11-10

动态多数据源示例代码

本项目由SpringBoot+MyBatis+Druild组成,主要关于多数据的动态配置,以及多数据源的配置。用于通过前端请求自由切换数据源,切换数据源的同时也动态执行不同的SQL

2020-11-04

Spring Boot中整合MyBatis

关于SpringBoot中如何配置数据层MyBatis,以及多数据源的配置,多个数据层mapperInterface和xml文件路径的配置源码

2020-04-01

dubbo-thought.7z

Java SPI 机制与 Dubbo SPI 机制的一些说明与测试代码 方便SPI的学习 该项目来自于享学课堂学习资料 请勿随意商业使用

2020-02-22

编程式创建Aspect代理源码

编程式创建Aspect代理源码 You can use the org.springframework.aop.aspectj.annotation.AspectJProxyFactory class to create a proxy for a target object that is advised by one or more @AspectJ aspects.

2020-05-27

Spring Boot中整合MyBatis

关于SpringBoot中如何配置数据层MyBatis,以及多数据源的配置,多个数据层mapperInterface和xml文件路径的配置源码

2020-04-01

springcloud.zip

Spring Cloud 微服务源码:分为用户微服务、课程微服务、网关微服务,通过consul实现了服务发现组件和配置服务器,外面的请求通过网关打进来,微服务之间通过轻量级通信机制,包括http和rabbitmq,微服务之间有一定的认证与授权机制,从而保证安全,对于高并发的应用,通过集成Resilience4j,从而提升应用的可用性。

2020-03-15

空空如也

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

TA关注的人

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