<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[BUTCHER]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sNow_0506</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sNow_0506]]></copyright><item><title><![CDATA[Java集合框架]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/160113724</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/160113724</guid><author>sNow_0506</author><pubDate>Mon, 13 Apr 2026 14:57:10 +0800</pubDate><description><![CDATA[在理想哈希下，链表长度服从泊松分布，平均约 0.5链表长度达到 8 的概率：‌约 0.00000006%‌ —— 几乎是“异常事件”此时链表查找从 O(1) → O(n)，性能断崖下跌红黑树查找为 O(log n)，在 n=8 时，‌8 次 vs 4 次比较‌，效率提升 50%+退化选 6，是为‌防抖‌：避免在 7 附近反复树化/退化，浪费 CPU🌟 ‌你看到的不是代码，是 Java 工程师用概率学对抗随机性的诗‌。]]></description><category></category></item><item><title><![CDATA[G1工作原理]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/160024821</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/160024821</guid><author>sNow_0506</author><pubDate>Fri, 10 Apr 2026 16:50:54 +0800</pubDate><description><![CDATA[📈 G1工作流完整生命周期（动态闭环）]]></description><category></category></item><item><title><![CDATA[多线程之AQS]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/159767082</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/159767082</guid><author>sNow_0506</author><pubDate>Fri, 03 Apr 2026 11:57:26 +0800</pubDate><description><![CDATA[AbstractQueuedSynchronizer（简称AQS）是Java并发包中的核心组件，它为实现依赖于先进先出（FIFO）等待队列的阻塞锁和相关同步器提供了一个框架。AQS是Java并发包中许多同步工具类的基础，如ReentrantLock、CountDownLatch、Semaphore等。]]></description><category></category></item><item><title><![CDATA[多线程之CAS]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/159766119</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/159766119</guid><author>sNow_0506</author><pubDate>Fri, 03 Apr 2026 11:55:49 +0800</pubDate><description><![CDATA[CAS（Compare-And-Swap）是一种用于实现无锁编程的原子操作机制，它在多线程环境中用于保证数据的一致性和线程安全。CAS操作通过比较内存中的值与预期值是否相等，如果相等，则将新值写入内存中，整个过程是原子性的。]]></description><category></category></item><item><title><![CDATA[多线程之volatile]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/159765404</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/159765404</guid><author>sNow_0506</author><pubDate>Fri, 03 Apr 2026 11:55:05 +0800</pubDate><description><![CDATA[在多线程编程中，volatile 关键字是一个重要的同步机制，主要用于保证变量的可见性和有序性。它是一种轻量级的同步策略，适用于特定场景下的线程安全问题。]]></description><category></category></item><item><title><![CDATA[多线程之synchronized]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/159765234</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/159765234</guid><author>sNow_0506</author><pubDate>Thu, 02 Apr 2026 16:17:55 +0800</pubDate><description><![CDATA[synchronized 是 Java 中的一个关键字，用于实现线程同步，确保在多线程环境下对共享资源的访问是安全的。它通过‌对象锁‌或‌类锁‌来控制同一时间只有一个线程可以执行被修饰的代码块或方法。]]></description><category></category></item><item><title><![CDATA[G1数据结构]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/159762653</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/159762653</guid><author>sNow_0506</author><pubDate>Thu, 02 Apr 2026 14:35:49 +0800</pubDate><description><![CDATA[‌G1垃圾回收算法的内部结构‌以“化整为零”的分区思想为核心，将整个Java堆划分为多个大小相等的独立区域（Region），每个Region大小通常为1~32MB（2的幂次方），由JVM根据堆大小自动设定。这种结构打破了传统垃圾回收器对堆内存的固定分代布局，实现了更灵活、高效的内存管理。]]></description><category></category></item><item><title><![CDATA[GC tuning]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/159731514</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/159731514</guid><author>sNow_0506</author><pubDate>Thu, 02 Apr 2026 10:27:54 +0800</pubDate><description><![CDATA[在Java中，‌垃圾指的是堆内存中那些已经不再被任何引用链访问到的对象‌。这些对象无法再被程序使用，其所占用的内存空间应当被回收，以供新对象分配使用。例如：Object obj = new Object();obj = null;当obj被置为null后，若该对象无其他引用指向它，则成为“垃圾”。]]></description><category></category></item><item><title><![CDATA[‌Java运行时数据区‌]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/159730220</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/159730220</guid><author>sNow_0506</author><pubDate>Thu, 02 Apr 2026 10:27:43 +0800</pubDate><description><![CDATA[‌Java运行时数据区‌是JVM在执行Java程序时管理内存的核心区域，它将内存划分为多个逻辑部分，以支持程序的运行、方法调用、对象存储和垃圾回收等机制。根据线程的访问权限，这些区域可分为‌线程私有‌和‌线程共享‌两大类。]]></description><category></category></item><item><title><![CDATA[对象的大小]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/159728772</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/159728772</guid><author>sNow_0506</author><pubDate>Thu, 02 Apr 2026 10:27:28 +0800</pubDate><description><![CDATA[Java对象的大小 = 对象头大小 + 实例数据大小 + 对齐填充大小在默认情况下（64位JVM + 开启指针压缩）：对象头大小：‌16字节‌实例数据大小：根据字段类型和数量计算对齐填充：确保总大小为8的倍数。]]></description><category></category></item><item><title><![CDATA[对象头具体包含什么]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/159728690</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/159728690</guid><author>sNow_0506</author><pubDate>Wed, 01 Apr 2026 14:50:10 +0800</pubDate><description><![CDATA[总结来说，对象头通过 Mark Word 和类型指针，记录了对象运行时的关键信息，是JVM进行对象管理、锁机制和垃圾回收的基础。存储对象自身的运行时数据，这些数据与对象的锁状态、哈希码、GC分代年龄等信息相关。Mark Word 的大小是动态的，根据对象的状态会复用部分存储空间，以节省内存。‌锁状态标志‌：表示对象当前的锁状态（如无锁、偏向锁、轻量级锁、重量级锁）。‌偏向线程ID‌：在偏向锁机制下，记录偏向该对象的线程ID。‌线程持有的锁‌：记录当前持有该对象锁的线程。‌偏向时间戳‌：偏向锁的启动时间戳。]]></description><category></category></item><item><title><![CDATA[对象在内存中的存储布局]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/159728164</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/159728164</guid><author>sNow_0506</author><pubDate>Wed, 01 Apr 2026 14:32:03 +0800</pubDate><description><![CDATA[‌在HotSpot虚拟机中，Java对象在内存中的存储布局主要分为三个部分：对象头（Header）、实例数据（Instance Data）和对齐填充（Padding）‌。这一结构是理解JVM内存管理、锁机制与性能优化的基础。]]></description><category></category></item><item><title><![CDATA[Java内存模型]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/159726761</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/159726761</guid><author>sNow_0506</author><pubDate>Wed, 01 Apr 2026 13:43:45 +0800</pubDate><description><![CDATA[‌Java内存模型（Java Memory Model, JMM）是定义多线程程序中变量访问规则的抽象规范，核心目标是确保在不同硬件和操作系统上程序的并发行为一致‌。它不等同于JVM运行时数据区的物理内存结构，而是一套关于‌主内存与工作内存之间交互、变量可见性、指令有序性‌的逻辑规则。]]></description><category></category></item><item><title><![CDATA[双亲委派机制]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/159726733</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/159726733</guid><author>sNow_0506</author><pubDate>Wed, 01 Apr 2026 13:37:18 +0800</pubDate><description><![CDATA[‌JVM类加载的双亲委派机制是一种类加载器之间的层级协作模型，其核心是：当一个类加载器收到类加载请求时，不会自行加载，而是优先委派给父类加载器去完成，只有父类无法加载时，自身才会尝试加载‌。]]></description><category></category></item><item><title><![CDATA[class文件加载到内存]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/159726573</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/159726573</guid><author>sNow_0506</author><pubDate>Wed, 01 Apr 2026 13:33:27 +0800</pubDate><description><![CDATA[‌JVM将class文件加载到内存的过程主要分为三个阶段：加载（Loading）、链接（Linking）和初始化（Initialization）‌，其中链接又细分为验证、准备、解析三个步骤。]]></description><category></category></item><item><title><![CDATA[二十三种设计模式]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/159693643</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/159693643</guid><author>sNow_0506</author><pubDate>Tue, 31 Mar 2026 18:27:54 +0800</pubDate><description><![CDATA[23种设计模式可分类为：创建型、行为型、结构型。]]></description><category></category></item><item><title><![CDATA[六大设计原则]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/159693601</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/159693601</guid><author>sNow_0506</author><pubDate>Tue, 31 Mar 2026 18:23:50 +0800</pubDate><description><![CDATA[软件设计的六大原则是面向对象设计的核心指导思想，分别是：单一职责、开闭原则、里氏替换、依赖倒置、接口隔离和迪米特法则‌，它们共同构成了设计模式的基础，帮助构建高内聚、低耦合、易扩展的系统架构。]]></description><category></category></item><item><title><![CDATA[Java中对象之间的关系]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/159693422</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/159693422</guid><author>sNow_0506</author><pubDate>Tue, 31 Mar 2026 18:20:55 +0800</pubDate><description><![CDATA[‌Java中对象之间的关系主要有依赖、关联、聚合、组合、继承和实现六种‌，它们体现了面向对象设计中类与类、对象与对象之间的结构与行为联系。]]></description><category></category></item><item><title><![CDATA[Netty 参数配置]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/159246504</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/159246504</guid><author>sNow_0506</author><pubDate>Thu, 19 Mar 2026 17:41:30 +0800</pubDate><description><![CDATA[int 类型，服务器端连接请求队列的最大长度‌含义‌：该参数用于设置服务器监听套接字（ServerSocketChannel）的‌连接请求队列‌（全连接队列）的最大长度。‌作用‌：当服务器正在处理连接请求时，新的连接请求会先放入这个队列中等待处理。如果队列已满，新的连接请求可能会被拒绝。‌配置方式‌：在 ServerBootstrap 中使用 option(ChannelOption.SO_BACKLOG, value) 设置。]]></description><category></category></item><item><title><![CDATA[‌Netty编解码与粘包拆包]]></title><link>https://blog.youkuaiyun.com/sNow_0506/article/details/159244994</link><guid>https://blog.youkuaiyun.com/sNow_0506/article/details/159244994</guid><author>sNow_0506</author><pubDate>Thu, 19 Mar 2026 14:30:35 +0800</pubDate><description><![CDATA[在Netty中，网络传输的数据是字节流，而应用层处理的是Java对象或业务消息，因此需要‌编码（Encoder）‌ 和 ‌解码（Decoder）‌ 来完成类型转换。⚠️ 注意：解码必须处理“半包”情况——数据未到齐时不能抛异常，应保留读指针，等待下一批数据。]]></description><category></category></item></channel></rss>