自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 大白话讲Java NIO

如果把Java的I/O比作餐厅服务,BIO是“笨办法”(一对一盯桌),NIO是“聪明办法”(一个经理管所有桌)——核心就是。接下来用生活化的比喻+可视化图表,把NIO讲得明明白白。

2025-12-01 13:37:42 317

原创 Java后端Redis客户端选型指南

在分布式架构越来越普及的今天,Redis作为高性能的缓存和中间件被广泛应用。但你是否也曾为这些问题头疼:手写分布式锁时担心死锁,处理高并发缓存时遭遇穿透击穿,用原生Redis客户端实现复杂逻辑时代码臃肿?今天要分享的Redisson,正是解决这些痛点的"瑞士军刀"——它不只是一个Redis客户端,更是一套完整的分布式工具框架。

2025-12-01 12:21:43 496

原创 Java服务端ORM框架选型指南:从原理到落地,新手也能懂

在Java服务端开发中,数据库交互是绕不开的核心环节。不少新手刚接触时,都会被原生JDBC的繁琐代码搞得头大;而有经验的开发者则会纠结:MyBatis、Hibernate、MyBatis-Plus这些ORM框架到底该怎么选?今天这篇文章就从“为什么需要ORM”讲起,深入浅出解析主流框架的核心差异,再给出一套新手也能套用的选型方法论。

2025-12-01 12:06:01 640

原创 分布式算法(八):一致性哈希——分布式系统的负载均衡利器

需先将下线节点的全量数据迁移至顺时针下一跳节点,迁移量约为总数据量的1/原节点数,若为故障节点需先通过副本同步数据,可能产生额外的副本校验成本;其次仅需迁移新增节点区间对应的局部数据,迁移量约为总数据量的1/(原节点数+1),数据传输与重新存储的成本较低,同时因仅局部缓存失效,对业务服务的性能影响极小,无需承担全量缓存穿透带来的数据库压力成本。虚拟节点的核心思路是:给每个物理节点“克隆”出多个虚拟节点,让这些虚拟节点均匀分布在哈希环上,数据先映射到虚拟节点,再关联到物理节点。

2025-11-30 21:04:50 680

原创 MySQL 实战宝典(九):Sharding-JDBC分库分表框架解析

在深入细节之前,我们先明确Sharding-JDBC的定位。Sharding-JDBC是Apache ShardingSphere生态中的核心组件,它并非独立的数据库,而是一个基于JDBC的分库分表中间件,通过对JDBC接口的封装,实现分库分表、读写分离等功能,且对业务代码完全透明。核心优势:无需部署独立服务,直接集成到应用中;支持多种数据库(MySQL、Oracle等);兼容ORM框架(MyBatis、Hibernate等)。

2025-11-30 20:45:47 791

原创 Java数据库连接池选型指南

在高并发Java应用开发中,数据库交互的性能瓶颈往往不是SQL执行本身,而是连接的创建与销毁。数据库连接池作为连接管理的核心组件,直接决定了应用与数据库交互的效率和稳定性。本文将从核心原理、核心价值出发,重点对比Java生态中主流连接池的特性,为选型提供实战参考。

2025-11-28 12:51:27 687

原创 MySQL 实战宝典(八):Java后端MySQL分库分表工具解析与选型秘籍

分库分表是Java后端架构升级的必经之路,工具选型需“量体裁衣”:ShardingSphere生态凭借完善的功能、活跃的社区成为绝大多数场景的最优解;特殊场景可通过中间件或分布式数据库补充。但请记住:工具只是实现手段,核心是通过合理的分片策略、一致性保障、扩容规划,让系统在业务增长中始终保持稳定高效。Apache ShardingSphere 官方文档,建议结合实际项目搭建Demo,快速掌握落地技巧。

2025-11-28 12:17:59 852

原创 分布式算法(七):BASE理论——分布式系统的“最终一致性”指导思想

