Hanerson 的学术车辙

观察 · 描述 · 记录

GPU发展的三个时代

  • 图形加速时代(1963-2006):核心目标为3D图形渲染加速,硬件采用固定管线设计,缺乏灵活性。
  • 通用计算时代(2006-2017):NVIDIA发布GeForce 8800及CUDA,引入统一着色器架构,GPU转变为可编程并行处理器。
  • AI工厂时代(2018至今):大模型参数量级爆发,GPU从单卡计算转向集群互联,数据中心演变为7x24小时的Token生产工厂。
阅读全文 »

RAID

基本概念

  • 定义:将多个独立磁盘组合成一个逻辑磁盘,通过并行存取提高性能,通过冗余校验提高可靠性。
  • 设计目标:解决CPU性能增长与磁盘I/O性能增长不平衡的问题。
  • 关键术语
    • Striping (条带化):将数据分块,交叉存放到多个磁盘,提高并行I/O。
    • Redundancy (冗余):通过校验码或镜像来保证数据在部分磁盘损坏时不丢失。

常见RAID级别对比

级别 数据分布方式 冗余方式 空间利用率 读性能 写性能 容错能力 (可坏盘数) 适用场景
RAID 0 条带化 (Striping) 100% (N块盘 → N倍) 高 (N倍) 高 (N倍) 0 追求速度,不要求安全(如临时缓存、游戏)
RAID 1 镜像 (Mirroring) 完全复制 50% (N/2) 高 (N倍) 最慢的磁盘 N-1 高安全性(如操作系统、关键数据)
RAID 2 位级条带化 海明码 (n)/(n+k) 较高 低 (受校验盘限制) 1 顺序数据访问,成本高,现已罕见
RAID 3 字节/位级条带化 单块奇偶校验盘 (N-1)/N N-1倍 低 (校验盘瓶颈) 1 大容量顺序数据(如视频流、科学计算)
RAID 4 块级条带化 单块奇偶校验盘 (N-1)/N 高 (N-1倍) 低 (校验盘瓶颈) 1 随机读多、写少的数据
RAID 5 块级条带化 分布式奇偶校验 (N-1)/N 高 (N倍) 中等 (写惩罚) 1 综合性能最佳(如文件服务器、数据库)
RAID 6 块级条带化 双重分布式奇偶校验 (N-2)/N 高 (N倍) 较低 (写惩罚更大) 2 高安全性需求(如金融、档案存储)
RAID 10 先镜像(RAID1),再条带(RAID0) 镜像 50% N-1 既追求速度又要求安全(如高性能数据库)

关键RAID级别特性补充

  • RAID 0 vs. RAID 5:RAID 0 写性能略好于 RAID 5,但无容错能力。
  • RAID 3 vs. RAID 4:RAID 3 适合大块顺序数据(如视频),RAID 4 适合小块随机数据(如文件)。
  • RAID 5 vs. RAID 6:RAID 6 提供双重校验,可容忍两块盘同时损坏,安全性更高,但写性能略低,空间利用率稍低。
  • RAID 10 (RAID 1+0):结合了RAID 1的高可靠性和RAID 0的高性能,既快又安全,但成本高(利用率50%)。

其他补充内容

  • Disk Cache (磁盘缓存):利用主存中开辟的缓冲区缓存磁盘扇区数据,减少实际磁盘I/O。
  • SSD (固态硬盘):当前主流趋势,无机械部件,速度远超机械硬盘(顺序读速可达7000MB/s以上,如NVMe SSD)。

核心公式与计算技巧

RAID容量与空间利用率

  • RAID 0:总容量 = N × 单盘容量
  • RAID 1:总容量 = (N/2) × 单盘容量
  • RAID 3/4/5:总容量 = (N-1) × 单盘容量
  • RAID 6:总容量 = (N-2) × 单盘容量
  • RAID 10:总容量 = (N/2) × 单盘容量 (N为偶数)

点击 –>这里<– 查看原始复习提纲

