自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 搜索树进阶指南:从二叉搜索树、AVL 树到红黑树

本文介绍了二叉搜索树(BST)及其平衡优化方案。BST通过左小右大的节点布局实现有序存储,支持高效查询、插入和删除操作,但在极端情况下会退化为链表。AVL树和红黑树利用旋转操作调整树形,保持平衡。文章详细解析了BST的基本操作流程、退化成因、旋转原理,并通过Java代码示例展示了实现细节,最后对比了不同平衡树的工程适用场景。核心观点是:BST为有序查询提供基础,而平衡树通过额外约束确保性能稳定在O(log n)级别。

2026-08-13 10:01:23 297 3

原创 堆与优先队列实战:从数组建堆到 Top K 与流式计算

文章摘要: 本文系统介绍了堆数据结构及其核心操作。堆是一种满足完全二叉树结构和堆序性质的优先队列实现,支持高效插入和删除最值操作(O(log n))。作者详细讲解了二叉堆的数组表示方法、插入时的上浮调整、删除时的下沉调整等核心算法,并提供了完整的Java实现代码。文章还通过图表直观展示了堆的结构特性和操作流程,对比了不同优先队列实现的时间复杂度。堆结构特别适合需要频繁获取极值元素的场景,如任务调度、Top K问题等。

2026-08-13 09:59:36 557 2

原创 哈希表完全指南:从哈希函数、冲突处理到工程实现

本文摘要:哈希表是一种高效的数据结构,通过哈希函数将键映射到数组下标实现快速操作。文章从数组寻址出发,详细解析了哈希函数设计(确定性、均匀性、雪崩效应)、冲突处理(链地址法和开放寻址法)、负载因子与扩容机制的关系,并实现了一个支持自动扩容的链地址哈希表。关键点包括:哈希函数需平衡均匀性与计算效率;冲突不可避免,不同处理方法各有优劣;扩容成本虽高但可通过倍数增长摊还。读完可深入理解哈希表为何快、何时慢,以及如何为业务对象设计可靠键。

2026-08-12 10:42:13 403 5

原创 图算法实战指南:从 BFS、DFS 到拓扑排序与最短路径

本文探讨了图论在多个领域的应用,重点分析了图建模的关键决策和四种核心算法。摘要如下: 图建模要点 顶点表示实体,边表示关系 需确定边的方向性和权重属性 权重应与优化目标一致(时间/距离/成本等) 存储结构选择 邻接矩阵适合稠密图,快速查询但空间占用高 邻接表适合稀疏图,空间效率更优 Java实现示例展示了邻接表的基本操作 四大算法解析 BFS:层序遍历,解决无权图最短路径问题 DFS:深度优先遍历,适用于路径探索和回溯 拓扑排序:处理有向无环图的依赖关系 Dijkstra:求解带权图的最短路径 工程实践建议

2026-08-12 10:40:43 451 3

原创 CPU 如何与设备通信:总线、I/O 接口、中断与 DMA 完整指南

本文介绍了计算机I/O系统的基本工作原理。I/O设备通过控制器、总线和寄存器与CPU通信,设备控制器包含数据、状态和控制三类寄存器。CPU访问设备寄存器有两种方式:独立编址I/O和内存映射I/O。总线传输包含地址、数据和控制三类信息,通过仲裁机制处理多个设备的并发请求。设备控制可采用轮询或中断方式,轮询简单但效率低,中断能提高CPU利用率。现代系统常采用混合策略,在低延迟和高效率间取得平衡。文章还讨论了总线同步/异步机制、突发传输等概念,为理解计算机I/O系统提供了基础框架。

2026-08-11 13:59:50 403 6

原创 计算机如何表示和运算数据:补码、定点数与 IEEE 754 浮点数

本文从硬件底层探讨了二进制数据的表示与运算原理。主要内容包括:1) 位模式本身无意义,其解释取决于编码规则;2) 进制转换方法及浮点数精度问题的根源;3) 无符号整数的模运算特性;4) 补码如何统一加减法运算;5) 进位标志与溢出标志的区别;6) 符号扩展与截断规则;7) 定点数的表示与运算特点。文章通过具体计算示例,揭示了数据类型转换、整数溢出等常见问题的底层机制,强调理解数据表示对掌握计算机系统工作原理的重要性。

2026-08-11 13:58:12 249 6

原创 一条指令如何在 CPU 中执行:数据通路、流水线冒险与中断

