自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Leaton的博客

26届毕业/ 211大三在读/ 前后端开发/ 互联网小白/ 技术学习和分享/技术极客

  • 博客(198)
  • 收藏
  • 关注

原创 HashMap底层原理(源码详解)

摘要:HashMap采用数组+链表/红黑树结构存储键值对,通过扰动函数(hashCode高16位异或)计算哈希值以减少冲突。默认初始容量16(2的幂次)便于位运算定位。当元素超过阈值(容量×负载因子0.75)时触发扩容,新容量翻倍,利用位运算快速迁移数据(新位置=原位置或原位置+旧容量)。JDK1.8后链表长度>8转为红黑树优化查询。设计通过位运算替代哈希重计算、均匀分布策略和动态扩容机制来平衡性能与空间效率。其他优化包括合理设置初始容量、调整负载因子或选用并发容器等。(149字)

2025-08-08 12:13:48 1022

原创 Elasticsearch 启动失败?从日志分析到最终解决(磁盘空间不足案例)

Spring Boot 项目启动后,ES 操作正常,不再报超时错误。ES 真正的日志在 logs/elasticsearch.log。,但 Java 应用就是连不上!:ES HTTP 接口正常,但 Java 客户端无法连接。,但 HTTP 接口可能仍然能访问(误导性现象)。,适用于类似 ES 启动失败、连接超时等场景。,而不是 Windows 服务日志(导致 ES 无法正常写入数据。看起来没问题,但为什么连不上?,导致 ES 无法写入数据!,不要只看服务控制日志。,不一定是网络问题。

2025-06-11 15:34:53 1247

原创 Elasticsearch与MySQL索引机制深度对比

MySQL索引是精确性的艺术为结构化数据的快速定位优化强调数据一致性和完整性适合作为业务数据的"单一可信源"Elasticsearch索引是相关性的科学为文本分析和快速检索设计追求查询吞吐量和灵活性擅长从海量数据中提取信息在实际系统架构中,两者往往互补而非竞争。理解它们的核心差异有助于开发者根据具体场景做出合理选择,甚至巧妙结合两者优势构建更强大的数据解决方案。随着现代应用对搜索和分析需求的增长,Elasticsearch类搜索引擎与传统数据库的协同已成为大数据架构的标准模式。

2025-06-06 17:50:43 1340

原创 Elasticsearch:基本概念、索引结构与优缺点分析

Elasticsearch作为现代搜索引擎的代表,凭借其分布式架构、近实时搜索能力和丰富的查询功能,已成为大数据领域的重要工具。其索引结构设计巧妙平衡了读写性能与可扩展性,而分片机制则实现了数据的分布式处理。尽管存在事务支持有限、资源消耗较高等局限性,但在搜索和分析类应用中,Elasticsearch仍然是许多企业的首选解决方案。随着数据量的持续增长和实时分析需求的增加,Elasticsearch及其生态系统仍在不断演进,未来有望在性能优化、资源效率和易用性方面带来更多创新。

2025-06-06 14:26:21 1224

原创 当分页遇上多标签搜索:我是如何搞定这个“深分页“难题的

对于数据变化不频繁的场景,可以把符合条件的ID列表缓存起来,分页时直接从缓存取ID范围。深分页一定要避免OFFSET:数据量一大就现原形多标签筛选要用HAVING COUNT:简单的IN查询结果不对JOIN操作要小心:特别是多对多关系,很容易产生性能问题根据业务场景选择方案:没有银弹,只有最适合的方案希望这篇实战经验能帮到遇到类似问题的同学。如果你有更好的解决方案,欢迎在评论区交流!

2025-05-28 17:53:01 959

原创 深入理解IoC容器:如何实现Bean之间的解耦

在软件工程中,耦合指的是不同模块/组件之间的依赖关系强度。高耦合意味着一个组件的修改可能会影响到依赖它的其他组件。Spring IoC容器通过控制反转和依赖注入机制,有效地实现了组件之间的解耦。这种设计带来了诸多好处:组件只关注自身核心功能,不负责依赖管理依赖关系外部化,配置更灵活更容易进行单元测试和集成测试系统架构更清晰,更易于维护和扩展理解IoC容器的解耦机制,能够帮助我们设计出更加松耦合、高内聚的系统架构,这是成为优秀Java开发者的重要一步。

2025-05-28 17:29:56 738

原创 Spring Boot + Vue 前后端接口交互全流程详解

通过以上方案,Spring Boot和Vue可以实现高效、安全的前后端接口交互。实际开发中应根据项目需求选择合适的传参方式、安全策略和性能优化方案。

2025-05-21 09:44:53 3710 1

原创 Java异常抛出机制详解:从原理到最佳实践

Java中的异常抛出机制是处理程序运行时错误的关键工具。异常分为Error和Exception两大类,其中Exception又分为RuntimeException(非受检异常)和其他Exception(受检异常)。通过throw关键字可以显式抛出异常,中断当前流程并将控制权转移到异常处理代码块。异常抛出应遵循最佳实践,如在参数校验失败、违反业务规则、资源不可用或状态不一致时抛出异常,并选择合适的异常类型和提供清晰的错误信息。自定义异常可以更好地处理特定业务场景。异常处理应遵循“早抛出晚捕获”原则,并考虑性能

2025-05-20 14:06:00 1132

原创 Java Collections工具类详解:提升集合操作效率的利器

Java中的Collections工具类是java.util包提供的一个静态方法集合,专门用于操作和处理各种集合对象(如List、Set、Map等)。它提供了多种实用方法,包括排序、查找、同步化、不可变集合等,能够简化集合操作、提高代码效率,并支持线程安全控制。Collections类的方法均为静态方法,支持泛型,确保类型安全,并使用高效算法优化性能。常用功能包括排序(如sort、reverse)、查找(如binarySearch、max、min)、创建特殊集合(如emptyList、singletonSe

2025-05-20 11:06:01 1071

原创 @RefreshScope注解:实现Spring配置动态刷新的关键机制详解

@RefreshScope是Spring Cloud提供的一个特殊作用域注解,允许在运行时动态刷新被注解的Bean及其依赖项,而无需重启应用。它基于Spring的@Scope机制扩展实现,通过代理模式和缓存机制实现动态刷新。当配置变更时,清除缓存并重新初始化Bean,确保应用使用最新配置。@RefreshScope与Spring Cloud Config无缝集成,支持手动和自动刷新配置,适用于需要频繁修改配置的微服务架构。使用@RefreshScope时需注意性能影响和刷新范围控制,避免频繁刷新和循环依赖问

2025-05-20 10:23:05 3795

原创 WebSocket:实现全双工实时通信的现代Web技术详解

WebSocket是一种先进的网络通信协议,允许在单个TCP连接上进行全双工通信,实现服务器与客户端之间的实时数据交换。与传统的HTTP请求-响应模式相比,WebSocket具有低延迟、低开销和跨域支持等优势。它通过一次握手建立持久连接,支持服务器主动推送数据,适用于实时聊天、在线游戏、金融交易等场景。WebSocket协议由IETF标准化,现代浏览器广泛支持。其核心特点包括全双工通信、低延迟、低开销和跨域支持。WebSocket的API简单易用,支持文本和二进制数据传输。服务器端实现可通过Java、Spr

2025-05-20 10:01:02 1456

原创 Tomcat:一个强大的Java Web应用服务器详解

Apache Tomcat是一个开源的Java Servlet容器和Web服务器,由Apache软件基金会开发,支持Java Servlet、JSP、EL和WebSocket等Java EE规范。Tomcat自1999年诞生以来,经历了多个版本的演进,逐渐成为轻量级且功能强大的Web容器。其核心架构包括Server、Service、Connector、Engine、Host和Context等组件,具有轻量级、跨平台、可嵌入和高度可配置等特性。Tomcat的安装和使用相对简单,支持多种部署方式,并且可以通过配

2025-05-20 09:27:04 1791

原创 红黑树:数据结构界的“平衡大师”

红黑树是一种自平衡的二叉搜索树,通过颜色约束和旋转操作确保树的高度始终为O(logN),从而避免退化为链表,提升操作效率。与ArrayList的线性查找时间O(N)相比,红黑树的插入、删除和查找操作时间复杂度均为O(logN),适用于需要快速增删改查的有序数据场景,如优先队列和自动补全。尽管红黑树实现复杂且空间开销较大,但其性能优势显著。Java中的TreeMap便是基于红黑树实现,开发者可直接使用或参考其源码优化特定场景。掌握红黑树,能有效提升程序性能,解决数据处理的性能瓶颈。

2025-05-12 12:08:21 534

原创 详解Binlog 和 Redo Log的区别和底层逻辑

本文深入探讨了MySQL数据库中的两种关键日志文件:Binlog和RedoLog。Binlog作为“时光机”,记录所有数据修改操作,主要用于数据复制和恢复;而RedoLog作为“安全网”,确保事务的持久性,防止数据丢失。文章详细介绍了这两种日志的核心功能、记录内容、配置方法以及它们在实际应用中的不同用途和恢复能力。此外,还提供了实战场景中的使用建议和避坑指南,帮助开发者在Java应用中有效利用这些日志功能,确保数据的安全性和一致性。通过掌握Binlog和RedoLog,开发者可以更好地应对数据库崩溃和数据丢

2025-05-12 09:18:03 1277

原创 网站高并发性能优化实战指南:从架构升级到分布式系统设计

本文探讨了在互联网平台用户数量激增背景下,如何优化和升级网站系统架构以应对高并发、高流量的挑战。文章首先分析了系统性能瓶颈的常见来源,包括应用层并发能力不足、数据库单点瓶颈、缓存使用不当和业务耦合严重等问题。接着,提出了提升系统性能的核心方向,如架构升级为微服务体系、前后端请求分流与缓存机制优化、异步化与消息队列解耦、数据库读写分离与分库分表等。文章还深入探讨了分库分表后的挑战与对策,并提出了在分库分表极限后系统应如何演进的建议,包括冷热数据分离、引入搜索引擎与多数据模型系统、使用分布式数据库或中间件、多级

2025-05-09 15:07:45 890

原创 数据库迁移实战:如何零停机、零丢失迁移数据库?

文章详细介绍了在业务高峰期将MySQL数据库迁移到分布式数据库TiDB的完整流程,确保服务不中断且数据零丢失。首先,通过数据摸底和迁移目标明确,进行“战前沙盘推演”。接着,设计了双活架构+增量同步和分阶段迁移两种方案,并提供了具体的工具和代码示例。在迁移实施阶段,详细描述了冷数据迁移和增量同步的步骤,强调了数据一致性校验和持续监控的重要性。此外,还提供了回滚策略和实战案例,展示了电商大促前的数据库升级过程。文章最后总结了迁移的核心原则,并鼓励读者分享经验。

2025-05-09 13:56:19 1915

原创 探秘MySQL索引的磁盘存储:从B+树到物理文件结构

核心要点Java开发启示B+树节点=磁盘页批量插入时考虑主键顺序性,减少页分裂聚集索引存储数据优先选择自增主键,避免UUID随机写入导致的碎片化二级索引需回表尽量使用覆盖索引,减少SELECT *页大小影响I/O效率在SSD环境中可尝试增大至32KB最后建议:在Java应用中,通过EXPLAIN分析执行计划,结合观察索引的物理访问模式,持续优化数据库交互层代码。扩展阅读《MySQL技术内幕:InnoDB存储引擎》第5章OpenJDK项目Panama对向量化查询的探索。

2025-05-08 17:06:52 1095

原创 如何解决LRU缓存中长期未被随机采样到的“僵尸Key”问题?

方案适用场景性能开销精度LRU + 时间窗口对内存敏感的业务中高概率淘汰高吞吐量实时系统低中分层LRU数据热度分布复杂的场景高极高解决LRU的“僵尸Key”问题需要结合业务特征和数据访问模式。核心思想是引入时间维度与外部干预机制,打破传统LRU对显式访问行为的完全依赖。在工程落地时,建议通过A/B测试对比不同策略的缓存命中率,最终实现性能与资源利用的最优平衡。延伸阅读论文《ARC: A Self-Tuning, Low Overhead Replacement Cache》

2025-05-07 10:03:54 1141

原创 Kotlin语言全面解析:现代编程的新选择

Kotlin作为一门现代编程语言,不仅解决了Java开发者长期面临的许多痛点,还引入了许多创新特性,极大地提高了开发效率和代码质量。无论你是Android开发者、后端工程师还是对多平台开发感兴趣,Kotlin都值得你投入时间学习。随着Kotlin生态系统的不断成熟,它很可能会成为未来软件开发的重要支柱之一。"Kotlin是我见过的唯一一门比它要替代的语言更简单的语言。" —— Hadi Hariri, JetBrains开发者倡导者。

2025-05-06 17:42:05 1230

原创 Java并发编程教学:从基础到实践

5, // 核心线程数10, // 最大线程数120, // 空闲线程存活时间TimeUnit.SECONDS, // 时间单位new ArrayBlockingQueue<>(100) // 工作队列Java并发编程是一个庞大而复杂的主题,需要不断学习和实践。建议从简单的例子开始,逐步深入理解各种并发概念和工具。记住,并发编程的首要目标是正确性,其次才是性能优化。进一步学习资源《Java并发编程实战》《Java并发编程的艺术》Oracle官方Java并发教程。

2025-05-06 16:05:45 707

原创 MVCC:数据库的“时光穿梭机”——Java程序员必学的并发控制黑科技!

想象这样一个场景:电商大促时,千万用户同时点击“抢购按钮”,数据库瞬间被请求淹没。今天,我们就用Java代码揭开MVCC的神秘面纱,从理论到实践,带你玩转数据库的并发世界!:MVCC就像给数据行拍“九宫格照片”,每次修改都生成新版本,旧版本保留供读取。点击“评论”,分享你的实战经验!:观察版本链的变化,以及Read View的作用!事务开始时生成的“快照”,决定可见的数据版本。中——这个让数据库实现“时光穿梭”的黑科技!:避免锁竞争,让读写操作“和平共处”。“在实际项目中,你如何选择隔离级别?

2025-04-30 17:40:25 358

原创 Trae 简介与安装

Trae 是字节跳动推出的AI 原生集成开发环境(IDE),深度融合了 Claude、GPT-4o、DeepSeek 等大模型,支持智能代码生成、上下文理解和自动化任务执行。其核心优势包括免费使用中文友好界面和多模态开发支持。Trae 凭借其AI 原生设计和免费开放策略,成为开发者提升效率的利器。无论是快速生成项目骨架,还是解决复杂代码问题,Trae 都能通过自然语言交互实现“所想即所得”。建议开发者结合实际项目需求,灵活运用 Builder 与 Chat 模式,探索 AI 协作编程的更多可能性。

2025-04-30 11:39:42 2904

原创 深度解析Redis缓存淘汰机制底层原理:LRU、LFU与随机算法的终极对决!

Redis作为内存数据库,所有数据都存储在宝贵的内存中。但内存空间是有限的,当内存使用达到。:Redis源码evict.c、redis.conf官方文档。每次随机选取5个key(可配置),淘汰其中最久未使用的。优先淘汰剩余生存时间(TTL)最短的key。为什么Redis不采用真正的LRU实现?LFU的Morris计数器是如何工作的?Redis淘汰机制的核心代码在。仅针对设置了过期时间的key。只淘汰设置了过期时间的key。实现简单,但可能淘汰热点数据。适用于数据访问完全随机的场景。

2025-04-29 10:31:03 1072

原创 操作系统调度算法:从入门到精通,彻底搞懂进程如何“排队“执行!

操作系统中的进程调度就像银行大堂经理,决定着CPU这个"柜台"如何高效服务所有"客户"。想象你在银行办理业务:有人取钱(短任务),有人贷款(长任务),VIP客户(高优先级)可以插队...:P1执行1ms→P2到达→P3到达→先执行P3→P2→P1(平均等待时间=3.33)执行这些程序——就像杂技演员同时抛接多个球,这就是进程调度的魔力!假设时间片=4ms,三个进程A(6ms)、B(4ms)、C(8ms)总周转时间 = (22-0)+(8-0)+(24-0) = 54ms。执行顺序:A→B→C→A→C→C。

2025-04-29 09:30:08 631

原创 达梦数据库(DM)全面介绍与安装指南

达梦数据库管理系统(DM)是武汉达梦公司推出的大型通用关系型数据库完全自主研发:内核代码自主率超过90%高兼容性:兼容Oracle、MySQL等主流数据库语法高安全性:获得EAL4+级安全认证高性能:TPC-C测试达到百万级tpmC高可用:支持RAC、读写分离、数据守护等架构功能亮点可视化SQL编辑与执行数据库对象管理性能监控仪表盘数据导入导出向导连接方式启动DM管理工具新建连接:主机:localhost端口:5236用户名:SYSDBA密码:安装时设置的密码。

2025-04-25 14:24:56 1910

原创 MySQL安装实战指南:Mac、Windows与Docker全平台详解

无论选择哪种安装方式,都建议:安装完成后立即修改root密码创建专用开发用户而非直接使用root定期备份重要数据(特别是Docker方式)MySQL的学习曲线可能会有些陡峭,但掌握安装和基础配置是重要的第一步。接下来可以尝试:创建你的第一个数据库学习基本的SQL查询语句探索索引优化等高级特性如果有任何安装问题,建议查看MySQL官方文档或社区论坛,那里有丰富的解决方案。

2025-04-25 09:08:10 2291

原创 Java 实战:使用 Model Context Protocol(MCP)实现智能数据集成

查询设计原则遵循"宽表窄问"原则,减少数据传输量优先使用声明式查询而非原生SQL合理设置查询超时(建议5-30秒)性能优化检查表启用结果缓存(特别是静态数据)使用批量接口减少网络往返对大数据集实现分页查询安全防护措施实施最小权限原则配置数据源访问定期审计查询模式和访问频率对敏感操作启用二次认证MCP协议正在快速演进,建议开发者:关注Anthropic官方每季度的协议更新参与MCP开源社区贡献适配器实现在测试环境充分验证新特性后再上线生产。

2025-04-24 11:54:49 2533

原创 一文讲清什么是MCP 协议?

MCP 即 Model Context Protocol(模型上下文协议),是由 Anthropic(Claude 模型的主体公司)在 2024 年 11 月推出并开源的一项创新标准。它是一种开放标准协议,用于将 AI 模型连接到各种外部工具和数据源,通俗来讲,它就如同 AI 界的 USB 接口,定义了一套规则,告诉 AI 如何调用工具,包括参数名、参数类型和参数描述等信息,还能响应 AI 的 Toolcall 并返回结果,让 AI 携带结果继续发起对话。

2025-04-24 11:25:11 3775

原创 GET与POST请求深度解析:HTTP方法的正确打开方式

正确选择GET/POST不仅关乎技术规范,更是对业务场景的精准判断。GET= 读取数据 + 安全性低 + 可缓存POST= 修改数据 + 安全性高 + 需防重复提交在微服务架构中,建议结合HTTP方法与资源语义(如/orders表示订单集合),构建更规范的API体系。

2025-04-22 16:44:59 1071

原创 Docker Compose Windows版安装与使用教程

Docker Compose是Docker官方提供的容器编排工具,用于定义和运行多容器Docker应用。通过YAML文件声明服务、网络和卷,可一键启动复杂应用环境。networks:app_net:services:web:networks:- app_netredis:networks:- app_netDocker Compose通过声明式配置简化多容器应用管理,适用于开发、测试和生产环境。掌握其核心概念和命令,可显著提升容器化部署效率。

2025-04-22 16:30:40 4609

原创 【数据结构魔法课】堆:数据丛林中的指挥官!手把手教你打造优先队列

size = 0;

2025-04-21 11:33:31 355

原创 使用 Dify 在 Spring 项目中搭建智能面试官:从零到部署

👉 如果你在集成过程中遇到「401 Unauthorized」错误,可能是 Secret Key 错误或网络代理问题。

2025-04-21 09:17:46 2860

原创 MyBatis 两级缓存深度解析:原理、使用与区分指南

缓存即过期:所有数据都有保质期。缓存即冗余:接受短暂数据不一致。缓存即服务:构建缓存-数据库双写机制。

2025-04-21 09:12:08 785

原创 JWT 到底安全吗?

Token 设置短有效期(2小时),配合 Refresh Token 续期,同时记录IP和设备指纹防异地登录。:每个 Token 生成时关联一个唯一ID(jti)存入 Redis,用户注销时立即删除,实现强制失效。限制 IP/设备变更(用 Redis 记录签发时的IP和设备指纹)→ 别人拿到你的 Token 就能冒充你(和身份证丢失同理)→ JWT 天然无状态,签发后无法强制使其过期(除非改密钥)(用户退出登录/修改密码时,让旧 Token 立即失效)监控异常请求(比如同一个Token在多地频繁使用)

2025-04-16 14:08:57 1320 1

原创 Canal 核心概念及安装与使用

Canal 是阿里巴巴开源的一款基于 MySQL 数据库增量日志(binlog)的实时数据同步工具,主要用于数据库变更的订阅与消费。它可以模拟 MySQL Slave 的交互协议,解析 binlog 事件并推送变更数据,适用于数据同步、缓存更新、实时分析等场景。Canal 解析 binlog 并转发数据变更事件(INSERT/UPDATE/DELETE)到下游消费者(如你的 Spring Boot 应用)。Canal 伪装成 MySQL 从库(Slave),向主库(Master)发送 dump 请求。

2025-04-16 09:12:18 1269

原创 面试官问设计模式?这5步决策流程助你秒杀难题

设计模式选择就像中医把脉,需要"望闻问切"四步到位。

2025-04-14 16:33:43 517

原创 SQL分页之谜:为什么你的分页永远抓不住“小妖精“?

掌握稳定分页就像成为游乐园的秩序维护专家,能精准控制百万级数据的"排队秩序"。

2025-04-14 16:11:54 316

原创 《设计模式实战指南:工厂模式 vs 单例模式,面试官问这题我直接拿下!》

掌握这些设计模式就像拥有乐高Master Builder认证,可以自由组合搭建各种Java应用。

2025-04-11 17:54:36 534

原创 MySQL从入门到精通(第七篇):数据库安全与审计终极指南

从基础语法到高可用架构,从性能优化到安全防护,本系列构建了MySQL的完整知识体系。在数字化转型的浪潮中,数据库不仅是数据的容器,更是企业核心资产的守护者。安全无止境,唯有持续学习、实践创新,方能在威胁与机遇并存的时代立于不败之地。关注我,获取更多数据库前沿技术!

2025-04-10 15:32:27 944

原创 MySQL从入门到精通(第六篇):数据库监控与性能调优深度解析

在前五篇中,我们构建了从基础语法到高可用架构的完整知识体系。但在实际生产环境中,如何通过监控发现性能瓶颈,通过调优实现系统优化,才是运维工程师的核心能力。本篇将深入讲解监控体系搭建、性能分析方法、调优策略及实战案例,助你打造高效稳定的数据库系统!

2025-04-10 14:30:53 606

订单状态机系统模板源码

本订单状态机系统采用经典的状态模式(State Pattern)设计,通过将每个状态的行为封装到独立的类中,实现清晰的状态流转控制。核心架构分为三层: 异常层(exception) IllegalOrderStateException:自定义运行时异常,用于阻止非法状态转换(如从未支付状态直接发货) 模型层(model) Order:订单领域对象,持有当前状态引用,将操作委托给具体状态类实现 状态层(state) OrderState:状态接口定义所有可能的操作契约 8个具体状态实现类: PendingPaymentState:待支付状态(初始状态) PaidState:已支付状态 ShippedState:已发货状态 CompletedState:已完成状态(终止状态) CanceledState:已取消状态(终止状态) RefundedState:已退款状态(终止状态) RefundingState:退款中状态(中间状态)

2025-03-02

QQ群版智能日报机器人

通过调用DeepSeek API实现每日定时向指定qq群聊中发送每日新闻和历史上的今天等趣味信息。

2025-03-18

《获奖信息管理助手》项目(完整代码资源)

Spring Boot + MyBatis + MySQL + Redis + VUE 2

2025-02-14

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

TA关注的人

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