- 博客(141)
- 收藏
- 关注
原创 一次网关迁移中的 MCP 实践与理解
本文分享了从Ingress-Nginx迁移至Higress网关的实践,探索MCP协议在自动化路由配置中的应用。
2026-10-23 14:27:14
159
原创 从一行 ip route 到容器跨主机通信
本文从 ip rule 与 ip route 出发,解析 Linux 路由决策机制:通过规则优先级选择路由表(如 main、local),再在表中进行最长前缀匹配。结合 network namespace 实现网络隔离,利用 veth pair 构建跨命名空间通信链路,为容器跨主机通信奠定基础。理解这些底层原理,是掌握 Kubernetes 网络模型的关键。
2026-10-13 14:51:47
188
原创 分布式通信
负载均衡:把外部请求合理分配到集群内部的多个服务器API 网关:作为系统入口聚合多个微服务调用服务注册与发现:解决分布式系统内部服务如何感知彼此的问题服务间的远程调用(RPC):让不同机器上的服务像本地调用一样通信异步通信模式:当同步直接通信难以承载时,使用发布订阅或消息队列解耦通信方式思想典型实现远程调用(RPC)千里眼:直接调用远程方法发布订阅送货上门:消息中心主动推送Kafka消息队列货物自取:消费者按需拉取。
2026-07-08 10:19:14
267
原创 如何实现高吞吐的定时任务处理
实现一个定时任务的调度不算太难,一个简单的思路如下:一个存放定时任务的队列,一个按照固定时间间隔扫描的线程,这个线程每隔一段时间扫描队列里的所有任务,如果需要执行就进行调度。为了解决这些问题可以将 ArrayList 修改为线程安全的队列,这个队列最好还能按照某个顺序排列(例如按照预计执行时间,这样取出的第一个元素如果都不能满足执行条件,就无需向后遍历了)。那么这个队列有什么选项呢?
2026-05-13 14:29:00
380
原创 Netty的EventLoopGroup到底是什么
Netty的EventLoopGroup本质上是一个线程池,但与JDK线程池有显著区别。EventLoopGroup继承自ScheduledExecutorService,具备执行定时任务的能力。其核心特点是:1)线程有序分配,保证特定任务由固定线程执行;2)创建时即启动所有核心线程;3)每个线程拥有独立任务队列,避免线程切换和锁竞争。相比之下,JDK线程池采用共享队列机制,任务可能被任意空闲线程执行。
2026-05-12 08:07:44
348
原创 分布式系统的本质是什么
分布式系统的本质是通过多个独立进程协作完成完整功能的系统,其核心价值建立在"分治"和"冗余"两大原则上。布式系统在获得扩展性和可靠性的同时,也带来了复杂性管理的挑战。
2026-05-06 22:19:26
247
原创 详解五种IO模型
本文详细介绍了Unix系统下的五种基本I/O模型:同步阻塞I/O(BIO)、同步非阻塞I/O(NIO)、I/O多路复用、信号驱动I/O和异步I/O(AIO)。重点分析了各模型在数据从网卡到内核空间(第一阶段)和内核空间到用户空间(第二阶段)的处理方式差异。其中BIO全程阻塞,NIO第一阶段非阻塞,多路复用通过select/epoll实现单线程处理多连接,信号驱动I/O通过信号通知减少轮询,而AIO是真正的异步模型。
2026-04-27 21:30:32
228
原创 云原生部署常见服务
本文介绍了使用Docker进行开发和测试的实用技巧,主要包括:1)配置阿里云镜像加速解决拉取问题;2)常用服务(MySQL、Redis)的快速部署方法;3)镜像管理技巧(重命名、导入导出);4)Kubernetes部署Redis集群的完整方案,包含Dockerfile编写、ConfigMap配置和StatefulSet部署。文章针对开发测试场景提供了轻量级解决方案,特别适合需要隔离环境测试的情况,同时给出了企业内网环境下的实用建议。
2026-04-21 17:37:05
513
原创 k8s 中的一些小知识
本文摘要: Kubernetes资源管理机制解析,主要探讨了Pod、ReplicaSet、Deployment和Service的协同工作机制。Pod不具备自动恢复能力,需要ReplicaSet来维持副本数,而Deployment则通过控制ReplicaSet实现滚动更新。Service通过Endpoints关联Pod,提供稳定的访问入口,支持集群内DNS名称访问。文章还介绍了ExternalName类型的Service配置、Ingress路由机制。
2026-03-30 16:19:09
455
原创 AI 基础概念
大语言模型(LLM)是基于Transformer架构的数学函数,通过Tokenizer实现文本与数字的转换。Token是处理文本的基本单位,可能拆分单词或汉字。Context Window限制每次处理的信息量,RAG技术可优化文档处理。Prompt分为用户提示词和系统提示词,后者用于设定模型角色。大模型通过工具(Tool)感知外界,平台协调调用流程。Agent系统能自主规划任务,结合Agent Skill实现个性化响应,这些技术共同构成了从 LLM 到 Agent Skill 的完整工作流程。
2026-03-22 15:58:53
415
原创 Java 性能优化
Java性能优化要点总结 Java性能优化涉及多个层面:基础数据结构优化(如StringBuilder替换字符串拼接)、多线程锁策略选择(Synchronized与Lock对比)、IO模型与序列化机制优化、JVM调优(垃圾回收策略与编译优化)、设计模式应用(单例/享元模式等)、数据库索引优化以及分布式系统设计。关键点包括:减少对象创建、合理选择容器类型、控制锁粒度、利用NIO提高网络吞吐、根据业务场景选择JVM参数、运用缓存共享对象、优化SQL执行计划,以及在分布式环境中谨慎使用分布式锁和事务。
2026-03-13 15:06:35
496
原创 Redis: Thread limit exceeded replacing blocked worker
系统在使用并行流处理任务时,并发访问 Redis 时出现 "Thread limit exceeded replacing blocked worker"。
2026-02-02 13:54:34
628
原创 深入理解 Java 虚拟机-04 垃圾收集器
本文介绍了Java虚拟机的垃圾收集器及其特点。JDK9后默认使用G1收集器,废弃了Serial/CMS等组合。垃圾回收存在"Stop The World"问题,不同收集器在吞吐量和延迟之间各有侧重。Serial是单线程收集器,ParNew是其多线程版本。Parallel Scavenge注重吞吐量,CMS追求低延迟,采用并发标记清除算法。G1收集器开创了基于Region的内存布局,支持设定停顿时间目标,通过优先级列表选择回收区域。
2026-01-28 15:45:01
1166
原创 深入理解 Java 虚拟机-03 垃圾收集
Java垃圾收集机制概述 Java垃圾收集(GC)是自动内存管理机制,主要关注堆和方法区的内存回收。判断对象可回收采用可达性分析算法,从GC Roots出发检查引用链。回收算法包括: 标记-清除:基础算法,但会产生内存碎片 标记-复制:用于新生代,采用Eden和Survivor区设计 标记-整理:用于老年代,解决碎片问题 Java堆采用分代收集理论,划分为新生代和老年代,针对不同代使用不同算法。新生代对象大多短命,适合复制算法;老年代对象存活率高,适合整理算法。跨代引用通过记忆集机制处理。
2026-01-27 11:20:27
623
原创 深入理解 Java 虚拟机-02 对象
本文详细介绍了Java虚拟机中对象的内存布局、创建过程和访问方式。对象在堆内存中由对象头、实例数据和对齐填充三部分组成,对象头包含运行时数据和类型指针。创建对象需经历类加载检查、内存分配、初始化和构造方法调用等步骤。对象访问定位主要有句柄和直接指针两种方式,HotSpot主要采用直接指针访问。此外,64位JVM通过压缩指针技术将对象指针压缩为32位以减少内存占用,该技术在堆内存≤32GB时默认开启。
2026-01-26 17:15:10
683
原创 Linux JDK NIO 源码分析
本文分析了Linux下JDK NIO的实现机制,探讨了epoll多路复用模型的核心原理与代码实现。文章首先解释了epoll作为观察者模式在内核中的工作流程,包括事件监听和就绪队列机制。随后通过Java NIO示例代码,深入剖析了Selector.open()的底层实现,详细追踪了从SelectorProvider加载到最终创建EPollSelectorImpl的过程。分析展示了Linux系统如何通过epoll_create、epoll_ctl和epoll_wait等系统调用实现高效的事件驱动I/O处理。
2026-01-23 17:27:18
756
原创 深入理解 Java 虚拟机-01 JVM 内存模型
本文介绍了Java虚拟机(JVM)的内存模型,主要包括五个运行时数据区域:程序计数器(线程私有,记录执行指令地址)、Java虚拟机栈(线程私有,存储方法调用的栈帧)、本地方法栈(执行Native方法)、堆(线程共享,存储对象实例)和方法区(线程共享,存储类信息、常量等)。其中堆是垃圾回收的主要区域,方法区在JDK8后被元空间取代。此外还提到了直接内存(NIO使用的堆外内存)。每个区域都有其特定功能,当内存不足时会抛出不同异常(如OutOfMemoryError或StackOverflowError)。
2025-12-30 16:51:32
1024
原创 链表与LinkedList
本文介绍了链表数据结构及其在Java中的实现。链表通过节点指针连接元素,不要求连续内存空间,但存储效率低于数组。双向链表节点包含前后指针,便于插入删除操作。Java的LinkedList类实现了双向链表,使用首尾节点指针简化操作。相比数组,链表在指定位置操作效率高(O(1)),但查找性能较差。实际应用中需权衡链表和数组(如ArrayList)的特性,考虑内存分配、遍历方式等因素。特别强调LinkedList遍历应使用迭代器而非普通for循环以保证性能。
2025-12-27 21:48:48
740
原创 数组与ArrayList
文章讲述了数组的概念,介绍 Java 的 ArrayList 基于数组实现,支持动态扩容,提供便捷 API,但非尾部操作效率较低,还解释了数组下标从 0 开始的原因以及 ArrayList 的序列化机制。
2025-12-26 16:29:31
294
原创 Spring Core常见错误及解决方案
一些`Spring Core 常见错误及解决方案,出自极客时间傅健老师《Spring编程常见错误50例》
2025-12-01 14:28:53
1135
原创 Kafka-4 Kafka 中的消费者
本文介绍了 Kafka 消费者的核心概念和使用方法。重点讲解了消费者组 (Consumer Group) 的特性,包括组内消费者实例与分区分配规则,重平衡的产生和避免措施、位移提交等。
2025-12-01 14:22:39
963
原创 Kafka-3 Kafka 中的生产者
本文详细分析了 Kafka 生产者的核心机制,包括分区选择、消息缓存、消息确认、幂等性、事务性等,并提供了一些配置项的最佳实践。
2025-11-29 14:13:47
849
原创 Mysql 的锁机制
MySQL锁机制主要分为全局锁、表级锁和行锁三类,用于控制并发访问。全局锁用于全库只读备份,InnoDB引擎通过事务支持非阻塞备份。表级锁包括表锁和元数据锁(MDL),MDL锁协调DML与DDL操作冲突。行锁是InnoDB特有,记录锁锁定索引记录,间隙锁防止幻读,临键锁则是记录锁与间隙锁的组合。行锁在事务结束时释放,遵循两阶段锁协议。合理使用锁能保证数据一致性,同时需注意锁粒度对性能的影响,如避免无索引更新导致全表锁定。
2025-11-08 23:20:05
707
原创 Mysql 读书笔记
本文总结了MySQL使用中的几个关键知识点:1)索引失效的常见场景,如字段运算、隐式转换、模糊查询等;2)字符串索引的实现方式,包括前缀索引和哈希索引;3)MySQL性能抖动原因,主要是脏页刷新机制;4)数据删除后空间不释放的原理;5)count()函数的执行效率比较;6)排序操作的全字段和Row_ID两种算法;7)自增主键不连续的原因。
2025-11-03 15:46:19
786
原创 深入浅出 Mysql 索引
MySQL索引通过高效数据结构优化查询性能。B+树是主流索引实现,相比B树具有非叶子节点仅存关键字、叶子节点双向连接等优势,支持稳定查询和高效范围查找。索引数据页采用槽(slot)机制实现二分查找,提升I/O效率。索引覆盖避免回表操作,联合索引遵循最左前缀原则。5.7版本后引入索引下推优化,能在索引层过滤数据。理解这些机制有助于合理设计索引,平衡查询效率和存储开销。
2025-10-30 17:32:22
465
原创 谈谈数据库的事务实现
本文通过具体案例,阐述了不同隔离级别下的数据读取差异,并指出可重复读在事务开始时生成固定ReadView的特性。文章还探讨了事务并发操作时的版本控制过程,解释了如何通过undo log回溯历史版本数据,以及不同隔离级别解决并发问题的原理。最后通过事务操作实例,展示了MVCC机制在复杂并发场景下的具体工作流程。
2025-10-29 16:31:49
744
原创 谈谈数据库中的自增主键
自增主键相比身份证号等业务主键的优势在于:1) 占用空间更小(4字节vs18字节),减少索引存储开销;2) 插入时索引调整更少(仅末端插入),符合磁盘读写特性;3) 有序性支持高效范围查询。但业务唯一性约束是前提,若无法保证仍需使用业务主键。自增主键通过优化索引结构和维护成本,提升了数据库性能。
2025-10-28 11:00:26
390
原创 23 种设计模式总结
设计模式分为创建型、结构型、行为型三大类,共23种常用模式。创建型模式(如单例、工厂)解决对象创建问题;结构型模式(如代理、装饰器)处理类或对象组合;行为型模式(如观察者、策略)管理对象间交互。每种模式针对特定场景,通过封装变化、解耦代码提升系统灵活性和可维护性。设计模式本质是前人总结的代码复用经验,合理运用能有效解决复杂软件设计问题。
2025-10-23 15:20:21
378
原创 微服务核心
微服务架构是一种将应用拆分为多个小型服务的架构风格,具有独立进程、轻量通信、业务导向等特点。其优势在于模块化、独立部署和技术多样性,但也面临分布式复杂性、数据一致性等挑战。引入时机需权衡业务发展和基础设施成本,初期推荐单块优先。中台战略通过复用核心服务提升效率。技术体系包含接入层、网关层、业务服务层等组件,涉及服务发现、配置中心等关键机制。通讯方式可选择REST或RPC,各有优缺点。整体而言,微服务架构需要综合考虑组织、技术和业务等多方面因素。
2025-10-17 14:07:05
715
1
原创 Kafka-2 Docker 部署单节点环境(SpringBoot验证)
本文介绍了Kafka的三种主要发行版(Apache Kafka、Confluent Kafka和Cloudera/Hortonworks Kafka)及其特点差异。重点讲解了使用Docker部署Kafka 3.6版本单节点环境的详细步骤,包括: 配置docker-compose.yml文件(含完整参数说明) 解决镜像下载问题的方法 通过容器内命令验证Kafka运行状态的常用方式 部署方案采用不需要Zookeeper的KRaft模式,适合测试环境搭建。
2025-10-15 14:18:11
934
原创 Kafka-1 初识消息引擎系统
Kafka 消息引擎系统概述 Kafka是一种高性能的消息引擎系统,采用发布/订阅模型,支持异步处理、流量控制和服务解耦。其核心架构包含主题(Topic)、分区(Partition)和副本(Replica)三层设计,通过领导者副本机制实现高可用性。Kafka使用二进制字节序列传输结构化消息,采用仅追加写入的日志文件存储方式,配合日志段机制实现高效数据管理。系统支持消费者组模式,具备自动重平衡能力,能够处理大规模分布式场景下的消息传递需求。
2025-10-14 17:17:11
722
原创 设计模式-命令模式
命令模式将请求封装为对象,使请求与执行解耦。文章通过公司部门处理客户需求的案例,演示了如何实现该模式:定义Command接口,创建具体请求类RequestA/B(封装部门执行逻辑),由Invoker类管理请求队列并统一执行。这种设计支持请求排队、撤销等功能,客户端只需提交请求而无需关注具体执行细节。代码展示了部门处理请求、调用者管理执行的完整流程,体现了命令模式的核心思想——将请求参数化并延迟执行。
2025-10-12 21:28:16
407
原创 设计模式-迭代器模式
本文介绍了迭代器设计模式的实现原理和应用场景。通过一个User类示例,展示了如何实现Iterable接口和内部迭代器类,使其支持增强for循环遍历。迭代器模式将遍历操作与容器类解耦,支持多种遍历方式(如树的前中后序遍历),并能安全处理并发修改。关键在于实现hasNext()和next()方法,并通过modCount机制防止遍历过程中的意外修改。该模式适用于需要灵活遍历复杂数据结构的场景,通过多态特性可方便切换不同迭代器,体现了面向对象的设计思想。
2025-10-12 19:30:43
1007
原创 设计模式-访问者模式
访问者模式通过分离对象结构和操作来解耦代码。当对象接口方法不断增加导致实现类膨胀时,该模式将功能按维度拆分到不同访问者类(如Funcation1Visitor)中。被访问对象(AFuncationImpl等)通过实现Accept接口的accept方法,将自身传递给访问者执行对应操作。这种双分派机制既保持了多态优势,又实现了功能扩展时只需新增访问者类而无需修改现有类结构,符合开闭原则。典型应用场景包括复杂对象结构的多样化操作需求。
2025-10-12 14:38:06
439
原创 设计模式-解释器模式
解释器模式通过定义语法规则和解释器来处理特定语言表达式。本文以简单的数字运算为例,展示了如何实现一个解释器:首先定义Expression接口及实现类,然后通过栈结构解析后缀表达式,生成对应的语法树并计算结果。案例中,输入"1 3 4 2 - 2 3 6 * + * * + 30 -;被正确解析为((1+(3*((4-2)(2+(36)))))-30),验证了解释器模式的有效性。该模式通过拆分语法规则为独立单元,避免了复杂的整体解析逻辑,适用于需要自定义语法规则的场景。
2025-10-11 16:15:53
348
原创 设计模式-状态模式
状态模式是一种行为设计模式,用于管理对象状态转换,特别适用于复杂状态流转的场景。摘要对比了三种状态机实现方式:1)分支逻辑法通过枚举状态和条件判断实现,简单但难以维护;2)查表法使用二维数组存储状态转换规则,适合简单动作场景;3)状态模式通过多态解耦,将状态行为分散到不同类中,更易于扩展复杂逻辑。状态模式的核心是定义状态接口和上下文类,适合游戏、工作流等需要灵活状态管理的场景。每种方法各有优劣,应根据业务复杂度选择合适方案。
2025-10-11 14:39:59
597
原创 设计模式-责任链模式
责任链模式是一种将请求发送与接收解耦的设计模式,允许多个对象有机会处理请求。本文通过JPA注解校验案例,展示了如何实现该模式:定义Length、Max、Min等注解,创建对应的校验器类(LengthVerifier、MaxVerifier、MinVerifier),并通过Checker类组织校验流程。关键组件ValidatorContext负责维护校验状态和错误信息,实现链式校验逻辑。这种模式既支持遇到错误立即终止,也支持完整遍历所有校验器,具有灵活性和扩展性。
2025-10-10 14:12:09
745
原创 设计模式-策略模式
策略模式通过定义算法族并封装每个算法,使其可以互相替换。文章通过审核系统案例演示了策略模式的应用:定义策略接口和具体实现类(如注册资本和用房面积评分策略),并使用工厂模式优化策略选择。最终通过反射实现动态创建策略对象,解决了静态存储导致的复用问题。该模式的核心优势在于算法的灵活替换和独立演化,适用于需要动态选择算法的场景。
2025-10-10 09:33:08
343
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