本文摘要: CPU通过流水线技术提高指令执行效率,将单条指令分解为取指、译码、执行、访存和写回五个阶段并行处理。流水线虽提升吞吐率,但会引发结构冒险(硬件资源冲突)和数据冒险(指令间数据依赖)。通过指令/数据Cache分离、结果前递和插入停顿周期可缓解这些问题。重点在于理解处理器如何在保证结果正确的前提下优化执行速度,而非具体电路实现。(149字)

2026-08-10 09:39:12 474 2

原创 缓存与存储层次完全指南:从局部性、地址映射到多核一致性

本文介绍了计算机存储层次结构的设计原理与Cache工作机制。主要内容包括: 存储层次存在的必要性:通过寄存器、多级Cache、主存和外部存储的层级设计,用快速小容量硬件缓存热点数据,解决CPU与内存速度不匹配问题。 Cache有效的理论基础:程序访问具有时间局部性(近期访问数据可能再次访问)和空间局部性(相邻地址可能被连续访问),Cache利用这些特性提高命中率。 Cache工作流程:详细描述了从CPU发出地址到数据返回的完整过程,包括地址拆分、标签比较、命中/未命中处理等关键步骤。 地址映射方式:对比分析

2026-08-10 09:36:15 398 2

原创 以太网、VLAN 与 STP:从交换机转发到二层网络排障

交换机通过源 MAC 学习位置,根据目标 MAC 执行定向转发、过滤或泛洪。VLAN 把一套物理网络划分为多个广播域,Access 端口连接终端,Trunk 使用 802.1Q 承载多个 VLAN,不同 VLAN 之间则需要三层设备转发。冗余链路带来可用性,也带来二层环路风险。STP 构建无环逻辑拓扑,链路聚合则把多条受控链路组成一个逻辑接口。排障时应沿着“物理接口、VLAN 路径、MAC 学习、STP 状态、三层网关”的顺序检查,避免把端口 Up 误认为整条通信路径已经正常。

2026-08-09 13:27:45 358 4

原创 IPv4 子网、路由与 NAT:从 CIDR 计算到跨网通信排障

IPv4 通信可以归纳为三个连续决策:先根据地址和前缀判断目标范围,再通过最长前缀匹配选择出口与下一跳,最后在当前链路中解析下一跳的 MAC 并发送帧。路由器逐跳重复这一过程,NAT 则可能在边界处改写地址和端口。排障时应按“本机配置、路由决策、邻居解析、链路转发、回程路径、NAT 与策略”的顺序收集证据。只看一个 Ping 结果或一张路由表很难确定根因;让系统展示实际选路,并在关键接口抓取同一条流量,才能把不可达问题准确定位到具体一层。

2026-08-09 13:17:55 508 4

原创 TCP 可靠传输全解析:从三次握手到拥塞控制与抓包排障

TCP 可靠传输机制解析 本文系统介绍了 TCP 协议实现可靠传输的核心机制: 连接建立:通过三次握手同步序列号并确认双方通信能力,避免历史连接干扰 序列与确认:使用字节级序列号和累积确认保证数据有序交付 重传机制:结合超时重传和快速重传(SACK)应对网络丢包 流量控制:通过滑动窗口和接收窗口通告匹配收发速度 拥塞控制:包含慢启动、拥塞避免等阶段,动态调整发送速率 连接管理:通过四次挥手正常关闭连接 文章还提供了抓包分析方法,帮助定位连接队列溢出、窗口调整等问题。TCP 在不可靠的 IP 层上构建了可靠传

2026-08-07 13:57:46 464 3

原创 从输入 URL 到页面返回:DNS、路由、TLS 与 HTTP 完整链路

从 URL 到页面返回是一条跨层链路:URL 决定访问语义,DNS 把名称映射为地址,路由与邻居发现将数据送往下一跳,TCP 或 QUIC 建立传输通道,TLS 验证身份并协商加密,HTTP 表达请求与响应,CDN、负载均衡和网关再把流量送到应用。真正有效的排障不是背诵步骤,而是给每个阶段建立可验证的问题:解析到了什么地址、连接到了哪一段、证书为何可信、首字节时间花在哪里、缓存由谁命中。按层收集证据并对齐时间线,才能把笼统的“网络慢”收敛为可以处理的具体故障。

2026-08-07 13:29:59 731 4

原创 并发同步与死锁:从竞态条件到 Linux 锁排障

