- 博客(82)
- 问答 (1)
- 收藏
- 关注
原创 Java虚拟线程技术解析
当一个任务执行阻塞I/O操作(如网络请求、数据库查询)时,其对应的平台线程会被操作系统挂起,进入等待状态,而这个线程所占用的内存(通常为1MB或更多)和其他系统资源在阻塞期间无法被有效利用。在这种情况下,虚拟线程无法被卸载,载体线程也将一同被阻塞,这会暂时性地破坏虚拟线程的优势。这个过程完全在JVM用户空间内完成,避免了昂贵的内核态与用户态之间的切换,这是虚拟线程上下文切换开销极低的关键原因。会为提交的每个任务创建一个新的虚拟线程,它不池化虚拟线程,而是高效地管理其生命周期。
2025-11-29 18:00:41
1457
原创 Java内存模型(JMM)深度解析
在将字节码编译为本地机器码时,JIT会分析代码上下文,并根据JMM的规范,在适当的位置插入平台相关的内存屏障指令。它的主要目标是屏蔽各种硬件和操作系统的内存访问差异,确保Java程序在不同的平台上都能表现出一致的内存行为。例如,线程A若要将其对共享变量的修改传递给线程B,必须先将工作内存中更新后的值写回(write)到主内存,然后线程B再从主内存中读取(read)这个新值。等,分别对应四种类型的内存屏障。GC屏障是为了GC算法的正确性,而JMM的内存屏障是为了并发编程中线程间的可见性和有序性。
2025-11-29 17:37:24
1327
原创 抽象队列同步器(AQS)的原理与应用
尽管 JUC 提供的工具已经非常丰富,但在某些极端复杂的业务场景下,我们可能需要自定义同步语义。这时,继承 AQS 就是最佳选择。MutexLock下面我们实现一个简单的、不可重入的独占锁MutexLock。// 自定义不可重入独占锁// 静态内部类,继承AQS// 判断是否处于锁定状态@Override// 尝试获取锁@Override// 使用CAS操作,期望state为0,如果成功则设置为1// 尝试释放锁@Override// 直接设置为0,因为不可重入。
2025-11-26 22:24:53
927
1
原创 防止MySQL挂掉综合指南
记住,防止MySQL挂掉是一个系统工程。防止MySQL挂掉并非依赖单一的技术或配置,而是一个涉及硬件、操作系统、数据库配置、架构设计、持续监控和应急预案的系统工程。通过全面评估当前环境,进行由下至上的精细化优化,构建强大的高可用架构,并辅以严密的监控告警和可靠的备份恢复策略,可以最大限度地保障MySQL服务的稳定、高效运行,从而为业务的持续发展提供坚实的数据支撑。
2025-11-26 21:26:35
677
原创 Spring IOC核心原理与运用
实现线程局部作用域的完整示例:@Override@Override@Override// 线程销毁时清理@Override@Bean@Component// 或通过@Scope的proxyMode创建代理@Component// 多租户数据源实现。
2025-11-25 23:24:25
1134
原创 深入解析Spring Boot中的AOP原理与实践
面向切面编程(AOP)是一种编程范式,旨在通过分离横切关注点(Cross-Cutting Concerns)来提高软件系统的模块化程度。在几乎所有的软件项目中,都存在一些散布于多个模块的通用功能,例如日志记录、性能监控、事务管理、安全控制和异常处理等。这些功能如果直接硬编码到每个业务逻辑方法中,将导致代码重复、逻辑耦合度高,以及维护困难。AOP允许我们将这些“横切”功能封装到称为“切面”(Aspect)的独立模块中。
2025-11-24 23:08:07
942
原创 什么是QPS和RT?
基本定义:系统在一秒内能够处理的查询或请求的数量计算公式:QPS = 总请求数 / 总时间(秒)实际例子:如果一个API在10秒内处理了5000次请求,那么它的QPS就是500基本定义:从发送请求到收到完整响应所花费的时间时间组成网络传输时间服务器处理时间数据库查询时间响应返回时间。
2025-11-23 19:43:04
343
原创 Nginx核心原理机制及其代理实现解析
Nginx将一个HTTP请求的处理过程划分为11个阶段(Phases),例如NGX_HTTP_POST_READ_PHASE、NGX_HTTP_REWRITE_PHASE、NGX_HTTP_CONTENT_PHASE等。当后端服务由多台服务器组成集群时,Nginx可以使用ngx_http_upstream_module模块实现负载均衡,将请求分发到不同的服务器,以提高系统的处理能力和可用性。它作为客户端与后端真实服务器之间的中间层,接收客户端请求,转发给后端,并将后端响应返回给客户端。
2025-11-23 19:34:54
1596
原创 消息队列(MQ)消息积压与消费慢问题的深度解析
消息队列(MQ)作为现代分布式系统架构中的核心组件,承担着解耦、异步化和流量削峰等关键职责。然而,在实际应用中,由于生产速率远超消费速率,常常会出现“消息积压”(Message Backlog)和“消费慢”(Slow Consumption)的问题。这些问题不仅会导致消息处理延迟增大、实时性下降,严重时还可能引发内存溢出、系统连锁崩溃等风险。消息积压与消费慢是分布式系统中一个复杂但可控的问题。解决这一问题,不能仅仅依赖于临时性的扩容,而应建立一套从监控预警原因定位到系统性优化的闭环流程。核心解决思路在于。
2025-11-23 17:48:13
1032
原创 深入解析SpringBoot中的循环依赖机制与解决方案
在Spring框架的上下文中,循环依赖(Circular Dependency)指的是两个或多个Bean之间形成了一个封闭的依赖链。最简单的形式是Bean A依赖于Bean B,同时Bean B又依赖于Bean A。更复杂的情况可能涉及多个Bean,例如A -> B -> C -> A。当Spring容器在启动和初始化Bean的过程中,沿着这个依赖链进行实例化和注入时,会发现最终回到了依赖链的起点,从而形成一个无法自然解开的“死结”。
2025-11-22 23:48:08
762
原创 Java中的自旋锁与CAS机制深度解析
内存位置 V (Memory Location) :需要被更新的变量的内存地址。预期值 A (Expected Value) :线程认为该内存位置当前应该持有的值。新值 B (New Value) :如果内存位置的值与预期值A相匹配,将被写入的新值。当且仅当内存位置V的当前值等于预期值A时,处理器才会原子地将V的值更新为B。否则,处理器不做任何操作。无论更新是否成功,操作都会返回V之前的值。这种“比较后交换”的机制允许线程在不加锁的情况下,安全地修改共享变量。
2025-11-22 23:28:16
1054
原创 Redis大Key与内存不足问题深度解析与应对策略
大Key与内存不足是Redis生产环境的典型挑战,其根源在于数据模型设计不当、内存管理策略不匹配及业务访问模式的不均衡性。设计先行:通过规范约束、分片设计从根源避免大Key产生动态适配:根据读写比例和热点分布选择淘汰策略,64位架构+充足物理内存是基础架构升级:集群模式与多级缓存是应对大数据量和高并发的终极手段。
2025-11-21 23:32:54
869
原创 Redis缓存三大问题深度解析与综合防护策略
其根本原因是热点数据在缓存过期的瞬间,海量请求同时到达,缓存层无法拦截,形成"击穿"效应。在数据回写缓存前,后续请求全部穿透到数据库,形成"请求风暴"。缓存穿透指查询不存在的数据,由于缓存和数据库均无该数据,恶意攻击者可大量请求此类无效Key,绕过缓存直击数据库,造成资源浪费甚至服务瘫痪。当缓存失效时,所有并发请求被收集,仅首个请求执行数据库操作,其余请求等待结果共享。检测到数据库无数据时,将NULL值写入缓存并设置较短TTL(如5分钟),在此期间相同请求直接返回空值,避免重复查询。
2025-11-21 23:03:01
1661
原创 Neo4j Cypher查询语言深度解析
Cypher是为Neo4j图数据库量身打造的一种声明式、图形化的查询语言。它的设计哲学深受SQL启发,但其核心优势在于能够以一种直观且富有表现力的方式描述图中的模式。Cypher采用了一种被称为“ASCII艺术”的语法风格,通过简单的字符组合来表示图的节点和关系,使得查询语句本身就像一幅微缩的图谱,极大地降低了图数据查询的认知负荷。们将从其核心语法和数据模型概念入手,逐步深入到高级模式匹配、复杂查询构建,并结合当前主流的Neo4j 5.x版本的特性进行探讨。
2025-11-20 23:07:36
1141
1
原创 图数据库Neo4j原理与运用
随着大数据时代的到来,数据之间的关联关系变得日益重要。传统关系型数据库在处理复杂、多层级的关联关系时面临性能瓶颈,图数据库因此应运而生。Neo4j作为图数据库领域的领导者,凭借其原生的图存储引擎、高效的图遍历能力以及强大的图数据科学生态,在社交网络、金融风控、推荐系统、知识图谱等众多领域展现出巨大的应用价值。GDS是一个高性能的图分析平台,它提供了一系列并行化实现的图算法,可以处理数十亿级别的节点和关系。图投影 (Graph Projection)
2025-11-19 23:18:45
951
1
原创 Docker原理浅析(下)
网桥作为二层交换机,实现容器间通信,并通过 NAT 实现外部访问。:为每个容器分配独立 MAC 地址,直接连接到宿主机物理网络,使容器在物理网络中表现为独立设备,可与传统物理机、虚拟机平等通信。:在共享开发环境中,不同用户可运行独立 Rootless Docker 实例,实现资源与权限完全隔离,避免交叉影响。:历史驱动,性能接近 Overlay2,但因其非主线内核模块地位,新内核支持逐渐减少,生产环境不推荐使用。:容器共享宿主机网络命名空间,直接使用宿主机 IP 与端口,无 NAT 开销,无端口映射限制。
2025-11-19 22:43:15
929
2
原创 Docker原理浅析(上)
Docker 守护进程在创建容器时,为每个容器创建独立的 cgroup 目录(如 /sys/fs/cgroup/memory/docker/< container-id>),将容器进程 PID 写入 cgroup.procs 文件,内核自动对进程组应用资源限制。runc 是典型的"一次性"工具:创建并启动容器进程后,runc 自身退出,容器进程作为子进程继续运行。命名空间是 Linux 内核实现资源虚拟化的根本机制,它为进程创建一个"隔离视图",使每个容器只能看到属于自己的资源。
2025-11-17 23:36:17
1023
2
原创 Spring Boot 线程池深度解析:从 JDK 原理到生产实践
回收机制通过 processWorkerExit() 方法实现,当线程获取任务超时(getTask() 返回 null)且满足 workerCount > corePoolSize 或 allowCoreThreadTimeOut 为 true 时,线程退出并被垃圾回收。Spring Boot 不直接使用 JDK 的 ThreadPoolExecutor,而是提供 ThreadPoolTaskExecutor 进行增强封装。虚拟线程是 JDK 21+ 的轻量级线程实现,由 JVM 管理而非操作系统。
2025-11-17 23:10:42
927
原创 【复习408】操作系统存储器管理浅析
存储器管理是操作系统的核心功能之一,其主要任务包括内存分配与回收、地址变换、内存共享与保护以及内存扩充。现代操作系统采用层次化的存储结构,通过多级存储体系(寄存器、高速缓存、主存、磁盘)实现性能与成本的平衡。关键原理: 逻辑地址与物理地址的转换是贯穿整个章节的核心线索。操作系统通过地址变换机构(页表、段表、快表等)实现从进程逻辑地址空间到物理内存空间的映射。这一机制不仅支持了内存保护(防止进程间非法访问),也为虚拟内存技术奠定了基础。
2025-11-16 23:33:41
1139
原创 【复习408】操作系统进程同步浅析
进程同步是考研408操作系统部分的核心考点,历年真题中既有概念性小题,也有综合性大题。:使用计数器readcount记录读者数量,信号量rw_mutex实现读写互斥,mutex保护readcount的修改。:混淆PV操作的执行顺序,例如在生产者-消费者问题中,若将P(mutex)置于P(empty)之前,可能导致死锁。:5位哲学家围坐圆桌,每人左右各一支筷子,需同时拿到两支才能进餐。:基于MCS锁,每个CPU本地自旋,形成FIFO队列。:偏向写者的同步机制,适用于写少但需快速完成的场景。
2025-11-16 23:04:38
784
原创 【复习408】处理机调度与死锁浅析
死锁是指多个进程因竞争资源而陷入永久阻塞的状态,若无外力干预,这些进程将无法继续推进。产生的四个必要条件(必须全部满足):互斥条件:资源一次仅允许一个进程占用持有并等待条件:进程已持有至少一个资源,同时等待其他进程占有的资源不可抢占条件:已分配资源不能被强制剥夺,必须由进程主动释放循环等待条件:存在进程等待环路,P1等P2,P2等P3,…,Pn等P1要点:必须能判断给定资源分配场景是否满足四个必要条件,并理解破坏任一条件即可预防死锁。
2025-11-16 22:13:46
789
原创 领域驱动设计(DDD)与微服务架构的集成
战略设计关注系统的整体结构、业务能力划分以及如何界定系统的边界。其核心目标是避免系统演变为"泥泞的大球"(Big Ball of Mud),通过识别有界上下文(Bounded Context)来构建清晰的业务边界。在微服务架构中,每个有界上下文通常对应一个微服务候选,这种映射关系为微服务的拆分提供了理论依据。战略设计本质上是一种高层设计模式,用于管理不同上下文之间的交互与集成。
2025-11-14 21:40:12
1400
原创 ELK Stack核心原理与运用要点解析
Vega/Vega-Lite为高级用户提供了声明式语法构建图表,支持ES无法原生实现的复杂可视化。网络拓扑图:展示微服务调用关系雷达图:多维性能指标对比桑基图:流量流向分析3D可视化:结合WebGL实现三维数据展示"data": {"url": {该配置直接从ES聚合结果读取数据,避免了中间转换开销。ELK Stack已从单一日志工具发展为统一数据分析平台,其边界扩展到APM(应用性能监控)、Uptime(可用性监测)、Endpoint Security(终端安全)。简化架构。
2025-11-14 21:13:49
1705
原创 【复习408】操作系统进程描述与控制详解
进程是程序在数据集上的一次执行过程,是操作系统进行资源分配和调度的最小单位。它包含了程序代码、相关数据以及内核为该进程分配的资源信息。每个进程都有自己的地址空间、内存空间和资源,具有动态性和并发性特点。进程的描述与控制是操作系统的核心功能之一,涉及进程的基本概念、进程控制块、进程状态转换、进程控制操作、进程调度、进程间通信、进程同步以及进程死锁等多个方面。深入理解这些概念和机制,有助于更好地设计和优化多进程应用程序,提高系统的性能和可靠性。
2025-11-13 23:54:43
698
原创 详记ArkTS语言基础类库
ArkTS(Ark Type Script)是HarmonyOS应用开发的官方高级语言,基于TypeScript扩展而来,提供了丰富的基础类库支持。这些类库为开发者提供了全面的开发能力,覆盖了从基本数据处理到复杂容器操作的各种需求。基本数据类型支持:提供标准的数据类型定义和操作接口容器类库:包括线性容器和非线性容器,支持各种数据结构操作XML处理:支持XML的生成、解析和转换JSON扩展:提供增强的JSON处理能力字符串和二进制数据处理:提供高效的字符串操作和二进制数据处理接口数值计算支持。
2025-11-12 23:48:25
636
原创 ArkTS分布式设计模式浅析
分布式UI渲染:通过ArkUI框架声明式开发,支持跨设备界面一致性与动态响应分布式数据管理:基于DDM框架实现设备间数据同步与一致性保障分布式任务调度:通过TaskPool和远程Ability调用实现跨设备任务协同关键特性:ArkTS通过静态类型检查与编译器优化提升运行效率,其分布式API(如@ohos.distributedData)提供模块化开发支持。
2025-11-12 23:27:08
911
原创 【复习408】计算机网络应用层协议详解
应用层是OSI参考模型的最高层,直接为用户提供应用程序所需的数据传输服务。在TCP/IP模型中,应用层包含了OSI模型的应用层、表示层和会话层的功能。它负责提供网络服务,使应用程序能够访问网络,并确定进程间通信的性质与内容。:负责邮件传输,将邮件从源地址发送到目的地址:负责从邮件服务器接收邮件到本地设备:提供更高级的邮件访问和管理功能协议端口功能传输层协议工作方式HTTP80Web浏览TCP请求/响应HTTPS443加密Web浏览TCP请求/响应DNS53域名解析。
2025-11-11 23:18:39
938
3
原创 【复习408】TCP运输层核心机制
机制目标核心方法流量控制避免接收方缓冲区溢出滑动窗口、接收窗口(rwnd)通告拥塞控制避免网络拥塞慢开始、拥塞避免、快重传、快恢复连接管理可靠建立/释放端到端连接三次握手、四次挥手。
2025-11-11 22:50:48
1086
原创 Seata原理与简单示例
Seata 通过TC、TM、RM三组件协作,结合三种事务模式,为 Spring Boot 微服务提供了一套完整的分布式事务方案。只需通过注解、配置数据源代理与 Seata Server 连接,就能将本地事务升级为全局分布式事务,保证跨服务数据一致性。
2025-11-10 23:12:48
1200
2
原创 Redis 底层运行机制与原理浅析
Redis 的底层运行机制是一个精心设计的系统工程:以内存为核心,提供了极快的访问速度。精巧的数据结构,在速度与内存之间取得了最佳平衡。单线程 Reactor 模型,避免了并发复杂性,配合 I/O 多路复用轻松应对高并发。灵活可配的持久化方案(RDB, AOF, 混合),满足了不同场景下的数据安全需求。渐进式的优化策略(渐进式 rehash、惰性删除、后台线程化),保证了服务的平滑运行。
2025-11-10 22:32:25
1401
1
原创 浅析MyBatisPlus 核心执行流程
本文旨在深入剖析MyBatisPlus(以下简称MP)在与SpringBoot框架集成环境下的核心执行流程。MyBatisPlus作为MyBatis的增强工具,极大地简化了持久层的开发工作,但其内部执行机制对于开发者而言往往如同一个“黑盒”。本文将通过分层解析的方式揭示从Mapper接口调用到最终SQL执行并返回结果的全过程,且将重点围绕动态代理机制、SqlSession核心组件以及 拦截器链(Interceptor Chain) 三大主线展开,并对通用CRUD、分页查询等关键功能的实现原理进行剖析。
2025-11-09 23:31:44
1004
1
原创 ArkTS多维度状态管理机制
本文旨在全面、深入地解析华为鸿蒙(HarmonyOS)应用开发语言ArkTS中的多维度状态管理机制。作为ArkTS声明式UI框架的核心组成部分,该机制通过一套丰富的装饰器和API,实现了从组件内部、组件之间、跨层级乃至跨设备的数据管理与同步,是构建高性能、高可维护性应用的关键。“多维度”是理解ArkTS状态管理的关键。它指的是状态的作用域和生命周期可以横跨多个层次和边界。组件内维度:状态被严格限制在单个组件内部,是组件私有的。组件间维度:状态可以在紧邻的父子组件之间进行单向或双向传递。跨层级维度。
2025-11-09 22:38:35
1058
原创 仓颉(Cangjie)语言之网络编程浅析
本文系统性地涵盖了从基础的 TCP/UDP 网络模型到高级的 HTTP、WebSocket 数据传输协议的实现,详细探讨了仓颉语言标准库中相关的网络模块(如 socket、net.http、net.tls),并分析了其并发模型与异步 I/O 的实现方式。仓颉的标准库中包含了底层的 socket 模块,为开发者提供了进行 TCP 和 UDP 通信的基础能力。网络编程的基石是操作系统提供的套接字(Socket)接口,它屏蔽了底层网络协议的复杂性,为应用程序提供了一套标准的通信 API。
2025-11-08 21:40:40
1398
2
原创 浅析MySQL InnoDB存储引擎的MVCC实现原理
多版本并发控制(Multi-Version Concurrency Control, MVCC)是现代关系型数据库解决高并发场景下读写冲突、提升性能的核心机制。MySQL的InnoDB存储引擎通过一套精密的设计,实现了高效的MVCC,从而在保证事务隔离性的前提下,极大限度地支持了“非锁定读”(Non-locking Read)。
2025-11-07 22:20:04
1290
5
原创 什么是CPU分支预测?
CPU 分支预测是一种为了克服指令流水线因条件分支而产生的"停顿"问题,而采用的"猜测并提前执行"的硬件优化技术。它通过动态记录分支历史,以极高的准确率预测分支走向,从而保持流水线的充盈。预测失败时的"清空流水线"操作是其主要性能代价。理解这一原理,有助于我们编写出更能发挥现代 CPU 性能的代码。
2025-11-07 21:52:40
909
2
原创 Spring Boot 自定义组件深度解析
Spring Boot的核心是其强大的组件模型和“约定优于配置”的理念,理解并掌握如何创建、配置和管理自定义组件是精通Spring Boot框架的关键。本文将从组件的基础注册与注入机制出发,深入探讨属性绑定、条件化加载、生命周期管理等核心概念,并进一步延伸至如何将自定义组件封装为可重用的“Starter”,最后将展望面向未来的云原生开发,分析在Spring Boot 3.x环境下,如何确保自定义组件与Java 21及GraalVM原生镜像技术的兼容性。
2025-11-07 14:44:58
655
1
原创 面向 Spring Boot 的 JVM 深度解析
在现代应用开发中,尤其是以 Spring Boot 构建的微服务和云原生应用,其性能、稳定性和资源效率直接取决于底层 JVM 的运行状况。理解并掌握 JVM 的核心机制不仅是解决线上性能瓶颈、内存溢出等问题的关键,更是迈向高级工程师的必经之路。本文将从 JVM 的内存结构基础出发,逐步深入到垃圾回收机制、即时编译技术,并重点剖析在容器化时代和追求极致性能背景下,Spring Boot 如何利用如 GraalVM、CRaC、AppCDS 等前沿 JVM 技术实现性能飞跃。基础层。
2025-11-05 21:43:55
1215
5
原创 Java注解在Spring Boot中的详细原理与使用情况解析
本文将从Java注解的底层原理(包括元注解、保留策略和字节码结构)出发,逐步深入到Spring框架如何通过反射与字节码技术(ASM)在运行时读取和处理注解。在此基础上,我们还将重点分析Spring Boot中由注解驱动的关键特性,如自动配置、组件扫描、条件化加载和配置属性绑定。Java提供了四种标准的元注解,用于修饰其他注解,定义其行为和特性。它们是理解所有注解工作方式的基石。@Target。
2025-11-05 21:14:28
1230
1
原创 【AI基础篇】Transformer架构深度解析与前沿应用
从最初的编码器-解码器结构,到BERT的双向表示和GPT的强大生成能力,再到ViT在视觉领域的跨界应用,Transformer展现了其作为一种通用序列处理工具的巨大潜力。它随机地遮盖(mask)输入句子中一定比例的词元,然后训练模型去预测这些被遮盖的词元。直观上,Q代表当前词元为了解上下文而发出的“探寻”,K代表序列中每个词元可供“匹配”的特征,V则代表每个词元实际携带的“信息”。注意力机制是Transformer的核心,它允许模型在处理一个序列时,为序列中的每个词元动态地计算其与其他词元的相关性权重。
2025-11-04 22:33:40
1028
6
空空如也
出现断点但不知道问题在哪里
2021-11-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