<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>VitahLin｜经济、股票与后端技术笔记</title>
    <link>https://www.vitahlin.com</link>
    <description>VitahLin 的个人博客，记录经济观察、股票研究，以及后端开发、分布式系统、数据库与 Redis 的原理和工程实践。</description>
    <language>zh-CN</language>
    <lastBuildDate>Tue, 30 Jun 2026 11:30:00 GMT</lastBuildDate>
    <managingEditor>VitahLin</managingEditor>
    <atom:link href="https://www.vitahlin.com/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>TOCTOU问题</title>
      <link>https://www.vitahlin.com/post/toctou-race-condition</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/toctou-race-condition</guid>
      <description>TOCTOU（Time-Of-Check to Time-Of-Use）是一类典型的竞态条件问题，指程序在“检查资源状态”和“实际使用该资源”之间存在时间窗口，状态可能被其他线程或进程悄悄改掉，从而引发逻辑错误或安全漏洞。本文通过 Redisson 分布式锁unlock的实际案例，说明 TOCTOU 在业务代码中的具体表现。</description>
      <pubDate>Wed, 04 Feb 2026 23:30:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Distributed</category>
    </item>
    <item>
      <title>计算机系统中的各种延时</title>
      <link>https://www.vitahlin.com/post/different-time-in-system-performance</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/different-time-in-system-performance</guid>
      <description>在计算机世界中，单个 CPU 周期的时间是极为短暂的。它以纳秒为单位，我们可以通过将 1 个 CPU 周期的 0.3 纳秒等比例放大至 1 秒，构建一个假想的时间系统，以便更好地理解从 L1 缓存访问到物理系统重启等各种计算机操作的延迟。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>System</category>
    </item>
    <item>
      <title>跨域</title>
      <link>https://www.vitahlin.com/post/browser-cors-preflight-and-solutions</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/browser-cors-preflight-and-solutions</guid>
      <description>很多人只知道“前后端分离会遇到跨域”，却不了解浏览器到底在保护什么。本文从同源策略和 CSRF 风险入手，系统说明 CORS 的设计初衷、请求分类、关键请求头和响应头，并总结服务端直接配置 CORS、NGINX 代理、本地开发代理等常见实践，让你真正理解跨域问题的本质，而不仅仅是“会复制一段配置”。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Web</category>
    </item>
    <item>
      <title>如何写好git commit message</title>
      <link>https://www.vitahlin.com/post/how-to-write-git-commit-message</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/how-to-write-git-commit-message</guid>
      <description>介绍如何系统地书写 Git commit message，从格式约定到常见 type 分类，帮助团队提升代码 review 效率和变更可追溯性。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Other</category>
    </item>
    <item>
      <title>注册美区Apple账户</title>
      <link>https://www.vitahlin.com/post/register-us-apple-account</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/register-us-apple-account</guid>
      <description>记录注册美区 Apple ID 的完整流程：从苹果官网创建账号、选择美国地区、完成邮箱和手机号验证，到在 iPhone 上通过 App Store 激活账户并填写免税州账单地址，方便后续下载美区 App。</description>
      <pubDate>Fri, 13 Feb 2026 16:49:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>生活</category>
    </item>
    <item>
      <title>知识短板</title>
      <link>https://www.vitahlin.com/post/identify-knowledge-gaps</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/identify-knowledge-gaps</guid>
      <description>知识短板会悄然拖慢你的工作效率。最好的识别方法之一，就是观察自己在哪些地方频繁花费大量时间或重复劳动。本文通过讲述如何发现并正视自己的技能盲区，用系统化的方式持续改进、提升工作效率。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>思维</category>
    </item>
    <item>
      <title>5W2H分析法</title>
      <link>https://www.vitahlin.com/post/5w2h-root-cause-analysis</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/5w2h-root-cause-analysis</guid>
      <description>一文掌握 5W2H：用 What、Why、Who、Where、When、How、How much 系统拆解问题，追溯根因并制定可执行方案。结合战略决策、项目管理与职业发展三个实战场景，帮助你快速找到可控解法与下一步行动。</description>
      <pubDate>Wed, 04 Feb 2026 23:30:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>思维</category>
    </item>
    <item>
      <title>研究论文的常规结构</title>
      <link>https://www.vitahlin.com/post/conventional-structure-of-research-paper</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/conventional-structure-of-research-paper</guid>
      <description>撰写研究论文不仅是展示科研成果的过程，也是展现研究价值、学术贡献的重要途径。在这篇博客中将详细介绍一篇标准研究论文的常规结构，帮助你梳理写作思路，确保论文结构清晰，逻辑严密，并有效传达研究的价值。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>思维</category>
    </item>
    <item>
      <title>RabbitMQ的介绍和安装</title>
      <link>https://www.vitahlin.com/post/rabbitmq-intro-install</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/rabbitmq-intro-install</guid>
      <description>本文介绍了 MQ 的基本概念、使用场景，并提供了在本地环境下安装 RabbitMQ 的详细步骤，适合消息队列初学者快速上手。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Distributed</category>
    </item>
    <item>
      <title>RabbitMQ的使用</title>
      <link>https://www.vitahlin.com/post/rabbitmq-basics-and-spring-boot</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/rabbitmq-basics-and-spring-boot</guid>
      <description>本文系统介绍了 RabbitMQ 的基础用法，并深入解析如何通过 Spring Boot 集成实现消息的发送、接收与监听。内容涵盖交换机、队列、绑定关系及消息确认机制等核心概念，旨在帮助开发者高效构建稳定可靠的消息驱动系统。</description>
      <pubDate>Wed, 04 Feb 2026 23:30:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Distributed</category>
    </item>
    <item>
      <title>服务器安装和启动RocketMQ4.9.5</title>
      <link>https://www.vitahlin.com/post/install-and-run-rocketmq-4-9-5</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/install-and-run-rocketmq-4-9-5</guid>
      <description>这篇博客介绍了如何在服务器上安装和启动 RocketMQ 4.9.5。文章详细描述了 JDK 的安装过程，RocketMQ 4.9.5 的下载和解压步骤，以及如何调整运行环境配置以适应不同内存的服务器。还涵盖了启动 nameserver 和 broker 服务的具体操作，并通过命令行进行简单测试。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Distributed</category>
    </item>
    <item>
      <title>socket基本介绍</title>
      <link>https://www.vitahlin.com/post/basic-introduction-to-socket-in-network-programming</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/basic-introduction-to-socket-in-network-programming</guid>
      <description>在这篇博客中，我们将对套接字（Socket）进行基本介绍。套接字是网络编程中的核心概念，它为不同计算机之间的数据交换提供了一种机制。我们将探讨套接字的定义、作用以及常见的套接字类型（如TCP和UDP套接字），并简要介绍如何使用套接字进行网络通信。通过本篇博客，您将对如何使用套接字进行数据传输、如何创建、绑定和监听套接字等基本操作有一个清晰的理解，并为进一步的网络编程打下基础。</description>
      <pubDate>Wed, 04 Feb 2026 23:30:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Lang</category>
    </item>
    <item>
      <title>Spring AOP源码之ProxyFactory源码解析</title>
      <link>https://www.vitahlin.com/post/spring-aop-source-code-02-proxyfactory-analysis</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/spring-aop-source-code-02-proxyfactory-analysis</guid>
      <description>本文从源码角度解析 Spring AOP 中 ProxyFactory 的实现，重点说明其在 JDK 动态代理与 CGLIB 之间的选择逻辑，以及 AopProxy、MethodInterceptor 链的构建与执行流程，帮助理解 Spring AOP 代理创建与方法拦截的内部机制。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Lang</category>
    </item>
    <item>
      <title>Spring AOP源码之基本概念介绍</title>
      <link>https://www.vitahlin.com/post/spring-aop-source-code-01-basic-concepts</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/spring-aop-source-code-01-basic-concepts</guid>
      <description>本文从动态代理入手，系统梳理了 Spring AOP 中几个最核心的概念和实现方式：先用 CGLIB / JDK 动态代理说明“代理”究竟改变了什么，再通过 ProxyFactory、Advice、Advisor、Pointcut 等 API 串起 Spring AOP 的底层机制，最后再回到注解驱动的使用方式，帮助读者把「怎么用」和「为什么这样设计」连接起来。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Lang</category>
    </item>
    <item>
      <title>Redis开源相关命令记录</title>
      <link>https://www.vitahlin.com/post/redis-open-source-notes</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/redis-open-source-notes</guid>
      <description>记录自己参与 Redis 开源过程中的问题复现、调试步骤和思考。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Database</category>
    </item>
    <item>
      <title>Parallels安装和设置</title>
      <link>https://www.vitahlin.com/post/macos-arm64-parallels-install-ubuntu</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/macos-arm64-parallels-install-ubuntu</guid>
      <description>本文详细介绍了在macOS M1环境下使用Parallels Desktop安装Ubuntu虚拟机的步骤，包括如何选择合适的镜像、安装过程中的设置、以及如何通过SSH连接Ubuntu虚拟机。还介绍了如何安装Parallels Tools以实现文件共享功能，并提供了常见问题的解决方法和实用参考链接，帮助用户顺利完成虚拟机的安装与配置。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Other</category>
    </item>
    <item>
      <title>macOS终端terminal配置</title>
      <link>https://www.vitahlin.com/post/make-your-mac-terminal-beautiful</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/make-your-mac-terminal-beautiful</guid>
      <description>在MAC的终端（Terminal）中，不仅可以通过原生的功能完成工作，还可以通过一系列的美化和配置，将其打造成一个既美观又高效的开发工具。本文将从字体选择、Terminal 主题美化到 Zsh 配置优化，为您详细介绍如何一步步提升MAC Terminal的使用体验。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Other</category>
    </item>
    <item>
      <title>macOS制作ubuntu安装盘</title>
      <link>https://www.vitahlin.com/post/macos-create-ubuntu-bootable-usb</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/macos-create-ubuntu-bootable-usb</guid>
      <description>使用 macOS 终端命令快速制作 Ubuntu 安装 U 盘。本教程涵盖如何查找磁盘、使用 dd 命令写入 ISO 镜像，并安全地弹出设备，适合希望在 mac 上制作 Linux 启动盘的用户。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Other</category>
    </item>
    <item>
      <title>macOS上Java开发环境搭建</title>
      <link>https://www.vitahlin.com/post/macos-java-dev-setup</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/macos-java-dev-setup</guid>
      <description>在 macOS 上搭建高效的 Java 开发环境：使用 sdkman 安装 JDK 与 Maven，配置 IntelliJ IDEA 常用选项，并推荐一批实用插件（JRebel、Grep Console、Maven Helper 等）和日志配色方案，提升日常开发效率。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Other</category>
    </item>
    <item>
      <title>双因子认证-Google Authenticator工作原理</title>
      <link>https://www.vitahlin.com/post/2fa-google-auth-how-it-works</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/2fa-google-auth-how-it-works</guid>
      <description>本文深入解析双因子认证（2FA）的原理，并以 Google Authenticator 为例，介绍基于时间的一次性密码（TOTP）是如何生成与验证的。适合开发者、产品设计师及对账号安全机制感兴趣的读者了解其背后的机制与实现逻辑。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Web</category>
    </item>
    <item>
      <title>RabbitMQ的最佳实践</title>
      <link>https://www.vitahlin.com/post/rabbitmq-best-practices</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/rabbitmq-best-practices</guid>
      <description>本文深入探讨了在使用 RabbitMQ 时如何保障消息系统的可靠性与稳定性，涵盖了消息不丢失的保障机制、消费者幂等性的实现策略、消息顺序的控制技巧以及数据堆积的应对方法。通过实践经验与配置建议相结合，帮助你构建一个高可用、可控且具备容错能力的消息队列系统。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Distributed</category>
    </item>
    <item>
      <title>RabbitMQ的死信队列和延迟队列</title>
      <link>https://www.vitahlin.com/post/rabbitmq-dead-letter-and-delayed-queue</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/rabbitmq-dead-letter-and-delayed-queue</guid>
      <description>死信队列（DLX）和延迟队列是构建健壮消息系统的关键机制。本文深入讲解了 RabbitMQ 中死信队列的触发场景（如消息过期、拒收、队列满等），以及如何利用插件或 TTL+死信机制实现延迟队列。通过配置示例帮助你掌握在生产环境中正确使用这两类队列，以实现消息重试、延迟处理、异常监控等常见需求。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Distributed</category>
    </item>
    <item>
      <title>TCP三次握手流程</title>
      <link>https://www.vitahlin.com/post/tcp-three-way-handshake</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/tcp-three-way-handshake</guid>
      <description>TCP三次握手是建立可靠连接的核心过程，它通过 SYN、SYN-ACK 和 ACK 消息的交互，确保客户端和服务器能够顺利建立通信通道。本文将通过Wireshark 抓包，详细展示 TCP三次握手的具体流程，解析每一步的作用和背后的原理，帮助你更好地理解这一关键网络机制。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>System</category>
    </item>
    <item>
      <title>TCP发送缓冲区</title>
      <link>https://www.vitahlin.com/post/tcp-send-buffer</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/tcp-send-buffer</guid>
      <description>深入解析 TCP 套接字发送缓冲区的工作机制，包括数据写入、缓冲区满时的阻塞行为、内核发送流程以及常见误解。适合理解网络应用的发送路径与性能瓶颈。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>System</category>
    </item>
    <item>
      <title>字节序</title>
      <link>https://www.vitahlin.com/post/byte-order-endianness</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/byte-order-endianness</guid>
      <description>介绍大端、小端字节序的概念和内存布局差异，并解释为什么网络字节序统一采用大端，以及在 C 语言网络编程中如何通过 htons/ntohs/htonl/ntohl 进行主机字节序与网络字节序的转换。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>System</category>
    </item>
    <item>
      <title>Spring中FactoryBean介绍</title>
      <link>https://www.vitahlin.com/post/spring-factorybean-introduction</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/spring-factorybean-introduction</guid>
      <description>在Spring框架中，FactoryBean是一个特殊的Bean，它并不直接返回实例，而是通过实现getObject方法来生成或修饰对象。本文介绍了FactoryBean的概念及其与BeanFactory的区别，探讨了它在Spring容器中的重要作用，并举例说明如何使用FactoryBean来简化复杂对象的实例化过程。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Lang</category>
    </item>
    <item>
      <title>Spring底层核心原理简单介绍</title>
      <link>https://www.vitahlin.com/post/spring-core-principles-introduction</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/spring-core-principles-introduction</guid>
      <description>通过HelloWorld示例深入探讨了 Spring 的底层核心原理。文章解释了 Spring 是如何通过 AnnotationConfigApplicationContext 创建 Bean、如何进行依赖注入、如何管理 Bean 的生命周期以及如何通过 AOP 实现动态代理。此外，还介绍了 Spring 事务的处理机制以及如何推断构造方法。通过本篇文章，你将更清楚地了解 Spring 的工作机制及其强大之处。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Lang</category>
    </item>
    <item>
      <title>Spring核心概念介绍</title>
      <link>https://www.vitahlin.com/post/spring-core-concepts-overview</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/spring-core-concepts-overview</guid>
      <description>梳理 Spring 核心概念：Bean、BeanDefinition、BeanFactory 及其重要实现（DefaultListableBeanFactory）、BeanDefinitionReader 与扫描器、ApplicationContext 及常用实现、BeanPostProcessor、BeanFactoryPostProcessor、FactoryBean 的机制与示例，以及扫描过滤与元数据读取要点。</description>
      <pubDate>Wed, 04 Feb 2026 23:30:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Lang</category>
    </item>
    <item>
      <title>logback日志路径出现 IS_UNDEFINED 的问题</title>
      <link>https://www.vitahlin.com/post/logback-path-is-undefined-issue</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/logback-path-is-undefined-issue</guid>
      <description>本文分析了在使用 Logback 作为日志框架时，日志路径中出现 IS_UNDEFINED 的常见原因，通常是由于未正确配置或未定义相关变量（如 ${LOG_PATH}）。文章介绍了该问题的排查方式以及解决方案，帮助开发者更好地掌握 Logback 的配置机制。</description>
      <pubDate>Wed, 04 Feb 2026 23:30:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Lang</category>
    </item>
    <item>
      <title>IDEA编译jdk8并且在源码中执行printf</title>
      <link>https://www.vitahlin.com/post/idea-compile-jdk8-execute-printf-in-source</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/idea-compile-jdk8-execute-printf-in-source</guid>
      <description>介绍如何调试JDK源码的详细教程，方便我们更好的深入理解Java语言和JVM的内部机制。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Lang</category>
    </item>
    <item>
      <title>Elasticsearch的各种Java Client</title>
      <link>https://www.vitahlin.com/post/elasticsearch-java-clients-overview</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/elasticsearch-java-clients-overview</guid>
      <description>本文简要梳理了 Elasticsearch 常见的 Java 客户端，包括官方的 Transport Client（已弃用）、High Level REST Client、全新的 Java API Client，帮助你快速理解各类客户端的演进路径，并为项目选型提供参考。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Lang</category>
    </item>
    <item>
      <title>ClassPathResource报错cannot be resolved to absolute file path</title>
      <link>https://www.vitahlin.com/post/classpathresource-cannot-be-resolved-to-absolute-file-path</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/classpathresource-cannot-be-resolved-to-absolute-file-path</guid>
      <description>Spring Boot 打包成 JAR 后，ClassPathResource 里的文件不在文件系统，不能用 getFile() 获取，应改用 getInputStream以流方式读取资源，避免 “cannot be resolved to absolute file path” 报错。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Lang</category>
    </item>
    <item>
      <title>依赖管理之BOM</title>
      <link>https://www.vitahlin.com/post/using-maven-bill-of-materials-bom</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/using-maven-bill-of-materials-bom</guid>
      <description>本文详细介绍了BOM（材料清单）的概念、格式以及如何在项目中使用。BOM实际上是一个特殊的POM文件，它列出了一个工程的所有依赖及其对应版本，便于其他工程引用而无需指定具体版本。文章通过一个具体的BOM文件示例，解释了其关键信息和结构，包括打包方式、依赖管理等。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Lang</category>
    </item>
    <item>
      <title>编译Spring5.3.10源码</title>
      <link>https://www.vitahlin.com/post/spring-5-3-10-compile-source</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/spring-5-3-10-compile-source</guid>
      <description>记录如何下载并重命名 Spring 5.3.10 源码、使用 Gradle 编译并在 IntelliJ IDEA 中创建测试模块，验证注解扫描与依赖注入可正常运行，并给出 Gradle 构建日志与注意事项。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Lang</category>
    </item>
    <item>
      <title>MySQL中BufferPool缓存机制简单介绍</title>
      <link>https://www.vitahlin.com/post/database-buffer-pool-introduction</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/database-buffer-pool-introduction</guid>
      <description>本文简要介绍数据库中的 Buffer Pool 缓存机制，探讨其在 SQL 查询中的作用，如何减少磁盘 I/O 并提升数据库性能。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Database</category>
    </item>
    <item>
      <title>MySQL索引优化实践</title>
      <link>https://www.vitahlin.com/post/mysql-index-optimization</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/mysql-index-optimization</guid>
      <description>系统梳理 MySQL 索引优化的实战要点：联合索引的使用原则、覆盖索引的收益与适用场景、索引下推（ICP）机制、In/OR 与 LIKE 前缀匹配的索引行为，以及 ORDER BY、GROUP BY 与分页查询在大表下的性能优化策略与示例。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Database</category>
    </item>
    <item>
      <title>MySQL索引优化规则</title>
      <link>https://www.vitahlin.com/post/mysql-index-optimization-rules</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/mysql-index-optimization-rules</guid>
      <description>MySQL 索引是数据库查询优化的关键，合理的索引设计可以显著提高查询性能。本篇博客将介绍 MySQL 索引的优化规则，包括索引类型、最佳实践、常见误区以及如何使用 EXPLAIN 进行优化分析，帮助你构建高效的数据库查询方案。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Database</category>
    </item>
    <item>
      <title>MySQL使用trace命令验证查询成本</title>
      <link>https://www.vitahlin.com/post/mysql-trace-command-query-cost-analysis</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/mysql-trace-command-query-cost-analysis</guid>
      <description>介绍了如何使用MySQL的trace命令来分析查询的执行过程。文章详细讲解了trace命令的具体用法，并通过解析trace结果，帮助读者理解MySQL在执行查询时是如何选择索引的，以及如何通过分析这些信息来优化查询性能。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Database</category>
    </item>
    <item>
      <title>MySQL单表查询如何计算成本</title>
      <link>https://www.vitahlin.com/post/mysql-single-table-query-cost</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/mysql-single-table-query-cost</guid>
      <description>在 MySQL中，索引的选择和使用直接影响查询的执行成本。本文将详细介绍如何计算索引查询的代价，包括范围区间数量、回表次数、索引选择、排序代价、扫描行数等关键因素。通过EXPLAIN和TRACE命令，我们可以深入分析 SQL查询的执行过程，理解 MySQL 优化器的决策逻辑，并针对索引选择、查询优化提供实用的优化策略，帮助开发者提升数据库性能。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Database</category>
    </item>
    <item>
      <title>MySQL的SQL执行过程</title>
      <link>https://www.vitahlin.com/post/mysql-sql-execution-process</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/mysql-sql-execution-process</guid>
      <description>本文通过简要介绍 MySQL 中的各个核心组件，包括连接器、查询缓存、解析器、优化器、执行器和日志模块，带领读者一步步梳理一条 SQL 语句在数据库中的完整执行流程。从客户端发送请求开始，到生成执行计划，再到实际读取或写入数据，逐层揭示各模块的职责与协作方式，帮助读者建立起对 MySQL 内部工作机制的整体认识，为后续性能调优和故障排查打下基础。</description>
      <pubDate>Wed, 04 Feb 2026 23:30:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Database</category>
    </item>
    <item>
      <title>MySQL explain命令介绍</title>
      <link>https://www.vitahlin.com/post/mysql-explain-command-introduction</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/mysql-explain-command-introduction</guid>
      <description>解析了MySQL中EXPLAIN命令的执行结果及其各个字段的含义。文章通过实例说明如何使用EXPLAIN命令来分析查询性能，并解读查询计划中的关键信息，如select_type、table、type、possible_keys、key、rows等字段，帮助更好地理解和优化SQL查询。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Database</category>
    </item>
    <item>
      <title>MySQL 高级索引机制解析：聚簇索引、覆盖索引与 MRR 等</title>
      <link>https://www.vitahlin.com/post/mysql-advanced-index-mechanisms-overview</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/mysql-advanced-index-mechanisms-overview</guid>
      <description>本文系统梳理了 InnoDB 中的高级索引机制，从聚簇索引与辅助索引的物理结构出发，解释回表、覆盖索引、自适应哈希索引以及 MRR 多范围读取等关键优化点，并结合「三星索引」理念，帮助你在实际业务中设计出更高效的 MySQL 索引方案。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Database</category>
    </item>
    <item>
      <title>MySQL MVCC、Undo Log 与 Read View 实现原理深度解析</title>
      <link>https://www.vitahlin.com/post/mysql-mvcc-undo-log-read-view-principle</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/mysql-mvcc-undo-log-read-view-principle</guid>
      <description>本文系统介绍了 MySQL InnoDB 中 MVCC（多版本并发控制）的工作机制，包括快照读与当前读的区别、MVCC 解决的典型问题（读写不阻塞、降低死锁、实现一致性读），以及 InnoDB 通过 undo log 版本链与 Read View 来判断「当前事务能看到哪一个数据版本」的完整过程。通过多组事务时序示例，文章直观展示了在可重复读与读已提交隔离级别下，事务为何能看到不同的数据版本，从而帮助读者从实现层面真正理解 MySQL 的事务隔离与并发控制。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Database</category>
    </item>
    <item>
      <title>macOS上docker启动SQL Server</title>
      <link>https://www.vitahlin.com/post/docker-run-sql-server-on-macos</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/docker-run-sql-server-on-macos</guid>
      <description>本文介绍如何在 macOS 上使用 Docker 快速启动并运行 SQL Server，包括镜像选择、端口映射、密码配置等关键步骤，帮助开发者在本地搭建测试环境。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Database</category>
    </item>
    <item>
      <title>在M1上使用CMake编译redis6.2.14</title>
      <link>https://www.vitahlin.com/post/m1-cmake-compile-redis6</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/m1-cmake-compile-redis6</guid>
      <description>本文介绍了如何在 macOS M1 系统上使用 CMake 编译 Redis 6.2.14 版本的详细步骤。由于 Redis 官方在 6.2.14 版本之前对 ARM 架构的支持存在问题，因此推荐使用 6.2.14 或更高版本进行编译。文章提供了从创建 CMakeLists.txt 文件到编译和安装 Redis 的完整流程，包括各个依赖库（如 hdr_histogram、hiredis、linenoise、lua）的 CMake 配置。通过本文的指南，读者可以在 macOS M1 系统上顺利编译并安装 Redis 6.2.14。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Database</category>
    </item>
    <item>
      <title>数据库分页查询性能优化</title>
      <link>https://www.vitahlin.com/post/mysql-deep-pagination-optimization</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/mysql-deep-pagination-optimization</guid>
      <description>深入分析 MySQL 在使用 LIMIT OFFSET 进行深度分页时的性能瓶颈，从执行器的真实行为入手，给出基于主键 ID、二级索引、游标分页和全局索引表的多种优化方案，并附带实际耗时对比与适用场景说明。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Database</category>
    </item>
    <item>
      <title>使用Colima在Apple Silicon上运行Oracle容器镜像</title>
      <link>https://www.vitahlin.com/post/oracle-on-docker-arm-macos</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/oracle-on-docker-arm-macos</guid>
      <description>在Apple Silicon（M 系列）Mac上部署Oracle容器存在架构兼容性难题。本教程介绍如何通过Colima 配置 x86_64虚拟机并启用Rosetta支持，轻松在ARM macOS上运行 Oracle数据库镜像。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Database</category>
    </item>
    <item>
      <title>使用datagrip连接DynamoDB</title>
      <link>https://www.vitahlin.com/post/connect-datagrip-to-dynamodb</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/connect-datagrip-to-dynamodb</guid>
      <description>本文将介绍如何在 DataGrip 中配置 DynamoDB 连接，包括所需的驱动、连接设置，以及常见问题的解决方案，帮助你更高效地管理 DynamoDB 数据。</description>
      <pubDate>Wed, 04 Feb 2026 23:30:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Other</category>
    </item>
    <item>
      <title>typedef详解</title>
      <link>https://www.vitahlin.com/post/typedef-detailed-explanation</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/typedef-detailed-explanation</guid>
      <description>在 C 语言中，typedef 关键字用于为已有类型创建新的别名，从而提高代码的可读性和可维护性。本篇博客将深入解析 typedef 的用法，包括结构体重命名、指针类型定义、函数指针的应用，以及 typedef 和 struct 的区别，帮助你全面掌握 typedef 的使用技巧。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Lang</category>
    </item>
    <item>
      <title>socket的阻塞模式和非阻塞模式</title>
      <link>https://www.vitahlin.com/post/socket-blocking-vs-nonblocking</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/socket-blocking-vs-nonblocking</guid>
      <description>本文深入对比了 socket 的阻塞模式与非阻塞模式的行为差异，涵盖 connect、accept、send、recv 等常用函数在两种模式下的表现，以及各自的优缺点、适用场景和错误处理方式，帮助你在开发高性能网络程序时做出正确选择。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Lang</category>
    </item>
    <item>
      <title>struct声明中的__attribute__ ((packed))关键字</title>
      <link>https://www.vitahlin.com/post/unpacking-the-attribute-packed-in-struct</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/unpacking-the-attribute-packed-in-struct</guid>
      <description>介绍了如何通过使用__attribute__ ((packed))关键字来取消默认的字节对齐，从而减少内存占用。通过一个简单的代码示例展示了在字节对齐和非字节对齐情况下结构体的内存占用对比。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Lang</category>
    </item>
    <item>
      <title>开发新功能和重构老代码如何选择</title>
      <link>https://www.vitahlin.com/post/build-vs-refactor-first-principles</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/build-vs-refactor-first-principles</guid>
      <description>从第一原理出发，评估“开发新功能”和“重构旧代码”的取舍：先看商业目标与风险边界，再选最合适的手段（不一定是重构，也可能是提高测试覆盖或采用非技术手段如保险）。适用于创业与高风险金融场景的决策框架。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>DevPractice</category>
    </item>
    <item>
      <title>基于快照的批量处理遗漏问题与CDC架构解法</title>
      <link>https://www.vitahlin.com/post/snapshot-batch-omission-cdc-solution</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/snapshot-batch-omission-cdc-solution</guid>
      <description>你的数据真的同步完整了吗？ 本文直击数据架构的隐形陷阱——基于快照和自增主键水位线的增量同步在 Read Committed 隔离级别下，如何导致延迟提交的事务（如“订单 1002”案例）被批处理任务永久遗漏。我们将深入分析这一问题的数据库根源，并对比两种根本性解决方案：一是基于业务/应用水位线的增量处理，它通过时间戳或版本号来弥补快照缺陷；二是变更数据捕获 (CDC)，它通过读取事务日志，彻底实现零遗漏、近实时的数据同步。通过对比侵入性、数据完整性、成本与实时性，助你选择最可靠的流式数据架构策略。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Distributed</category>
    </item>
    <item>
      <title>getaddrinfo函数详解及使用举例</title>
      <link>https://www.vitahlin.com/post/getaddrinfo-introduction-and-usage-examples</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/getaddrinfo-introduction-and-usage-examples</guid>
      <description>本文系统介绍 POSIX 网络编程中的 getaddrinfo 函数，说明其参数、返回值、addrinfo 结构、hints 配置和 AI_PASSIVE 的作用，并结合 Redis 源码与 C 语言示例演示主机名解析和服务器地址绑定的典型用法。</description>
      <pubDate>Fri, 13 Feb 2026 16:49:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Lang</category>
    </item>
    <item>
      <title>Linux errno详解</title>
      <link>https://www.vitahlin.com/post/linux-errno-explanation</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/linux-errno-explanation</guid>
      <description>在Linux编程中，errno 是一个至关重要的全局变量，它用于表示系统调用或库函数执行失败时的具体错误类型。在本篇博客中，我们将深入解析 errno 的工作原理，常见错误码及其含义，并提供示例代码来帮助开发者更好地理解如何处理错误信息。无论是文件操作、网络编程，还是进程管理，正确使用 errno 都能帮助你更快地定位问题，提高程序的健壮性。</description>
      <pubDate>Wed, 04 Feb 2026 23:57:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Lang</category>
    </item>
    <item>
      <title>20亿手机号存储选择int还是string</title>
      <link>https://www.vitahlin.com/post/phone-number-storage-int-vs-string</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/phone-number-storage-int-vs-string</guid>
      <description>在20亿规模场景下，手机号应使用字符串而非整型存储，并优先选择VARCHAR(20)以兼顾数据保真、国际化兼容、查询灵活性与业务扩展性。</description>
      <pubDate>Fri, 13 Feb 2026 16:49:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>System</category>
    </item>
    <item>
      <title>如何理解复杂的指针或引用语句</title>
      <link>https://www.vitahlin.com/post/how-to-understand-complex-pointer-or-reference-statements</link>
      <guid isPermaLink="true">https://www.vitahlin.com/post/how-to-understand-complex-pointer-or-reference-statements</guid>
      <description>如何一眼看透复杂的 C++ 声明？秘诀就在于“由右向左”的解析顺序。</description>
      <pubDate>Fri, 13 Feb 2026 17:40:00 GMT</pubDate>
      <dc:creator>Vitah Lin</dc:creator>
      <category>Lang</category>
    </item>
  </channel>
</rss>