并发编程的核心挑战在于执行顺序的不确定性,这会导致竞态条件、死锁等问题。文章从临界区保护出发,对比了互斥锁、信号量、条件变量等同步原语的适用场景与风险,并分析了Linux futex的优化机制。重点阐述了竞态条件的产生原理、条件变量的正确使用方式、死锁形成的四个必要条件及其预防策略,包括锁顺序、超时回退等方法。最后指出锁竞争会显著放大延迟,建议通过缩小临界区、锁拆分等优化手段降低竞争。全文系统性地讲解了并发控制的常见问题与解决方案。

2026-08-05 15:35:34 581 2

原创 Linux 文件系统与 I/O 全景:从文件描述符到数据落盘

本文深入探讨了Linux文件系统中的关键概念与I/O处理流程,从文件描述符到数据持久化。主要内容包括: 文件访问的分层架构(VFS、文件系统、块层等) 核心对象(inode、dentry、file)的作用与关系 硬链接与符号链接的差异及影响 read操作的缓存命中与设备I/O路径 write返回与数据持久化的区别,同步接口选择 原子更新文件的正确方法 文件系统日志的作用与限制 三种I/O模式(Buffered、Direct、mmap)的特点与适用场景 文章提供了实用的排障方法和图解说明,帮助理解Linux文

2026-08-05 15:26:53 332 1

原创 进程、线程与 CPU 调度:从运行模型到 Linux 排障

本文从操作系统运行模型出发,深入剖析进程、线程与调度机制。首先明确进程是资源容器,线程是执行单元,分析了二者的核心差异与应用场景。接着详细讲解任务状态转换、上下文切换机制及调度策略,指出现代Linux调度器需要平衡CPU利用率、响应时间等多项目标。文章特别强调CPU高使用率、负载高但利用率低、上下文切换暴增等典型问题的诊断思路,提供了从系统指标到线程调用的完整排查路径。最后破除常见误区,指出性能分析必须结合时间窗口和资源限制,建立完整的因果链思维。全文系统性地串联了操作系统核心概念与工程实践中的排障方法。

2026-08-04 16:25:58 545 5

原创 虚拟内存完全指南:地址翻译、缺页、写时复制与 Linux 观测

虚拟内存不是“把磁盘当内存”的简单机制,而是一整套地址抽象与资源管理体系。页表提供映射和权限,TLB 加速地址翻译,缺页处理实现按需分配,写时复制降低进程创建成本,页缓存统一文件数据的内存驻留,内存回收与 Swap 则负责应对容量压力。排查内存问题时,应始终区分虚拟地址规模、物理驻留、共享内存和容器计费口径,并观察它们随时间的变化。先从系统级可用内存、换页和回收压力判断问题边界,再定位进程与具体映射,最后结合应用运行时工具确认分配来源,才能避免被单一指标误导。

2026-08-04 16:18:39 335 3

原创 Java 线程池生产实践:从参数估算到监控与优雅关闭

生产线程池是一套容量治理机制,而不只是一个 Java 类。先用任务特征建立参数初值,再用有界队列和明确拒绝策略保护系统;随后补齐上下文隔离、异常观察、优雅关闭和监控。最终参数应由服务目标、下游容量和压测数据共同决定,并在流量与依赖发生变化后持续复核。

2026-08-03 18:24:25 499 7

原创 Spring Boot 3 REST API 工程化实践:校验、异常、日志与测试

REST API 的工程质量来自一致的边界:DTO 负责输入约束,Service 负责业务规则,异常处理器负责协议映射,traceId 负责定位请求,测试负责锁定契约。这套骨架并不复杂,却能显著减少重复代码,也让后续增加鉴权、审计和链路追踪时有清晰的落点。

2026-08-03 18:21:12 178 7

原创 Java 微服务分布式事务实践:Outbox、幂等与 Saga

Java 微服务分布式事务实践:Outbox、幂等与 Saga

2026-07-06 22:41:45 460 11

原创 Java 微服务治理实践:从注册发现到熔断限流

Java 微服务治理实践:从注册发现到熔断限流

2026-07-06 22:37:20 528 5

原创 Java 后端高并发接口优化:从线程池、缓存到数据库

Java 后端高并发接口优化:从线程池、缓存到数据库

2026-07-05 21:07:17 337 3

原创 Spring Boot 后端接口分层设计:从 Controller 到统一异常处理

Spring Boot 后端接口分层设计:从 Controller 到统一异常处理

2026-07-05 21:05:19 448 5

原创 curd如何与agent结合

curd怎么与agent结合

2026-07-04 21:53:35 356 2

原创 Java 后端面试常考八股

java后端面试常见八股

2026-07-04 16:54:15 469 4

空空如也

空空如也

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

TA关注的人

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