Chapter 19

需要掌握白盒测试和黑盒测试的常见方法,并进行优缺点比较 能解释并区别白盒测试三种不同的方法:语句覆盖、分支覆盖和路径覆盖

基于规格的技术——黑盒测试方法

把测试对象看做一个黑盒子,完全基于输入和输出数据来判定测试对象的正确性

  1. 等价类划分
  2. 边界值分析
  3. 决策表
  4. 状态转换

基于代码的技术——白盒测试方法

将测试对象看做是透明的,不关心测试对象的规格,而是按照测试对象内部的程序结构来设计测试用例进行测试工作

  1. 语句覆盖(对简单情况)
    • 确保被测试对象的每一行程序代码都至少执行一次
  2. 分支覆盖(对复杂代码)
    • 确保程序中每个判断的每个结果都至少满足一次
  3. 路径覆盖(对关键、复杂的代码)
    • 确保程序中每条独立的执行路径都至少执行一次
阅读全文 »

点击 –>这里<– 查看原始复习提纲

Chapter 12

详细设计的出发点以及实现目标

  • 出发
    • 以需求开发的结果(需求规格说明书和需求分析模型)和软件体系结构的结果(软件体系结构设计方案与原型)为出发点。
  • 设计目的
    • 在详细设计中一般进行中层设计和低层设计,详细设计的目的是实现所有功能性需求和非功能性需求
阅读全文 »

点击 –>这里<– 查看原始复习提纲

Chapter 1 & 2

什么叫做软件工程

简单地理解,软件工程就是生产软件的工程学

现在应用较为广泛的软件工程定义为:

  • 应用系统的、规范的、可量化的方法来开发、运行和维护软件,即将工程应用到软件。
  • 对中各种方法的研究
  • 事实上,软件工程是一个包含复杂内容的计算机学子学科,其特性不是通过一个或几个有限定义所能概括的。
阅读全文 »

算法复杂度

  • 最坏复杂度:算法在任何输入实例上运行时间的最坏情况,记为 $ T_{\text{worst}}(n) $。

    • 举例:快速排序最坏情况 $ O(n^2) $(数组已有序且主元选择不当)。
  • 平均复杂度:算法在所有可能输入实例上运行时间的期望,记为 $ T_{\text{avg}}(n) $。

    • 举例:快速排序平均情况 $ O(n \log n) $。
  • 最优复杂度:算法在“最优”输入实例上的最低运行时间。

    • 举例:冒泡排序在已有序数组上为 $ O(n) $。
阅读全文 »

2026年6月4日,距离大二下的期末考试还有大约三周。这次考试对我来说意义比较重大——如果能拿到非常好的分数,我或许会重新考虑是否读研。虽然我一直倾向于本科毕业后直接就业,但总想试一试,觉得读研究生也是一个不错的选择。

阅读全文 »

Finite Understanding Protocol(FUP)

作者:Hanerson

摘要

在学习算法、数学等封闭性问题时,“先完全理解,再进行实现”往往是一种高效且可靠的学习路径然而,当学习对象转变为大型工程、复杂框架或持续演化的软件系统(如 React、Spring、libGDX 等)时,这一策略常常导致严重的认知消耗、学习停滞,甚至行动能力下降

有限理解协议(Finite Understanding Protocol,简称 FUP)正是为解决这一结构性矛盾而提出的一套个人学习方法论 FUP 并非降低学习深度,而是通过阶段化管理理解程度,将“深度理解”从入口阶段延迟至回看阶段,从而在有限时间窗口内实现可持续、高效率的学习与实践

阅读全文 »

本文围绕提供的 Java 排序算法代码,按「基础排序算法」「进阶排序算法」「快速排序算法」三大类,深入剖析每种算法的核心思想、代码逻辑细节、关键设计亮点、时间复杂度、空间复杂度及适用场景。所有讲解均紧密结合代码实现,让理论与实践深度融合。


阅读全文 »