BASE 是Basically Available(基本可用)、Soft State(软状态)、Eventually Consistent(最终一致性)原则通俗含义生活化例子(电商下单)基本可用(BA)系统故障时,核心功能仍能使用,而非完全不可用(允许性能降级、部分功能不可用)。秒杀活动时服务器压力大,页面加载变慢(性能降级),但下单、支付核心功能正常。软状态(S)允许系统存在中间状态(如“下单中”“支付中”),中间状态不影响系统整体可用性。

2025-11-27 13:37:23 804

原创 分布式算法(六):雪花算法(Snowflake),分布式系统的全局唯一ID生成方案

在分库分表、微服务等分布式场景中,传统单库自增主键无法保证全局唯一性(多库 / 多表会出现 ID 重复),而雪花算法(Snowflake)是解决这一问题的经典方案 —— 它能在分布式环境下生成有序、高效、无重复的 64 位 Long 型 ID,无需依赖数据库等第三方组件,广泛应用于 Java 后端、大数据等领域。解决方案:如果当前时间比上一次生成ID的时间还早,就“等一等”,直到时间超过上一次,再生成ID——避免用旧时间+相同序列号导致重复。(就像按“年份+序号”排序的发票,越晚开的发票号越大)

2025-11-27 13:32:01 534

原创 微服务概念理解学习笔记

早期公司小,1个人(单点系统)负责所有工作(进货、销售、售后、财务);公司壮大后,1个人干不完,于是分拆成多个部门(采购部、销售部、财务部),每个部门在不同办公室(不同服务器/节点)办公,但共同协作完成“电商运营”这个核心任务——这就是分布式系统。分布式系统是指:将一个复杂的业务系统,拆分成多个独立的“子系统/节点”,这些节点通过网络通信协作,共同完成整体业务目标的系统架构。核心是“拆分+协作”,目的是解决单点系统的瓶颈。

2025-11-25 13:02:42 150

原创 微服务框架选型学习笔记

Java微服务框架的核心选择集中在Spring Cloud(含Alibaba)和Dubbo两大体系:前者胜在“全栈治理”,后者胜在“高性能RPC”;而Quarkus、Micronaut则是云原生场景下的新兴选择。实际选型时,优先考虑团队技术栈、业务对性能的要求、部署环境(传统服务器/云原生),避免盲目追求“新技术”。

2025-11-25 13:01:43 218

原创 Dubbo+Zookeeper怎么实现的服务注册与发现

Dubbo 则封装了服务注册、发现、健康检查、负载均衡等业务逻辑,二者协同实现微服务间的动态通信。以下从底层架构、核心流程、Zookeeper 节点结构、关键机制四个维度深度拆解。Dubbo 会在 Zookeeper 中创建固定格式的节点树,用于存储服务的全量元数据,(关联 Provider 会话,会话失效则节点删除)、Dubbo 与 Zookeeper 的集成核心是。(Consumer 监听服务节点变更)、(保障集群模式下服务元数据的一致性)。:Zookeeper 的。

2025-11-25 12:03:36 190

原创 微服务注册中心基础(五):Zookeeper 适用场景

选型依据推荐注册中心需分布式协调(锁、选主)+ Dubbo架构Zookeeper强一致性(CP)+ 金融/核心服务高可用性(AP)+ 中小型Spring Cloud大规模实例 + 一站式(注册+配置)Nacos跨数据中心 + 服务网格Consul已有Zookeeper集群 + 中等规模服务Zookeeper(复用)

2025-11-24 13:50:05 213

原创 微服务注册中心基础(三):分布式一致性协议

分布式一致性协议是构建现代分布式系统的核心技术基础,其中作为三大主流协议,在设计理念、实现机制和应用场景方面各有特色。本文基于 CAP 理论深入分析了这三种协议的核心机制,通过对比分析揭示了它们在节点角色、选举流程、日志复制等关键技术点的差异。研究发现,,在 3 节点集群中可实现 8-12ms 写延迟和 12,000ops/s 吞吐量;,写延迟 15-20ms,吞吐量 4,500ops/s;,在有序状态复制场景下表现优异,写延迟仅 3-5ms,吞吐量超过 45,000ops/s。

