铭记历史 致敬英雄——2025年9月3日抗战胜利80周年大阅兵纪实
历史的回响,盛世的礼赞2025年9月3日,金秋的北京阳光明媚,天安门广场红旗飘扬。这一天,中华民族以一场震撼世界的盛大阅兵,隆重纪念中国人民抗日战争暨世界反法西斯战争胜利80周年。中共中央总书记、国家主席、中央军委主席习近平检阅共和国武装力量,与各国来宾、各界代表共同见证这一历史性时刻。 新征程上的庄严宣示这次阅兵意义非凡,具有深刻的历史意义和现实意义: 全面推进中国式现代化的首次阅兵作为全面推进中国式现代化进入新征程的首次阅兵,这场盛典展现了新时代中国的崭新面貌。中华民族正以更加自信的姿态,向着第二个百年奋斗目标阔步前进。 人民军队奋进建军百年的崭新亮相距离建军百年目标越来越近,人民军队在新时代展现出前所未有的崭新风貌。这次阅兵全面展示了军队现代化建设的丰硕成果。 中华民族捍卫和平正义的坚定宣示面对复杂多变的国际形势,中华民族以这场阅兵向世界庄严宣示:我们热爱和平,但绝不会让历史悲剧重演;我们追求发展,但始终坚持走和平发展道路。 激动人心的检阅时刻庄严的检阅仪式上午9时19分许,雄壮的军乐声响彻长安街。习近平主席乘坐红旗检阅车,沿着庄严的长安街向东缓缓行进,依次检阅地面徒步...
动态规划5:不同路径问题与路径计数
引言在动态规划系列的前四篇文章中,我们分别学习了爬楼梯问题、最长公共子序列、01背包问题和最长递增子序列。今天我们将探讨动态规划的另一个重要分支——路径计数问题。 路径计数问题是动态规划中非常重要的一类问题,它不仅在算法面试中频繁出现,还与组合数学紧密相关。通过学习这类问题,我们能够深入理解动态规划在计数问题中的应用。 问题背景路径计数问题的核心思想是:在一个给定的空间中,计算从起点到终点的不同路径数量。这类问题通常具有以下特征: 方向限制:只能向特定方向移动(如向右、向下) 路径唯一性:每条路径由一系列移动步骤组成 计数目标:求所有可能路径的数量 经典例题一:不同路径问题描述LeetCode 62. 不同路径 一个机器人位于一个 m x n 网格的左上角。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。问总共有多少条不同的路径? 1234567891011示例 1:输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下2....
动态规划4:最长递增子序列问题
引言在动态规划系列的前三篇文章中,我们分别学习了爬楼梯问题、最长公共子序列和01背包问题。今天我们将探讨另一个动态规划的经典问题——最长递增子序列(Longest Increasing Subsequence,LIS)。 最长递增子序列问题不仅是动态规划的核心问题之一,更是算法优化思想的绝佳体现。从朴素的O(n²)动态规划解法,到巧妙的O(nlogn)优化算法,这个问题展现了算法设计的精妙之处。 问题定义什么是递增子序列?递增子序列:从原数组中按照原有顺序选取若干元素,使得这些元素严格递增。 注意几个关键点: 保持原有顺序:不能改变元素在原数组中的相对位置 严格递增:后面的元素必须大于前面的元素 不要求连续:子序列的元素在原数组中可以不相邻 最长递增子序列问题给定一个整数数组,找到其中最长递增子序列的长度。 经典例题:LeetCode 300. 最长递增子序列 1234567891011121314示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,18],因此长度为 4。示例 2:输入:nums = [0...
动态规划3:01背包问题
引言在前面的文章中,我们学习了动态规划入门和最长公共子序列问题。今天我们将探讨动态规划中最为经典和重要的问题之一——01背包问题。 01背包问题是动态规划的核心问题,它不仅在算法面试中频繁出现,更是理解动态规划思想的绝佳案例。掌握了01背包,你就掌握了一把解决众多动态规划问题的钥匙。 问题描述01背包的基本定义有一个容量为 W 的背包和 n 个物品,每个物品有两个属性: 重量 weight[i]:第 i 个物品的重量 价值 value[i]:第 i 个物品的价值 目标:在不超过背包容量的前提下,选择若干物品装入背包,使得背包中物品的总价值最大。 约束条件: 每个物品只能选择一次(0 或 1),这就是 “01” 的含义 所选物品的总重量不能超过背包容量 经典例题例题:LeetCode 416. 分割等和子集 给你一个只包含正整数的非空数组 nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 123456789示例 1:输入:nums = [1,5,11,5]输出:true解释:数组可以分割成 [1, 5, 5] 和 [11]。示例 2:输入:...
动态规划2:最长公共子序列问题
引言在上一篇文章中,我们通过爬楼梯问题初步了解了动态规划的基本思想。今天,我们将深入学习一个更加经典且实用的动态规划问题——最长公共子序列(Longest Common Subsequence,LCS)。 这个问题不仅在算法面试中频繁出现,在实际开发中也有广泛应用,比如: 版本控制系统中的文件差异比较 生物信息学中的DNA序列比对 文本编辑器的智能提示功能 问题定义什么是子序列?首先,我们需要明确子序列的概念: 子序列:从原序列中按照相对顺序选取若干元素组成的新序列 注意:子序列不要求连续,但必须保持相对顺序 例如,对于字符串 "ABCDEF": "ACE" 是一个子序列 ✅ "BDF" 是一个子序列 ✅ "CAB" 不是子序列 ❌(顺序错误) 最长公共子序列问题给定两个序列,找到它们的最长公共子序列的长度。 例题:LeetCode 1143. 最长公共子序列 123输入:text1 = "abcde", text2 = "ace" 输出:3解释...
动态规划1:从爬楼梯问题开始
前言动态规划(Dynamic Programming,简称DP)是算法设计中的一种重要思想,它通过将复杂问题分解为子问题,并存储子问题的解来避免重复计算,从而提高算法效率。 作为动态规划系列的第一篇文章,我们将从最经典的入门题目——LeetCode第70题”爬楼梯”开始,深入理解动态规划的核心思想。 什么是动态规划?动态规划的核心思想是:将一个问题分解为若干个子问题,通过求解子问题并保存其结果,避免重复计算,最终得到原问题的解。 动态规划通常具备以下特征: 最优子结构:问题的最优解可以通过子问题的最优解来构造 重叠子问题:在求解过程中,同一个子问题会被多次计算 无后效性:一旦确定某阶段的状态,则此后过程的演变不再受此前各种状态及决策的影响 LeetCode 70. 爬楼梯题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 12345输入:n = 2输出:2解释:有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶 示例 2: 123456输入:n = 3输出:3解释:有三种方...
迁移记录:从VitePress到Hexo+Butterfly
前言作为一名技术博主,选择合适的博客框架是一个重要的决定。经过一段时间的使用和思考,我最终决定将博客从VitePress迁移到Hexo+Butterfly主题。这篇文章记录了完整的迁移过程,以及我在使用这两个工具过程中的心得体会。 迁移背景为什么要迁移?在使用VitePress的过程中,我遇到了一些问题: 格式问题频发:在处理复杂的Markdown格式时,VitePress经常出现渲染异常 主题定制困难:虽然VitePress很强大,但对于非前端专业的博主来说,深度定制比较困难 美观度不足:默认主题相对简洁,但缺少博客应有的丰富元素 插件生态有限:相比其他成熟的静态站点生成器,插件选择较少 基于这些考虑,我开始寻找更适合个人博客的解决方案。 VitePress vs Hexo:深度对比VitePress 特点分析优势方面: 现代化架构:基于Vite,构建速度极快 Vue生态:与Vue.js深度集成,对Vue开发者友好 开发体验:热重载、快速启动,开发体验优秀 TypeScript支持:原生支持TypeScript SEO友好:SSG(静态站点生成)对SEO有利 劣势方...
RAG技术详解:检索增强生成的革命性应用
简介RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合了信息检索和文本生成的先进AI技术。它通过在生成过程中动态检索相关信息,显著提升了大语言模型的准确性和可靠性,特别是在处理需要特定领域知识或实时信息的任务时表现出色。 RAG的核心思想传统生成模型的局限性传统的生成模型(如GPT系列)虽然强大,但存在以下问题: 知识截止:训练数据有时间限制,无法获取最新信息 幻觉问题:可能生成看似合理但实际错误的内容 领域局限:对特定领域的深度知识可能不足 可解释性差:难以追溯生成内容的来源 RAG的解决方案RAG通过以下方式解决这些问题: 动态检索:实时从外部知识库检索相关信息 证据支撑:生成的内容有明确的信息来源 知识更新:可以轻松更新知识库而无需重训练模型 领域专业化:针对特定领域构建专门的知识库 RAG架构详解整体架构RAG系统通常包含三个核心组件: 123用户查询 → 检索器(Retriever) → 生成器(Generator) → 最终回答 ↓ 知识库(Knowledge Base) 核...
Transformer算法
简介Transformer是由Google在2017年提出的一种新型神经网络架构,它在论文《Attention Is All You Need》中首次亮相。这个模型彻底改变了自然语言处理(NLP)领域,成为了现代大型语言模型(如GPT、BERT)的基础架构。 Transformer的核心思想1. 注意力机制(Attention Mechanism)Transformer的核心创新在于完全基于注意力机制,摒弃了传统的循环神经网络(RNN)和卷积神经网络(CNN)。注意力机制允许模型在处理序列中的每个位置时,都能直接关注到序列中的任何其他位置。 2. 自注意力(Self-Attention)自注意力是Transformer的关键组件,它允许序列中的每个元素都能与序列中的所有其他元素建立直接连接,从而捕获长距离依赖关系。 Transformer架构详解整体架构Transformer采用编码器-解码器(Encoder-Decoder)结构: 编码器(Encoder):将输入序列转换为连续的表示 解码器(Decoder):根据编码器的输出生成目标序列 核心组件1. 多头注意力(Mu...
React框架指南
React 是由 Facebook 开发的一个用于构建用户界面的 JavaScript 库。它以其组件化架构、虚拟 DOM 和声明式编程范式而闻名,是现代前端开发的重要工具之一。 1. React 框架简介1.1 什么是 React?React 是一个专注于构建用户界面的 JavaScript 库,特别适用于构建单页应用程序(SPA)。它的核心思想是将用户界面分解为可重用的组件,每个组件管理自己的状态。 1.2 React 的核心特性 组件化:将 UI 分解为独立、可复用的组件 虚拟 DOM:提高性能的关键技术 单向数据流:数据从父组件流向子组件 JSX 语法:JavaScript 和 HTML 的完美结合 声明式编程:描述 UI 应该是什么样子,而不是如何实现 1234// React 组件示例function Welcome(props) { return <h1>Hello, {props.name}!</h1>;} 2. React 组件使用方式2.1 函数组件函数组件是最简单的定义组件的方式,它接收 ...