<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cur1es的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/cur1es</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cur1es]]></copyright><item><title><![CDATA[什么？Spring AOP 的依赖竟然偷偷改名了！Spring Boot 4.x 升级避坑指南]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/162443704</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/162443704</guid><author>cur1es</author><pubDate>Tue, 30 Jun 2026 12:10:55 +0800</pubDate><description><![CDATA[摘要： 使用Spring Boot 4.x学习AOP时，发现标准依赖spring-boot-starter-aop无法引入，排查后发现该依赖在4.x版本中已更名为spring-boot-starter-aspectj。官方虽未明确公告，但实际变更已生效。解决方案为替换依赖名称，Maven和Gradle配置示例已提供。]]></description><category></category></item><item><title><![CDATA[【JVM类加载&双亲委派模型&垃圾回收机制】]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/158774607</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/158774607</guid><author>cur1es</author><pubDate>Sun, 08 Mar 2026 08:00:00 +0800</pubDate><description><![CDATA[本文介绍了JVM类加载机制和垃圾回收机制。类加载分为加载、验证、准备、解析和初始化5个步骤，采用双亲委派模型确保标准库类优先加载。垃圾回收主要针对堆内存中的对象，通过可达性分析识别垃圾，采用分代回收策略：新生代使用复制算法，老年代使用标记-整理算法。垃圾回收解决了内存泄漏问题，但会引发STW（程序暂停）现象。文章还对比了引用计数和可达性分析两种垃圾识别方法，以及标记-清除、复制算法和标记-整理三种内存释放方式的优缺点。]]></description><category></category></item><item><title><![CDATA[【用最简单的话，讲清 HTTPS 加密】]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/158632980</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/158632980</guid><author>cur1es</author><pubDate>Thu, 05 Mar 2026 20:09:05 +0800</pubDate><description><![CDATA[HTTPS是在HTTP基础上引入加密层(SSL)的安全协议，解决了HTTP明文传输易被篡改的问题。加密方式包括对称加密(同一密钥)和非对称加密(公钥私钥配对)。HTTPS工作过程先通过非对称加密传输对称密钥，再用对称加密保护数据。为防止中间人攻击，引入了证书机制，包含服务器信息和公钥，确保通信安全。当证书异常时浏览器会提示警告，有效防止黑客窃取密钥或篡改数据。]]></description><category></category></item><item><title><![CDATA[【HTTP 协议格式 + Fiddler 抓包入门】]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/158424483</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/158424483</guid><author>cur1es</author><pubDate>Tue, 03 Mar 2026 08:00:00 +0800</pubDate><description><![CDATA[HTTP协议是应用层最主流的超文本传输协议，1991年诞生至今已发展到HTTP/3版本。文章详细介绍了HTTP协议格式，包括请求和响应的四部分结构：首行、头部、空行和正文。通过Fiddler抓包工具演示了如何捕获和分析HTTP数据包，并解析了URL的组成要素及其编码规则。重点对比了GET和POST两种最常见请求方法的区别：GET主要用于获取资源，请求参数在URL中；POST用于提交数据，参数在请求体中。文章还列举了HTTP各版本的发展历程和特点，帮助读者全面理解这一基础网络协议的工作原理。]]></description><category></category></item><item><title><![CDATA[【IP协议&NAT机制&数据链路层相关知识】]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/158320590</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/158320590</guid><author>cur1es</author><pubDate>Wed, 25 Feb 2026 00:19:33 +0800</pubDate><description><![CDATA[本文介绍了IP协议的核心功能和关键技术。IP协议主要完成地址管理和路由选择两大任务，其报头包含版本、服务类型、生存时间等关键字段。IPv4地址采用32位整数表示，通过点分十进制形式呈现，但面临地址不足问题，解决方案包括动态分配、NAT机制（主流）和IPv6（尚未普及）。网段划分将IP分为网络号和主机号，通过子网掩码实现。路由选择采用渐进式寻路方式。数据链路层的以太网协议采用特定帧格式，包含MAC地址等信息。文章还介绍了特殊IP地址的用途，展现了互联网协议栈的基本架构和工作原理。]]></description><category></category></item><item><title><![CDATA[【TCP 协议的相关特性】]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/157843252</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/157843252</guid><author>cur1es</author><pubDate>Sun, 22 Feb 2026 04:25:11 +0800</pubDate><description><![CDATA[本文介绍了TCP协议的关键特性及其工作机制。首先阐述了TCP报文格式，包括16位端口号、4位可变长报头和6位标志位等核心字段。重点讲解了TCP确保可靠传输的两大机制：确认应答机制通过序号和确认序号实现数据包有序传输，超时重传机制则通过重传丢失数据包来对抗网络丢包问题。文章详细解析了TCP连接管理的&quot;三次握手&quot;建立连接过程和&quot;四次挥手&quot;断开连接过程，说明了这些交互步骤的必要性和实际意义。最后指出TCP通过序号管理、超时重传和连接控制等机制，实现了面向连接的可靠数据传输]]></description><category></category></item><item><title><![CDATA[【UDP的报文结构】]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/157841741</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/157841741</guid><author>cur1es</author><pubDate>Sat, 07 Feb 2026 16:43:59 +0800</pubDate><description><![CDATA[UDP是一种无连接、不可靠传输的网络协议，采用面向数据报的方式实现全双工通信。其数据报结构由8字节报头和载荷组成，最大传输长度为64KB。UDP通过简单的CRC校验算法确保数据完整性，但存在极小概率的校验失败可能。相比TCP，UDP不提供可靠性保障，但传输效率更高。此外，摘要还介绍了更高精度的MD5校验算法及其定长、分散和不可逆的特性，说明其在数据校验和加密中的应用价值。UDP适用于对实时性要求高但允许少量丢包的应用场景。]]></description><category></category></item><item><title><![CDATA[【初识网络通讯中的一些基础概念】]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/157551160</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/157551160</guid><author>cur1es</author><pubDate>Wed, 04 Feb 2026 08:00:00 +0800</pubDate><description><![CDATA[本文摘要： 网络通信基础概念解析，涵盖IP地址、端口号、协议分层等核心内容。IP地址通过点分十进制表示设备网络位置，端口号标识主机上的应用程序。协议分层采用TCP/IP五层模型（应用层、传输层、网络层、数据链路层、物理层），各层实现不同功能并相互封装。数据通信涉及封装（打包发送）和分用（拆解接收）过程。客户端主动发起请求，服务器被动响应，二者角色可互换。通信模式包括一问一答、一问多答等多种形式。网络协议确保不同设备间的有效通信，分层设计提高了协议的灵活性和可维护性。]]></description><category></category></item><item><title><![CDATA[【File,InputStream,OutputStream类的用法】]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/157514606</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/157514606</guid><author>cur1es</author><pubDate>Fri, 30 Jan 2026 16:25:51 +0800</pubDate><description><![CDATA[Java中的File类用于抽象描述文件和目录路径，支持绝对/相对路径。常用方法包括获取路径信息(getPath)、判断文件属性(exists/isFile)、创建删除文件(createNewFile/delete)以及目录操作(mkdir/listFiles)等。InputStream和OutputStream是字节流读写类，其中InputStream是抽象类需通过子类实例化。字符流Reader/Writer则以字符为单位处理数据，避免字符截断问题。文件操作示例演示了路径获取、文件创建删除、目录遍历文件移动]]></description><category></category></item><item><title><![CDATA[【IO与文件及存储常识】]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/157181908</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/157181908</guid><author>cur1es</author><pubDate>Wed, 21 Jan 2026 20:00:00 +0800</pubDate><description><![CDATA[摘要 本文系统介绍了计算机中的IO、存储和文件三大核心概念。IO指计算机与外部设备的数据交互，包括输入和输出两种操作。存储设备分为CPU寄存器/缓存、内存和硬盘三类，它们在速度、容量、价格和数据持久性上存在显著差异。文件系统采用树形结构组织，通过绝对路径和相对路径定位文件。文件可分为文本文件和二进制文件，编码方式不同会导致乱码问题。操作系统将硬件设备也抽象为文件概念，实现接口统一性。这些基础概念对理解计算机工作原理至关重要。]]></description><category></category></item><item><title><![CDATA[CAS&多线程环境使用哈希表]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/156114391</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/156114391</guid><author>cur1es</author><pubDate>Mon, 22 Dec 2025 08:00:00 +0800</pubDate><description><![CDATA[本文聚焦 CAS 机制与多线程哈希表核心使用要点。CAS（Compare and swap）通过比较内存值与预期值并匹配更新的原子操作保障线程安全，应用于 JUC 的 atomic 类，其 ABA 问题可通过版本号解决。哈希表方面，HashMap 无锁、线程不安全但支持 null 值；HashTable 以全表锁实现线程安全，效率低且已淘汰，不支持 null 值；ConcurrentHashMap 优化锁机制（锁桶 + CAS）与扩容方式，线程安全高效，不支持 null 值，是多线程场景首选。]]></description><category></category></item><item><title><![CDATA[Java多线程案例--初识线程池]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/155863151</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/155863151</guid><author>cur1es</author><pubDate>Sat, 13 Dec 2025 08:00:00 +0800</pubDate><description><![CDATA[本文介绍了线程池的概念及其在Java标准库中的实现方式。线程池通过复用线程解决频繁创建销毁线程导致的效率问题。标准库提供ExecutorService接口和Executors工厂类来创建四种线程池：固定大小、动态增长、单线程和定时任务线程池。ThreadPoolExecutor则允许更细致的参数定制，包括核心线程数、最大线程数、空闲时间和拒绝策略等。文章还通过模拟实现一个固定大小的线程池，展示了线程池的基本工作原理，使用阻塞队列管理任务并复用线程执行。]]></description><category></category></item><item><title><![CDATA[Java多线程案例--定时器]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/155247419</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/155247419</guid><author>cur1es</author><pubDate>Thu, 04 Dec 2025 02:08:17 +0800</pubDate><description><![CDATA[Java定时器实现原理与模拟 摘要：本文介绍了Java标准库中的Timer定时器实现原理，并通过代码示例演示了如何模拟实现一个简单的定时器。Timer类通过schedule方法添加任务，使用TimerTask封装要执行的任务内容和延迟时间。关键实现包括：1)使用优先级队列管理任务，按执行时间排序；2)通过线程轮询检查任务执行时间；3)采用wait/notify机制优化等待过程。文章详细讲解了任务调度、线程安全处理等核心问题，并提供了完整的模拟实现代码，包括任务比较、队列操作和时间判断等关键逻辑。]]></description><category></category></item><item><title><![CDATA[Java多线程案例--阻塞式队列]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/155191464</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/155191464</guid><author>cur1es</author><pubDate>Mon, 24 Nov 2025 13:14:13 +0800</pubDate><description><![CDATA[本文介绍了阻塞队列的概念及其在生产者消费者模型中的应用。阻塞队列是一种线程安全的队列，具有当队列满时入队阻塞、队列空时出队阻塞的特性。文章通过Java标准库中的ArrayBlockingQueue和LinkedBlockingQueue实现示例，展示了生产快消费慢的场景。最后详细讲解了如何基于普通队列实现阻塞队列，包括使用synchronized保证线程安全，以及通过wait/notify机制实现阻塞功能，特别强调了wait条件判断需要使用while循环而非if语句的重要性。阻塞队列能有效解耦生产者和消费者]]></description><category></category></item><item><title><![CDATA[Java多线程案例--单例模式]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/155159533</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/155159533</guid><author>cur1es</author><pubDate>Sun, 23 Nov 2025 13:15:55 +0800</pubDate><description><![CDATA[单例模式确保类只有一个实例，分为饿汉和懒汉两种实现方式。饿汉模式在类加载时就创建实例，实现简单但可能造成资源浪费；懒汉模式在首次使用时创建实例，更节省资源但需要考虑线程安全问题。线程安全的懒汉模式通过双重检查锁和volatile关键字来优化性能。两种方式都通过私有化构造方法防止外部实例化，提供静态方法获取唯一实例。]]></description><category></category></item><item><title><![CDATA[Java中线程安全问题的原因和解决方案]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/153847834</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/153847834</guid><author>cur1es</author><pubDate>Sat, 25 Oct 2025 19:36:51 +0800</pubDate><description><![CDATA[本文探讨了Java中的线程安全问题及其解决方案。多个线程同时修改共享资源会导致线程不安全，如两个线程对同一static变量进行50万次自增，结果会小于预期的100万。这是由于++操作的非原子性（读-改-写）被线程抢占式执行打断。解决方案包括使用synchronized同步块保证原子性，要求使用同一锁对象。synchronized具有可重入特性，但不当使用仍可能导致死锁（如两个线程互相持有对方需要的锁）。此外还介绍了volatile关键字解决内存可见性问题（防止JVM优化导致线程读取过时数据)和指令重排序问题]]></description><category></category></item><item><title><![CDATA[Java 线程的几种状态]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/153568716</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/153568716</guid><author>cur1es</author><pubDate>Sun, 19 Oct 2025 15:10:39 +0800</pubDate><description><![CDATA[Java线程状态包括NEW（新建未启动）、RUNNABLE（可运行或正在运行）、BLOCKED（锁竞争阻塞）、WAITING（无限等待）、TIMED_WAITING（限时等待）和TERMINATED（终止）。状态转换条件：调用start()从NEW到RUNNABLE；锁竞争失败从RUNNABLE到BLOCKED；获取锁后返回RUNNABLE；调用sleep()等进入TIMED_WAITING；超时或中断返回RUNNABLE；执行完毕或异常则变为TERMINATED。这些状态描述了线程完整的生命周期。]]></description><category></category></item><item><title><![CDATA[Thread 类的基本用法]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/153545204</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/153545204</guid><author>cur1es</author><pubDate>Sun, 19 Oct 2025 14:00:03 +0800</pubDate><description><![CDATA[本文介绍了Java中线程创建与操作的基本方法。主要内容包括：1）通过继承Thread类或实现Runnable接口创建线程；2）使用匿名内部类和Lambda表达式简化线程创建；3）线程中断机制（interrupt）及标志位使用；4）线程等待（join）方法实现线程顺序执行；5）线程休眠（sleep）控制执行速度；6）获取线程实例信息（name、id）的方法。文章通过HelloWorld示例演示了线程的基本操作，并解释了相关概念如标志位、抢占式执行等。]]></description><category></category></item><item><title><![CDATA[进程和线程的区别和联系]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/153117992</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/153117992</guid><author>cur1es</author><pubDate>Tue, 14 Oct 2025 02:13:06 +0800</pubDate><description><![CDATA[本文通过月饼的比喻生动解释了进程和线程的关系：将月饼堆比作进程，吃月饼的人比作线程。指出线程作为进程的执行单元，能提高任务处理效率，但过多线程可能导致资源争夺冲突。文章强调需要合理分配进程和线程数量，在提高吞吐量的同时避免资源竞争，并总结出线程是进程的组成部分、都支持并发执行、引入线程能降低开销等核心要点。]]></description><category></category></item><item><title><![CDATA[进程调度的基本过程]]></title><link>https://blog.youkuaiyun.com/cur1es/article/details/152415994</link><guid>https://blog.youkuaiyun.com/cur1es/article/details/152415994</guid><author>cur1es</author><pubDate>Sat, 04 Oct 2025 00:15:09 +0800</pubDate><description><![CDATA[冯诺依曼体系是现代计算机的基础架构，由运算器、控制器、存储器、输入和输出设备五大部件组成。CPU集成了运算器和控制器，存储器分为内存（运存）和外存（硬盘等），而输入输出设备如键盘、鼠标、显示器等实现人机交互。该体系核心在于运算控制与存储分离。CPU执行分为取指令、译码、执行和写回四个步骤。进程调度通过分时复用技术，使少量CPU核心能处理大量进程，涉及状态管理、优先级调整、记账信息和上下文保存等机制，确保系统高效运行。不同设备通过灵活调整进程优先级实现性能优化。]]></description><category></category></item></channel></rss>