2025-11-24 13:26:43 292

原创 微服务注册中心基础(二):CP架构原理

在分布式系统中,CP架构(Consistency + Partition Tolerance)是与AP架构并列的核心设计范式,尤其适用于对数据一致性要求极高的场景(如金融交易、分布式协调)。由于网络不可靠是分布式系统的常态(必须保证P),CP架构选择。

2025-11-24 12:16:43 71

原创 微服务注册中心基础(一):AP架构原理

(Availability + Partition Tolerance)是注册中心的核心设计范式之一,尤其适用于追求高可用、容忍短暂数据不一致的分布式场景(如微服务高频服务注册/发现)。本文将从原理、特性、典型实现、适用场景等维度,全面解析AP架构,帮助开发者精准选型和落地。当网络分区发生时,AP架构会选择「继续提供服务」(保证A),而不是等待分区恢复后再同步数据(放弃强C)。在微服务架构中,注册中心的架构设计直接决定了服务发现的可用性、一致性和性能。要理解AP架构,首先需要回顾分布式系统的核心理论——

2025-11-24 12:04:10 622

原创 Dubbo 架构入门:组件、流程、方法、容错机制的通俗讲解

然后在接口测试工具中访问接口:访问成功!

2025-11-20 13:06:35 223

原创 Maven依赖管理核心配置模板及最佳实践

将项目中常用的依赖(如fastjson、lombok)在。

2025-11-19 12:46:09 771

原创 Java异步编程实践浅析:Runnable、Callable、CompletableFuture、Spring注解

