- 博客(43)
- 收藏
- 关注
原创 全面理解JVM虚拟机
《JVM虚拟机全面解析》系统介绍了Java虚拟机的核心机制。主要内容包括:1)Class文件结构(魔数标识、版本号、字节码指令);2)类加载机制(双亲委派、元空间);3)执行引擎(解释/编译/混合模式);4)垃圾回收(分代模型、回收算法、主流GC器对比);5)调优实战(参数配置、日志分析工具)。学习JVM能深入理解代码底层逻辑,解决内存泄漏等性能问题,是区分高级与普通开发者的关键。通过掌握字节码、类加载和GC原理,开发者可从应用层进阶到系统级调优。
2025-07-27 23:31:36
278
原创 RocketMQ常见问题梳理
本文深入分析了消息队列(MQ)的四大核心问题解决方案。首先探讨消息不丢失机制,详细比较了RocketMQ、Kafka和RabbitMQ在生产者确认、Broker刷盘和主从同步的策略差异。其次解析消息顺序性保障原理,强调局部有序的实践方法。然后阐述幂等性处理方案,包括生产者端去重和消费者端业务标识校验。最后提出消息积压的应急措施,如消费者扩容和临时Topic分流。文章指出,不同MQ有各自设计哲学(RocketMQ重安全、Kafka重吞吐、RabbitMQ重灵活),解决方案需根据业务场景平衡选择,不存在完美通用
2025-07-25 23:38:18
1028
原创 RocketMQ集群高级特性
《RocketMQ集群高级特性解析》深入探讨了消息中间件的高可用实现机制。文章首先分析了DLedger文件一致性协议,详细讲解Raft协议的核心流程(选举阶段与日志复制)及其在RocketMQ中的具体实现。随后介绍了5.x版本的新特性:Controller主从切换机制实现选举与存储解耦,BrokerContainer容器化提升资源利用率。最后对比了4.x与5.x版本的架构演进,包括高可用机制改进、进程模型优化和云原生支持等发展方向。全文通过核心源码分析和架构图示,完整呈现了RocketMQ集群技术的演进路线
2025-07-24 20:54:50
850
原创 RocketMQ核心源码解读
《RocketMQ核心源码解析》摘要:本文深入剖析了Apache RocketMQ 5.x的核心架构与实现机制。从源码环境搭建入手,详细解析了NameServer轻量级路由管理、Broker启动流程及网络通信框架设计。重点分析了消息生产/消费流程、存储引擎优化(CommitLog顺序写+ConsumeQueue索引)、延迟消息时间轮算法和零拷贝技术(mmap+sendfile)等高并发设计精髓。通过文件预热、内存池化、线程隔离等关键技术,RocketMQ实现了高性能消息处理。文中还提供了源码阅读方法论和实验
2025-07-23 21:52:53
809
原创 RocketMQ核心概念与快速实战指南
RocketMQ是一款高性能分布式消息中间件,具有异步、解耦和削峰三大核心价值。本文首先介绍了MQ的基本概念及主流产品对比,重点解析了RocketMQ的金融级可靠性特点。文章提供了快速实践指南,包括单机部署、消息收发示例代码和可视化控制台搭建方法,并深入讲解了2m-2s主从集群和DLedger高可用集群的配置方案。最后通过架构图展示了RocketMQ的核心组件关系,对比分析了其与Kafka在Topic支持、数据安全和选举机制等方面的关键差异,特别强调了RocketMQ采用Raft协议解决脑裂问题的优势。全文
2025-07-18 16:59:15
953
原创 Redis7 底层数据结构解析
本文深入解析Redis 7.2.5底层数据结构实现机制,重点介绍各数据类型编码方式及优化策略。核心内容包括:String类型采用int/embstr/raw编码和SDS动态字符串;Hash类型在Redis 7中改用listpack替代ziplist;List类型采用quicklist+listpack复合结构;Set和Zset类型根据条件选择intset/listpack或hashtable/skiplist编码。
2025-07-17 23:39:56
659
原创 多级缓存架构与热点探测系统核心技术解析
本文系统解析了多级缓存架构与热点探测核心技术。多级缓存通过本地+远程缓存组合,在电商热点商品等高频访问场景中提升性能,但需解决数据一致性问题。热点探测系统采用五步流程(规则配置→数据上报→集中统计→热点推送→本地缓存),结合滑动窗口算法实时识别热Key。文章详细介绍了京东JDHotkey系统的秒级响应、分层探测等实践,并提出了自定义规则、多维统计等二次开发方向。该技术能有效应对万级QPS突发流量,保障618大促等高并发场景的服务稳定性。
2025-07-16 16:51:20
820
原创 Redis Stack扩展功能
Redis Stack是Redis官方扩展套件,提供JSON处理、搜索、过滤等高级功能。核心模块包括:RedisJSON实现高效JSON存储与查询,支持二进制存储和树状访问;RedisSearch提供类ElasticSearch的全文检索能力;Bloom/Cuckoo过滤器实现海量数据高效存在性检测,后者支持删除操作。部署时需要加载.so模块文件并配置权限,生产环境建议使用Redis Cloud托管服务。扩展功能通过Lua脚本调用,需注意客户端兼容性和资源消耗问题(每个模块增加15-30MB内存)。
2025-07-16 00:16:41
452
原创 Redis缓存设计与性能优化指南
本文系统介绍了Redis缓存设计与性能优化的核心要点。针对缓存穿透问题,提出空对象缓存和布隆过滤器解决方案;对于缓存击穿和雪崩,给出分散过期时间和高可用架构等策略。重点分析了热点Key重建、双写一致性等典型场景的优化方法,并详细阐述了键值设计规范、命令使用禁忌、连接池配置、内存淘汰策略等关键技术细节。最后强调通过慢查询监控完善运维体系,全面保障Redis缓存的高性能和稳定性。
2025-07-13 23:49:19
860
原创 一篇文章带你理解MySQL事务隔离级别与锁机制
锁定索引记录间的间隙,防止幻读。如锁定(3,10)区间时,无法在id=3到10之间插入数据。行锁+间隙锁组合,锁定记录及前面的间隙。当SQL未使用索引时,行锁会升级为表锁。
2025-07-11 15:43:00
219
原创 Redis数据安全性分析
方案适用场景数据安全保障单机持久化开发/测试环境RDB快照 + AOF日志主从复制读多写少业务多副本备份哨兵集群高可用要求场景自动故障转移大数据量+高并发+高可用数据分片 + 多副本 + 自动Failover企业级建议生产环境至少使用哨兵+主从架构KEYSFLUSHALL定期备份RDB到异地本文内容源自Redis进阶课程技术文档,核心原理经实践验证。
2025-07-10 22:02:29
790
原创 Redis线程模型
组件线程模型说明客户端连接多线程通过io-threads配置核心命令执行单线程避免并发问题持久化/AOF重写多线程后台子进程执行集群数据同步多线程异步复制设计哲学:在保持简单性的前提下渐进式引入多线程,核心路径仍以单线程为主保障原子性。
2025-07-09 20:23:32
865
原创 Redis基础数据结构
通过合理选择数据结构,可提升性能30%~50%!✅ 节省内存空间(相比多个String)❌ 不支持field级别过期。❌ 集群环境下慎用大Hash。✅ 同类数据聚合存储。
2025-07-08 16:34:14
244
原创 Mysql8.0高可用集群架构实战
官方文档:https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-innodb-cluster.html。
2025-07-07 23:35:32
316
1
原创 MySQL 8.0 主从复制原理分析与实战
MySQL复制(Replication)是官方提供的主从同步方案,用于将一个MySQL实例数据同步到其他实例,是最广泛使用的容灾方案。
2025-07-06 15:43:53
958
原创 MySQL全局优化与Mysql 8.0新增特性详解
优先优化方向:聚焦SQL及索引优化,成本低效果显著8.0升级建议建议使用8.0.17及以上版本注意group by默认排序行为变更充分利用降序索引、函数索引等新特性生产环境配置合理设置连接数及内存参数监控缓冲池命中率不低于99%专用服务器启用innodb_dedicated_server参数。
2025-07-04 16:51:21
910
原创 一篇文章带你理解MySQL事务隔离级别与锁机制
锁定索引记录间的间隙,防止幻读。如锁定(3,10)区间时,无法在id=3到10之间插入数据。行锁+间隙锁组合,锁定记录及前面的间隙。当SQL未使用索引时,行锁会升级为表锁。
2025-07-01 22:13:04
374
原创 MySQL索引优化实战总结
这种情况只会走name字段索引,因为根据name字段过滤完,得到的索引行里的age和position是无序的,无法很好的利用索引。在MySQL5.6之前的版本,这个查询只能在联合索引里匹配到名字是’LiLei’开头的索引,然后拿这些索引对应的主键逐个回表,到主键索引上找出相应的记录,再比对age和position这两个字段的值是否符合。MySQL 5.6优化:可以在索引遍历过程中,对索引中包含的所有字段先做判断,过滤掉不符合条件的记录之后再回表,可以有效的减少回表次数。注意索引下推会减少回表次数。
2025-06-29 15:38:05
547
原创 一篇文章带你了解Explain详解与索引
Explain 是 MySQL 中一个非常重要的工具,它可以帮助我们模拟优化器执行 SQL 语句,从而分析查询语句或结构的性能瓶颈。在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条 SQL。不过需要注意的是,如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中。
2025-06-28 20:22:52
575
原创 一篇文章带你深入理解Mysql索引底层数据结构与算法
B树是多路平衡查找树,其所有叶子节点都处于同一层。对于m阶B树,每个节点最多有m个子节点,最少有m/2个子节点。B树的检索过程相当于对范围内的每个节点的关键字做二分查找,可能还没有到达叶子节点,检索就结束了。B-Tree• 叶节点具有相同的深度,叶节点的指针为空• 所有索引元素不重复• 节点中的数据索引从左到右递增排列:B+树是B树的一种变体,是目前大部分数据库系统及文件系统采用的索引结构。
2025-06-27 17:26:09
838
原创 一篇文章带你理解Mysql架构
MySQL查询执行流程涉及客户端连接、Server层和存储引擎层的协作。Server层包含连接器、分析器、优化器和执行器等模块,负责SQL解析、优化和执行,而存储引擎层(如InnoDB)处理数据存储与检索。更新语句还需通过redo log(物理日志,保证crash-safe)和binlog(逻辑日志,用于归档)记录变更,采用两阶段提交确保数据一致性。分析器进行词法语法检查,优化器选择最佳执行计划,执行器调用引擎接口完成操作。通过WAL技术,先写日志再写磁盘,提升性能并保障事务安全。
2025-06-27 17:17:52
907
原创 一篇文章带你了解MyBatis
MyBatis 是一个灵活且强大的持久层框架,它通过 XML 或注解的方式将 SQL 语句与 Java 对象进行映射,简化了 JDBC 的开发。MyBatis 不仅可以独立使用,还可以轻松集成到 Spring Boot 等框架中,实现高效的数据库操作。通过本文的介绍,你已经掌握了 MyBatis 的基本使用方法以及与 Spring Boot 的集成方式,希望这些知识能帮助你在实际开发中快速上手,构建高效、灵活的持久层解决方案。
2025-02-21 10:26:00
397
原创 一篇文章带你了解Vue
Spring Boot 是由 Pivotal 团队在 2014 年推出的一个开源框架,旨在简化 Spring 应用的初始搭建和开发过程。它基于“约定大于配置”的原则,减少了开发者的配置工作量,使得开发者能够更加专注于业务逻辑的实现。Vue.js 是一套用于构建用户界面的渐进式 JavaScript 框架。它易于上手,同时具备高效的数据绑定和组件化开发能力。Spring Boot 和 Vue.js 是现代 Web 开发中非常流行的后端和前端框架。
2025-02-21 10:21:00
1517
1
原创 一篇文章带你了解Spring boot框架
Spring Boot 是基于 Spring Framework 的一个开源 Java 基于 Spring 框架的快速开发框架,由 Pivotal 团队开发。它旨在简化 Spring 应用的初始搭建以及开发过程。Spring Boot 的核心目标是让开发者能够快速上手,减少配置,快速启动和运行一个基于 Spring 的应用。
2025-02-21 10:16:40
8517
原创 一篇文章带你学习JDBC(Java Database Connectivity)
JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,它提供了一套标准的API,使得Java程序可以通过这些API与数据库进行交互,执行SQL语句,实现对数据的增删改查等操作.
2024-08-11 15:04:45
2720
3
原创 一篇文章带你学会Java多态
转型:Java中的转型(Casting)和多态(Polymorphism)是密切相关的概念。转型是将一个对象从一种类型转换为另一种类型的过程,而多态则是允许一个对象具有多种形态的特性。在Java中,多态主要通过继承和接口实现,而转型则是实现多态的一种手段。Java中的转型和多态是密切相关的。多态允许我们将子类对象当作父类对象来使用,而转型则是在运行时将父类对象转换为子类对象的过程。例如:一个运动员可以分为篮球运动员和足球运动员,在篮球运动员的情况下,工作就是打篮球。在足球运动员的情况下,工作就是踢足球。
2024-04-07 15:55:33
871
原创 一篇文章带你学会Java封装
Java的封装是一种面向对象编程的特性,它指的是将数据和方法(行为)捆绑在一起,以实现对数据的访问控制和保护。在Java中,封装通过访问修饰符(public、private、protected)来实现。通过封装,Java类可以隐藏其内部实现细节,只暴露必要的接口给外部使用,从而提高了代码的安全性和可维护性。
2024-03-31 13:31:50
1027
1
原创 一篇文章教会你Java类与对象
类是一个模板,它描述一类对象的行为和状态。具有相同的属性、特征、行为、功能 ,就可以作为同一个类。对象是生活中具体的事物。
2024-03-22 11:45:58
311
1
原创 一篇文章教你用记事本写Java程序
环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所使用到的信息。编译:计算机需要执行的是 机器码指令(0/1组成),编译就是内置的编译器,将 我们写的代码编译成一份机器/虚拟机可以直接执行的指令集,其中Java代码文件编译之后得 到是字节码文件 .class后缀。先找到JDK安装的bin目录并复制:C:\Program Files\Java\jdk-17\bin。1:在cmd 中,使用 cd 指令将目录切换到代码所在的目录。运行编译好的代码文件: java 主类(有主函数的类)
2024-03-20 14:35:24
538
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人