特性RunnableCallable定义接口返回值无返回值(void有返回值(泛型V指定类型)异常处理不能抛出受检异常(需内部捕获)可以抛出受检异常(引入版本JDK 1.0JDK 1.5(与Executor框架一同引入)若任务不需要返回结果且无受检异常,用Runnable(更简洁)。若任务需要返回结果或需抛出受检异常,用Callable(功能更全面)。两者均需依托线程(Thread)或线程池执行,其中Callable需通过Future获取结果,是并发编程中处理异步结果的常用方式。

2025-11-14 19:00:00 672

原创 前端学习笔记:React.js中state和props的区别和联系

外部传入的数据:由父组件传递给子组件的参数,子组件只能读取,不能直接修改。不可变(Immutable):props 的值在组件内部不可变,若需要修改,应由父组件重新传递新值。组件内部的私有数据:由组件自身管理和修改,用于存储动态变化的数据(如用户输入、加载状态等)。可变(Mutable):通过setState方法更新,每次更新会触发组件重新渲染。props 是组件的输入,用于外部数据传递和组件复用。state 是组件的记忆,用于管理内部动态数据和响应式更新。

2025-07-15 15:47:15 1086

原创 CAS登录工作流程简述

CAS(Central Authentication Service)是实现单点登录(SSO)的开源框架,其核心目标是让用户在多个应用系统中只需登录一次,即可访问所有相互信任的资源。生成TGT(服务器存储)和TGC(写入浏览器Cookie)携带TGC(浏览器Cookie)访问CAS Server。检查ST有效性(关联TGT、未过期、未重复使用)基于TGT生成新ST(ST-456)访问App2受保护资源(未登录)用TGC查询TGT(验证有效性)返回验证结果(成功/失败)访问受保护资源(未登录)

2025-07-10 20:58:27 917

原创 Apache Shiro 框架详解

连接应用与数据源的桥梁,负责提供用户信息(认证)和权限信息(授权)。

2025-07-10 20:34:18 1580

原创 Maven核心概念

Maven是一个基于项目对象模型(POM)的项目管理工具,主要用于:约定优于配置(Convention Over Configuration)依赖管理2.2 POM文件结构3. Maven生命周期3.1 三大生命周期1. Clean生命周期2. Default生命周期3. Site生命周期3.2 生命周期详解Default生命周期主要阶段:4. 依赖管理4.1 依赖坐标4.2 依赖范围(Scope)Scope编译时测试时运行时说明compile✓✓

2025-07-04 15:11:44 667

原创 Spring Boot 父子工程 POM 依赖关系详解

Spring Boot 父子工程是一种多模块项目结构,通过 Maven 的继承机制来管理依赖关系。统一版本管理:所有子模块使用相同的依赖版本代码复用:公共代码可以提取到独立模块模块化开发:不同功能模块独立开发和维护依赖隔离:避免循环依赖,明确模块职责统一管理:版本、依赖、插件统一管理模块化:功能模块独立开发和维护复用性:公共代码和配置复用可维护性:清晰的依赖关系和模块职责这种结构特别适合中大型项目的开发和维护,能够有效提高开发效率和代码质量。

2025-07-02 12:48:39 1511

原创 Spring Boot子项目拆分

【代码】Spring Boot子项目拆分。

2025-07-02 12:48:23 431

原创 深入拆解消息队列的存储

消息队列分段单位分区/分片分段文件/对象Kafka支持日志文件(Segment)RocketMQ支持CommitLog 文件Pulsar支持Ledger(账本)RabbitMQ不常用持久化文件(Segment)特性KafkaRocketMQPulsarRabbitMQ批处理支持❌ 单条消息❌ 单条消息压缩支持✅ 批次级别✅ 消息级别✅ 消息级别❌ 不支持事务支持✅ 生产者ID+纪元✅ 事务偏移量✅ 事务ID✅ 事务性队列Schema演进。

2025-06-29 17:42:36 1414

原创 消息队列的网络模型详解:IO多路复用、Reactor模型、零拷贝

特性RabbitMQKafkaRocketMQPulsar语言ErlangJavaJavaJava网络模型ActorReactorReactorReactorIO多路复用epollepollepoll零拷贝无有有有并发模型轻量级进程线程池线程池线程池协议AMQP自定义自定义自定义。

2025-06-27 17:18:23 1418

原创 零拷贝详解:sendfile()、mmap()、splice()

零拷贝是一种避免CPU在内存间不必要的数据拷贝的技术,通过减少数据拷贝次数来提高系统性能。

2025-06-27 17:14:36 629

原创 IO多路复用——Epoll底层原理深度分析

就绪队列理论上来说没有长度限制,但是受内存和系统资源的限制。epoll_create创建epoll实例。epoll_ctl添加/删除/修改fd。epoll_wait获取就绪事件。epoll_ctl注册文件描述符。epoll_wait返回就绪事件。epoll_wait返回就绪事件。epoll_create创建。epoll_event结构体。epoll_wait等待事件。红黑树在Epoll中主要用于。epoll_ctl注册fd。返回epoll文件描述符。唤醒epoll_wait。唤醒epoll_wait。

2025-06-25 23:30:00 1052

原创 IO多路复用——Poll底层原理深度分析

Poll是IO多路复用的一种实现方式,它允许一个进程同时监听多个文件描述符,当其中任何一个文件描述符就绪时,进程就可以进行相应的IO操作。

2025-06-25 22:45:00 1730

原创 IO多路复用——Select底层原理深度分析(流程图)

fill:#333;color:#333;color:#333;fill:none;是否用户空间调用select方法系统调用入口 SYSCALL_DEFINE5kern_select 参数验证和初始化do_select 核心实现遍历文件描述符位图对每个fd调用poll方法检查事件状态更新结果位图有事件就绪?返回结果到用户空间用户空间轮询处理相应事件等待事件或超时被唤醒后重新检查。

2025-06-24 23:08:59 1308

原创 C语言从零开始学习指南 - 完整实战教程

C语言是由Dennis Ritchie在1972年开发的一种通用编程语言。高效性:编译后执行效率高可移植性:可在多种平台上运行灵活性:提供底层控制能力广泛应用:操作系统、嵌入式系统、游戏开发等#define PI3.14159// 宏定义常量100// const常量printf("最大尺寸:%d\n", MAX_SIZE);printf("最小年龄:%d\n", MIN_AGE);return 0;// 函数声明return 0;// 函数定义int i;

2025-06-24 17:48:37 1273

原创 消息队列的通信协议

特性KafkaRocketMQPulsarRabbitMQ协议类型自定义二进制自定义二进制自定义二进制AMQP标准传输层TCPTCPTCPTCP连接模式短连接长连接长连接长连接消息模式发布-订阅发布-订阅发布-订阅发布-订阅事务支持有限完整完整有限顺序保证分区内有序队列内有序分区内有序队列内有序协议复杂度简单中等复杂中等扩展性高高很高中等Kafka:适合高吞吐量的日志收集和流处理,消息简短、支持批量传输RocketMQ:适合金融级可靠性和事务消息。

2025-06-21 09:45:00 1890

原创 消息队列的基本概念

消息队列就像现代系统架构中的"神经系统",它让各个系统组件能够高效、可靠地通信。理解这些基本概念,就像掌握了快递公司的运营规则,能够更好地设计和使用消息队列系统。消息队列的核心就是"生产"和"消费",其他所有功能都是围绕这两个核心操作展开的。💬互动讨论:你在实际项目中遇到过哪些消息队列的挑战?欢迎在评论区分享你的经验和解决方案!Apache Kafka 官方文档RocketMQ 官方文档RabbitMQ 官方文档。

2025-06-20 22:15:00 726

原创 消息队列技术选型完全指南:从原理到实践

技术选型是一个需要综合考虑多个因素的复杂决策过程。通过深入理解消息队列的核心原理、主流产品的特性差异,以及业务场景的具体需求,我们可以做出更加科学和合理的技术选择。

2025-06-20 15:38:18 1018

原创 APISIX 简介:云原生 API 网关的架构与实践

APISIX(Apache APISIX)是一个高性能、可扩展的云原生 API 网关,基于 Nginx 和 etcd 构建。作为微服务架构的流量入口,它提供了动态路由、负载均衡、服务发现、认证授权、可观测性等核心能力。其设计遵循"云原生"和"可扩展"理念,支持热加载、动态配置和插件化架构,已成为 Apache 顶级项目,被广泛应用于金融、电商、互联网等领域的关键业务场景。

2025-06-17 16:54:07 1341

原创 ES磁盘使用超限问题:TOO_MANY_REQUESTS disk usage exceeded flood-stage watermark,

报错信息:TOO_MANY_REQUESTS disk usage exceeded flood-stage watermark,index has read-only-allow-delete block。

2025-06-17 16:19:45 791

原创 ElasticSearch配置详解:设置内存锁定的好处

内存锁定是指将Elasticsearch的JVM堆内存锁定在物理内存中,防止操作系统将其交换(swap)到磁盘。内存交换是操作系统的虚拟内存管理机制,当物理内存不足时,将暂时不用的内存页面移动到磁盘存储空间,为活跃进程释放物理内存。开启内存锁定是Elasticsearch生产部署的强烈推荐配置,它能够:✅显著提升性能:避免swap导致的性能下降✅保证稳定性:减少GC停顿和超时问题✅改善用户体验:确保查询响应时间的一致性✅提高集群健康度:避免因性能问题导致的节点脱离。

2025-06-12 10:25:15 284

原创 ElasticSearch配置详解:什么是重平衡

集群重平衡(Cluster Rebalancing)负载均衡存储空间均衡查询性能优化集群资源最大化利用。

2025-06-11 21:15:00 724

原创 解决ElasticSearch分页异常:Result window is too large, from + size must be less than or equal to: [10000]

这个错误是由于 Elasticsearch 的默认分页限制导致的。Elasticsearch 默认只允许查询前 10,000 条记录(from + size <= 10000),而查询请求超出了这个限制(请求了 18,660 条)。Scroll API:适用于需要一次性获取大量数据的场景(如导出)。Search After:适用于实时分页场景,性能更好。在Dev Tools的控制台中,执行以下请求(将。

2025-06-06 15:47:40 551

react学习demo代码

react学习demo代码

2025-07-15

空空如也

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

TA关注的人

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